1. 程式人生 > >Java 面試總結

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開發實踐》