1. 程式人生 > >Java程式設計師是如何一舉拿下騰訊、網易offer

Java程式設計師是如何一舉拿下騰訊、網易offer

騰訊內推TST(已拿到offer)

一面:

  • 自我介紹
  • 跟我提簡歷裡面的專案,如何實現的?具體原理?如果出現XXX情況,會不會出現XXX問題?
  • Android 訊息機制,Looper、訊息佇列等
  • Android事件分發機制
  • 自定義過View嗎?回答有自定義過,然後談了下(普通View)onMeasure、onDraw。針對ViewGroup談了下onLayout,然後還有就是需要注意onDraw不要做過於耗時的任務,防止卡頓。
  • Java中的多執行緒:Thread、Runnable
  • Java中的同步問題?Lock、Synchronized
  • 類的載入過程?五步
  • TCP與UDP區別 10.10萬個整數中找出排序後的前10個數(Top N 問題),及其對應演算法複雜度
  • 10萬個整數中,每個整數取值[0,99],找出排序後的中間位置的數(中位數)
  • 堆排序的演算法複雜度
  • 面試官說,大概就這些了。緊接著想要掛電話的樣子,我趕緊說,我可以問您幾個問題嗎?面試官說當然可以。我就問了以我當前的水平能否符合您們的要求?面試官說我覺得你還不錯。緊接著問了一下大概等多久才能進入下一場面試,面試官說會盡快安排,可能會再週末。

半個月後上午 現場二面

  • 面試官非常nice,整個過程很挺順利。
  • 針對專案詢問
  • TCP擁塞機制
  • 手寫程式碼,針對Top k問題
  • 如何做到多個執行緒訪問同一個陣列,既要執行緒安全,同時提高讀寫效率(我是通過分段鎖的思想,說了一下自己的想法),後面還讓我手寫程式碼實現。
  • 很多內容都忘記了。。。。

下午 現場三面

三面面試官據說是總監,反正我是被打壓的擡不起頭。不得不說,總監級的人物技術確實牛逼。首先看了我的簡歷,然後說簡歷裡面的專案經驗太簡單了。。。。

  • 什麼是記憶體對齊?
  • C++記憶體分為幾種型別?(我對C++不熟,就說了JVM中的記憶體分類)
  • 如何壓縮一篇文章?
  • java類載入過程?(這個我很熟,裡面滔滔不絕,然而,得到的迴應是:背的倒是挺熟)
  • Java那些類是final?(除了String,我真的不知道還有哪些),只回答了String,面試官說,還有呢?(回答不出來了。。。)後面查了下,其實Math類也是final,面試官說日期類有很多,但是我回頭查了下,還是沒查到哪個日期類是final。

快結束時,面試官說,就到這裡吧,你很幸運,我沒有讓你現場手寫程式碼。因為我當時覺得這次面試面的很差,我就回答,我願意嘗試手寫程式碼。然後面試官出了2道題:如何逆轉字串?如何實現“ I am Student”轉為“Student am I”?兩道題都很簡單,劍指offer裡面都有。我一聽到這個問題心裡就呵呵一笑了,立馬說出如何實現。然後,面試官說行,就到這了。

雖然炮轟式的提問,但是我的記憶力確實很差。。。目前只記得這些。。。後面想到再補充。二面完了之後,我覺得直接都掛了,因為好多跟C++相關問題我都回答不出來(畢竟我只搞Java 、Android),在面試官面前,自己確實很菜。

下午 現場HR面

  • 家在哪?
  • 本科是哪個學校?
  • 有沒有親戚在騰訊?
  • 有沒有女朋友?
  • 你來深圳了,女朋友怎麼辦?(回答跟我一起來)
  • 你實習過嗎?回答實驗室不允許我們實習,然後HR說,那相比那些實習過的人,你的優勢是什麼?
  • 你有什麼問題問我嗎?

想學習交流HashMap,nginx、dubbo、Spring MVC,分散式、高效能高可用、redis、jvm、多執行緒、netty、kafka、的加群:488048032

網易面試:(已拿到offer)

網易大樓是在百度大樓的旁邊,感覺還是不錯的,來的稍微有點早,在前臺等了20分鐘左右的樣子,面試官就帶我去面試了。

筆試:

具體的內容記不太清楚了,都還是比較基本的,大概有以下幾個型別:選擇題、程式輸出題、簡答、四道演算法:

  • 給定一個int型 n,輸出1~n的字串例如 n = 4 輸出“1 2 3 4”;
  • 輸出所有的笛卡爾積組合;
  • 單例模式;
  • 最長上升子序列。

都不是很難,基本上都能作出來。

一面:

一面面試官是資深的Android開發工程師,所有的問題問的都很詳細,很多細節,面試官都能清晰的說出來,水平很高。

屬於循序漸進的提問方式,從簡單的知識入手,逐漸深入,直到你回答不出來而且問的都是你自認為很擅長的知識點,可見面試官的功力有多深厚,深深的佩服。

我下面大概說一些問題,面試官最後總能問到很深入的地方:

  • 對剛才做的題,一些錯的地方做了討論,主要是類的載入和內部類方面的知識,尤其一些深入到JVM層的知識的確自己有一些不足,不過大部分都還是能答出來;
  • 雙親委託機制,類的五個載入過程;
  • java類載入器的載入流程;
  • Binder機制,從java到framework再到kenral層,面試官問的都很詳細,遇到不會的也都會跟我解釋;
  • Serializable和Parcelable的區別;
  • View的繪製流程,詳細到framework程式碼,討論到不確定的地方,立馬開啟電腦和我一起看原始碼;
  • 事件分發機制;
  • 常用設計模式,使用靜態內部類實現單例的原理是什麼;
  • 執行緒同步,CopyOnWriteArrayList怎樣實現;
  • Volley原始碼,EventBus原始碼。

面了1個半小時,面試完後就到12點了,跟我說我這關過了基本上就沒問題了,面試官還是一個很幽默的人,帶我去網易食堂吃了頓飯,這裡的飯確實特別好吃,回來後,休息了一會,就開始Leader面了。

二面:

Leader面,我還以為至少要3輪技術面呢,沒想到直接就到leader面試了,後來才知道第一輪面試的結果還是很重要的,一面面試官是非常資深的工程師,只要通過一面了基本就沒問題了。

  • 專案介紹,聊一些專案上的問題;
  • 下拉listview的實現,需要注意的地方和優化的地方(不是lsitview的優化,是下拉的優化);
  • Android上一些優化方案;
  • 介紹了一下現在做的專案,大體說明了現在所用到的技術。

總體感覺網易的氛圍還是非常好的,技術實力非常雄厚,leader技術能力也很強,並且一面面試官告訴我,leader有時候還會自己寫一些程式碼,一般到了leader很少有寫程式碼的了。

HR面:

一樣的流程,各種談,說面試官對我評價非常高,希望我能來之類的話,然後就算面試結束了。

想學習交流HashMap,nginx、dubbo、Spring MVC,分散式、高效能高可用、redis、jvm、多執行緒、netty、kafka、的加群:488048032