三年Java後端,面試國內主流互聯網公司經歷

前言

三年Java後端開發經驗,面的目標崗位是20k-35k的高級後端Java開發。

第一場,基本裸面,關於曾經的項目部門答的不好,所以還是得好好準備。

三年Java後端,面試國內主流互聯網公司經歷

某C輪在線旅遊公司

筆試

先做半個小時的筆試題,一共六個題目,兩道go語言的基礎題,一道斐波那契相關,一道數據庫行列轉置,一道實現一個棧,還有一道是百萬計的MySQL優化

筆者沒有接觸過go語言,第一,二題,猜了下答案,第三題過,第四題沒寫出,第五題漏了內部數組收縮的場景,第六題,簡單的寫了幾點關於建表和使用索引相關

一面(技術+項目)

沒有討論筆試題,先自我介紹,然後從項目開始問起穿插一些基礎知識點的面試,難度不大。

其中有個問題,你這個項目做了一年多,裡面主要實現了哪些需求,這個回答的沒有條理。暴露了平常沒有總結的習慣,都是業務驅動著跑。

二面(架構師面)

架構師對兩年前做的一個項目比較感興趣,由於是裸面,做的時間也比較久了,答的不是很好,也是零零碎碎的打了一些,雖然架構師表示理解,但是我也基本斷定出,掛在這裡了。

經驗總結

  1. 面試準備很重要,對於自己的項目經歷,做了些什麼重要的需求一定要能夠有條理的說出來,包括難點以及這樣設計的原因
  2. 項目的架構以及整體流程一定要清楚,一定要知道每一個細節點

某C輪AI公司

一面(電話面+基礎技術面)

聊了下Java的基礎知識,涉及的點包括:

  1. StringBuilder,String,StringBuffer的區別,使用場景
  2. String不可變的設計原理,以及這樣設計的原因
  3. HashMap的實現原理,1.8之後對於碰撞怎麼處理的,如果key沒有實現compareable接口,紅黑樹根據什麼插入?
  4. 聊了下jvm的內存結構,線程安全的部門,各個部門的職能?
  5. 說明下類的加載過程,類加載的雙親委派模型?
  6. 聊下Spring的架構

二面(項目面+技術面)

  1. 聊了下你最熟悉的項目,描述下難點
  2. 聊了下Java的內存模型,可見性;Java線程安全實現的幾種機制;HashMap併發下的問題;ConcurrentHashMap的實現,1.7和1.8的區別;Java中的併發原語,synchronized和ReentrantLock的實現原理以及區別;
  3. 聊下Java的線程池,以及使用注意點
  4. 鎖和cas的使用場景,他兩的區別,有沒有實際測試過各種場景的性能數據,都有怎麼樣的表現
  5. 離職的原因,對未來的規劃

面試總結

  1. Java併發知識總結不夠,對於AQS瞭解不深
  2. 介紹項目知識沒有挖好坑,沒有突出項目的難點,導致面試官認為項目簡單
  3. 平時總結過少,對未來規劃定位不清晰,離職的原因考慮不清楚(其中想離職的主要原因就是加班太多了,但是這個又不能放在明面上說,所以一定得找到合適的理由)

某C輪金融科技公司

一面(技術面)

  1. 重點聊了Java各種集合的實現原理,以及使用場景,主要包括不限於,ArrayList,LinkedList,HashMap,HashSet,TreeMap
  2. 線程池的實現原理,線程池中的等待任務只有一個隊列,如果線程池中的線程比較多,競爭會比較大,怎麼解決?
  3. Java中實現高併發的幾種策略(COW, cas, 鎖),各自的使用場景及區別?
  4. 簡單的介紹下項目?

二面(項目+技術)

  1. 聊下項目中高併發,高可用的實現
  2. 負載均衡的幾種算法
  3. 問了幾個設計模式的實現
  4. 分佈式系統中轉賬問題,如何保證分佈式事務,項目中怎麼處理這種情況?
  5. MySQL主從複製的實現
  6. jvm的內存模型,類加載機制,jvm gc實現原理,有沒有jvm線上調優經驗。如果遇到線上問題,一般通過哪些步驟定位,除了看日誌和走讀代碼還有沒有其他方法?

三面(項目經理面)

  1. 聊下項目內容,以及項目目前存在的問題,優化點
  2. 有沒有帶人的經驗,怎麼帶一個新人?
  3. 離職的原因,對下一份工作的期望?

問了幾個問題:

  1. 目前這邊開展的是新業務,怎麼讓大家這群“新”人很好的配合起來
  2. 目前公司這塊的業務在技術上的側重是什麼,會有哪些挑戰點

