第一次工作面試,雖然成功了,但是有許多不足的地方,需要反思和改正。
因爲時間與距離的原因,兩次面試都是電話面試進行的,第一次面試一個面試官,面試時間將近20分鐘,第二次面試,兩個面試官先後問問題,整個面試將近50分鐘。面試結果是通過。面試有一段時間了,可能有一些面試問題忘記了,現已入職。
第一次面試:
問的基本上都是Java基礎的知識,簡單的問了些問題,問題大致是一下幾個方面的:
1、Java集合類,ArrayList LinkedList HashMap等 集合類的線程安全問題 底層數據結構
數組和鏈表的使用場景 還問到了HashMap的源碼
2、多線程方面:線程生命週期 線程狀態 線程池
3、Java內存模型 CAS 原子操作 volatile內存語義 功能
4、Static final 關鍵字 類加載機制初始化順序
5、Switch case 擊穿現象等
第二次面試:
問的框架方面和項目方面的問題比較多
1、Java的幾大特性 繼承 封裝 多態 抽象
2、問使用的框架 spring AOP IOC原理及實現(反射 代理 源碼)
3、設計模式:單例模式
4、版本控制器Git 基本命令
5、Java多線程方面問的比較多 重排序 結合多場景問是否發生重排序 線程池構建 線程複用
6、類鎖 對象鎖 靜態鎖 結合多場景提問
7、Volatile synchronized 實現同步的其他方式 ReenTrantLook等
8、類加載機制
9、 JVM內存模型 虛擬機棧 本地方法棧 堆 方法區 程序計數器 stackoverflowerror異常等
10、 Netty框架+socket 觀察者模式 緩存 通道
11、 網絡爬蟲 url判重
12、 因爲之前寫過一個仿Spring框架,讓我講解實現方式及流程。
13、 Web容器的工作原理
14、 問到反射相關的問題
總結:
1、千萬不要太緊張,過度的緊張會影響思路,導致該說的,會說的,都說不清楚甚至說不上來;
2、沒有必要問完問題之後馬上就回答,可以組織一下自己的語言,然後在回答,回答問題最好有條理,分條分步,這樣顯得思路很清晰,很熟練;
3、講話一定要自信,然後語氣和語速要和平時一樣沉穩,不要顯得很急促,或者很沉悶;
4、問一個問題,能多說就多說,在短的時間內,把自己會的東西儘可能多的展示出來,儘量說的有深度,而不是廣度。說的太廣,給人一種飄渺,什麼都懂,也只是懂一點的感覺。從是什麼,應用場景,如何應用,原理,底層實現方式,源碼這樣的方式或思路去回答問題。回答的有深度,就讓面試官覺得這個人很行,研究的很透徹;
5、面試中儘量說自己擅長的部分,自己不擅長的方面少說,如果問到的問題確實是你不瞭解的,可以直接說不清楚或不會,乾淨利落的回答下一題,一方面拖拖拉拉的回答,給面試官不好的印象,更致命的是影響自己的心態,甚至影響整個面試過程;
6、如果是電話面試或視頻一定要找一個自己熟悉的,安靜的環境。
建議:
1、建議大家有時間多看一些源碼,這樣面試的時候,結合源碼講解回答問題,就很有說服力,經常研究源碼的人,編碼風格和習慣肯定都不錯的,思路和設計上有突出的見解,這讓面試官很放心;
2、平時學習的時候一定要不停的鑽研,直到底層實現,掌握原理,設計方式等;
3、可以多參加互聯網級別的講座,面試模擬等活動,瞭解動態,平時多練兵,打仗纔不慫;
4、平時要多總結,多思考,最好形成文檔,當進入公司之後就會發現,沒有文檔就什麼都做不了。