1. 程式人生 > 其它 >2022最新Java高頻精選面試題講解,2022年網易Java崗面試必問

2022最新Java高頻精選面試題講解,2022年網易Java崗面試必問

前言:

有人說世界上有三個偉大的發明:火,輪子,以及 Kafka。

發展到現在,Apache Kafka 無疑是很成功的,Confluent 公司曾表示世界五百強中有三分之一的企業在使用 Kafka。在流式計算中,Kafka 一般用來快取資料,例如 Flink 通過消費 Kafka 的資料進行計算。

而要談對Kafka有多熟悉,我相信還是阿里的大佬們最有發言權,所以今天分享的內容,就是Alibaba內部首發的“限量筆記”,關於Kafka的精髓全部寫在這裡面了,真是不得不得不感嘆:不愧是Alibaba的技術官啊,真的服了!

四面阿里

面試崗位是研發工程師,直接找螞蟻金服的大佬進行內推,參與了阿里巴巴中介軟體部門的提前批面試,一共經歷了四次面試,拿到了口頭offer。

一面:

  1. 自我介紹
  2. 專案中做了什麼,難點呢。
  3. Java的執行緒池說一下,各個引數的作用,如何進行的。
  4. Redis講一下
  5. 分散式系統的全域性id如何實現。用zookeeper如何實現的呢,機器號+時間戳即可。
  6. 分散式鎖的方案,redis和zookeeper那個好,如果是叢集部署,高併發情況下哪個效能更好。
  7. kafka瞭解麼,瞭解哪些訊息佇列。
  8. 想做業務還是研究。
  9. 然後出了一道題,linux的訪問許可權是rwx格式的。使用一個類支援訪問許可權的增刪改查,並且注意使用的資料格式以及方法效率,規範。給了一個多小時寫題。

耗時將近30分鐘。

二面:

  1. 介紹你做的專案和其中的難點。
  2. 上次面試官問的問題,反射的作用是什麼。
  3. 資料倉庫,多執行緒和併發工具等。
  4. 私有云,docker和k8s等。
  5. 瞭解哪些中介軟體,dubbo,rocketmq,mycat等。
  6. dubbo中的rpc如何實現。
  7. 自己實現rpc應該怎麼做
  8. dubbo的服務註冊與發現。
  9. 聽說我是非科班,於是問了些排序演算法

耗時將近30分鐘。

三面:

三面不是面試,而是筆試,耗時三個小時,考的是Java核心的基礎。但是好像不能透題,就不說了。都挺有難度的。

大概說一下就是有幾個考點,Java併發的知識點,集合類,執行緒池,多執行緒之間的通訊等。

HR面:

聊人生談理想,HR小姐姐非常溫柔,交流十分愉快。30分鐘。

五面騰訊

面試崗位是後臺開發工程師,我沒有選擇意向事業群。

SNG的部門撈了我的簡歷,開始了面試,他們的技術棧主要是Java,所以比較有的聊一共經歷了四次技術面試和一次HR面試,拿到offer。

一面:

  1. 有序陣列排序,二分,複雜度
  2. 常見排序演算法,說下快排過程,時間複雜度
  3. 有N個節點的滿二叉樹的高度。1+logN
  4. 朋友之間的點對點關係用圖維護,怎麼判斷兩人是否是朋友,並查集,時間複雜度,過程。沒講清楚
  5. 單元點最短路的方法,時間複雜度
  6. 如何實現關鍵字輸入提示,使用字典樹,複雜度多少,有沒有其他方案,答雜湊,如果是中文呢,分詞後建立字典樹?
  7. hashmap的實現講一下吧,講的很詳細了。講一下紅黑樹的結構,查詢效能等。
  8. Java中的垃圾回收講一下,講了分代,gc演算法,gc root可達性分析等
  9. 講一下兩個專案你都做了什麼把。
  10. 除了程式碼之外你還學習了什麼技術,框架。
  11. 死鎖是怎麼產生的
  12. 執行緒和程序的區別
  13. 程序的通訊方式
  14. CPU的執行方式
  15. 程式碼中遇到程序阻塞,程序僵死,記憶體洩漏等情況怎麼排查。通過ps查詢狀態,分析dump檔案等方式排查。
  16. Linux瞭解麼,檢視程序狀態ps,檢視cpu狀態 top。檢視佔用埠的程序號netstat grep
  17. 10g檔案,只有2g記憶體,怎麼查詢檔案中指定的字串出現位置。MapReduce分割檔案處理。

