華為:
1.筆試中遇到的問題,如何解決的?(Scanner 如何結束循環讀取數據,筆者在面試中因沒有理解到Scanner類的hasNext()與hasNextLine()是阻塞方法,導致沒有正確退出循環,不清楚的同學要注意了!!!)
2.給一個環,每經過3個剔除一個,如:1,2,3,4,5->1,2,4,5->2,4->4,對於任意給定的一個序列,輸出最后剩下的那個值,手寫代碼(好像劍指offer原題)
3.看你的簡歷上有redis,說一下為什么不直接在緩存中使用一個buffer,而要使用redis?尷尬,東扯西扯。。。
4.多線程(所有大中型公司問到的最多的問題)
sleep()與wait()的區別?
線程1,2,3,如何執行完1再執行2再執行3,當時蒙住了一直在想鎖。面試官提示join(),恍然大悟,然后把這個問題的實現代碼手寫了出來。
面試官給了pass。
京東數科:
京東數科問的問題就比較深也比較難了,面試感受不是很好。
1.聊項目,針對登錄這一塊就被問倒了,如如何通過ticket判斷當前用戶的登錄狀態,一些加密方法(非對稱、對稱加密等),項目是筆者最薄弱的地方,安全方面的知識更是欠缺,這里大部分都是處於被虐階段。
尊敬的面試官,您好,咱能聊聊java基礎嗎?額。。。好吧
2.java常用的集合類有哪些?ArrayList與LinkedList的區別?為什么ArrayList的查找時間復雜度為1,底層實現原理是什么?
3.HashMap()以數組鏈表形式存儲,當鏈表長度達到8之后,會不會產生變化?答:鏈表轉化為紅黑樹,筆者解釋了半天為什么長度是8的時候產生變化(空間復雜度+時間復雜度+鏈表達到8的概率(根據泊松分布))。面試官讓聊一聊紅黑樹,這個我真的不太會,下來學吧。。。
4.多線程。volatile關鍵字,這個我。。。有印象,但不會。然后說了一下synchronized與lock的區別。
5.設計模式,主要聊了一下工廠模式。
6.jvm相關
為什么要將堆上內存分為新生代和老年代?
聊一聊g1的特點
如何判斷對象是否存活(引用計數法+可達性分析)。
以上就是這兩次面試的主要內容。(華為25分鍾+京東數科42分鍾)筆者自認自身實力目前還欠缺很多,目前已拿到三星電子西安研究所+平安科技offer,期待華為的offer平安無恙,距離京東數科的offer感覺還有一段路要走。