前言
三年Java後端開發經驗,面的目標崗位是20k-35k的高級後端Java開發。 面試
第一場,基本裸面,關於曾經的項目部門答的很差,因此仍是得好好準備。redis
某C輪在線旅遊公司
筆試
先作半個小時的筆試題,一共六個題目,兩道go語言的基礎題,一道斐波那契相關,一道數據庫行列轉置,一道實現一個棧,還有一道是百萬計的MySQL優化 算法
筆者沒有接觸過go語言,第一,二題,猜了下答案,第三題過,第四題沒寫出,第五題漏了內部數組收縮的場景,第六題,簡單的寫了幾點關於建表和使用索引相關數據庫
一面(技術+項目)
沒有討論筆試題,先自我介紹,而後從項目開始問起穿插一些基礎知識點的面試,難度不大。後端
其中有個問題,你這個項目作了一年多,裏面主要實現了哪些需求,這個回答的沒有條理。暴露了日常沒有總結的習慣,都是業務驅動着跑。設計模式
二面(架構師面)
架構師對兩年前作的一個項目比較感興趣,因爲是裸面,作的時間也比較久了,答的不是很好,也是零零碎碎的打了一些,雖然架構師表示理解,可是我也基本判定出,掛在這裏了。數組
經驗總結
- 面試準備很重要,對於本身的項目經歷,作了些什麼重要的需求必定要可以有條理的說出來,包括難點以及這樣設計的緣由
- 項目的架構以及總體流程必定要清楚,必定要知道每個細節點
某C輪AI公司
一面(電話面+基礎技術面)
聊了下Java的基礎知識,涉及的點包括:安全
- StringBuilder,String,StringBuffer的區別,使用場景
- String不可變的設計原理,以及這樣設計的緣由
- HashMap的實現原理,1.8以後對於碰撞怎麼處理的,若是key沒有實現compareable接口,紅黑樹根據什麼插入?
- 聊了下jvm的內存結構,線程安全的部門,各個部門的職能?
- 說明下類的加載過程,類加載的雙親委派模型?
- 聊下Spring的架構
二面(項目面+技術面)
- 聊了下你最熟悉的項目,描述下難點
- 聊了下Java的內存模型,可見性;Java線程安全實現的幾種機制;HashMap併發下的問題;ConcurrentHashMap的實現,1.7和1.8的區別;Java中的併發原語,synchronized和ReentrantLock的實現原理以及區別;
- 聊下Java的線程池,以及使用注意點
- 鎖和cas的使用場景,他兩的區別,有沒有實際測試過各類場景的性能數據,都有怎麼樣的表現
- 離職的緣由,對將來的規劃
面試總結
- Java併發知識總結不夠,對於AQS瞭解不深
- 介紹項目知識沒有挖好坑,沒有突出項目的難點,致使面試官認爲項目簡單
- 平時總結過少,對將來規劃定位不清晰,離職的緣由考慮不清楚(其中想離職的主要緣由就是加班太多了,可是這個又不能放在明面上說,因此必定得找到合適的理由)
某C輪金融科技公司
一面(技術面)
- 重點聊了Java各類集合的實現原理,以及使用場景,主要包括不限於,ArrayList,LinkedList,HashMap,HashSet,TreeMap
- 線程池的實現原理,線程池中的等待任務只有一個隊列,若是線程池中的線程比較多,競爭會比較大,怎麼解決?
- Java中實現高併發的幾種策略(COW, cas, 鎖),各自的使用場景及區別?
- 簡單的介紹下項目?
二面(項目+技術)
- 聊下項目中高併發,高可用的實現
- 負載均衡的幾種算法
- 問了幾個設計模式的實現
- 分佈式系統中轉帳問題,如何保證分佈式事務,項目中怎麼處理這種狀況?
- MySQL主從複製的實現
- jvm的內存模型,類加載機制,jvm gc實現原理,有沒有jvm線上調優經驗。若是遇到線上問題,通常經過哪些步驟定位,除了看日誌和走讀代碼還有沒有其餘方法?
三面(項目經理面)
- 聊下項目內容,以及項目目前存在的問題,優化點
- 有沒有帶人的經驗,怎麼帶一個新人?
- 離職的緣由,對下一份工做的指望?
問了幾個問題:數據結構
- 目前這邊開展的是新業務,怎麼讓你們這羣「新」人很好的配合起來
- 目前公司這塊的業務在技術上的側重是什麼,會有哪些挑戰點
四面(地區技術負責人面試)
- 聊了下項目
- 下一份工做,首先考慮的三個點按優先級排列是什麼?
- 還有幾個問題記不清了
某行業C輪互聯網平臺公司
一面(基礎技術面)
- 聊了下Java的基礎技術,高併發模型
- 聊了下項目,項目的性能數據
- 聊了下jvm 內存模型,類加載機制,有沒有jvm調優經驗
等待下一輪面試
平安系子公司
一面技術面
- 常規的Java基礎技術問題,設計集合,併發,蜻蜓點水的都問了一輪但不深刻
- 項目介紹
- 離職的緣由,當前的薪資水平
領導面
- 自我介紹
- 介紹項目,由於有一個項目短暫的接觸過支付場景的實現,這個領導估計有過支付相關的經歷,開始追着問了,並分分鐘要教我什麼叫分佈式系統設計,系統的交互中會存在哪些問題,而且很是強勢的斷言我項目中的方案設計很爛,我司的架構師水平很爛,聊的不爽,直接懟回去了。
- 還吹牛逼說要給馬總到明年要招到2w人,無形裝逼,最爲致命。
- 面試結束,應該沒有後續。很是不爽面試過程當中面試官高高在上的態度,項目尚未講完,只說了其中某個點的容錯設計,就開始斷言系統設計爛,進而說我司架構師爛。估計平時在工做中是個小領導,習慣了頤指氣使,今後平安一輩子黑。
藍綠廠
一面(技術面)
- 自我介紹+項目經歷介紹
- 重點聊了下本身最熟悉的項目,架構,組網,性能,瓶頸
- Java常見集合的實現方式,說下經常使用的設計模式,並舉例使用到的場景,手寫懶加載線程安全的單例模式
- Redis中的常見數據結構類型,Redis實現持久化的方式,優缺點以及使用場景
- 大數據和高可用在項目中涉及的點
- MySQL主備同步的原理,怎麼實現高可用?
- client調用A服務,A服務依賴於B服務,在不知道B是否高可用的狀況下,怎麼保證A的高可用?
- jvm的內存模型,jvm的運行時數據區,有沒有jvm的線上調優經歷?
- 回到項目的性能數據上,有沒有仔細去調研過這個接口的時延的分佈是怎麼樣的,按照28法則,確定是某個方法耗時比較多,有沒有針對這種場景的分析?
PS: 項目接口的性能時延是30+ms多線程
二面(項目經理面+技術面)
PS:面試官會一直死死的盯着你,並且會不停的問你,還有沒有更好的方式,還有沒有?
- 有沒有帶人的經歷,對於不上道的人,通常怎麼帶?
- 爲何你能勝任這份工做?
- 你說你優秀,你的優秀體如今項目的什麼地方?
- 怎麼在字符串池中查找給定的字符串?
- B樹又沒用瞭解?MySQL索引的數據結構是什麼?MySQL的數據存儲機制是什麼?如何處理數據中的髒頁?
- 解釋下分佈式系統中的cap理論,怎麼保證ca?
面試總結
- 高可用,分佈式是弱項,接觸比較少,系統設計經驗太少
- 帶人的經驗太少
- 混淆了B樹和binary tree
- Redis瞭解不深刻
整體總結
- 項目經歷必定要準備好,目前市面上招聘基本上要求都是高併發,大數據,高可用。因此在你的項目中有哪些體現必定要提早準備好,並適當挖坑。也就是說目前還有哪些優化點能夠作可是目前沒有作。
- Java的基本功必定要紮實,不是說數據結構和算法要多麼精通,可是至少Java中常見的集合的原理要知道,源碼要過一遍,使用場景要了如指掌
- Java多線程,線程池的實現,併發包下面涉及到的經典工具,AQS,CAS,兩種鎖的實現,經常使用的併發工具,阻塞隊列
- jvm的內存模型,HP原則,內存可見性;jvm類加載機制,類的加載過程;jvm的運行時數據區;Java gc的實現
- ssm框架的實現原理
- redis等中間件的數據結構,使用場景
- 高併發場景的常見處理手段
- 高可用系統的設計
- 分佈式系統的設計,cap理論,分佈式系統在實際場景中的運用。