四面(地區技術負責人面試)

  1. 聊了下項目
  2. 下一份工作,首先考慮的三個點按優先級排列是什麼?
  3. 還有幾個問題記不清了

某行業C輪互聯網平臺公司

一面(基礎技術面)

  1. 聊了下Java的基礎技術,高併發模型
  2. 聊了下項目,項目的性能數據
  3. 聊了下jvm 內存模型,類加載機制,有沒有jvm調優經驗

等待下一輪面試

三年Java後端,面試國內主流互聯網公司經歷

平安系子公司

一面技術面

  1. 常規的Java基礎技術問題,設計集合,併發,走馬觀花的都問了一輪但不深入
  2. 項目介紹
  3. 離職的原因,當前的薪資水平

領導面

  1. 自我介紹
  2. 介紹項目,因為有一個項目短暫的接觸過支付場景的實現,這個領導估計有過支付相關的經歷,開始追著問了,並分分鐘要教我什麼叫分佈式系統設計,系統的交互中會存在哪些問題,並且非常強勢的斷言我項目中的方案設計很爛,我司的架構師水平很爛,聊的不爽,直接懟回去了。
  3. 還吹牛逼說要給馬總到明年要招到2w人,無形裝逼,最為致命。
  4. 面試結束,應該沒有後續。非常不爽面試過程中面試官高高在上的態度,項目還沒有講完,只說了其中某個點的容錯設計,就開始斷言系統設計爛,進而說我司架構師爛。估計平時在工作中是個小領導,習慣了頤指氣使,從此平安一生黑
三年Java後端,面試國內主流互聯網公司經歷

藍綠廠

一面(技術面)

  1. 自我介紹+項目經歷介紹
  2. 重點聊了下自己最熟悉的項目,架構,組網,性能,瓶頸
  3. Java常見集合的實現方式,說下常用的設計模式,並舉例使用到的場景,手寫懶加載線程安全的單例模式
  4. Redis中的常見數據結構類型,Redis實現持久化的方式,優缺點以及使用場景
  5. 大數據和高可用在項目中涉及的點
  6. MySQL主備同步的原理,怎麼實現高可用?
  7. client調用A服務,A服務依賴於B服務,在不知道B是否高可用的情況下,怎麼保證A的高可用?
  8. jvm的內存模型,jvm的運行時數據區,有沒有jvm的線上調優經歷?
  9. 回到項目的性能數據上,有沒有仔細去調研過這個接口的時延的分佈是怎麼樣的,按照28法則,肯定是某個方法耗時比較多,有沒有針對這種場景的分析?

PS: 項目接口的性能時延是30+ms

二面(項目經理面+技術面)

PS:面試官會一直死死的盯著你,而且會不停的問你,還有沒有更好的方式,還有沒有?

  1. 有沒有帶人的經歷,對於不上道的人,一般怎麼帶?
  2. 為什麼你能勝任這份工作?
  3. 你說你優秀,你的優秀體現在項目的什麼地方?
  4. 怎麼在字符串池中查找給定的字符串?
  5. B樹又沒用瞭解?MySQL索引的數據結構是什麼?MySQL的數據存儲機制是什麼?如何處理數據中的髒頁?
  6. 解釋下分佈式系統中的cap理論,怎麼保證ca?

面試總結

  1. 高可用,分佈式是弱項,接觸比較少,系統設計經驗太少
  2. 帶人的經驗太少
  3. 混淆了B樹和binary tree
  4. Redis瞭解不深入

總體總結

  1. 項目經歷一定要準備好,目前市面上招聘基本上要求都是高併發,大數據,高可用。所以在你的項目中有哪些體現一定要提前準備好,並適當挖坑。也就是說目前還有哪些優化點可以做但是目前沒有做。
  2. Java的基本功一定要紮實,不是說數據結構和算法要多麼精通,但是至少Java中常見的集合的原理要知道,源碼要過一遍,使用場景要了如指掌
  3. Java多線程,線程池的實現,併發包下面涉及到的經典工具,AQS,CAS,兩種鎖的實現,常用的併發工具,阻塞隊列
  4. jvm的內存模型,HP原則,內存可見性;jvm類加載機制,類的加載過程;jvm的運行時數據區;Java gc的實現
  5. ssm框架的實現原理
  6. redis等中間件的數據結構,使用場景
  7. 高併發場景的常見處理手段
  8. 高可用系統的設計
  9. 分佈式系統的設計,cap理論,分佈式系統在實際場景中的運用。
原文地址:https://segmentfault.com/a/1190000014940911

相關推薦

推薦中...