千迴百折:百度Java研發offer斬獲記和經驗分享

  • 原由
  • 面試過程
  • 等待offer的過程當中悟道
  • Java面試常考知識點我的總結

      從去年百度全面凍結hc,中止社招以後,今年陸續又縮小了實習生的招聘規模,每一個部門的hc都很是緊張,相應的,也直接形成了實習生和校招招聘的難度被放大!由於hc實在是太少了。java

  好了,閒言少敘,既然是斬獲記,那麼必然得說說個人面試過程和準備過程。這樣纔對得起標題啊。面試

  此次面百度是現場的,一共三面,由於投的是java研發崗位,故第一面安排的是一個懂java的高工,先是自我介紹(ps:三面我介紹了三次……也是醉了),問我能研二還能實習多久……以後先讓手寫了個二分查找,而後順着簡歷項目問,主要就是java多線程這塊,內存模型,生產者和消費者模式,如何保證項目的線程安全的,怎麼作的……hashmap和hashtable的比較,concurrentHashmap的線程安全的實現原理,手寫一個單例模式,讓寫了兩種實現方式,枚舉和非枚舉,並問了如何保證線程安全,反射攻擊,序列化等。接着又手寫一個鏈表的反轉算法(稍微修改了下才對的),看我簡歷上有我博客,還有說熟悉JVM,就讓我畫了JVM的結構,堆的結構(我畫的JAVA7的),最後還問了JVM垃圾回收算法的種類都有啥……接着問有沒有jvm調優過?我簡單說了下調優,由於調優經驗不是很豐富,最後一面結束,讓我問他問題,主要問的主要作啥,實習生培養制度,實習時間,這裏強調下,今年百度研發很難進,名額不多不多,而且要求必定的實習時間,否則不要的……越長越好。面了半個多小時,緊接着立刻就是二面經理面,ps:和我一塊兒的還有一個來面試的,貌似是北大的,一面刷掉了。算法

  二面大概1個小時,技術上沒再細問,主要問的項目經驗,還有目前實習的內容,工做狀況,總之就是看你怎麼自圓其說嘍,沒啥難度,只要是真正實習,好好作項目,回答這些應該都沒問題。最後仍是例行的讓我問問題,我當時問了待遇,實習生培養機制,主要作啥,老生常談。到了這一刻,我覺得就算結束了,沒想到,經理讓我等等,他去叫他老闆來……三面開始了!
  三面半個多小時,居然仍是問技術,讓手寫了個快速排序,大小頂堆,m個元素數組找前n大的元素(不排序方法,最優),1-n天然數的數組,亂序排序(最優),後兩個題回答的不是很讓面試官滿意,雖然也說了思路。接着就是還問了TCP三次握手,爲啥三次?還有流量控制的機制,說下滑動窗口和選擇重傳……最後由於是java崗位,很天然的問了我期待的問題:JVM垃圾回收的過程,四類java引用做用和使用場景。技術面試到這裏就算結束了,最後問實習多久了,代碼量多少了,跳槽理由,對將來的規劃,家是哪兒的,你和你同窗比有啥優點?你認爲華三,華爲這樣的通訊企業和互聯網公司有什麼區別?比較下兩個公司的主營業務,你認爲有什麼不一樣……最後仍是例行問,你有啥想問的?我仍是問了下實習待遇,培養機制,可是當時居然忘了問是否是經過了,估計問了也白搭……編程

  結束後,大概用了3個多小時,老闆很和善,還怕我找不到路,親自送我到電梯離開。整個面試期間,感受仍是很不錯的,百度氛圍很是棒,裝修也不錯,看我緊張還讓我喝水……很不錯。設計模式

    

  悟道數組

  整個過程,惟一遺憾的是從面試完到最終肯定offer到手,一共等了三週+……期間經歷了協調hc,hr休假……想一想對本身也是一種磨礪和心性的鍛鍊啊!緩存

  其次這個過程仍是對人心性的磨練,等太高考成績,等過考研成績,可是那都有確切出分的時間,有答案能夠預測結果。而等待人爲因素佔不小比重的offer是最痛苦的,由於你不知道結果,你也不知道何時出結果,你不知道哪一個面試官看你不爽了……這種等待很是熬人,在此我總結一個教訓,就是在offer下來以前,永遠不要提離職,在offer到手以前,永遠不要相信任何口頭承諾,只是不停的找新的工做,直到有offer攢底爲止,就會消除這種等待的焦慮。安全

 

  知識總結網絡

  應付算法,除了常見的二分查找,快速排序,鏈表判斷有環,鏈表逆序,二叉樹的三種遍歷等等考察以外,就是多作作leetcode,或者總結下《劍指offer》,應付大部分的算法題足夠了。ACMer直接能夠忽略。其實算法的重點是必須熟練手寫!多線程

  其次就是Java的基本功,主要是JavaSE的考察:

  • 瞭解下java虛擬機的結構,重點是堆的結構,以及各部分的功能要知道,必須掌握現代Java垃圾回收算法的種類,簡單調優,和分代算法的思想,瞭解四種Java引用類型是什麼。看周志明的那本《深刻理解Java虛擬機》就夠了,應屆生。
  • 熟悉一下LRU的緩存實現原理,重點是如何實現併發,順便梳理下操做系統的內存存儲方式,各類算法,分頁,分段,碎片啥的理解下。
  • Java面試常考,能夠互相引伸的就是Java集合的知識點:hashmap和concurrentHashMap原理、區別,hashTable,hashset,各類list等,看《編程思想》結合網上博客文章總結便可。
  • 熟悉下多線程設計模式,好比生產者和消費者,不變模式等。有一本日本人寫的比較老的書能夠看看《Java多線程設計模式》,深刻的JUC併發知識最好看下《Java併發編程實踐》,老外的書很是棒。而且結合操做系統課程能夠梳理下進程,線程的各類知識點。
  • 計算機網絡,起碼的幾層協議要會,記住,理解tcp三次握手(具體報文格式),概念:流量控制,滑動窗口機制,選擇重傳等,通常應屆生也就夠用了,能夠看下老外那本經典的《tcp/ip詳解》卷一,深刻能夠把卷二看了,雖然我沒看過。可是確實好。
  • 設計模式起碼掌握單例,工廠,觀察者等,系統的能夠看下《Head First設計模式》,應付平常工做和麪試足以。設計模式這也是各個框架的考察中常考的點,重點通常就是單例的各類版本的優缺點,線程安全實現,枚舉的使用,反射,序列化的攻擊應對方法。工廠的類型等。
  • 反射,序列化的概念
  • clone的一些知識點
  • 最好熟悉下類加載機制
  • 框架暫時沒有遇到考察的。熟悉原理最好,瞭解過,讀過源碼更好了。若是是Java大數據方向的求職,相應的就是hadoop,spark等,對應的大數據的算法也要掌握一些。
  • 暫時就那麼多了。
相關文章
相關標籤/搜索