二面:

  1. 快排的時間複雜度,冒泡時間複雜度,快排是否穩定,快排的過程
  2. 100w個數,怎麼找到前1000個最大的,堆排序,怎麼構造,怎麼調整,時間複雜度。
  3. 一個矩陣,從左上角到右下角,每個位置有一個權值。可以上下左右走,到達右下角的路徑權值最小怎麼走。
  4. 四輛小車,每輛車加滿油可以走一公里,問怎麼能讓一輛小車走最遠。說了好幾種方案,面試官引導我優化了一下,但是還是不滿意,最後他說跳過。
  5. hashmap的實現,hashtable,concurrenthashmap實現。
  6. MySQL的索引,B+樹性質。
  7. Linux的cpu 100怎麼排查,top jstack,日誌,gui工具
  8. Linux大檔案怎麼查某一行的內容。
  9. Redis記憶體資料庫的記憶體指的是共享記憶體麼
  10. Redis的持久化方式
  11. 秒殺系統的架構設計

三面:

  1. 十億個數的集合和10w個數的集合,如何求它們的交集。
  2. 十億和數找到前100個最大的,堆排序,怎麼實現,怎麼調整。
  3. TCP和UDP的區別,具體使用場景呢。
  4. TCP四次揮手講一下過程,最後一次ack如果客戶端沒收到怎麼辦。
  5. 對於socket程式設計,accept方法是幹什麼的,在三次握手中屬於第幾次,可以猜一下,為什麼這麼覺得。
  6. Linux作業系統瞭解麼,瞭解一點點,就沒問了。
  7. 對於單例模式,有什麼使用場景了,講了全域性id生成器,他問我分散式id生成器怎麼實現,說了zk,問我zk瞭解原理不,講了zab,然後就沒問啦。
  8. 除了單例模式,知道介面卡模式怎麼實現麼,有什麼用
  9. 回到網路,剛才你說到直播場景,知道直播的架構怎麼設計麼,要點是什麼,說了幾個不太對,他說要避免廣播風暴,答不會。
  10. Redis和MySQL有什麼區別,用於什麼場景。
  11. 問了一下最近看什麼書,什麼時候開始寫部落格的
  12. 問了還有幾輪面試,他說這輪我可以過,有點小驚喜

四面:

三面過了半個多月,終於安排四面了。

  1. 自我介紹
  2. 專案,收穫
  3. Linux瞭解哪些,基礎命令和知識。問我proc檔案系統瞭解麼,答不瞭解。
  4. TCP和UDP的核心區別在哪,講了滑動視窗保證可靠有序傳輸,UDP不可靠。TCP需要連線而UDP不需要。
  5. TCP的四次揮手,time wait狀態有什麼意義。
  6. 說完這個他問我有什麼想問他的了。
  7. 我問他為什麼隔了這麼久才面試,而且之前三面都只是初試,然後他說最近他在休假,所以就。。。害我擔心了好久。他說接下來等HR面就行了。

HR面:

自我介紹

實習收穫

臺灣交流體驗

之前實習公司的情況,拿到offer了嗎,會如何選擇呢

排一下公司,部門,薪資和城市等因素。

你的優缺點,如何改進

學生時代最成功的事

你的預期薪資

三面頭條

面試崗位是後臺研發工程師,地點選擇了上海,通過大佬內推,跳過死亡筆試,直接視訊面,從3點開始,斷斷續續到晚上8點結束。

一共三輪技術面試,每一輪都要寫程式碼,問問題的風格有點像騰訊,也喜歡問一些底層知識,讓我有點懵逼。

一面:

  1. 寫一個題,找一個無序陣列的中位數
  2. 寫了個快排,然後讓我找到無序陣列第k大的一個數,我說先排序再找,實際上可以用快排的partition函式。
  3. 快排的時間複雜度,最壞情況呢,最好情況呢,堆排序的時間複雜度呢,建堆的複雜度是多少,nlgn。
  4. 作業系統瞭解麼,Linux和windows
  5. 說說Linux的磁碟管理,一臉懵逼
  6. Linux有哪些程序通訊方式,五大件
  7. Linux的共享記憶體如何實現,大概說了一下。
  8. 共享記憶體實現的具體步驟,我說沒用過
  9. socket網路程式設計,說一下TCP的三次握手和四次揮手,中間網路不好,面試官都沒聽清楚,很尷尬
  10. 跳過網路,問了專案的一些東西
  11. 問我如何把docker講的很清楚,我從物理機,虛擬機器到容器具體實現稍微說了下。
  12. 問我cgroup在linux的具體實現,不會。
  13. 多執行緒用過哪些,chm和countdownlatch在實習用過

