標簽: 實習 面經 Java研發 阿里、騰訊、華為
找2017暑假實習,經歷過被騰訊拒絕的無奈,也有拿到阿里和華為offer的喜悅,找實習過程也有一段時間了,在此把之前的面試知識點和經歷做個小總結,以鞭策自己更加努力前進。
1 騰訊
騰訊投的是研發崗位,原來就知道對於Java系的人想去騰訊搞研發估計難度太大,但這次自己是切切實實體會到了。3月初,請教了在騰訊工作的師兄把簡歷改了又改,由N頁濃縮為一頁的精華,師兄幫忙內推之后過了好久都沒消息,最后發現簡歷評級太低(B級),沒過,實在是很憂傷。據說簡歷評級在A以上才有機會面試,自認為個人雖然不是大神級別的水平但能力還是有的,簡歷不至於被殘忍丟掉吧。其他同學是Java系的也有簡歷順利過的,后面一對比,人家除了搞Java外,還對PHP、python、C++等非Java系語言有項目開發經驗,我就純Java,有可能有這方面的因素。當然也有可能確實是簡歷沒有寫好。就在放棄騰訊之際,騰訊社交網絡質量部卻給我發了郵件表示接收了我的簡歷。經了解這是騰訊的一個測試部門,雖然不會去但是抱着學習長經驗的心態,於是就有了接下來的測試和面試。
社交網絡質量部專項筆試:
題目1:有用戶反饋手機QQ的圖片傳輸的速度比微信慢。分析原因並提交實驗數據和最終報告。
題目2:有用戶反饋手機QQ的耗電比微信多。分析原因並提交實驗數據和最終報告。
筆試二選一,三天內完成。
表示之前沒有過類似的抓包分析經驗,但是直覺告訴我可以去干。然后選擇了題目一,手機系統是ios的,抓包工具用了fiddler和Wireshark。借同學的手機平板,用iPad和iphone開了幾個微信小號和QQ小號分別做抓包分析,也讓同學在移動網和室內wifi不同環境做了相應的測試。最后得到的結果是微信mmtls和QQ https所使用的安全協議直接或間接導致的。提交報告后得到的回應是確實有這方面的原因。筆試通過后等了2周接到面試。
騰訊面試都是現場面試。
一面:
1)問:自我介紹。
2)問:印象最深的項目。談談你的貢獻和解決的技術難點。
這里面由項目展開,一連串的追問。比如他會問你項目哪里最難,怎么解決的,執行效率如何,有沒有出現什么問題,怎么樣處理,如何維護和升級等等。需要對個人做的項目比較熟悉,平時對項目多思考才可以答得好這些問題。我對自己做過的項目還是比較熟悉的,所以回答的感覺良好。這里聊了十多分鍾。
3)問:你之前做過的社交網絡質量部專項筆試【有用戶反饋手機QQ的圖片傳輸的速度比微信慢】,你當時是怎么思考和行動的?
這里就開始聊之前做的筆試,回答方向主要集中在怎么設定實驗環境、怎么實現抓包及分析哪些關鍵內容、最后如何得出結論等等。最后面試官說這個題目其實是有一定難度的,我提交的報告的結論確實是有那方面原因(內心嘚瑟了一下,起碼答案是通過了^^)。
4)問:現場寫出使用遞歸逆序一個整數的代碼。
面試官給了我紙和筆,詢問了一些邊界問題和具體要求后就開寫了。這里需要注意的是面試現場寫代碼,首先自己不要慌張,要沉住氣相信自己,其實題目不是很難的,冷靜下來一般可以寫出來。這也說明我們平時有機會還是要在紙上寫寫代碼,不至於那么陌生。
5)問了一道智力題。
心里是千萬只草泥馬在奔騰的,面試的時候問智力題真是要坑人啊。這種問題要是不會就很難自己想出來的,不過可以換個角度思考問題,面試官人家不一定非要你回答出來,說不定更多的是考察你對問題的思考方式和過程,有什么疑惑的地方和面試官交流,你可以引導讓他給你問題范圍,甚至是給出答案的提示等等。總之智力題之類的,除非平時刷中題目,不然還是好好思考不知道結果時怎么回答才能讓面試官印象也不錯吧。
6)問:你有什么問題想要問的嗎?
問自己想知道的問題,要表現得真誠、積極、有上進心、有求知欲。最后在面試前針對性的准備一些合適的問題。
一面面了四十多分鍾。可能是測試崗位的原因,並沒有問很多具體技術的問題。
二面:
第三天收到二面的通知,很不幸在前一天吃錯東西搞得上吐下瀉,還發燒了。頂着疲憊的身軀去二面,感覺是不太妙的,但是心想這次面試本來就是抱着學習長經驗的態度來的,個人也不希望最后選擇測試崗位,心里就平衡了一些。
1)問:請作一下自我介紹。
2)問:說出對Java內存分配的機制。
3)問:JVM垃圾回收的主要算法。
4)問:收獲最大的項目是哪個,為什么?
結合自身項目談吧。
5)問:對TCP/IP的理解。是否有相關的項目經歷?
這里主要想考察你對計算機網絡的相關協議的熟悉程度。平時要針對復習。
6)問:你對未來的規划是什么樣的?
從理想、學習、就業、家庭、生活等各個方面說自己的規划和行動。
7)問:你有什么想問我的嗎?
這種問題需要提前做些功課,准備一下。
由於身體原因,個人二面面試的時候狀態不是很好。面試過程面試官讓人覺得很舒服,這可能和騰訊的企業文化有關吧。臨走之前面試官說會有人聯系我進行最后一輪終面,但是最后卻沒有收到面試的通知,而是收到【崗位不合適】信息,可能面試官看出了我的心思最后改變了主意吧。有點小遺憾,不過本來也不打算去,經驗已經賺到了。
2 阿里
阿里的面試都是電話面試,前后經歷了4次面試,每次面試時間長度都在40至50分鍾左右,從3月底到4月底也經過了一個月才出結果。
一面
1)問:請作一下自我介紹。
答:結合自己教育經歷、項目、技能簡要介紹,重點突出自己的特點和特長。
2)問:請說說什么是事務?
答:我回答時突出事物原子性操作,要么都做,要么撤銷回滾都不做。
問:詳細介紹事務的ACID特性。
答:分別介紹原子性、一致性、隔離性和持續性(持久性)四大特性內容。
3)問:對樂觀鎖和悲觀鎖的理解。
答:當時對這一部分內容不是很了解,但是大概說出了自己的理解。悲觀鎖是在並發環境中操作的時候,假設每一次操作都會有並發進行,每次執行都需要加鎖解決潛在的多線程並發問題,在執行的時候比較“悲觀”,認為操作都會遇到並發問題。相反樂觀鎖在執行的時候就比較“樂觀”,認為操作時不會或很少遇到並發問題,所以只在最后提交操作的時候檢查和處理並發問題。
問:介紹它們是如何實現的。
答:我回答的時候舉了數據庫樂觀鎖和悲觀鎖的例子。悲觀鎖通過加上表鎖、行鎖、讀鎖和寫鎖等實現,樂觀鎖通過版本控制(使用時間戳或遞增的整數)等手段實現該機制。
4)介紹Java的集合,list、set和map的區別。
答:從它們的作用、用法、底層的數據結構、初始化容量和擴容規則、被繼承的父類、是否多線程安全等角度去回答。
5)問:HashMap和HashTable的區別。
答:這里和回答集合類的思路是類似的。
問:HashMap底層是由什么數據結構實現的?
答:使用哈希表實現,用鏈地址法處理沖突碰撞......
問:那么HashMap如何實現具體的底層put操作和get操作,請詳細介紹。
答:HashMap內部使用Entity對象存儲鍵值對,先說put操作......
問:好,那HashMap是線程安全的嗎?
答:非線程安全的。
問:那你如何實現HashMap的線程安全?
答:使用Collections集合包裝類的靜態方法synchronizedHashMap包裝,實現hashMap的線程安全......
問:該方法實現的HashMap安全線程執行效率如何?
答:由於使用synchronize關鍵字實現同步,在多並發環境執行線程必須持有對象鎖等才能執行同步代碼,在大量並發時效率不高......
問:有沒有執行效率更好的辦法?
答:使用concurrentHashMap實現同步map,效率會更高。
問:好,說說看concurrentHashMap的實現機制,它為什么會效率更高?
答:concurrentHashMap使用鎖分段技術實現同步機制,在並發時使用的鎖粒度會更小,可以處理更大量的並發數......
hashMap這塊追問了好久,幸好所以這部分內容還算比較了解,答得還算過得去。所以如果還有什么不會的,趕緊要熟知才行,最好是邊看源碼邊體會其中的奧妙之處。
6)問:Java如何實現類加載?
答:根據類加載器的類別、作用以及類查找和加載等方面回答。
7)問:看你也做了不少項目,說說對你印象最深的一個。
答:結合自身項目回答,突出自己在其中的角色和起到的作用,自己的什么方法解決了什么問題,性能和效率怎么樣,最后自己學到了什么,以后可以優化和升級的方向等。
8)二叉搜索樹的查找時間復雜度?已排序數組查找一個元素的時間復雜度?
9)如果你和你同學在討論項目的時候意見無法統一,你該怎么做?
10)你有什么問題想要問的嗎?
二面:
二面主要就是面做的項目,簡歷上的項目都問了,而且有些地方還問的很細。所以既然你敢寫上簡歷,那么上面的每部分內容都有比較清楚才行。
1)問:請做一個簡要的自我介紹吧。
2)問:請你依次說說你做的每一個項目。
答:我在簡歷上寫了三個項目,然后面試官一個一個項目慢慢問,而且問得很仔細。比如其中提到了一個定位算法,就問我是怎么設計的,根據什么如何有效建模,並且是怎么樣驗證算法有效性,如何處理邊界特殊情況等等。一句話,簡歷上面出現的內容,自己是要真的要知道並且能說出所以然,如果是似懂非懂的內容,不是很建議寫到簡歷,不然面試官一個簡單追問就可能答不上來,就有點尷尬了。項目這一塊大概面了二十多分鍾,問得很詳細,所以聊的時間久了一些。
3)問:在寫shell腳本的時候,怎么樣判斷一個文件是否存在?
4)問:Linux系統下如何查看一個端口的占用情況?查看進程呢?
5)問:Linux系統下怎么樣查看系統的運行狀況?
這里我回答了top命令,然后就被追問loadaverage的幾個數值的含義,還追問了這個命令其他操作。
6)問:如何修改主機名?如何查看本機的ip?
我在回答查看ip的時候說了ipconfig,面試官很友好的提醒讓我再想想。這才尷尬地發現自己說成了Windows下的DOS命令,趕緊改口說出了ifconfig。這里不得不感慨一下阿里的面試官真是nice,讓人感覺交流很舒服,絲毫沒有高高在上的架子。
7)問:怎么樣對數據庫查詢進行優化?
主要說了索引的優化,包括復合索引以及創建索引、使用索引關鍵字查詢的順序等該注意的問題。
8)問:說說你對concurrentHashMap的理解。
這個問題在一面的時候涉及到了,在那之后仔細看了這部分的源碼和資料,所以這里回答得比較順利。可見,concurrentHashMap是一個非常重要的知識點,需要特別關注。
9)問:JVM的內存結構?
這里需要對JVM有一定的了解,從JVM內存的Java棧、Java堆、本地方法棧、程序計數器、方法區的結構以及對應的作用等方面回答。
10)最后問了一道智力題,當時腦袋一時轉不過來了,面試官很耐心的引導還是沒有答出來,不過面試官很友好的告知了答案。
最后結束的時候面試官說讓我等待接下來的面試,聽到這個還是挺開心的,這意味着二面過了,准備三面吧。
三面:
三面等了一個多星期才來,某天晚上十點離開實驗室的時候突然來了電話,不得不說阿里的面試官也是蠻拼的,這么晚了還要面試。
1)問:我是阿里巴巴的面試官,請你先作一下自我介紹。
自我介紹多了感覺回答的要點和套路都比較清楚了,這就是所謂的經驗積累了。
2)問:說說對你印象或收獲最多的項目。
結合自己的項目具體介紹,突出自己在項目中起到的作用和收獲,最好說說自己在項目前、中、后是如何思考的。
3)問:你對未來是怎么樣規划的?
4)問:你現在是在武漢,那么假設你是武漢市消防相關部門的負責人,沒有任何數據的前提下你認為武漢需要部署多少個消防站?
這種題目應該是開放性的,個人覺得最重要的一點就是要表現出你是如何思考的。
5)問:你是如何與身邊的人相處的?有矛盾的時候怎么處理?
6)問:你有什么想要問的嗎?
三面聊了30到40分鍾這樣,沒有涉及很多技術的問題,說的主要是項目和其他非技術問題,聊完之后面試官就讓我等下一輪面試了。
四面:
等了一個多星期,某個晚上八點多終於等到了阿里HR的面試電話。
1)請作一下自我介紹吧。
2)你研究生是保研的嗎?
3)從本科開始到研究生你是怎么學習的?有沒有什么變化?
4)你平時的日常生活是如何安排的?
5)我看到你有參加過學院的籃球比賽,除了籃球外有沒有什么愛好?你如何調節學習和娛樂的時間分配?
6)我看到你有班干部的經歷,請問組織活動的時候你是如何組織同學保證活動有序進行的?
7)你對你自己的未來有沒有什么規划?
8)你有什么想問的嗎?
四面HR面的比較快,才三十多分鍾就結束了。面試的時候感覺面試官比較急,可能是還要面試很多人吧。有些話我這邊還沒說完就被面試官搶過去了,明顯感覺面試官在趕時間想要快點結束這一輪面試,不過阿里的HR MM也是辛苦,晚上還要加班面試。
焦急等待了接近一周之后,就收到阿里的offer了,這是找實習收到的第一個offer,瞬間覺得這前前后后2個月的准備也算是有了一份回報,馬上抱起籃球懷着激動的心情和同學去了籃球場大戰三百六十回合。
3 華為
三月份經過華為的筆試(三道編程題),順利進入面試環節。不過聽說華為的筆試不刷人,反正面試現場人上人海的,熱鬧非凡。華為面試一天就結束,效率比較高,個人相對比較偏好這種一面試結束就可以知道結果的方式。
一面:
1)問:自我介紹。
2)問:interface和abstract class的區別。
從修飾類的關鍵字、類聲明方式、類變量、方法體、繼承、實現、功能及用法等方面闡述。
3)問:對關鍵字assert的理解。
斷言機制。圍繞測試時使用,項目發布時停用具體描述。
4)問:JVM的內存結構模型。
Java棧、Java堆、本地方法棧、方法區、程序計數器。
5)問:垃圾回收算法和執行機制。
主要有標記-清除、標記-整理、復制算法、分代回收算法等,和串行回收、並行回收等。
6)問:哪些對象在何時會被回收?如何精確定位具體的對象?
不再被引用的對象就會成為垃圾對象,即不在引用鏈上的對象將被回收,通過引用鏈可以確定垃圾對象。
7)問:GC ROOT對象有哪些?和引用鏈的關系怎么理解?
圍繞靜態對象、常量對象、方法區對象等分析。
8)問:如果是在方法里面創建的本地對象,它會創建在內存結構的哪個地方?如何訪問該對象?
在Java棧的棧幀里面創建了對象的引用,在堆上創建了對象,棧幀里的引用指向堆中的對象。這里一開始的時候面試官描述的不是很清楚,交流的時候有了一些爭論,隨着討論深入,問題范圍縮小后就可以准確回答了。這里聊了十多分鍾,最后面試官很滿意的說了幾個字“完全正確”,直接讓我去下一輪面試了。
據現場了解,華為的一面刷人不少。在等待開始二面開始之前,被一個HR小姐姐帶到機房去做測試去了。我以為是現場考編程,后面一看是做性格測試題,瞬間感覺有戲了。做完四十分鍾的性格測試后准備二面,聽說就是直接終面了。
二面:
面試官看起來就是部門位高權重的領導,看上去都有五十多了,年紀挺大的,一副領導的架子,感覺有點小壓抑。
1)問:自我介紹。
2)問:對做過的項目做個簡單介紹。
這里有些地方想詳細深入講解,面試官直接對我揮揮手,示意【不用】,此刻我的內心是翻騰的= =。
3)問教育經歷。
4)問對未來的規划。為什么選擇深圳?
5)問學生工作和班干部的經歷
結合經歷具體介紹,突出自己在決策、組織和領導等各方面的能力。
6)問興趣愛好
我平時比較喜歡打籃球,也參加了學院組織的比賽,最后面試官和我聊起了NBA。還討論了今年季后賽的幾組對戰,當時還是在季后賽首輪,面試官還讓我預測東西部冠軍,預測最后總決賽對戰雙方(汗顏)。
就這樣二面結束了,注重的不是技術考察而是個人的綜合素質。在我離開的時候,門口的工作人員讓我回去等通知了,說是在十個工作日內會有通知。我知道,華為有戲!過了一個星期,收到了華為的offer。
最終決定實習去杭州。