前言
想要入職大廠可謂是千軍萬馬過獨木橋,要通過層層考驗。
作為國內互聯網技術的典型代表,阿里巴巴的技術一直備受著大家的關注。能進入阿里工作,也是很多開發者們的目標與夢想。
“不想進大廠的程序員不是好程序員”
春節過後,本是金三銀四之際,大部分人也都準備好了這在兩個月裡謀得一份自己心儀的工作,奈何今年的2020有些特殊,肺炎肆虐,對我們的工作和生活都造成了極大的影響。那麼,是不是這樣,我們就不工作,不學習了呢?實際上,正是因為現在正值傳染病毒傳播期間,所以我們宅在家裡好好學習是再好不過的。對於Java程序員來說,利用這兩三個月的時間,好好學習,著手準備起來,等到疫情好轉,開始面試時,也不至於膽怯。
一面
1.技術一面考察範圍:
- 重點問了Java線程鎖:synchronized 和ReentrantLock相關的底層實現
- 線程池的底層實現以及常見的參數
- 數據結構基本都問了一遍:鏈表、隊列等
- Java內存模型:常問的JVM分代模型,以及JDK1.8後的區別,最後還問了JVM相關的調優參數
- 分佈式鎖的實現比較
2.技術一面:
1.自我介紹
2.擅長哪方面的技術?
3. Java有哪些鎖種類? (樂觀鎖&悲觀鎖、可重入鎖&Synchronize等)
4.比較重要的數據結構,如鏈表,隊列,棧的基本理解及大致實現
5. J.U.C下的常見類的使用。ThreadPool的深入考察; BlockingQueue的使用
6. Java內存分代模型,GC算法, JVM常見的啟動參數; CMS算法的過程。
7. volatile關鍵字有什麼用(包括底層原理)
8.線程池的調優策略
9. spring cloud的服務註冊與發現是怎麼設計的?
10.分佈式系統的全局id如何實現
11.分佈式鎖的方案,redis和zookeeper哪個個好,如果是集群部署,高併發情況下哪個性能更好。
二面
1.技術二面考察範圍:
- 問了項目相關的技術實現細節
- 數據庫相關:索引、索引底層實現、mysql相關的行鎖、表鎖等
- redis相關:架構設計、數據一致性問題
- 容器:容器的設計原理等
2.技術二面:
1.參與的項目,選一個,技術難度在哪裡?
2. Collections.sort底層排序方式
3.負載均衡的原理
4.設計模式與重構,談談你對重構的理解
5.談談Redis相關的集群有哪些成熟方案?
6.再談談-致hash算法(redis)?
7.數據庫索引,B +樹的特性和建樹過程。
8. mysql相關的行鎖,表鎖;樂觀鎖,悲觀鎖
9.談談多線程和併發工具的使用
10.講講Redis的架構和組件
11. Redis的數據一致性問題(分佈式多節點環境&單機環境)
12. docker容器
三面
1.技術三面考察範圍
- 主要談到了高併發的實現方案
- 以及中間件:redis、rocketmq、kafka等的架構設計思路
- 最後問了平時怎麼提升技術的
2.技術三面題目
1.高併發情況下,系統是如何支撐大量的請求的?
2.接著上面的問題,延伸到了中間件,kafka、 redis、 rocketmq、 mycat等 設計思路和適用場景等
3.最近上過.上哪些技術站點; 最近在看哪些書。
4.工作和生活中遇見最大的挑戰,怎麼去克服?
5.未來有怎樣的打算
四面
最後,你懂的,主要就是HR走流程了,主要問了未來的職業規劃。
小結
最近疫情嚴重,在家待著哪裡都不能去,剛好能好好學習,充充電
調整自己的心態,正確面對得失
面試中常見的問題,主要是心態,面試調整心態是第一位的,如何調整成最佳心態呢?很多求職者在面試過程中自己思路不清晰,語言不流暢,說話毫無邏輯,會不斷否定自己,歸根結底都是面試心態問題,所以調整自己的心態,正確面對得失是非常重要的,我的方法是給自己足夠的心理暗示。
提升技術,擴寬知識
對於程序員來說,要想成長為一名行業內的大牛大神級別的人物,那麼唯一的辦法就是通過學習,來不斷提升自己的技術,擴寬知識,達到一定的高度和深度。那麼如何提升自己的技術,擴寬自己的知識儲備呢?
資料整理
前段時間通過很多渠道和朋友要到一份美團架構師寫的Java面試寶典(284篇)我把美團架構師給我的一份Java面試寶典啃完了,從而還找了Java後端以及一些大廠的面試場景和麵試題不斷刷題提高自己的眼界、技術棧。
這本文檔覆蓋了JVM、鎖、併發、Java反射、Spring原理、微服務、Zookeeper、數據庫、Redis、數據結構、算法、大數據等大量知識點。
分為Java基礎、數據結構算法、開源框架部分、分佈式部分、微服務部分
面試題
MySQL 性能優化的21個最佳實踐(含答案)
- 為查詢緩存優化你的查詢
- EXPLAIN 你的 SELECT 查詢
- 當只要一行數據時使用 LIMIT 1
- 為搜索字段建索引
- 在 Join 表的時候使用相當類型的例,並將其索引
- 千萬不要 ORDER BY RAND()
- 避免 SELECT *
- 永遠為每張表設置一個 ID
- 使用 ENUM 而不是 VARCHAR
- 從 PROCEDURE ANALYSE() 取得建議
- 儘可能的使用 NOT NULL
- Prepared Statements
- 無緩衝的查詢
- 把 IP 地址存成 UNSIGNED INT
- 固定長度的表會更快
- 垂直分割
- 拆分大的 DELETE 或 INSERT 語句
- 越小的列會越快
- 選擇正確的存儲引擎
- 使用一個對象關係映射器(Object Relational Mapper)
- 小心“永久鏈接”
JVM面試專題(含答案)
- 說一下 JVM 的主要組成部分及其作用?
- 說一下 JVM 運行時數據區
- 說一下堆棧的區別?
- 隊列和棧是什麼?有什麼區別?
- 對象的創建
- 為對象分配內存
- 處理併發安全問題
- 對象的訪問定位
- 句柄訪問
- 直接指針
- 內存溢出異常
- Java會存在內存洩漏嗎?請簡單描述垃圾收集器
- 簡述Java垃圾回收機制
- GC是什麼?為什麼要GC
- 垃圾回收的優點和原理。並考慮2種回收機制
- 垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收內存嗎?有什麼辦法主動通知虛擬機進行垃圾回收?
- Java 中都有哪些引用類型?
- 怎麼判斷對象是否可以被回收?
- 在Java中,對象什麼時候可以被垃圾回收
- JVM中的永久代中會發生垃圾回收嗎
- 說一下 JVM 有哪些垃圾回收算法?
- 標記-清除算法
- 複製算法
- 標記-整理算法
- 分代收集算法
- 說一下 JVM 有哪些垃圾回收器?
- 詳細介紹一下 CMS 垃圾回收器?
- 新生代垃圾回收器和老年代垃圾回收器都有哪些?有什麼區別?
- 簡述分代垃圾回收器是怎麼工作的?
- 簡述java內存分配與回收策率以及Minor GC和Major GC
- 對象優先在 Eden 區分配
- 大對象直接進入老年代
- 長期存活對象將進入老年代
- 簡述java類加載機制?
- 描述一下JVM加載Class文件的原理機制
- 什麼是類加載器,類加載器有哪些?
- 說一下類裝載的執行過程?
- 什麼是雙親委派模型?
- 說一下 JVM 調優的工具?
- 常用的 JVM 調優的參數都有哪些?
限於平臺篇幅限制,部分資料只截取了部分,感興趣的朋友可以幫忙轉發文章後,關注私信回覆【學習】來免費獲取
閱讀更多 檸萌y 的文章