天天看點

IT牛們的bat面試心得與經驗總結

面試心得與總結

面試心得與總結—BAT、網易、蘑菇街

之前實習的時候就想着寫一篇面經,後來忙就給忘了,現在找完工作了,也是該靜下心總結一下走過的路程了,我全盤托出,奉上這篇

誠意之作,希望能給未來找工作的人一點指引和總結, 也希望能使大家少走點彎路 , 如果能耐心讀完,相信對你會找到你需要的東

西。

先說一下LZ的基本情況,LZ是四川某985學校通信專業的研究所學生(非計算機),大學階段也就學了C語言,根本沒想過最後要成為碼

農。大四才開始學java,研一下開始學android,是以LZ覺得自己開始就是一個小白,慢慢成長起來的。

一、心态

心态很重要!

心态很重要!

心态很重要!

重要的事情說三遍,這一點我覺得是必須放到前面來講。

找工作之前,有一點你必須清楚,就是找工作是一件看緣分的事情,不是你很牛逼,你就一定能進你想進的公司,都是有一個機率在

那。如果你基礎好,項目經驗足,同時準備充分,那麼你拿到offer的機率就會比較高;相反,如果你準備不充分,基礎也不好,那麼

你拿到offer的機率就會比較低,但是你可以多投幾家公司,這樣拿到offer的幾率就要大一點,因為你總有運氣好的時候。是以,不要

懼怕面試,剛開始失敗了沒什麼的,多投多嘗試,面多了你就自然能成面霸了。得失心也不要太重,最後每個人都會有offer的。

還有一個對待工作的心态,有些人可能覺得自己沒有動力去找一個好工作。其實你需要明白一件事情,你讀了十幾二十年的書,為的是

什麼,最後不就是為了找到一個好工作麼。現在到了關鍵時刻,你為何不努力一把呢,為什麼不給自己一個好的未來呢,去一個自己不

滿意的公司工作,你甘心嗎?

想清楚這一點,我相信大多數人都會有一股幹勁了,因為LZ剛剛準備開始找實習的時候,BAT這種公司想都不敢想,覺得能進個二線公

司就很不錯了,後來發現自己不逼自己一把,你真不知道自己有多大能耐,是以請對找工作保持積極與十二分的熱情,也請認真對待每

一次筆試面試。

二、基礎

基礎這東西,各個公司都很看重,尤其是BAT這種大公司,他們看中人的潛力,他們舍得花精力去培養,是以基礎是重中之重。之前很

多人問我,項目經曆少怎麼辦,那就去打牢基礎,當你的基礎好的發指的時候,你的其他東西都不重要了。

基礎無外乎幾部分:語言(C/C++或java),作業系統,TCP/IP,資料結構與算法,再加上你所熟悉的領域。這裡面其實有很多東

西,各大面試寶典都有列舉。

在這隻列舉了Android用戶端所需要的和我面試中所遇到的知識點,盡量做到全面,如果你掌握了以下知識點,去面android用戶端應

該得心應手。

J2SE基礎

1. 九種基本資料類型的大小,以及他們的封裝類。

2. Switch能否用string做參數?

3. equals與==的差別。

4. Object有哪些公用方法?

5. Java的四種引用,強弱軟虛,用到的場景。

6. Hashcode的作用。

7. ArrayList、LinkedList、Vector的差別。

8. String、StringBuffer與StringBuilder的差別。

9. Map、Set、List、Queue、Stack的特點與用法。

10. HashMap和HashTable的差別。

11. HashMap和ConcurrentHashMap的差別,HashMap的底層源碼。

12. TreeMap、HashMap、LindedHashMap的差別。

13. Collection包結構,與Collections的差別。

14. try catch finally,try裡有return,finally還執行麼?

15. Excption與Error包結構。OOM你遇到過哪些情況,SOF你遇到過哪些情況。

16. Java面向對象的三個特征與含義。

17. Override和Overload的含義去差別。

18. Interface與abstract類的差別。

19. Static class 與non static class的差別。

20. java多态的實作原理。

21. 實作多線程的兩種方法:Thread與Runable。

第1頁 共7頁22. 線程同步的方法:sychronized、lock、reentrantLock等。

