Java 面試總結
文章初衷
在韓國留學後,沒有關注校招,直到畢業了才開始著急,準備面試。真心是個困難事。
現在整理一下,我在面試期間的碰到的壁,走過的坑,給我的朋友們和後輩們做個分享。
面試經歷
在進入我現在的公司之前參加過3次面試
主要談談技術面試的問題吧。
面試題型
我參加的面試不算多,但是把僅有的經驗總結出來分享給大家,這幾次面試中,一般是先筆試,然後和考官面對面面試。筆試問題邏輯題比較多,還有給定條件讓你寫程式碼的。
遇到過印象比較深刻的有,24小時內時針分針會相遇幾次 答案是22次。
給兩個input 期望output 如下,用程式碼實現。
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output:7 -> 0 -> 8 Explanation: 342 + 465 = 807.
時間是1個小時,之後和考官面對面面試。問題圍繞筆試卷紙展開。之後還會問一些比較細節的問題,如static 和final 欄位的區別等。
面試準備內容
這些是我前輩告訴我應該看一下並且有可能問到的題。大家可以過一下。
1)ArrayList, LinkedList原始碼理解&實現原理(自動擴容怎麼達到的),ArrayList與LinkedList區別
2)HashMap/HashSet/TreeMap 原始碼理解,(HashMap怎麼解決Hash衝突的),HashTable和HashMap區別
3)多執行緒中這些資料結構和concurrent包中的資料結構有什麼區別,怎麼實現資料安全性
多執行緒:
(1)threadlocal/volatile/synchronized 關鍵字用法
(2)ReentrantLock和synchronized的發展史和區別
演算法
(1)排序演算法通讀
下面這個連結下的題,我感覺還算靠譜可以看一下
以上都是 對應初級程式設計師面試要看的。
通過跟同事的交談得知,國內的程式設計師面試,比較愛扣細節, 比如某些功能的實現原理啊之類的。因此在國內大部分面試都是問原理這樣的東西。這些一般不看原始碼是不會知道的。不過作為一個學生來說,沒有接觸過的架構,資料結構是不太會有時間去深挖原理的。也許這就是校招和社招的區別?
還有一個比較適合長期準備面試的題庫 LeetCode.com , 這個網站有很多演算法題,其中前150道是最經典的,也是最值得去做的。如果有時間一定要刷1-2遍,面試時會出現原題的。 我在面試過程中就遇到過裡面第二道題。
實際遇到過得面試題
計算機結構相關
cache 是什麼,都有什麼類,區別,作用
資料結構相關
1> 正序與倒序 二叉樹能否推出整個樹
2> 0-100個數 少一個 如何確定少的那個是誰, 你的演算法複雜度
3> Arraylist 和Linked list 的區別
4>HashMap 的原理
多執行緒相關
1>多執行緒的同步機制
目前記錄下來的只有這些,會慢慢整理的
面試官推薦書目
優先順序從上到下依次降低
《Java程式設計思想》好厚的書 啊根本就沒有想讀的想法
《Java虛擬機器》
《Java核心技術》
《Spring實戰》
《Effective Java》主要講技巧
《Java開發實踐》