二面:

  1. 自我介紹
  2. Java的集合類哪些是執行緒安全
  3. 分別說說這些集合類,hashmap怎麼實現的,扯了很多
  4. MySQL索引的實現,innodb的索引,b+樹索引是怎麼實現的,為什麼用b+樹做索引節點,一個節點存了多少資料,怎麼規定大小,與磁碟頁對應。
  5. MySQL的事務隔離級別,分別解決什麼問題。
  6. Redis瞭解麼,如果Redis有1億個key,使用keys命令是否會影響線上服務,我說會,因為是單執行緒模型,可以部署多個節點。
  7. 問我知不知道有一條命令可以實現上面這個功能。不知道
  8. Redis的持久化方式,aod和rdb,具體怎麼實現,追加日誌和備份檔案,底層實現原理的話知道麼,不清楚。
  9. Redis的list是怎麼實現的,我說用ziplist+quicklist實現的,ziplist壓縮空間,quicklist實現連結串列。
  10. sortedset怎麼實現的,使用dict+skiplist實現的,問我skiplist的資料結構,大概說了下是個實現簡單的快速查詢結構。
  11. 瞭解什麼訊息佇列,rmq和kafka,沒細問
  12. 寫題時間到。第一題:寫一個層序遍歷。
  13. 第二題:寫一個插入樹節點到一顆排序樹的插入方法,使用遞迴方式找到插入位置即可。
  14. 第三題:一個有向圖用鄰接矩陣表示,並且是有權圖,現在問怎麼判斷圖中有沒有環。
  15. 第四題:一個二叉樹,找到二叉樹中最長的一條路徑。

三面:

三面的面試官真的高冷啊,不苟言笑就算了,我問他他都不愛搭理的,搞得我內心慌得一比,感覺涼涼。

1 介紹一下專案

2 你談到的併發技術,chm和countdownlatch怎麼使用的

3 為什麼要這麼處理,使用執行緒池是不是也可以。我說也可以

4 作業系統的程序通訊方式,殭屍程序和孤兒程序是什麼,如何避免殭屍程序,我說讓父程序顯示通知,那父程序怎麼知道子程序結束了,答不會。

5 計算機網路TCP和UDP有什麼區別,為什麼迅雷下載是基於UDP的,我說FTP是基於TCP,而迅雷是p2p不需要TCP那麼可靠的傳輸保證。

6 他說不對,我說是不是因為要建立連線,開銷比較大,他說不對

7 我說p2p的傳送節點很多,所以不是那麼需要各種傳輸保證,他說不對。

8 我說TCP會自動分包而TCP可以自己定義資料長度。。他還是說不對。

最後他說算了。我們問下一個吧。

9 作業系統的死鎖必要條件,如何避免死鎖。

10 寫一個LRU的快取,需要完成超時淘汰和LRU淘汰。

我說用lhm行不行,他說用linkedlist和hashmap可以。

於是我就寫了put和get函式,進行了隊頭隊尾操作。

他說get複雜度會不會太高,我瞎掰了半天沒找到辦法,他說那就這樣吧,今天面試到這。

11 媽蛋,過期淘汰的處理我還沒寫呢,你就說結束了,感覺涼了啊,我說我要不要把剩下邏輯下完,他說不用,心涼了一大截~

然後就是HR小姐姐讓我等結果了。溜了溜了

知其然不知其所以然,大廠常問面試技術如何複習?

1、熱門面試題及答案大全

面試前做足功夫,讓你面試成功率提升一截,這裡一份熱門350道一線網際網路常問面試題及答案助你拿offer

2、多執行緒、高併發、快取入門到實戰專案pdf書籍

3、文中提到面試題答案整理

4、Java核心知識面試寶典

覆蓋了JVM 、JAVA集合、JAVA多執行緒併發、JAVA基礎、Spring原理、微服務、Netty與RPC、網路、日誌、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、設計模式、負載均衡、資料庫、一致性演算法 、JAVA演算法、資料結構、演算法、分散式快取、Hadoop、Spark、Storm的大量技術點且講解的非常深入