23. 鎖的等級:方法鎖、對象鎖、類鎖。

24. 寫出生産者消費者模式。

25. ThreadLocal的設計理念與作用。

26. ThreadPool用法與優勢。

27. Concurrent包裡的其他東西:ArrayBlockingQueue、CountDownLatch等等。

28. wait()和sleep()的差別。

29. foreach與正常for循環效率對比。

30. Java IO與NIO。

31. 反射的作用于原理。

32. 泛型常用特點,List能否轉為List。

33. 解析XML的幾種方式的原理與特點:DOM、SAX、PULL。

34. Java與C++對比。

35. Java1.7與1.8新特性。

36. 設計模式:單例、工廠、擴充卡、責任鍊、觀察者等等。

37. JNI的使用。

Java裡有很多很雜的東西,有時候需要你閱讀源碼,大多數可能書裡面講的不是太清楚,需要你在網上尋找答案。

推薦書籍:《java核心技術卷I》《Thinking in java》《java并發程式設計》《effictive java》《大話設計模式》

JVM

1. 記憶體模型以及分區,需要詳細到每個區放什麼。

2. 堆裡面的分區:Eden,survival from to,老年代,各自的特點。

3. 對象建立方法,對象的記憶體配置設定,對象的通路定位。

4. GC的兩種判定方法:引用計數與引用鍊。

5. GC的三種收集方法:标記清除、标記整理、複制算法的原理與特點,分别用在什麼地方,如果讓你優化收集方法,有什麼思路?

6. GC收集器有哪些?CMS收集器與G1收集器的特點。

7. Minor GC與Full GC分别在什麼時候發生?

8. 幾種常用的記憶體調試工具:jmap、jstack、jconsole。

9. 類加載的五個過程:加載、驗證、準備、解析、初始化。

10. 雙親委派模型:Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader。

11. 分派:靜态分派與動态分派。

JVM過去過來就問了這麼些問題,沒怎麼變,記憶體模型和GC算法這塊問得比較多,可以在網上多找幾篇部落格來看看。

推薦書籍:《深入了解java虛拟機》

作業系統

1. 程序和線程的差別。

2. 死鎖的必要條件,怎麼處理死鎖。

3. Window記憶體管理方式:段存儲,頁存儲,段頁存儲。

4. 程序的幾種狀态。

5. IPC幾種通信方式。

6. 什麼是虛拟記憶體。

7. 虛拟位址、邏輯位址、線性位址、實體位址的差別。

因為是做android的這一塊問得比較少一點,還有可能上我履歷上沒有寫作業系統的原因。

推薦書籍:《深入了解現代作業系統》

TCP/IP

1. OSI與TCP/IP各層的結構與功能,都有哪些協定。

2. TCP與UDP的差別。

3. TCP封包結構。

4. TCP的三次握手與四次揮手過程,各個狀态名稱與含義,TIMEWAIT的作用。

5. TCP擁塞控制。

6. TCP滑動視窗與回退N針協定。

7. Http的封包結構。

8. Http的狀态碼含義。

9. Http request的幾種類型。

10. Http1.1和Http1.0的差別

第2頁 共7頁11. Http怎麼處理長連接配接。

12. Cookie與Session的作用于原理。

13. 電腦上通路一個網頁,整個過程是怎麼樣的:DNS、HTTP、TCP、OSPF、IP、ARP。

14. Ping的整個過程。ICMP封包是什麼。

15. C/S模式下使用socket通信,幾個關鍵函數。

16. IP位址分類。

17. 路由器與交換機差別。

網絡其實大體分為兩塊,一個TCP協定,一個HTTP協定,隻要把這兩塊以及相關協定搞清楚,一般問題不大。

推薦書籍:《TCP/IP協定族》

資料結構與算法

1. 連結清單與數組。

2. 隊列和棧,出棧與入棧。

3. 連結清單的删除、插入、反向。

4. 字元串操作。

5. Hash表的hash函數,沖突解決方法有哪些。

6. 各種排序:冒泡、選擇、插入、希爾、歸并、快排、堆排、桶排、基數的原理、平均時間複雜度、最壞時間複雜度、空間複雜度、是

