以前實習的時候就想着寫一篇面經,後來忙就給忘了,如今找完工做了,也是該靜下心總結一下走過的路程了,我全盤托出,奉上這篇誠意之做,但願能給將來找工做的人一點指引和總結, 也但願能使你們少走點彎路 , 若是能耐心讀完,相信對你會找到你須要的東西。java
先說一下LZ的基本狀況,LZ是四川某985學校通訊專業的研究生(非計算機),大學階段也就學了C語言,根本沒想過最後要成爲碼農。大四纔開始學java,研一下開始學android,因此LZ以爲本身開始就是一個小白,慢慢成長起來的。android
1、心態ios
心態很重要!c++
心態很重要!git
心態很重要!程序員
重要的事情說三遍,這一點我以爲是必須放到前面來說。面試
找工做以前,有一點你必須清楚,就是找工做是一件看緣分的事情,不是你很牛逼,你就必定能進你想進的公司,都是有一個機率在那。若是你基礎好,項目經驗足,同時準備充分,那麼你拿到offer的機率就會比較高;相反,若是你準備不充分,基礎也很差,那麼你拿到offer的機率就會比較低,可是你能夠多投幾家公司,這樣拿到offer的概率就要大一點,由於你總有運氣好的時候。因此,不要害怕面試,剛開始失敗了沒什麼的,多投多嘗試,面多了你就天然能成麪霸了。得失心也不要過重,最後每一個人都會有offer的。算法
還有一個對待工做的心態,有些人可能以爲本身沒有動力去找一個好工做。其實你須要明白一件事情,你讀了十幾二十年的書,爲的是什麼,最後不就是爲了找到一個好工做麼。如今到了關鍵時刻,你爲什麼不努力一把呢,爲何不給本身一個好的將來呢,去一個本身不滿意的公司工做,你甘心嗎?編程
想清楚這一點,我相信大多數人都會有一股幹勁了,由於LZ剛剛準備開始找實習的時候,BAT這種公司想都不敢想,以爲能進個二線公司就很不錯了,後來發現本身不逼本身一把,你真不知道本身有多大能耐,因此請對找工做保持積極與十二分的熱情,也請認真對待每一次筆試面試。json
2、基礎
基礎這東西,各個公司都很看重,尤爲是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。
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<String>可否轉爲List<Object>。
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的區別
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的四中屬性,與每種屬性隊形的大小。
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,強烈推薦,還有左程雲老師的算法視屏課(已經出書了),反正我看了以後對我幫助很大(這不是植入廣告)。
3、 項目
關於項目,這部分每一個人的所作的項目不一樣,因此不能具體的講。項目再也不與好與很差,在於你會不會包裝,有時候一個很low的項目也能包裝成比較高大上的項目,多用一些專業名詞,突出關鍵字,能使面試官能比較容易抓住重點。在聊項目的過程當中,其實你的整個介紹應該是有一個大致的邏輯,這個時候是在考驗你的表達與敘述能力,因此好好準備很重要。
面試官喜歡問的問題無非就幾個點:
1. XXX(某個比較重要的點)是怎麼實現的?
2. 你在項目中遇到的最大的困難是什麼,怎麼解決的?
3. 項目某個部分考慮的不夠全面,若是XXXX,你怎麼優化?
4. XXX(一個新功能)須要實現,你有什麼思路?
其實你應該可以預料到面試官要問的地方,請提早準備好,若是被問到沒有準備到的地方,也沒關係張,必定要說出本身的想法,對不對都不是關鍵,主要是有本身的想法,另外,你應該對你的項目總體框架和你作的部分足夠熟悉。
4、 其餘
你應該問的問題
面試裏,最後面完以後通常面試官都會問你,你有沒有什麼要問他的。其實這個問題是有考究的,問好了實際上是有加分的,通常不要問薪資,主要應該是:關於公司的、技術和自身成長的。
如下是我常問的幾個問題,若是須要能夠參考:
1. 貴公司一貫以XXX著稱,能不能說明一下公司這方面的特色?
2. 貴公司XXX業務發展很好,這是公司發展的重點麼?
3. 對技術和業務怎麼看?
4. 貴公司通常的團隊是多大,幾我的負責一個產品或者業務?
5. 貴公司的開發中是否會使用到一些最新技術?
6. 對新人有沒有什麼培訓,會不會安排導師?
7. 對Full Stack怎麼看?
8. 你以爲我有哪些須要提升的地方?
知識面
除了基礎外,你還應該對其餘領域的知識有多少有所涉獵。對於你所熟悉的領域,你須要多瞭解一點新技術與科技前沿,你才能和麪試官談笑風生。
軟實力
什麼是軟實力,就是你的人際交往、靈活應變能力,在面試過程當中,良好的禮節、流暢的表達、積極的交流其實都是很是重要的。不少公司可能不光看你的技術水平怎麼樣,而更看重的是你這我的怎麼樣的。因此在面試過程當中,請保持誠信、積極、樂觀、幽默,這樣更容易獲得公司青睞。
不少時候咱們都會遇到一個狀況,就是面試官的問題我不會,這時候大多數狀況下不要立刻說我不會,要懂得牽引,例如面試官問我C++的多態原理,我不懂,但我知道java的,哪我能夠向面試官解釋說我知道java的,相似的這種能夠往相關的地方遷移(可是須要注意的是必定不要不懂裝懂,被拆穿了是很尷尬的),意思就是你要儘量的展現本身,表現出你的主動性,向面試官推銷本身。
還有就是遇到智力題的時候,不要什麼都不說,面試官其實不是在看你的答案,而是在看你的邏輯思惟,你只要說出你本身的看法,有必定的思考過程就行。
5、 面經
LZ應聘的職位都是android客戶端開發。
面經其實說來話長,包括實習的話面過的公司有:CVTE、騰訊、阿里、百度、網易、蘑菇街、小米。最先得追溯到到今年3月份,那時候剛過完年,而後阿里的實習內推就開始了,我基本都沒什麼準備,就突如其來的接到了人生中第一個面試電話。
阿里實習內推一面: 電話面試, 因爲是第一次面試,因此很是緊張,項目都沒怎麼說清楚。而後面試官就開始問項目細節了,這裏我關於一個項目細節和麪試官有不一樣的見解,面試官說我這樣作有問題,而後我說咱們確實是這樣作的,並無出什麼錯,差點和麪試官吵起來,最後我仍是妥協了。而後問了我一個怎麼對傳輸的數據加密,我答的很挫,而後面試官就開始鄙視我:你這個基礎很差,那個基礎很差,那你說說你還有其餘什麼優點沒?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,一上去項目看都不看,直接問我寫過多少行代碼,我說至少三、4萬行,而後他讓我寫了兩個題:一個找素數,一個遞歸求階層,對我也算手下留情(他後來讓我同窗寫AVL樹的插入算法,想一想也是醉了)。後面就各類基礎了,java的基礎挨個問了一遍,比較關鍵多線程實現,鎖的幾種等級等,反射的用法,wait()和sleep()(討論這個的時候他把我說暈了),Java還好,多數能應付,而後他就開始問c++的了。雖然是基礎,可是lz忘了差很少了,什麼指針數組和數組指針,虛函數,多態實現(這個我扯到java上了)等等,問了不少,不少都沒答上來,而後他說我基礎不太好(我想說我簡歷上寫的瞭解C++,爲何要追着我問TT)。
就這樣出來了,原本覺得掛了,後面被通知過了。同窗都只有2面技術面,我竟然多了一面,叫交叉面試,心想這下確定完了。
阿里實習3面: 這一面遇到了後面我去實習時候的部門boss,人很是好,來的時候走的時候都要和我握手,很是的平易近人。這一面仍是問項目上的一些東西居多,基礎就問了個java多線程,各個排序的時間複雜度、思想。技術問了半個小時,後面半個小時就開始各類聊人生了(@_@),我家是哪的,父母幹嗎的,中學怎麼樣,大學怎麼樣,等等,徹底就不像是技術面嘛(後來才知道,我一個同窗一開始來就和他聊人生,還聊過了。再次感嘆找工做是看緣分吶)。
阿里實習4面(HR) :阿里hr比騰訊hr面專業,面了一個小時,把個人生活經歷趴了一遍,(問了相似你的優缺點,最讓你高興的一件事,最讓你傷心的一件事,你的職業規劃,你的理想等等,這種,如今想不起來了)也沒什麼特別好說的。
面完後次日去圓桌籤offer,就這樣又拿到了阿里的實習offer。
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的,我在想難怪不問我基礎。
面完了說一週以內通知我結果,也沒報太大但願,感受並不太對口,由於搞不懂爲何是作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的聊天了:若是此次面試過了你以爲是由於什麼緣由,沒過呢?你以爲百度怎麼樣?你對技術路線什麼打算?有些和前面重複的就不寫了。而後他讓我問他問題,我就連續問了五、6個問題,最後愉快的走了。
百度這兩天給結果。
6、 寫在最後
關於選擇
LZ當時實習的時候,杭州阿里和廣州騰訊選擇去了阿里,可是卻由於擁抱變化沒有留下來,相反這邊在騰訊實習的同窗卻很順利。可是也是由於沒有去廣州騰訊,最後我能留在成都騰訊。選擇是一件很是重要的事情,它決定着你的將來,可是也有一點你得知道:因禍得福焉知非福,如今看起來不太好的選擇,不必定未來就好,將來有太多未知數。
心懷感恩
其實一路走來,我也是在成長,從最初的不自信,到了最後面試一切都比較冷靜與沉着。我一直相信,機會是留給有準備的人,因此,請提前準備,越早越好。我很感激能有那麼多人幫助我和確定我,沒有最初騰訊的確定,我確定不會走的這麼順利,因此我很感恩哪些讓我經過的人,也感謝咱們實驗室的兄弟姐妹,給了我良好的學習成長環境,心懷感恩才能好運常在。
找工做其實就像是一場戰役,前面咱們經歷了高考或者考研,如今是找工做,你不在這個時候搏一搏,怎麼對得起你以前的努力。不要擔憂找不到好工做,你要相信:
天道酬勤!