否穩定。

7. 快排的partition函數與歸并的Merge函數。

8. 對冒泡與快排的改進。

9. 二分查找,與變種二分查找。

10. 二叉樹、B+樹、AVL樹、紅黑樹、哈夫曼樹。

11. 二叉樹的前中後續周遊:遞歸與非遞歸寫法,層序周遊算法。

12. 圖的BFS與DFS算法,最小生成樹prim算法與最短路徑Dijkstra算法。

13. KMP算法。

14. 排列組合問題。

15. 動态規劃、貪心算法、分治算法。(一般不會問到)

16. 大資料處理:類似10億條資料找出最大的1000個數………等等

算法的話其實是個重點,因為最後都是要你寫代碼,是以算法還是需要花不少時間準備,這裡有太多算法題,寫不全,我的建議是沒事

多在OJ上刷刷題(牛客網、leetcode等),劍指offer上的算法要能了解并自己寫出來,程式設計之美也推薦看一看。

推薦書籍:《大話資料結構》《劍指offer》《程式設計之美》

Android

1. Activity與Fragment的生命周期。

2. Acitivty的四中啟動模式與特點。

3. Activity緩存方法。

4. Service的生命周期,兩種啟動方法,有什麼差別。

5. 怎麼保證service不被殺死。

6. 廣播的兩種注冊方法,有什麼差別。

7. Intent的使用方法,可以傳遞哪些資料類型。

8. ContentProvider使用方法。

9. Thread、AsycTask、IntentService的使用場景與特點。

10. 五種布局: FrameLayout 、 LinearLayout 、 AbsoluteLayout 、 RelativeLayout 、 TableLayout 各自特點及繪制效率對比。

11. Android的資料存儲形式。

12. Sqlite的基本操作。

13. Android中的MVC模式。

14. Merge、ViewStub的作用。

15. Json有什麼優劣勢。

16. 動畫有哪兩類,各有什麼特點?

17. Handler、Loop消息隊列模型,各部分的作用。

18. 怎樣退出終止App。

19. Asset目錄與res目錄的差別。

20. Android怎麼加速啟動Activity。

21. Android記憶體優化方法:ListView優化,及時關閉資源,圖檔緩存等等。

22. Android中弱引用與軟引用的應用場景。

23. Bitmap的四中屬性,與每種屬性隊形的大小。

第3頁 共7頁24. View與View Group分類。自定義View過程:onMeasure()、onLayout()、onDraw()。

25. Touch事件分發機制。

26. Android長連接配接,怎麼處理心跳機制。

27. Zygote的啟動過程。

28. Android IPC:Binder原理。

29. 你用過什麼架構,是否看過源碼,是否知道底層原理。

30. Android5.0、6.0新特性。

Android的話,多是一些項目中的實踐,使用多了,自然就知道了,還有就是多逛逛一些名人的部落格,書上能講到的東西不多。另外

android底層的東西,有時間的話可以多了解一下,加分項。

推薦書籍:《瘋狂android講義》《深入了解android》

其他綜合性的書籍也需要閱讀,推薦:《程式員面試筆試寶典》《程式員面試金典》。另外“牛客網www.newcoder.com”是個好地

方,裡面有各種面試筆試題,也有自己線上的OJ,強烈推薦,還有左程雲老師的算法視屏課(已經出書了),反正我看了之後對我幫

助很大(這不是植入廣告)。

三、 項目

關于項目,這部分每個人的所做的項目不同,是以不能具體的講。項目不再與好與不好,在于你會不會包裝,有時候一個很low的項目

也能包裝成比較高大上的項目,多用一些專業名詞,突出關鍵字,能使面試官能比較容易抓住重點。在聊項目的過程中,其實你的整個

介紹應該是有一個大體的邏輯,這個時候是在考驗你的表達與叙述能力,是以好好準備很重要。

面試官喜歡問的問題無非就幾個點:

1. XXX(某個比較重要的點)是怎麼實作的?

2. 你在項目中遇到的最大的困難是什麼,怎麼解決的?

3. 項目某個部分考慮的不夠全面,如果XXXX,你怎麼優化?

4. XXX(一個新功能)需要實作,你有什麼思路?

其實你應該能夠預料到面試官要問的地方,請提前準備好,如果被問到沒有準備到的地方,也不要緊張,一定要說出自己的想法,對不

對都不是關鍵,主要是有自己的想法,另外,你應該對你的項目整體架構和你做的部分足夠熟悉。

四、 其他

你應該問的問題

面試裡,最後面完之後一般面試官都會問你,你有沒有什麼要問他的。其實這個問題是有考究的,問好了其實是有加分的,一般不要問

薪資,主要應該是:關于公司的、技術和自身成長的。

以下是我常問的幾個問題,如果需要可以參考:

1. 貴公司一向以XXX著稱,能不能說明一下公司這方面的特點?

2. 貴公司XXX業務發展很好,這是公司發展的重點麼?

3. 對技術和業務怎麼看?

4. 貴公司一般的團隊是多大,幾個人負責一個産品或者業務?

5. 貴公司的開發中是否會使用到一些最新技術?

6. 對新人有沒有什麼教育訓練,會不會安排導師?

7. 對Full Stack怎麼看?

8. 你覺得我有哪些需要提高的地方?

知識面

除了基礎外,你還應該對其他領域的知識有多少有所涉獵。對于你所熟悉的領域,你需要多了解一點新技術與科技前沿,你才能和面試

官談笑風生。

軟實力

什麼是軟實力,就是你的人際交往、靈活應變能力,在面試過程中,良好的禮節、流暢的表達、積極的交流其實都是非常重要的。很多

公司可能不光看你的技術水準怎麼樣,而更看重的是你這個人怎麼樣的。是以在面試過程中,請保持誠信、積極、樂觀、幽默,這樣更

容易得到公司青睐。

很多時候我們都會遇到一個情況,就是面試官的問題我不會,這時候大多數情況下不要馬上說我不會,要懂得牽引,例如面試官問我

C++的多态原理,我不懂,但我知道java的,哪我可以向面試官解釋說我知道java的,類似的這種可以往相關的地方遷移(但是需要注

意的是一定不要不懂裝懂,被拆穿了是很尴尬的),意思就是你要盡可能的展示自己,表現出你的主動性,向面試官推銷自己。

還有就是遇到智力題的時候,不要什麼都不說,面試官其實不是在看你的答案,而是在看你的邏輯思維,你隻要說出你自己的見解,有

一定的思考過程就行。

五、 面經

LZ應聘的職位都是android用戶端開發。

面經其實說來話長,包括實習的話面過的公司有:CVTE、騰訊、阿裡、百度、網易、蘑菇街、小米。最早得追溯到到今年3月份,那時

候剛過完年,然後阿裡的實習内推就開始了,我基本都沒什麼準備,就突如其來的接到了人生中第一個面試電話。

第4頁 共7頁阿裡實習内推一面: 電話面試, 由于是第一次面試,是以非常緊張,項目都沒怎麼說清楚。然後面試官就開始問項目細節了,這裡我

關于一個項目細節和面試官有不同的看法,面試官說我這樣做有問題,然後我說我們确實是這樣做的,并沒有出什麼錯,差點和面試官

吵起來,最後我還是妥協了。然後問了我一個怎麼對傳輸的資料加密,我答的很挫,然後面試官就開始鄙視我:你這個基礎不好,那個

基礎不好,那你說說你還有其他什麼優勢沒?Blabla緊張的說了一些…………隻面了30分鐘不到,然後妥妥的就挂了。

經過這次面試突然感覺人生的艱辛,幾天後我們教研室的其他同學陸續開始了面試,他們都很順利,其中我的室友(單程車票)很順利

的拿到了offer,他是個大神,然後我就壓力無比的大。制定了整套複習計劃,從早上9點看書看到晚上10點。

到了3月15号左右有CVTE面試,第一次面試是群面,比較坑,坐了一個小時的車過去群面了5分鐘,沒什麼好說的。

CVTE實習面 :在自我介紹和項目後,面試官開始問一些java基礎,object有哪些方法?這個還能說了一些。問hashmap有多大,這個

當時一臉茫然,還sb的答了一個65535。然後面試官讓我寫三分鐘内寫一個二分查找,當時也是第一次手寫代碼,并且還計時,完全沒

經驗,最後逾時寫了出來。中間又問了我一堆基礎,都答得不是很完整。最後問我遇到過OOM的情況沒有,什麼情況下會OOM。這

個也沒答出來,然後又妥妥的挂了。

這次經曆告訴我,我是缺少面試經驗,和現場寫代碼的能力,基礎還需要多加強。是以我開始各種準備,在一個月的時間裡看了四本面

試書(程式員面試寶典、java程式員面試寶典、程式員面試筆試寶典、劍指offer),把所有關于資料結構和算法的東西用代碼寫了一

遍。

然後到了四月初,騰訊來了,我最開始還是非常向往騰訊的,但就當時那個情況,我對自己不報太大希望,覺得能進BAT這樣的頂級公

司是個奢侈的夢想。

騰訊的面試是在一個5星級酒店裡面,逼格高大上,感覺問的東西也比較多,感覺喜歡問智力題,但是我沒遇到。

騰訊實習1面: 50分鐘左右, 面試的時候還是有些緊張的,但是運氣好,遇到了一個學校的師兄,他一直叫我不要緊張。幾個比較關

鍵的問題:死鎖的必要條件,怎麼解決,java和c++比有什麼優勢,java同步方法,activity生命周期,中間讓我設計了個銀行排隊系

統,我說了一堆。然後讓我寫了一個計算一個int裡面二進制有幾個1,然後我用最高效的方法(n=n&n-1)寫出來之後,面試官有點

意外,還說沒見過這麼寫的,讓我跟他解釋一下。後面就是拉拉家常,問我對工作地點怎麼看,讓我對比qq和微信,一面出來之後,

面試官讓我留意通知,心想是過了,其實發揮的不怎麼好。

就在會學校的路上,都要到學校了,收到了騰訊二面的通知,下午3點。然後我又跑回去二面。

騰訊實習2面: 二面是一個很嚴肅的人,看上去就比較資深那種,一直都不笑,後面才知道是手機管家T4的專家。一開始就問我項目

裡,心跳包是怎麼設計的,我項目裡并沒有用心跳,然後隻能跟他說沒做,問我用json傳輸資料有什麼不好(我隻知道用哪想過有什麼

不好)。又問了http和socket的差別,兩個協定哪個更高效一點,遇到過java記憶體洩露沒有,用過哪些調試java記憶體工具,java四種引

用。多數都是項目上的東西,基礎的東西沒問太多,然後感覺自己答的不是很好,很多都不知道,而且還答錯了。其實我感覺我應該是

過不了的,但是最後我問問題的時候,我讓他評價下我的表現,他說不好評價,我自己說了一堆,說在學校裡确實見識到的東西比較

少,很多東西沒考慮全面,然後他表示贊同,和我探讨了一番,我覺得最後這個問題給我加了不少分。二面也面了50分鐘左右。

回來後發現我的狀态一直沒變,而他們二面完了的都到了HR面了,我以為我已經挂定了,後來在一天晚上12點的時候,驚喜的收到了

第二天HR面的短信,當晚上幾乎高興得一晚上沒睡着覺。

騰訊實習3面(HR): 就是hr面,也就面了十幾分鐘,聊聊天,問問哪的人,未來什麼打算的等等,基本不怎麼挂人就不詳細寫了。

就這樣拿到了人生中第一個實習offer。

後面找實習的心就放松了,沒有複習了。然後到了5月5号,阿裡來了。對阿裡也隻是想去面一面的心态了,因為已經有騰訊的offer

了,就沒想太多。

阿裡實習1面: 面過騰訊之後發現自己已經比較淡定了,面試得時候能夠比較好的交談了。這一面也遇到一個比較好的面試官,能很輕

松的和他交流。主要的問題是android的:activity的生命周期、activity的四種啟動模式(當時忘了一些沒答全)、線性布局和相對布

局、多線程請求,java GC算法與GC方法,記憶體模型,有一個比較特别的問題是問我微信的朋友圈怎麼設計,然後我把思路跟他說了,

其他的就是問了項目相關的了。還問了我一個覺得技術深度重要還是技術寬度重要,一面感覺還是比較基礎的。

阿裡實習2面: 這一面就比較虐心,碰到一個阿裡雲的CTO,一上去項目看都不看,直接問我寫過多少行代碼,我說至少3、4萬行,然

後他讓我寫了兩個題:一個找素數,一個遞歸求階層,對我也算手下留情(他後來讓我同學寫AVL樹的插入算法,想想也是醉了)。後

面就各種基礎了,java的基礎挨個問了一遍,比較關鍵多線程實作,鎖的幾種等級等,反射的用法,wait()和sleep()(讨論這個的時候

他把我說暈了),Java還好,多數能應付,然後他就開始問c++的了。雖然是基礎,但是lz忘了差不多了,什麼指針數組和數組指針,

虛函數,多态實作(這個我扯到java上了)等等,問了很多,很多都沒答上來,然後他說我基礎不太好(我想說我履歷上寫的了解

C++,為什麼要追着我問TT)。

就這樣出來了,本來以為挂了,後面被通知過了。同學都隻有2面技術面,我居然多了一面,叫交叉面試,心想這下肯定完了。

阿裡實習3面: 這一面遇到了後面我去實習時候的部門boss,人非常好,來的時候走的時候都要和我握手,非常的平易近人。這一面還

是問項目上的一些東西居多,基礎就問了個java多線程,各個排序的時間複雜度、思想。技術問了半個小時,後面半個小時就開始各種

聊人生了(@_@),我家是哪的,父母幹嘛的,中學怎麼樣,大學怎麼樣,等等,完全就不像是技術面嘛(後來才知道,我一個同學

一開始來就和他聊人生,還聊過了。再次感歎找工作是看緣分呐)。

阿裡實習4面(HR) :阿裡hr比騰訊hr面專業,面了一個小時,把我的生活經曆趴了一遍,(問了類似你的優缺點,最讓你高興的一

件事,最讓你傷心的一件事,你的職業規劃,你的理想等等,這種,現在想不起來了)也沒什麼特别好說的。

面完後第二天去圓桌簽offer,就這樣又拿到了阿裡的實習offer。

第5頁 共7頁LZ後面衡量了杭州阿裡B2B和廣州騰訊MIG,最後選擇去了阿裡,因為在總部,感覺大boss人比較好,發展前途可能不錯,而且留下

來的幾率比較大,而騰訊是一個分部門,感覺可能不是很有前景(但是後來了解到其實廣州騰訊MIG發展前景非常好,環境也非常和

諧,我同學去實習的都留下來了。哎,隻能感歎選擇是個大問題)。在阿裡實習的兩個月時間也挺愉快的,學到了不少東西,也認識了

很好的師兄和主管,隻因最後被擁抱了變化沒有拿到正式offer。

實習面經就已經寫完了,後面是正式找工作的經曆,主要是内推比較多:騰訊、網易、蘑菇街、小米,校招就面了家百度。

在阿裡實習的時候,面了網易和蘑菇街。

網易面試是我面了這麼多中,問得最專業的了。

網易内推1面: 電話面,一天在裡中午休息的時候面的。這一面我面得很爛,由于在阿裡實習,面試官恰好也在阿裡呆過,問了我在阿

裡學到了哪些東西,看過哪些架構,看過源碼沒有,我支支吾吾說了一些,面試官不太滿意(我表示我都說不全啊,在阿裡就來了不

久,哪那麼多時間看源碼)。項目各種細節問一通之後,開始問基礎,Http封包結構,Handler、Looper模型,ThreadLocal(這個

LZ當時沒答上來),怎麼使service不被殺死,android記憶體優化,自己實作線程隊列模型,問我怎麼設計(這個當時被前面的問題問蒙

了,直接說不知道了),面了20+分鐘,感覺答得都不怎麼好,然後面試官問我說還有沒有什麼比較擅長的他沒有問道的,我就把

android Framework裡zygote的啟動和Binder通信說了一遍(這裡強行裝了一次逼)。

面完之後本以為挂定了,然後師姐跟我說居然過了,也是夠神奇,我覺得是我後面補充的内容救了我。

網易内推2面: 二面是現場面,就在阿裡濱江區的隔壁。時間是一天中午,吃了飯就到了隔壁。面試官是個比較年輕人,可能大不了我

幾歲,也是非常好說話,開始也是聊項目,我把在阿裡做的app和自己寫的小架構拿出來,他就指着上面各種問,這裡怎麼實作,會有

什麼問題,你怎麼解決,然後他描述了一個場景說,兩個activity,前面的是個dialog activity,怎麼在dialog activity存在的情況下改

變後面的activity(lz答的用廣播)。android怎麼解決緩存,要是記憶體超了怎麼辦?然後扯到了JVM,GC判定算法與方法,哪個區域

用什麼GC算法,怎麼改進複制算法。然後是基礎,也像一面一樣問了一些,hashmap和concurrntHashmap的差別、泛型能否強制轉

換。然後是算法,問了快排和歸并的平均時間複雜度與最差時間複雜度,出了個算法題:怎麼找到一個随機數組的前50大數、中間50

大數,(這個用最小堆和partition函數),複雜度是多少。

面完之後其實感覺還不錯,基本都打答上來了,順利進入三面。

網易内推3面(HR): hr面也是現場,也聊了很多,問我為什麼要從阿裡來網易,有什麼打算,你看中網易的什麼(主要是針對我是

在阿裡實習來問的,我就講了一堆網易的優勢),讓來杭州工作願不願意。還跟我說了,這次内推是優中選優,有名額限制,如果沒有

通過,請繼續關注網易校招。

後面讓師姐查了下狀态,狀态顯示是三面已認證。但是最後沒有收到offer,還是有點小失望。

蘑菇街面試感覺比較基礎,沒有什麼技術難度。

蘑菇街内推1面: 電話面,也是在一個中午面的。18分鐘,問了一些項目,主要是問基礎、問得非常基礎:Arraylist與LinkedList區

别,String與StringBuffer用法,HashMap與HashTable差別,Synchronized用法等等等等(非常基礎),這不一一列舉了,然後很

順利的就過了。

2面是在20天後了,也不知道蘑菇街出了什麼岔子。

蘑菇街内推2面 :也是電話面,CTO面試,就整體聊了項目,我在項目中學到了什麼,遇到什麼困難怎麼解決的,在阿裡實習學到了哪

些東西,有看過源碼麼,我的優缺點,我為什麼選擇蘑菇街,我了解蘑菇街哪些東西。最後答完感覺自己答得還行但是也沒有過,不知

道為什麼。

小米是投的内推精英計劃,50個名額,解決北京戶口。

小米内推1面: 電話面,大概40分鐘,面試的時候那邊很吵,不過幸好面試官語速慢,而且我答完一個問題後,面試官會和我交流哪裡

沒有答好。沒有問項目,就問了基礎,問題也不多:HashMap删除元素的方法,for each和正常for的用在不同資料結構(ArrayList、

set、hashmap)上的效率差別(LZ表示沒有看過源碼,不知道),static class和non-static class的差別,一個大檔案幾個GB,怎麼

實作複制(這個也沒有答好)。然後問了兩個算法:之前一個出現過,另一個是在git裡面,如果有n個分支,m次commit怎麼找到任

意兩個節點共同的那個父節點(這個當時我想錯了,想到二叉樹上去了,沒有答好)。然後讓兩個算法用代碼實作,1個小時内寫好

email給他。

小米面了以後也杳無音信,估計也是要求很高,畢竟解決北京戶口。

其實在阿裡實習的時候很早就開始投履歷了,因為出去實習一段時間後,感覺還是很想留在成都(因為lz是四川人)。騰訊我沒有參加

校招面試,直接走的内推流程。

騰訊1面: 電話面,7月20+号,很水,就問了項目,聊了可能有十多分鐘,然後面試官說,内推沒有什麼作用,還是要走校招面試

(我覺得他可能是有其他事情,想節省時間),你在實習不能回來,還是要現場面一次才行,然後就留了個電話讓我校招聯系他,這樣

就完了。

2面是在我回學校後了。

騰訊2面: 9月6号我回學校之後,下午3點接到電話,讓我晚上7點去騰訊現場面的(我在想為何是在晚上,lz學校到騰訊要2個小時,

還讓不讓人回來了),當時緊張得要死,因為剛從阿裡回來不久,都沒怎麼好好準備基礎,在地鐵上看了兩本基礎書,亞曆山大。面試

是在騰訊裡面,微信部門,面試官是個中年人(現在是LZ的主管),看起來還是比較沉穩的那種。也沒問基礎技術問題,就聊項目細節

和一些可優化的地方,然後把lz的履歷看了翻了一遍,問了一遍,然後就是問我在阿裡學到了什麼,為什麼當時選擇了阿裡(這時候肯

定要各種跪舔啊)。然後後來他說他是做ios的,我在想難怪不問我基礎。

第6頁 共7頁面完了說一周之内通知我結果,也沒報太大希望,感覺并不太對口,因為搞不懂為什麼是做ios的來面我。

兩天之後,在阿裡HRG電話通知我擁抱變化之後,幾乎同一時間,騰訊電話通知我拿到了成都offer,我隻能感歎太巧了(大概這大半

輩子的運氣都花光了)。

後來校招開始後,隻面了百度一家公司,百度确實比較重視基礎與算法,看中技術。

百度1面: 大概1個小時,又是個做ios的師兄面試我,自然就隻能聊項目了,我給他展示了我做的app後,也問了些技術問題,緩存怎

麼做的,記憶體溢出怎麼處理。然後兩個算法題:把一個數組中奇數放前面,偶數放後面,這個要求寫出來。另一個是3億條IP中,怎麼

找到次數出現最多的5000條IP。最後問了是否願意去北京,對于技術的看法。

百度2面: 50分鐘,寫個4個程式題:反轉連結清單、冒泡排序、生産者消費者,這三個都還好寫,很快的寫出來了,還有一個題是在一組

排序數中,給定一個數,傳回最接近且不大于這個數的位置,要求時間在O(logn)(這個想了一會,用二分查找,然後特殊處理了一

下),最後他看不懂,要我一步一步解釋。花了好一整子,最後問了個java反射,就讓我走了。百度果然是重視算法。

百度3面: 這一面應該是個技術高層,籠統的問了我一下項目的問題,然後問了幾個基礎:java反射機制;android動畫有哪些,什麼

特點?TCP/IP層次架構,每層的作用與協定;TCP擁塞控制;滑動視窗是怎麼設計的,有什麼好處;android的布局都有哪些。問完這

些之後,然後就是有點類似于HR的聊天了:如果這次面試過了你覺得是因為什麼原因,沒過呢?你覺得百度怎麼樣?你對技術路線什

麼打算?有些和前面重複的就不寫了。然後他讓我問他問題,我就連續問了5、6個問題,最後愉快的走了。

百度這兩天給結果。

六、 寫在最後

關于選擇

LZ當時實習的時候,杭州阿裡和廣州騰訊選擇去了阿裡,但是卻因為擁抱變化沒有留下來,相反這邊在騰訊實習的同學卻很順利。但是

也是因為沒有去廣州騰訊,最後我能留在成都騰訊。選擇是一件非常重要的事情,它決定着你的未來,但是也有一點你得知道:塞翁失

馬焉知非福,現在看起來不太好的選擇,不一定将來就好,未來有太多未知數。

心懷感恩

其實一路走來,我也是在成長,從最初的不自信,到了最後面試一切都比較冷靜與沉着。我一直相信,機會是留給有準備的人,是以,

請提早準備,越早越好。我很感激能有那麼多人幫助我和肯定我,沒有最初騰訊的肯定,我肯定不會走的這麼順利,是以我很感恩哪些

讓我通過的人,也感謝我們實驗室的兄弟姐妹,給了我良好的學習成長環境,心懷感恩才能好運常在。

找工作其實就像是一場戰役,前面我們經曆了聯考或者考研,現在是找工作,你不在這個時候搏一搏,怎麼對得起你之前的努力。不要

擔心找不到好工作,你要相信:

天道酬勤!

2015.9.22

第7頁 共7頁

繼續閱讀