1. 程式人生 > 實用技巧 >最硬核:這些年,我所經歷的所有Android面試,你只管進來,剩下的交給握草

最硬核:這些年,我所經歷的所有Android面試,你只管進來,剩下的交給握草

作者:yummyLau

文章篇幅較長,建議耐心食用,相信對你有幫助。碼字不易,如果有誤,歡迎指出。

前部分是面試經歷,後部分是附帶的問題筆記/推薦回答/書籍。

今天去上班的路上,看了下手機的掘金,發現前些天的 《這些年,我爬過的Android坑|持續更新》 一文收到不少點贊,很開心。一方面是自己的文章收到認可,另一方面是文章內容對讀者有幫助。從2014/10/31 在 CSDN 平臺 寫部落格到 2016年中在 hexo 獨立部落格 上記錄自己的工作,已經過了 6 年,大概有 200 多篇。

直到前些天有個外國的朋友看到我獨立部落格上的一篇文章記錄的問題,發了 gmail 互相討論下了,他表達了 “他找了很久才找到這篇文章記錄的這個方案,很感謝你”。

讓我萌生了 “希望自己以後寫的文章能夠更好的幫助到別人” 的想法,所以我才想寫一寫技術及經驗文章。

本文按照時間軸,從我在校求職到畢業後的面試,列出一些技術點及我的想法,希望夠給疫情下的應屆生及求職者一些參考,同時更加堅定自己內心的想法,不要放棄!(部分內容從我以前的文章整合,如果已經閱讀過該章節,可跳到畢業後的面試直接看),以下內容我基於時間線,以第一人稱的口吻闡述。


一、應屆坎坷求職路

一個北京非985/211普通本科生,電腦科學與技術專業。以前老是夢想能考一個厲害一點的學府,學習物理專業(因為初中和高中對物理比較有興趣),無奈高考考得不盡人意。來到了計算機專業,才知道有C語言這玩意。

2013年大一,專業C語言成績太差,被分配到B班學習。臨近學校工作室(有真實專案鍛鍊)招新,那時候基礎太差,又不願意做一個loser。正巧同鄉會有一位學長進了該工作室,我向他了解了該工作室的情況,得知有移動Android開發方向。

那年,因為當時用過索尼手機,上面的小遊戲有“Java”標誌,女朋友喜歡小遊戲,於是打算學東西開發一個小遊戲給她玩。於是努力地啃下了Java基礎便去面試,也很幸運地進了工作室。學完Java回頭反而把C語言知識打通,成績一直居B班首位。別人老說“學習其他語言前先學好C語言,看來我是一個奇葩。

**2014年,**跟著工作室開始做專案。前後差不多完成了5個Android方向的專案,主做的有3個。這一年,邊學習Java邊學習Android開發。

**2015年,**春招前。我藉助工作室的專案經驗,製作了簡單的簡歷之後,假裝成大一屆的師兄去參加學校舉辦的招聘會。面了三家,最後有一家對我印象挺好給了我 offer(感覺很罪惡)。但是這三家面試讓我瞭解了我簡歷上的薄弱點,知道了那些知識點我只會用但是原理,那些知識點必須深挖才能在面試上突出自己的能力。於是我到 2015年秋招前都在為這部分做準備,那時候一心就只想進微信。

從 2015 年春招到2016年春招,一共投了 CVTE,阿里巴巴,騰訊,唯品會,4399,珍優科技,YY,百度,迅雷,京東,酷狗,匯豐,技德,美團,網易。這一年的經歷起起伏伏,心情和體重都有較大的波動。

原因是我被擁抱了變化,打亂了我的方向,但是我又堅持了下來,收穫了自己心儀的 offer。

這裡要劃重點:

對於學習計算機的同學而已,大三這個時期很重要,原因是很多大廠會提前招聘實習生,此時只要你技術基礎相對較好,學習態度端正積極,藉助自己有實習或者工作室的專案經驗,很有很大可能通過實習招聘提前進入心儀公司的,並且實習生的轉正機率很大,所以如果大三下學期可以到大廠實習並爭取轉正,大四就有足夠多充足的時間可以自己慢慢安排!學習,旅遊,談戀愛!都可以!

如果大學可以重來,我一定,一定大一就開始努力學習


CVTE實習招聘(第一次)

CVTE是春招中比較快的,也是我面試的第一家企業。

**線上測評:**專業+綜合HR面:華工酒店完成一面HR面,主要問職業規劃還有技術掌握程度。

**技術一面:**兩個Android面試官,問了一些專案和Handler機制,佈局優化等,手寫設計模式還有排序演算法。

**技術二面:**我的天〒_〒,是一位數學家(這裡吐槽下,我從下午2點等到快6點才面試,卻很匆忙安排了個數學家。拖這麼久的原因是那些實習的HR安排很不當,那時候輪到我的時候剛好到午飯,而且是我一面面試官,所以就讓我去吃飯等會換面試官,結果HR就把我標記成已面試,而中途HR又換了幾次,每次都認為我面試了,最後拖到6點我真的很疲憊很沒狀態,無奈(╯-╰)/)。

主要手寫HTTP請求頭,某些返回碼的含義;資料庫索引底層實現;手寫演算法判斷連結串列是否有環;Base64底層實現,直接說出A轉化後的結果。整個面試過程都被壓著問,感覺很不友好,因為沒啥狀態,很多東西懂卻頭腦一片空白,竟然忘記了A的ASCLL是多少,想和他解釋下Base64的轉化過程被拒絕,要求說出結果不聽分析,我也真是醉了。

**結果:**在宿舍等了一個晚上,掛了。好揪心好不甘心。於是開始繼續複習,準備騰訊春招和阿里。


阿里內推實習招聘(第一次)

由於過年在家那段時間,工作室的師兄幫我們內推了阿里巴巴春招崗位。自己對部分不熟悉就寫了淘寶和UC,後來內推名額滿了,一個研究生師兄幫我內推到yunOS事業部。現在看來,我更推薦學Android的朋友選擇支付寶和淘寶。

**阿里一面:**第一次打電話給我的時候我正在等CVTE的第二面,所以和麵試官說等會再面試。第二次打電話給我的時候已經很晚,那時候在地鐵上清不清楚面試官說話,說等會我出地鐵再面試。出地鐵的那一刻好緊張,CVTE的面試瞬間給我拋到九霄之外。

具體的面試內容我大致只記得談談負責的專案;為什麼會喜歡做安卓;安卓的系統啟動機制;安卓應用的優化還有socket的應用。後來問提問環節問了面試官的工作地點和我面試崗位的工作後,發現是在杭州,請求面試官能不能幫我轉到廣州後,他說可以。

**阿里二面:**大概在一面過了一個星期後打過來,主要面了Java基礎;執行緒同步;集合機制;安卓專案中用到的技術;還有一些不太記得了,最後談談規劃後發現這個崗位還是在杭州。所以又請求面試官能不能轉到廣州崗位,他說可以後結束面試。二面過後,官網發現自己的狀態變成拒絕後重新多了一個簡歷評估的狀態。

**阿里三面:**大概距二面過了15天,我本來以為阿里已經拒了我了。三面面試官打來的時候是我正要去看校辯論賽開場表演賽。剛出門就接到面試官電話,談了一下Java技術和Android技術後覺得我OK,說了是yunOS事業部的,問我有沒有興趣還有以後的職業規劃後。提問環節問了還有沒有面試,面試官說沒有了。官網狀態瞬間變成3面通過。

**阿里四面:**在看比賽過程中,接到總監電話,表明了是yunOS事業部是否想參與實習,表明我通過事業部面試,問我家庭情況,個人性格及其在校活動,職業規劃等,並和我說了入職時間和會有人後續聯絡實習事宜。

**結果:**阿里內推通過,選擇阿里巴巴yunOS事業部實習


騰訊內部機會(第一次)

這次面試是和我工作室安卓組的一位朋友去微信總部直接面試。因為之前我們因為感興趣參加了華工的微信課程學習,朋友得到了面試機會並也跟著前去,那時候是5個人一起去的。

**筆試:**完成一份英語的Java筆試題後等通知。

**一面:**一位斯斯文文且很帥氣,負責網路底層開發的面試官面試我,不得不說微信的辦公環境很nice,我們在桌球桌旁邊面試,整個過程氣氛很好。

問了我Java基礎和一些實現細節,安卓也如此。微信的面試官很注重技術實現的細節和優化,雖然有些面試題忘了,但是我還記得他在玻璃牆上畫設計模式和SQLite底層索引實現及其優化的圖。

人超級好,針對我的不足指出給了很多建議。以致於之後我面試過程中遇到過此類問題都能答得不錯。很感謝這位面試官。

**二面:**一位身材高大,比較沉穩的,負責NDK開發的面試官面試我,問了安卓事件接收和傳遞機制;Linux程序和Java程序有何區別;問了一個主執行緒繪製UI的問題;C語言和Java語言的應用及其各自的優勢;自己的規劃等問題。

**三面:**是一位微信元老架構師。為了專案技術和實現細節;問了Http技術還有金鑰交換協議;安全通訊;還有一些忘記了。到四面的時候只剩下3個人面試,面試結果是3選1.

結果:跪了。工作室的朋友面試功過;另外一位華工的朋友也沒進。讓我們去參加騰訊春招。這次面試看到自己的在網路方面很不熟悉,網路課程要等到下學期才開始,所以只能提前自己惡補了。


騰訊實習面試(第二次)

**筆試:**華工筆試,內容涉及C語言,C++語言,Java語言,資料庫,計算機網路還有演算法(網上有好多筆試題,可以借鑑參考下)。

**一面:**喜來登酒店,東圃。比較緊張,面的依然是專案技術,Java基礎,Andriod基礎,演算法(演算法這一塊在劍指offer中題目),作業系統中斷,進執行緒區別;計算機網路 TCP,HTTP相關,NAT等

**二面:**喜來登酒店,東圃。面的和一面差不多,只是知識點會比較深。比如反射機制會問到Android實現場景和優化等等。

**HR面:**和HR說明了想進微信團隊,HR也表明了QQ團隊及其團隊提供的平臺,也向HR表明了通過yunOS事業部實習,HR讓我自己思考及其選擇。

**結果:**沒能參加鵝廠實習〒_〒。現在工作回想起當初如果去 QQ 可能就不會出現後續的曲折,但是想想每個決定都是自己做的,只能自己承受。

到此,春招告一段落,最後選擇了yunOS事業部實習。

整個過程面試安排得很緊密,會覺得面試後很累。建議參加春招的小夥伴能選擇3-4家自己追求的企業針對性去複習,不推薦海投。我本已為春招進了阿里後,能學習留在杭州,接下來一年的大四生活可以安排更多的學習機會〒_〒。

然後最後並沒有,那一年的實習成功擁抱了變化,雖然能轉正到北京或者在杭州轉正做C++,但是並非自己所好。

當大三春招沒有辦法提前去實習轉正的時候,大三秋招其實到了關鍵的時候。一般在我們學校學計算的,基本大三秋招確定了 offer,大四去實習,這個是大部分人選擇的規劃。所以在yunOS實習之後,從杭州飛回廣州,回來的時候是9月5號,進入秋招時段。


阿里實習面試(第二次)

因為知道事業部今年實習生基本都沒有轉正機會,身邊很多實習的研究生師兄自己在阿里平臺上聯絡其他事業群。

無奈我還天真的以為事業部會安排我們面試其他事業部,然而並沒有〒_〒,讓我感覺到巨坑。

後來自己在阿里平臺上搜了做Andoird工作的很多工程師後,有一個主管願意接納我。面試了一些內容後,在後續面試過程中由於崗位需要在北京工作,而且可能需要轉前端,不符合自己的發展意願,所以就明確說了,也很感謝這位大哥給我機會。


騰訊實習面試(第三次)

回到廣州的時候已經9月初,那時候剛下飛機朋友就說明天一起去騰訊筆試〒_〒

**筆試:**基本的內容和春招差不多

**一面:**主要問了專案和在阿里實習負責的專案,Java記憶體和安卓基礎

**二面:**Java和Android的問題基本都能答得出來,卡到演算法。面試官給定一個座標,快速實現該座標方圓1公里內的酒店,座標可動。後來因為解釋不太清楚和麵試時間拖得太長,所以面試官讓我回來發答案給他。最後答案解出來了。面試官再出了一道題,因為自己的表現讓面試官感覺到不夠細心和沉穩,最後沒能過二面。

結果:這次的失利讓自己變得很急很慌。騰訊本來以前自己大學最想進的公司,結果在最關鍵的秋招失敗了,而且自己的阿里實習的時候並不是做安卓技術開發工作,一定程度上讓自己的專案停在春招水平,雖然也有在深入學習其他知識,但自己開始緊張。


唯品會(第一次)

**筆試:**參考網上歷屆的試卷,筆試題比較基礎很簡單。

**一面:**在筆試過後,接到面試通知。問了阿里的實習專案;問了ListView實現細節和優化;問了Button定製場景;問了Java基礎和安卓基礎;

**二面:**一面過後再教室外等候,受到二面通知。主要問了阿里的實習專案;專案用到的技術;Java基礎還有安卓記憶體優化等。

**HR面:**過了二面後等了一小會面HR面,HR是一位很資深的大叔,從百度調到唯品會。問了是否能用英語面試,回答否;問了生活背景;問了實習經歷;問了性格特點;然後被定義為太消極,童年有陰影,我也是醉了。我是從小打工,而且從小學,基本每個暑假寒假都要,而且都是那種一天做12個鐘,為的是賺生活費和補貼家裡的學費。這段經歷讓我懂得了吃苦和堅持,怎麼就讓我變得消極和有陰影…

後來HR講了自己人生經歷,說世界觀,人生觀,價值觀。我說價值觀可以變,他說可以嗎?價值觀不就是人對事件價值的判斷嗎?難道不是隨著人的閱歷增長有所調整改變嗎?不過他的經歷讓我深為佩服,從入行講到佛學,是一位很有學識的HR。

**結果:**跪了。原因,至今未知,不過也好像懂得些什麼…


騰訊(第四次)

微眾銀行的面試已經在秋招末。在微信公眾號得知有次機會,故奮不顧身去參加。

**筆試:**和騰訊筆試題差不多。(記憶模糊)

**一面:**也是在東圃酒店。〒_〒面我的是C++工程師,問我會不會C++,我說不會後…狂問演算法,我記得是4道,具體不太記得。其中三道都能手寫出來,最後一道是小儲存存大資料,用的是點陣圖方法。由於自己在面試的時候想不起來(後來回來複習大資料題目的時候才掌握),故只能用hashmap儲存,效率不高。

**結果:**面試官讓我等,結果無果〒_〒


阿里(第三次)

實際上從HRG在杭州告知我回來後會有一個終面部門交叉面,結果在騰訊失利的第二天。直接電話說“對不起…”我直接說理解後掛了電話。

在面試匯豐過後,一段時間,差不多到了11月末,面試了阿里健康。得知從集團簡歷池中選了我之後安排面試,談了轉正待遇後安排面試,兩面都視訊面試。

**一面:**安卓基礎;專案技術;效能優化;學習目標;Java基礎及其記憶體回收等

**二面:**專案技術;安卓Framework知識點;效能優化;開源框架知識;提問環節問了所做業務等 結果:過了,資薪待遇談了也清楚了。因為實習時間及所在地點時間與自身情況衝突,也不是自己最想要去的部門就拒絕了。


迅雷(第一次)

面到這裡基本秋招都已經結束了,學校基本快放假。得到迅雷的面試是由工作室學長B推薦的。

由於部門比較缺人,所以直接技術面

**技術VP面:**專案技術細節,面試官抓了很多專案細節問,比如說多執行緒斷點下載的每一步,每一個程式碼邏輯等;效能優化,這一方面我是有過準備的,回答得比較系統,比較滿意;

最新安卓技術瞭解情況;Java技術細節,問得很深,從程式啟動到垃圾回收,〒_〒不愧是vp;最後問了下Java異常和安卓異常的區別,答得不太好;

問了發展意願及其職業規劃等等。

**結果:**直接發offer…很感謝迅雷的HR和技術vp,人真的很nice,後來考慮到發展地點及其工作,沒有接受offer,很可惜。到現在心裡還一直對負責我入職的HR和技術Vp心存愧意。


網易(第一次)

也許是我不願意放棄,不願意將就,所以我才會選擇堅持,感謝網易不拘一格。

放假了,基本同學朋友都回去家裡了,整個宿舍只有我一個人,年末了,也該收拾東西回家了。

網易的招聘,是我在校招日曆上看到的,當時和一位學java後臺的哥們一起投的。然後趕緊在校複習知識點和開始畫安卓知識架構(我喜歡用畫圖的形式讓自己掌握的知識互相關聯),然後開始在牛客網(之前面試的企業歷年筆試題基本都在上面能找到,是一個刷題的平臺)及論壇找網易筆試題和麵試,基本刷完了網易網際網路和網易遊戲的題目,雖然有些不懂可是還是需要硬啃下去。接近筆試前夕,我們還是沒有收到筆試通知。

哥們的表姐也投了網易,不過人家是名校碩士〒_〒,收到了面試通知,我倆妥妥地跪了。我不甘心,我認為自己能夠做得出網易的筆試,如果能有一絲機會,死也要讓我死得明白。於是我倆去“霸筆”…幾間筆試科室,廣州地區幾十個運營崗筆試名額,幾十個產品筆試名額,只有6個技術筆試名額,這讓我瞬間很慌很難受。

哥們讓我走,估計我們沒機會,可是我那一刻真的很難受很不甘心。

我硬著頭皮進去問HR說 “我來自…,我投了貴公司的技術崗位後沒有收到通知,請問可以給我筆試機會嗎?”

另一個HR說 “沒收到通知是不可以筆試的,除非有人沒來筆試,試卷只有6張”。

我把自己的簡歷遞給前面HR。

“這個是我的簡歷,如果技術崗有人沒來面試可以不可以給我一次機會,我在外面等候,謝謝你!”

我出去外面後,剛才接了我簡歷的HR出來了說“你們都是沒有接到通知的嗎?(還有一個產品來霸筆),在這裡等一下,如果有機會我就來通知你們。”

後來筆試開始了,有些參加技術崗的還沒有來,可是沒有人通知我們進去筆試。我哥說等到30分如果沒有就走了,後來30分過了,還是沒有人通知我們。我不願意走。

“要不你先走吧,除非HR出來說沒有機會,不然我多等一下吧。”

筆試開始了一段時間,有一位HR走了出來,說 “你們都是來筆試的嗎?進來吧,把簡歷給我。”

我很激動,自信地完成了那份筆試題,到現在,我還依然能記得那時候的感覺。哪怕失敗,也要讓我知道我不行。

**一面:**一面是在網易大廈附近的E時光,三個面試官,一個Java面試官和兩個Android面試官。

問了:Java基礎;執行緒安全處理;手寫解決判斷連結串列是否有環(當時寫了思路);手寫例模式(程序安全版+列舉);Java程式啟動過程(5個過程);Java記憶體回收機制(包括回收演算法);安卓基礎;Handler機制及其原始碼(面試官細節到具體程式碼及方法,〒_〒很年輕的面試官,技術好紮實);訊息傳遞機制(具體到View和ViewGroup的區別);框架了解及其imageloader;Lru演算法及其軟弱引用的使用;解析度適配等等。

**HR面:**網易大廈,問了面試公司及其offer情況,如實回答,希望能在廣州;發展規劃及其學習習慣;網易招聘的優缺點;阿里平臺資源的優點;網易bobo產品及其同行產品的瞭解比較;提問問了是否還有面試,具體工作還有是否可以提前實習,實習安排。

面到這裡,已經年末了。HR說可以提前回去家裡,我還是依然留在學校幾天。整理這幾天的面試問題還有面試經驗,整個宿舍樓沒有人,只有我和幾隻流浪貓。偶爾做做飯,它們也會來我宿舍,我也會給它們吃的,感覺自己變得很安靜。

在回家的大巴上收到了網易的終面,表明年後還有終面。面了那麼多公司,累也該累了,反而覺得很釋然。帶著這個面試訊息回到家了,始終沒能放得下。除了在家了幫幫這幫幫那,在朋友家聊聊天,基本都是在看書,也買了一本新出版的安卓技術的書,過年那段時間看完了。初九那天回到學校,繼續複習,整理在家學習的和以前的知識點,打算面完網易後休息一段時間,希望能傾盡自己所有心力去完成這次面試。

**終面:**HR面+總裁助理面。因為不知道是否是技術面,所以把所有的技術點用三天都複習完了,用一天準備了HR面及其自身情況的問題,主要理清楚說話的邏輯思維。

HR面,是我年前的HR,很親切。和她聊了下年前到年後這段時間的學習情況及其學習了哪些新的知識點;自己每天的學習規劃;bobo產品競品分析;使用過的一些工具,比如思維導圖為知筆記(因為之前裸ubunut系統,所以只能用為知筆記);職業規劃;實習內容及其輪崗事宜;期望工資及其在手offer薪資;行業薪資等;整個過程氛圍很nice;面試完後搭車快回到孤島的時候收到電話通知到需要再面試〒_〒,是另一位面試官。

當時心裡其實蠻緊張(難道對我之前所述技術有疑惑?還是我表達的內容公司還有爭議?)。在車上我回想著整個幾輪面試的過程,細節到我所說到的內容,技術在腦海裡過了一遍。對自己說“來吧!如果你想問我技術,來吧,我都做好準備了!”

就這樣,我很有信心地衝了回去(快6點了,怕面試官下班)。結果回到公司竟然發現面試官是一位很年輕親切的總裁助理,她和我表明了回來面試的原因和給了一杯水(〒_〒,感覺好感動),表達了歉意後開始面試,問了生活情況;學習背景;興趣愛好;長期規劃;聊到網易bobo的產品及其同行同類產品;事業部發展前景;網易公司文化;面試官自身在網易的經歷;女朋友及其未來規劃;學習習慣等等。整個面試過程更像是在聊天,是一個瞭解雙方和建立信任的過程,很nice。

結果:過了。也欣然接受了offer。

在面試阿里騰訊三四次的過程中,雖然有收穫到其他 offer ,但並不是我大學時期心儀的 offer。

所以到最後,還想去網易搏一搏。

結果這一搏,就一直待到了現在。我覺得人生很有意思。高中的時候,我努力想考一個物理專業,但是後來我卻進了計算機專業。大學的時候,我努力想進騰訊或者阿里的技術部門,但是後來我卻來了網易。就是如此夢幻。

假如你已經是應屆生了,經歷過一兩次batm的面試失敗沒有關係,只要有機會就上。哪怕最後你最心儀的機會沒有了,你要懂得抓住當前最合適你的機會。真的,很多時候未來發生什麼你都不知道,或許當前的機會,才是最適合你發展的。

二、被迫考慮機會

真的,很多時候未來發生什麼你都不知道!(預言家 =。=)。

我也不會預想到我工作快一年的部門因為公司架構調整而需要被迫考慮重新找工作。實際上,我非常喜歡當時部門的人,部門是小團隊專案化作戰,非常靈活,技術和產品自由度非常高,大家配合得很愉快。

雖然那時候大家分道揚鑣,但是我們現在的微信群依然保留著之前最完整的人員,還很活躍。

工作認識一知己,前輩,之前就業於UC,平時交流甚歡,喜歡同他討論和交流技術問題,在看身上看到了開放與追求的精神。

正值事業部結構變動,整個事業部工作氛圍和模式都發生了巨大的變化。他建議我去更大的環境更好的氛圍嘗試,我也堅持著自己的職業規劃和學習道路。他同事幫忙內推,不巧的是那天發燒=。=,和公司請了假,本來擔心狀態不好,不過一想到自己以後要做的事,立馬就飛了!不要慫,就是幹!

面試地點在黃埔大道這邊,沒想到離我住的地方那麼近!二十分鐘就到了,原約在2點的面試,我12點50分就到了…提前去面試也不好,畢竟太早去也不是守時,也會打亂別人的計劃安排,故在樓下走了幾圈,有點冷,不過滿滿的熱情啊!把之前準備的知識都過了一邊,演算法,資料結構,網路,作業系統,java和安卓。自己在腦海了想了n多種面試問的業務場景,組織表達了一遍上樓了。


阿里(第四次)社招一面

天吶魯,我還以為要筆試呢,直接進入正題面試,有點措手不及,不過先自我介紹,所以我調整了一下情緒和思路。面試官很帥氣啊,是一個很年輕但是應該有蠻長經驗的面試官。問得問題主要有:

  • 推送sdk底層實現
  • socket相關實現
  • mvc mvp mvvm區別與專案使用情況
  • 網路層相關設計,volley底層實現,快取相關
  • 自定義view相關
  • 下載模組涉及,成功率相關
  • 彈幕與播放器相關
  • 跨程序通訊手段與注意點,webview相關
  • EventBus相關
  • 效能優化經驗及手段
  • 為什麼想要換工作
  • 興趣愛好,工作室情況,如何協調工作室與辯論隊
  • 平時學習習慣和安排   上述的點可能有一些遺漏或者記得不太清楚,不過整體面試官給人的感覺真的很好,大廠的環境也贊!除了前面聊技術外,也聊興趣愛好,平時一些習慣等,整體來說氛圍很輕鬆。

阿里(第四次)社招二面

二面是一個臉色紅潤,很和藹的一個面試官負責。想了一下,除了和大學廖老師溝通有這種感覺之外,這位面試官給我一種導師的感覺哈。面試的問題主要有:

  • 網路請求涉及,如何設計快取
  • 效能優化手段,場景
  • dp的設計
  • 熟悉的底層原始碼,廣播底層實現,這一點自己確實還了解不夠,不過自己講了哦從wsm->activity->view的事件傳遞過程
  • 聊之前阿里的實習
  • 為什麼想要換工作
  • 職業規劃
  • 短視訊行業,Bolo相關及一些競品,因為平時也會留意自己開發的軟體及競拍,行業情況,所以有一些自己的見解
  • 聊興趣愛好
  • 聊王者榮耀產品相關

整個過程面試官給人印象很深,除了互相交流得開外,他的問題也很有深度,不過如果真的答不上就請教下就好。最後面試官問了是否有哪些問題提問諮詢:

  • 從剛才所述的職業規劃,希望面試官給出意見和建議
  • 如果有後續面試,會在什麼時候安排 還是到上週的面試辦公室,10樓的環境給人的感覺很清新,自由。

阿里(第四次)社招 leader 面

面試官很年輕,讓人感覺很有幹勁。其實今天一整天都昏昏沉沉的,人狀態很差。但是和麵試官聊天,能說到的都是內心的一些想法,所以聊起來很舒服,他的一些建議也很值得我思考反省。

  • 自我介紹
  • 崗位要求
  • 實習內容
  • 工作負責內容
  • 換工作原因
  • 優缺點
  • 學校經驗
  • 家庭情況
  • 個人現狀,還有我的眼睛哈   面試的問題可能記不太清楚,但是有兩個點我很深刻。第一個是自己現階段要穩下心沉得住氣。幾位面試官都和我說到了這一點。確實是這樣,我很看重職業生涯前幾年的學習積累與心態沉澱,也明白了當前自己最需要做的事是什麼。沉得住氣,我自己的理解是:
  • 心態不要浮躁,相信自己的規劃和按照自己的規劃走
  • 學習新知識,要學會從巨集觀上懂得一個知識牽扯出的知識網,更要耐得住心去一句一句程式碼debug每個細節
  • 清楚地看清自己的技術現狀,虛心地取長補短

那天結束之後,用新的心態去學習retrofit原始碼,記得大學的時候看imageloader,volley的時候,會沒有太多的耐心去深挖,雖然知道流程和某些細節,但是對底層原理其實沒有足夠的掌握。

很奇怪,今天越挖,發現自己對Android越無知,我第一次感到自己無知時,確實開心的

當我向我之前同事說某個原始碼細節的邏輯和我們專案所用到的邏輯有偏差時,他去調式之後發現“是專案用錯了!”。感覺心裡還是美滋滋的。

第二個是自己表述不夠精簡,有時會用辯論的方式來解釋一大堆東西,會讓聽眾感覺很囉嗦。這也是我的問題,改!應該嘗試先下結論後再根據情況做分析。面試完走出辦公室,還看到面試官拿著筆記本,打了個招呼,感覺心暖,感謝這次機會。


阿里(第四次)社招HR 面

其實hr面應該是我最緊張的一面。可能是最後一面,也很看重這次的面試,擔心自己說得不好。

過程中自己也因為喉嚨的原因喝了多次水,思維中斷了好多。不過,面試官是一位比較有親和力的姐姐,無論的問問題的方式還是追問一些細節,都讓人挺舒服的,不會感受到太大的壓力。

  • 入職半年多,為什麼選擇換工作
  • 現在事業部狀況
  • 負責的專案工作
  • 最困難的事是什麼,想到的是專案難點和當時在工作室做專案,那段時間確實比較艱難,算印象最深刻的
  • 職業規劃,我可能表述不太好。從2-3年階段性計劃,到今年,這個月,這周。講得邏輯性不好。自己的習慣確實是工作日+週六週日安排,可能當時比較緊張,講得很亂。
  • 堅持最久的事,這個應該是和我兄弟去跑內環哈,從半圈到兩圈是如何煉成的
  • 最有成就感,想到的是專案難點,後面仔細想,確實是因為攻克的難點給使用者帶來好體驗。我還記得菠蘿種子群的一個好友,網易忠實粉絲,和他交流過很多次關於菠蘿的體驗,有一次和我聊到輸入法的原因,後面自己就花時間重構了。其中還和hr聊到關於攻克難點和所花的時間問題,確實是我自己表述不好,一件事的難易程度與完成時間只是正相關。,當專案頻繁迭代,需要想辦法縮短工時並保證質量後“偷”時間來做重構優化,其實自己那時候很有壓力。這些東西不是需求,而是你想讓產品更好卻想去做,改得好固然好,萬一改不好,那就是浪費時間,可能會應該當前開發狀態。和很多同事溝通他們都不會選擇這樣去做,要麼要求產品加工時,要麼就不做。可是自己很難接受放著不管吧。後面用來兩個多星期的午休和下班瑣碎時間,週末空閒時間把東西做出來,第一次正式給專案重構使用,我是很自豪。最開心的應該是那位好友說的“菠蘿的開發真不錯!至少你們對使用者有心”
  • 薪水相關  總的來說,今天面試的表現,自己給自己的評價是一般。最後溝通的時候因為薪資問題最後黃了

三、不甘落敗嘗試螞蟻金服

螞蟻金服的面試機會是那時候在看機會的時候,在脈脈認識的一位螞蟻金服的面試官那裡爭取的。在溝通過後,對其部門的意願挺大的,所以就嘗試下把簡歷給了面試官。

過了幾天,沒想到收到了其部門HR的面試邀約。剛好那時候公司部門架構調整到了尾部,我們可能被合併到一個新的部門中開展新的工作。可能大學實習給我留下非常好的印象,很喜歡阿里的技術部門,加上 UC 的面試沒有如意,所以就毅然進行面試。


阿里(第五次)社招一面

  • 介紹自己
  • 介紹簡歷上的專案
  • 高效能列表實現,重點圍繞 recyclerview 展開,如何複用,如何快取
  • 效能難點如何攻克
  • 效能優化方面專案中做了哪些工作
  • 熱修復原理,類冷啟動修復原理,類熱修復原理,classLoader雙親機制
  • 換膚原理
  • 設計一個圖片框架,我考慮的是如何載入,如何編解碼,如何快取,api的易用性,大部分參考 glide 思路
  • 在很多數中找出前n個最小
  • 自己的方向是什麼?想做業務,還是想做專點的技術,如何理解專案架構。
  • 反提問:“自己技術性回答得怎樣,有哪些改進。” 面試官給的建議是:技術還不錯,但是介紹部門業務和自己的切合度時需要 “表述要簡潔,邏輯要清晰”,

阿里(第六次)社招 leader 面

  • 介紹自己情況,學android,實習經驗
  • 介紹網易經驗,哪個專案最大,專案規模,專案人員分佈
  • 擅長哪一方面,這個問題非常致命,一定要選你足夠理解的,我那時候講的是效能優化,但是感覺講的不好
  • android 虛擬機器區別,編譯區別,dex區別
  • 熱修復流程,原理是什麼,業界有哪些方案,對比如何
  • 打包流程是怎樣的
  • 應用啟動相關流程,從孵化程序到MainActivity#onResume繪製整個流程
  • 新版本android特性
  • 手勢滑動事件分發
  • view繪製流程
  • gradle執行流程
  • apk安裝底層細節
  • 最後留了一道演算法題,我做了兩天之後發給面試官

阿里(第六次)社招 交叉面

  • 介紹自己
  • 專案經驗,團隊情況
  • 對網路是否熟悉,一次http請求,https整體實現
  • 以後想做什麼,如何規劃自己技術
  • 開源貢獻,部落格記錄相關的開放性問題
  • 反問:後面是否還有技術面試,得到的答案是基本不會有了,等 HR 面試就好

阿里(第六次)社招 HR面

  • 介紹自己
  • 專案經驗,團隊情況,學習情況,薪資待遇
  • 未來技術規劃,是否考慮杭州,未來家庭規劃
  • 反問:大概多久會有答覆,得到的答案是當週週五前。

當週週四收到了人生中第一個阿里的正式 offer,還是我最心儀的螞蟻金服的技術部門的 offer。技術方向和薪資待遇都大大超過我的預期。HR 讓我考慮一週之後給答覆。

過了一週,我決定放棄這個 offer,並開始自己新的技術規劃,在新的部門好好幹。一干,就幹到了現在。

如果到現在問我,“當時放棄螞蟻金服的 offer 後悔嗎?”

我會說 “說真的有點遺憾,但我無法比較孰好孰壞,我現在就挺好的。”

如果你剛開始出來面試,那麼就要用心去準備,去模擬,把每個機會都抓住。

如果你已經面試了幾家但是都還不理想,哪怕是疫情背景下,你不要將就。我一直都覺得做技術的不要將就,可能是我的性格。那麼繼續嘗試,把你每一次的面試的經歷都記錄下來,面試題是什麼,你是怎麼回答的,甚至你可以在面試的時候把自己的回答錄音下來,回去好好聽好好修正。一次會比一次好。

如果你有幾個offer在選擇上出現了分歧,建議要開始規劃從職業規劃來考慮offer。

如果你打算未來深耕音視訊,那麼短視訊技術offer則大於非短視訊技術offer。如果你打算考慮往技術經理/技術團隊管理,那麼能帶團隊的offer > 不能帶團隊的offer,參與技術選型,技術架構搭建的offer > 負責某一塊業務的開發 offer 等等。

這幾年下來,我發現 “選擇” 和 “努力” 在不同時期有不同的側重。

  • 畢業時期,“選擇” > “努力”,好的平臺能帶給你更多的機會,更好的薪資待遇,讓你的視野更廣;
  • 畢業前5年,“努力” > “選擇",當你有一個好的平臺之後,你要懂得利用平臺資源去學習,比如各種內網,公司技術福利等,並藉著平臺專案的實踐機會去野蠻生長;
  • 後幾年,“選擇” > “努力”,這是因為前幾年為了積累的專業優勢或更高的視野讓你看清你以後要幹什麼,如果說選擇的是平臺,那麼這個選擇就是未來要嘗試突破的方向。

當然,這些想法受限於我的經歷,難免難以苟同。

四、非技術性問題的面試準備

非技術性的問題,實際上很多時候程式設計師回答得並不好,除了表達缺乏邏輯性外,溝通不暢也是一個問題。但事實上這些問題都可以提前準備的,而且我自己以前準備面試的時候都會把這些問題過一下,對著鏡子表述。你只需要針對每一個問題點記住幾個關鍵詞,然後嘗試脫稿,自己嘗試把它串起來表達,幾遍之後基本就 OJBK 了。

以下回答僅供參考。

自我介紹

我是來自xxx的xxxx。目前在xxx組Android研發。

平時基本能提前完成需求,經常會給產品同學提供一些技術上的意見或改進,並自主做一些技術調研來優化產品。

另外,我更願意讓別人感受到,我是一個隨和但執行能力知足的人。我喜歡組隊答辯論,樂於與別人溝通與想法碰撞,樂於分享我自己觀點與博文,因為我認為分享不僅僅是知識的傳播交流,對他人也會有知識上的重新認識的效果,同時也是對自己知識體系的一個鞏固也會增強自己的信心,對團隊而言,能活躍整個技術氛圍,讓工作變得輕鬆,對新技術有渴望與追求。

但同時,我對自己的要求也非常嚴格。工作上我喜歡通過畫邏輯圖細化需求實現,並按時從點攻克,這種方法非常有效。而職業規劃上,我會細分到每一週,每個月的學習計劃。每一年或者每個階段我應該去做哪些事情。

可能有人會說,我給自己畫圈限制死我的生活。其實不然,恰好相反,當我到達某個計劃節點時,我更清楚我應該做什麼且明白我為什麼那麼做,這會讓我對生活變得更有信心與熱愛。


平時看的書

技術類的書比如

《Java程式設計思想》《Effective Java》《突破Java程式設計師基本功的16門課》《深入理解Java虛擬機器》 《Android高階工程師進階》《Android研發錄》《Android開發藝術探索》《打造高質量Android應用》《Android應用效能優化》 《安卓核心剖析》《深入安卓卷1》《深入安卓卷2》《Android系統原始碼情景分析》

非技術類的書

《麥田裡的守望者》《小王者》《少年維特》《世界因你而不同》 技術類的書閱讀帶來技術收穫,非技術類的書閱讀是興趣,是擴充套件視野等都可以


部落格類網站

  • App:掘金(yummyLau),以前也有簡書(什麼都學的小明)
  • 網站:簡書,掘金翻譯,Google developers,泡在網上的日子, CodeKK,安卓週報
  • 博主:stormzhang,酷殼,工匠若水,羅昇陽,程式碼家,鴻洋等

怎麼解決問題呢?

先找到問題的原因,然後在找解決問題的辦法,找到問題的原因比找到解決問題的辦法更重要。

如果你不能解決,那麼你可以求助於其他人,而當你不知道問題的原因的時候,你去求助別人的時候,別人還幫你去找問題的原因,這肯定會浪費很多時間的。

先不要找解決問題的辦法,先找問題的原因。

一旦你瞭解解決問題的思路,那麼當問你一些開放性的問題的時候比如 “專案裡你遇到xxxx情況,你怎麼處理的?當你解決不了的時候,你會怎麼做?”

那麼你就可以圍繞上述的邏輯回答 “遇到xxxx情況的時候,首先我會分析出現這個問題的原因,(此處省略1w字),最終解決了。或者解決不了的時候,(這裡需要強調自己能用的都用了,能查的都查了)就會去請教這方面比較專業的同事(此處省略1w字),最終這個問題在他的建議下我成功解決了。”


為什麼選擇離職

最主要的原因還是與自己的職業規劃有偏差。

自己希望能呆在一個有技術方向性與能充分交流碰撞的團隊中,希望能充分發揮自己更多專業能力,在比較充實的節奏中度過職業的現階段。因為事業部重組的原因,我們的專案組被分派xxxxx做xxxxx,目前只需要保證完成工作即可,codereview過程中,能感受到迭代功能完成需求會是最大滿足,同時專案內團隊基本不會互相分享專案經驗及心得。

我希望可以完成得更好提前完成,可以幫助專案做優化做分享。在codereview過程中,我更希望我們不僅僅能把產品做好,還有更多的時間去優化,掌握更多新的技術來優化專案實現,讓產品有更好體驗。我希望我們的團隊有技術瞻仰性與向前性,對技術的思考有深度,我渴望投身這樣的團隊並一起完善團隊建設,而不是單純無線迭代。所以我選擇了在這個時候嘗試新的機會。

很多時候,我們是能保證工作完成的,自己會做更多的優化或者調研工作來完善產品,整個良性過程中,組員的價值能得到最大化體現, 而團隊應該是支援這種行為的,而不是間接地打磨掉組員的正向行為,這會讓組內的氛圍沉寂與消磨人的積極性。

我曾微訊號分享過一篇關於一位大哥“輝哥”的文章,講到做事要有匠心,要較真深挖,我解讀為專注。而團隊溝通工作應該是雙贏的過程,大家可以放開交流碰撞,以team work形式去解決難題,這便是我追求的環境。


如何勝任這份工作

我的理解是,崗位的內容是高質量迭代開發國際業務客戶端,能承擔缺陷重構和痛點優化。

自己接觸Andoid開發也兩三年,在職時間差不多一年,一年內參與了xxxx專案迭代開發,能保證自己負責的工作都是提前完成的。

而剩餘的時間,我會主動去重構專案,也能針對使用者痛點的主動做技術預研。而崗位的內容正是我主動追求的,我很樂意去挑戰工作上的難點。

我個人的職業規劃中,當前階段是想深入掌握android底層的知識,所以當出現一個業務問題前,自己會深刻去認識一個問題產生的原因。針對工作的內容,自己能冷靜分析原因並自主學習一些方案來解決。而提供的崗位工作正好是給了我充分的面對困難場景鍛鍊自己的機會。


學習習慣

這些越細越好,重在真實。

  • 週一到週五,9:30-7:30,上下班分別會看兩篇博文;
  • 工作日完成一般會有兩個小時時間用來繼續本月的規劃
  • 週六週日會把工作日踩的坑記錄下,有時候寫寫部落格,看看技術文章。

興趣愛好

打籃球,寫書法,游泳,桌球,乒乓球等,比較廣泛,但是每一項我都在身邊人中比較拔尖

最近,想練長跑,慢慢看能不能小跑馬拉松。

耐力,定性,這兩者都是我這階段需要的。


優缺點

責任> 協作溝通>接受意見但獨立想法>自學能力>執行能力強

解決問題的心態不成熟,有時候容易鑽牛角尖,處理計劃過於急躁。

但是我相信,這是每個人都會經歷的,而且是一個蛻變的過程,而我也正在慢慢轉型。


工資待遇

可以瞭解下xxx的待遇結構嗎。

希望能在xxxxK,因為(這個要按照真是想法表達)對於自己而言,我更看重xxx平臺能給我的的職業幫助,而我也很相信自己能給團隊創造相應甚至更多的價值。


想問的問題

技術面

  • 經過剛才的交流,針對應聘的崗位,面試官有哪些意見或建議,我能力的匹配度大概多少?
  • 假如有幸能通過面試,這個崗位現階段負責哪些的工作?

HR 面

  • 經過剛才的交流,勝任該職位我應該加強哪些能力?
  • 假如有幸能通過面試,會進入哪個產品線,未來這個產品的發展方向和規劃會有哪些?
  • 面試結果最晚會在什麼時候通知?

面試涉及知識點/體系/書籍推薦

以下是面試中遇到的問題整理,有一些被我整理已被整理成博文,其他的都是我這些年積累的面試筆記,雖然不是很全面,但是已經是我保留的全部了。希望有幫助。

注意以下每個條目都有作者的面試筆記,因為每個的連結太長,建議大家自己獲取PDF檔案研讀。

完整PDF檔案獲取方式: 點這領取

Java相關

  • JVM
  • Object
  • static
  • final
  • String、StringBuffer、StringBuilder
  • 異常處理
  • 內部類
  • 多型
  • 抽象和介面
  • 集合框架
  • 反射
  • 單例
  • 執行緒
  • volatile
  • synchronized
  • 引用型別
  • 動態代理
  • 元註解

image

網路相關

  • 網路體系的分層結構
  • HTTP 相關
  • TCP/IP
  • Socket

image

設計模式

  • 設計模式分類
  • 面向物件六大原則
  • 工廠模式
  • 單例模式
  • 建造者模式
  • 原型模式
  • 介面卡模式
  • 觀察者模式
  • 代理模式
  • 責任鏈模式
  • 策略模式
  • 備忘錄模式

image

Android

  • 原始碼-xml載入流程
  • 原始碼-Touch事件
  • 原始碼-Handler
  • 原始碼解析-Rxpermissions
  • 原始碼解析-LiveData
  • Android類載入器
  • Java類載入
  • Rxjava 的歸納思考
  • Framework基礎結構
  • Android虛擬機器結構區別
  • 啟動app流程
  • 啟動framework流程
  • Android架構總結
  • 模式之MVC/MVP/MVVM
  • 換膚skin-support流程
  • 圖片庫glide
  • 原始碼-AsyncTask
  • 自定義view流程
  • Activity相關
  • Fragment基礎
  • View篇之Touch傳遞
  • EventBus
  • 洩漏型別及定位
  • 效能可優化的點

image

其他

  • 排序
  • 二叉樹
  • 連結串列
  • 棧 / 佇列
  • 雜湊表
  • 堆 / 優先佇列
  • 二叉搜尋樹
  • 陣列 / 雙指標
  • 貪心
  • 字串處理
  • 動態規劃
  • 矩陣
  • 二進位制 / 位運算
  • 反轉整數 LRU快取策略

image

書籍推薦

  • 《Java程式設計思想》
  • 《Effective Java》
  • 《突破Java程式設計師基本功的16門課》
  • 《深入理解Java虛擬機器》
  • 《Android高階工程師進階》
  • 《Android研發錄》
  • 《Android開發藝術探索》
  • 《打造高質量Android應用》
  • 《Android應用效能優化》
  • 《安卓核心剖析》
  • 《深入安卓卷1》
  • 《深入安卓卷2》
  • 《Android系統原始碼情景分析》
  • 《巧用Gradle構建Android應用》
  • 《Android高薪之路》
  • 《Android群英傳》
  • 《程式設計師修煉之道–從小工到專家》
  • 《程式碼的未來》
  • 《第一行程式碼》

最後,在這裡小編還分享一份由幾位大佬一起收錄整理的架構視訊+面試文件+原始碼筆記高階架構技術進階腦圖、Android開發面試專題資料,高階進階架構資料

如果你有需要的話,可以作者:yummyLau

文章篇幅較長,建議耐心食用,相信對你有幫助。碼字不易,如果有誤,歡迎指出。

前部分是面試經歷,後部分是附帶的問題筆記/推薦回答/書籍。

今天去上班的路上,看了下手機的掘金,發現前些天的 《這些年,我爬過的Android坑|持續更新》 一文收到不少點贊,很開心。一方面是自己的文章收到認可,另一方面是文章內容對讀者有幫助。從 2014/10/31 在 CSDN 平臺 寫部落格到 2016年中在 hexo 獨立部落格 上記錄自己的工作,已經過了 6 年,大概有 200 多篇。

直到前些天有個外國的朋友看到我獨立部落格上的一篇文章記錄的問題,發了 gmail 互相討論下了,他表達了 “他找了很久才找到這篇文章記錄的這個方案,很感謝你”。

讓我萌生了 “希望自己以後寫的文章能夠更好的幫助到別人” 的想法,所以我才想寫一寫技術及經驗文章。

本文按照時間軸,從我在校求職到畢業後的面試,列出一些技術點及我的想法,希望夠給疫情下的應屆生及求職者一些參考,同時更加堅定自己內心的想法,不要放棄!(部分內容從我以前的文章整合,如果已經閱讀過該章節,可跳到畢業後的面試直接看),以下內容我基於時間線,以第一人稱的口吻闡述。

一、應屆坎坷求職路

一個廣州非985/211普通本科生,電腦科學與技術專業。以前老是夢想能考一個厲害一點的學府,學習物理專業(因為初中和高中對物理比較有興趣),無奈高考考得不盡人意。來到了計算機專業,才知道有C語言這玩意。

2013年大一,專業C語言成績太差,被分配到B班學習。臨近學校工作室(有真實專案鍛鍊)招新,那時候基礎太差,又不願意做一個loser。正巧同鄉會有一位學長進了該工作室,我向他了解了該工作室的情況,得知有移動Android開發方向。

那年,因為當時用過索尼手機,上面的小遊戲有“Java”標誌,女朋友喜歡小遊戲,於是打算學東西開發一個小遊戲給她玩。於是努力地啃下了Java基礎便去面試,也很幸運地進了工作室。學完Java回頭反而把C語言知識打通,成績一直居B班首位。別人老說“學習其他語言前先學好C語言,看來我是一個奇葩。

**2014年,**跟著工作室開始做專案。前後差不多完成了5個Android方向的專案,主做的有3個。這一年,邊學習Java邊學習Android開發。

**2015年,**春招前。我藉助工作室的專案經驗,製作了簡單的簡歷之後,假裝成大一屆的師兄去參加學校舉辦的招聘會。面了三家,最後有一家對我印象挺好給了我 offer(感覺很罪惡)。但是這三家面試讓我瞭解了我簡歷上的薄弱點,知道了那些知識點我只會用但是原理,那些知識點必須深挖才能在面試上突出自己的能力。於是我到 2015年秋招前都在為這部分做準備,那時候一心就只想進微信。

從 2015 年春招到2016年春招,一共投了 CVTE,阿里巴巴,騰訊,唯品會,4399,珍優科技,YY,百度,迅雷,京東,酷狗,匯豐,技德,美團,網易。這一年的經歷起起伏伏,心情和體重都有較大的波動。

原因是我被擁抱了變化,打亂了我的方向,但是我又堅持了下來,收穫了自己心儀的 offer。

這裡要劃重點:

對於學習計算機的同學而已,大三這個時期很重要,原因是很多大廠會提前招聘實習生,此時只要你技術基礎相對較好,學習態度端正積極,藉助自己有實習或者工作室的專案經驗,很有很大可能通過實習招聘提前進入心儀公司的,並且實習生的轉正機率很大,所以如果大三下學期可以到大廠實習並爭取轉正,大四就有足夠多充足的時間可以自己慢慢安排!學習,旅遊,談戀愛!都可以!

如果大學可以重來,我一定,一定大一就開始努力學習


CVTE實習招聘(第一次)

CVTE是春招中比較快的,也是我面試的第一家企業。

image

**線上測評:**專業+綜合HR面:華工酒店完成一面HR面,主要問職業規劃還有技術掌握程度。

**技術一面:**兩個Android面試官,問了一些專案和Handler機制,佈局優化等,手寫設計模式還有排序演算法。

**技術二面:**我的天〒_〒,是一位數學家(這裡吐槽下,我從下午2點等到快6點才面試,卻很匆忙安排了個數學家。拖這麼久的原因是那些實習的HR安排很不當,那時候輪到我的時候剛好到午飯,而且是我一面面試官,所以就讓我去吃飯等會換面試官,結果HR就把我標記成已面試,而中途HR又換了幾次,每次都認為我面試了,最後拖到6點我真的很疲憊很沒狀態,無奈(╯-╰)/)。

主要手寫HTTP請求頭,某些返回碼的含義;資料庫索引底層實現;手寫演算法判斷連結串列是否有環;Base64底層實現,直接說出A轉化後的結果。整個面試過程都被壓著問,感覺很不友好,因為沒啥狀態,很多東西懂卻頭腦一片空白,竟然忘記了A的ASCLL是多少,想和他解釋下Base64的轉化過程被拒絕,要求說出結果不聽分析,我也真是醉了。

**結果:**在宿舍等了一個晚上,掛了。好揪心好不甘心。於是開始繼續複習,準備騰訊春招和阿里。


阿里內推實習招聘(第一次)

由於過年在家那段時間,工作室的師兄幫我們內推了阿里巴巴春招崗位。自己對部分不熟悉就寫了淘寶和UC,後來內推名額滿了,一個研究生師兄幫我內推到yunOS事業部。現在看來,我更推薦學Android的朋友選擇支付寶和淘寶。

image

**阿里一面:**第一次打電話給我的時候我正在等CVTE的第二面,所以和麵試官說等會再面試。第二次打電話給我的時候已經很晚,那時候在地鐵上清不清楚面試官說話,說等會我出地鐵再面試。出地鐵的那一刻好緊張,CVTE的面試瞬間給我拋到九霄之外。

具體的面試內容我大致只記得談談負責的專案;為什麼會喜歡做安卓;安卓的系統啟動機制;安卓應用的優化還有socket的應用。後來問提問環節問了面試官的工作地點和我面試崗位的工作後,發現是在杭州,請求面試官能不能幫我轉到廣州後,他說可以。

**阿里二面:**大概在一面過了一個星期後打過來,主要面了Java基礎;執行緒同步;集合機制;安卓專案中用到的技術;還有一些不太記得了,最後談談規劃後發現這個崗位還是在杭州。所以又請求面試官能不能轉到廣州崗位,他說可以後結束面試。二面過後,官網發現自己的狀態變成拒絕後重新多了一個簡歷評估的狀態。

**阿里三面:**大概距二面過了15天,我本來以為阿里已經拒了我了。三面面試官打來的時候是我正要去看校辯論賽開場表演賽。剛出門就接到面試官電話,談了一下Java技術和Android技術後覺得我OK,說了是yunOS事業部的,問我有沒有興趣還有以後的職業規劃後。提問環節問了還有沒有面試,面試官說沒有了。官網狀態瞬間變成3面通過。

**阿里四面:**在看比賽過程中,接到總監電話,表明了是yunOS事業部是否想參與實習,表明我通過事業部面試,問我家庭情況,個人性格及其在校活動,職業規劃等,並和我說了入職時間和會有人後續聯絡實習事宜。

**結果:**阿里內推通過,選擇阿里巴巴yunOS事業部實習


騰訊內部機會(第一次)

這次面試是和我工作室安卓組的一位朋友去微信總部直接面試。因為之前我們因為感興趣參加了華工的微信課程學習,朋友得到了面試機會並也跟著前去,那時候是5個人一起去的。

image

**筆試:**完成一份英語的Java筆試題後等通知。

**一面:**一位斯斯文文且很帥氣,負責網路底層開發的面試官面試我,不得不說微信的辦公環境很nice,我們在桌球桌旁邊面試,整個過程氣氛很好。

問了我Java基礎和一些實現細節,安卓也如此。微信的面試官很注重技術實現的細節和優化,雖然有些面試題忘了,但是我還記得他在玻璃牆上畫設計模式和SQLite底層索引實現及其優化的圖。

人超級好,針對我的不足指出給了很多建議。以致於之後我面試過程中遇到過此類問題都能答得不錯。很感謝這位面試官。

**二面:**一位身材高大,比較沉穩的,負責NDK開發的面試官面試我,問了安卓事件接收和傳遞機制;Linux程序和Java程序有何區別;問了一個主執行緒繪製UI的問題;C語言和Java語言的應用及其各自的優勢;自己的規劃等問題。

**三面:**是一位微信元老架構師。為了專案技術和實現細節;問了Http技術還有金鑰交換協議;安全通訊;還有一些忘記了。到四面的時候只剩下3個人面試,面試結果是3選1.

結果:跪了。工作室的朋友面試功過;另外一位華工的朋友也沒進。讓我們去參加騰訊春招。這次面試看到自己的在網路方面很不熟悉,網路課程要等到下學期才開始,所以只能提前自己惡補了。


騰訊實習面試(第二次)

**筆試:**華工筆試,內容涉及C語言,C++語言,Java語言,資料庫,計算機網路還有演算法(網上有好多筆試題,可以借鑑參考下)。

**一面:**喜來登酒店,東圃。比較緊張,面的依然是專案技術,Java基礎,Andriod基礎,演算法(演算法這一塊在劍指offer中題目),作業系統中斷,進執行緒區別;計算機網路 TCP,HTTP相關,NAT等

**二面:**喜來登酒店,東圃。面的和一面差不多,只是知識點會比較深。比如反射機制會問到Android實現場景和優化等等。

**HR面:**和HR說明了想進微信團隊,HR也表明了QQ團隊及其團隊提供的平臺,也向HR表明了通過yunOS事業部實習,HR讓我自己思考及其選擇。

**結果:**沒能參加鵝廠實習〒_〒。現在工作回想起當初如果去 QQ 可能就不會出現後續的曲折,但是想想每個決定都是自己做的,只能自己承受。

到此,春招告一段落,最後選擇了yunOS事業部實習。

整個過程面試安排得很緊密,會覺得面試後很累。建議參加春招的小夥伴能選擇3-4家自己追求的企業針對性去複習,不推薦海投。我本已為春招進了阿里後,能學習留在杭州,接下來一年的大四生活可以安排更多的學習機會〒_〒。

然後最後並沒有,那一年的實習成功擁抱了變化,雖然能轉正到北京或者在杭州轉正做C++,但是並非自己所好。

當大三春招沒有辦法提前去實習轉正的時候,大三秋招其實到了關鍵的時候。一般在我們學校學計算的,基本大三秋招確定了 offer,大四去實習,這個是大部分人選擇的規劃。所以在yunOS實習之後,從杭州飛回廣州,回來的時候是9月5號,進入秋招時段。


阿里實習面試(第二次)

因為知道事業部今年實習生基本都沒有轉正機會,身邊很多實習的研究生師兄自己在阿里平臺上聯絡其他事業群。

無奈我還天真的以為事業部會安排我們面試其他事業部,然而並沒有〒_〒,讓我感覺到巨坑。

後來自己在阿里平臺上搜了做Andoird工作的很多工程師後,有一個主管願意接納我。面試了一些內容後,在後續面試過程中由於崗位需要在北京工作,而且可能需要轉前端,不符合自己的發展意願,所以就明確說了,也很感謝這位大哥給我機會。


騰訊實習面試(第三次)

回到廣州的時候已經9月初,那時候剛下飛機朋友就說明天一起去騰訊筆試〒_〒

**筆試:**基本的內容和春招差不多

**一面:**主要問了專案和在阿里實習負責的專案,Java記憶體和安卓基礎

**二面:**Java和Android的問題基本都能答得出來,卡到演算法。面試官給定一個座標,快速實現該座標方圓1公里內的酒店,座標可動。後來因為解釋不太清楚和麵試時間拖得太長,所以面試官讓我回來發答案給他。最後答案解出來了。面試官再出了一道題,因為自己的表現讓面試官感覺到不夠細心和沉穩,最後沒能過二面。

結果:這次的失利讓自己變得很急很慌。騰訊本來以前自己大學最想進的公司,結果在最關鍵的秋招失敗了,而且自己的阿里實習的時候並不是做安卓技術開發工作,一定程度上讓自己的專案停在春招水平,雖然也有在深入學習其他知識,但自己開始緊張。


唯品會(第一次)

image

**筆試:**參考網上歷屆的試卷,筆試題比較基礎很簡單。

**一面:**在筆試過後,接到面試通知。問了阿里的實習專案;問了ListView實現細節和優化;問了Button定製場景;問了Java基礎和安卓基礎;

**二面:**一面過後再教室外等候,受到二面通知。主要問了阿里的實習專案;專案用到的技術;Java基礎還有安卓記憶體優化等。

**HR面:**過了二面後等了一小會面HR面,HR是一位很資深的大叔,從百度調到唯品會。問了是否能用英語面試,回答否;問了生活背景;問了實習經歷;問了性格特點;然後被定義為太消極,童年有陰影,我也是醉了。我是從小打工,而且從小學,基本每個暑假寒假都要,而且都是那種一天做12個鐘,為的是賺生活費和補貼家裡的學費。這段經歷讓我懂得了吃苦和堅持,怎麼就讓我變得消極和有陰影…

後來HR講了自己人生經歷,說世界觀,人生觀,價值觀。我說價值觀可以變,他說可以嗎?價值觀不就是人對事件價值的判斷嗎?難道不是隨著人的閱歷增長有所調整改變嗎?不過他的經歷讓我深為佩服,從入行講到佛學,是一位很有學識的HR。

**結果:**跪了。原因,至今未知,不過也好像懂得些什麼…


騰訊(第四次)

微眾銀行的面試已經在秋招末。在微信公眾號得知有次機會,故奮不顧身去參加。

**筆試:**和騰訊筆試題差不多。(記憶模糊)

**一面:**也是在東圃酒店。〒_〒面我的是C++工程師,問我會不會C++,我說不會後…狂問演算法,我記得是4道,具體不太記得。其中三道都能手寫出來,最後一道是小儲存存大資料,用的是點陣圖方法。由於自己在面試的時候想不起來(後來回來複習大資料題目的時候才掌握),故只能用hashmap儲存,效率不高。

**結果:**面試官讓我等,結果無果〒_〒


阿里(第三次)

實際上從HRG在杭州告知我回來後會有一個終面部門交叉面,結果在騰訊失利的第二天。直接電話說“對不起…”我直接說理解後掛了電話。

在面試匯豐過後,一段時間,差不多到了11月末,面試了阿里健康。得知從集團簡歷池中選了我之後安排面試,談了轉正待遇後安排面試,兩面都視訊面試。

**一面:**安卓基礎;專案技術;效能優化;學習目標;Java基礎及其記憶體回收等

**二面:**專案技術;安卓Framework知識點;效能優化;開源框架知識;提問環節問了所做業務等 結果:過了,資薪待遇談了也清楚了。因為實習時間及所在地點時間與自身情況衝突,也不是自己最想要去的部門就拒絕了。


迅雷(第一次)

面到這裡基本秋招都已經結束了,學校基本快放假。得到迅雷的面試是由工作室學長B推薦的。

由於部門比較缺人,所以直接技術面

image

**技術VP面:**專案技術細節,面試官抓了很多專案細節問,比如說多執行緒斷點下載的每一步,每一個程式碼邏輯等;效能優化,這一方面我是有過準備的,回答得比較系統,比較滿意;

最新安卓技術瞭解情況;Java技術細節,問得很深,從程式啟動到垃圾回收,〒_〒不愧是vp;最後問了下Java異常和安卓異常的區別,答得不太好;

問了發展意願及其職業規劃等等。

**結果:**直接發offer…很感謝迅雷的HR和技術vp,人真的很nice,後來考慮到發展地點及其工作,沒有接受offer,很可惜。到現在心裡還一直對負責我入職的HR和技術Vp心存愧意。


網易(第一次)

image

也許是我不願意放棄,不願意將就,所以我才會選擇堅持,感謝網易不拘一格。

放假了,基本同學朋友都回去家裡了,整個宿舍只有我一個人,年末了,也該收拾東西回家了。

網易的招聘,是我在校招日曆上看到的,當時和一位學java後臺的哥們一起投的。然後趕緊在校複習知識點和開始畫安卓知識架構(我喜歡用畫圖的形式讓自己掌握的知識互相關聯),然後開始在牛客網(之前面試的企業歷年筆試題基本都在上面能找到,是一個刷題的平臺)及論壇找網易筆試題和麵試,基本刷完了網易網際網路和網易遊戲的題目,雖然有些不懂可是還是需要硬啃下去。接近筆試前夕,我們還是沒有收到筆試通知。

哥們的表姐也投了網易,不過人家是名校碩士〒_〒,收到了面試通知,我倆妥妥地跪了。我不甘心,我認為自己能夠做得出網易的筆試,如果能有一絲機會,死也要讓我死得明白。於是我倆去“霸筆”…幾間筆試科室,廣州地區幾十個運營崗筆試名額,幾十個產品筆試名額,只有6個技術筆試名額,這讓我瞬間很慌很難受。

哥們讓我走,估計我們沒機會,可是我那一刻真的很難受很不甘心。

我硬著頭皮進去問HR說 “我來自…,我投了貴公司的技術崗位後沒有收到通知,請問可以給我筆試機會嗎?”

另一個HR說 “沒收到通知是不可以筆試的,除非有人沒來筆試,試卷只有6張”。

我把自己的簡歷遞給前面HR。

“這個是我的簡歷,如果技術崗有人沒來面試可以不可以給我一次機會,我在外面等候,謝謝你!”

我出去外面後,剛才接了我簡歷的HR出來了說“你們都是沒有接到通知的嗎?(還有一個產品來霸筆),在這裡等一下,如果有機會我就來通知你們。”

後來筆試開始了,有些參加技術崗的還沒有來,可是沒有人通知我們進去筆試。我哥說等到30分如果沒有就走了,後來30分過了,還是沒有人通知我們。我不願意走。

“要不你先走吧,除非HR出來說沒有機會,不然我多等一下吧。”

筆試開始了一段時間,有一位HR走了出來,說 “你們都是來筆試的嗎?進來吧,把簡歷給我。”

我很激動,自信地完成了那份筆試題,到現在,我還依然能記得那時候的感覺。哪怕失敗,也要讓我知道我不行。

**一面:**一面是在網易大廈附近的E時光,三個面試官,一個Java面試官和兩個Android面試官。

問了:Java基礎;執行緒安全處理;手寫解決判斷連結串列是否有環(當時寫了思路);手寫例模式(程序安全版+列舉);Java程式啟動過程(5個過程);Java記憶體回收機制(包括回收演算法);安卓基礎;Handler機制及其原始碼(面試官細節到具體程式碼及方法,〒_〒很年輕的面試官,技術好紮實);訊息傳遞機制(具體到View和ViewGroup的區別);框架了解及其imageloader;Lru演算法及其軟弱引用的使用;解析度適配等等。

**HR面:**網易大廈,問了面試公司及其offer情況,如實回答,希望能在廣州;發展規劃及其學習習慣;網易招聘的優缺點;阿里平臺資源的優點;網易bobo產品及其同行產品的瞭解比較;提問問了是否還有面試,具體工作還有是否可以提前實習,實習安排。

面到這裡,已經年末了。HR說可以提前回去家裡,我還是依然留在學校幾天。整理這幾天的面試問題還有面試經驗,整個宿舍樓沒有人,只有我和幾隻流浪貓。偶爾做做飯,它們也會來我宿舍,我也會給它們吃的,感覺自己變得很安靜。

在回家的大巴上收到了網易的終面,表明年後還有終面。面了那麼多公司,累也該累了,反而覺得很釋然。帶著這個面試訊息回到家了,始終沒能放得下。除了在家了幫幫這幫幫那,在朋友家聊聊天,基本都是在看書,也買了一本新出版的安卓技術的書,過年那段時間看完了。初九那天回到學校,繼續複習,整理在家學習的和以前的知識點,打算面完網易後休息一段時間,希望能傾盡自己所有心力去完成這次面試。

**終面:**HR面+總裁助理面。因為不知道是否是技術面,所以把所有的技術點用三天都複習完了,用一天準備了HR面及其自身情況的問題,主要理清楚說話的邏輯思維。

HR面,是我年前的HR,很親切。和她聊了下年前到年後這段時間的學習情況及其學習了哪些新的知識點;自己每天的學習規劃;bobo產品競品分析;使用過的一些工具,比如思維導圖為知筆記(因為之前裸ubunut系統,所以只能用為知筆記);職業規劃;實習內容及其輪崗事宜;期望工資及其在手offer薪資;行業薪資等;整個過程氛圍很nice;面試完後搭車快回到孤島的時候收到電話通知到需要再面試〒_〒,是另一位面試官。

當時心裡其實蠻緊張(難道對我之前所述技術有疑惑?還是我表達的內容公司還有爭議?)。在車上我回想著整個幾輪面試的過程,細節到我所說到的內容,技術在腦海裡過了一遍。對自己說“來吧!如果你想問我技術,來吧,我都做好準備了!”

就這樣,我很有信心地衝了回去(快6點了,怕面試官下班)。結果回到公司竟然發現面試官是一位很年輕親切的總裁助理,她和我表明了回來面試的原因和給了一杯水(〒_〒,感覺好感動),表達了歉意後開始面試,問了生活情況;學習背景;興趣愛好;長期規劃;聊到網易bobo的產品及其同行同類產品;事業部發展前景;網易公司文化;面試官自身在網易的經歷;女朋友及其未來規劃;學習習慣等等。整個面試過程更像是在聊天,是一個瞭解雙方和建立信任的過程,很nice。

結果:過了。也欣然接受了offer。

在面試阿里騰訊三四次的過程中,雖然有收穫到其他 offer ,但並不是我大學時期心儀的 offer。

所以到最後,還想去網易搏一搏。

結果這一搏,就一直待到了現在。我覺得人生很有意思。高中的時候,我努力想考一個物理專業,但是後來我卻進了計算機專業。大學的時候,我努力想進騰訊或者阿里的技術部門,但是後來我卻來了網易。就是如此夢幻。

假如你已經是應屆生了,經歷過一兩次batm的面試失敗沒有關係,只要有機會就上。哪怕最後你最心儀的機會沒有了,你要懂得抓住當前最合適你的機會。真的,很多時候未來發生什麼你都不知道,或許當前的機會,才是最適合你發展的。

二、被迫考慮機會

真的,很多時候未來發生什麼你都不知道!(預言家 =。=)。

我也不會預想到我工作快一年的部門因為公司架構調整而需要被迫考慮重新找工作。實際上,我非常喜歡當時部門的人,部門是小團隊專案化作戰,非常靈活,技術和產品自由度非常高,大家配合得很愉快。

雖然那時候大家分道揚鑣,但是我們現在的微信群依然保留著之前最完整的人員,還很活躍。

工作認識一知己,前輩,之前就業於UC,平時交流甚歡,喜歡同他討論和交流技術問題,在看身上看到了開放與追求的精神。

正值事業部結構變動,整個事業部工作氛圍和模式都發生了巨大的變化。他建議我去更大的環境更好的氛圍嘗試,我也堅持著自己的職業規劃和學習道路。他同事幫忙內推,不巧的是那天發燒=。=,和公司請了假,本來擔心狀態不好,不過一想到自己以後要做的事,立馬就飛了!不要慫,就是幹!

面試地點在黃埔大道這邊,沒想到離我住的地方那麼近!二十分鐘就到了,原約在2點的面試,我12點50分就到了…提前去面試也不好,畢竟太早去也不是守時,也會打亂別人的計劃安排,故在樓下走了幾圈,有點冷,不過滿滿的熱情啊!把之前準備的知識都過了一邊,演算法,資料結構,網路,作業系統,java和安卓。自己在腦海了想了n多種面試問的業務場景,組織表達了一遍上樓了。


阿里(第四次)社招一面

天吶魯,我還以為要筆試呢,直接進入正題面試,有點措手不及,不過先自我介紹,所以我調整了一下情緒和思路。面試官很帥氣啊,是一個很年輕但是應該有蠻長經驗的面試官。問得問題主要有:

  • 推送sdk底層實現
  • socket相關實現
  • mvc mvp mvvm區別與專案使用情況
  • 網路層相關設計,volley底層實現,快取相關
  • 自定義view相關
  • 下載模組涉及,成功率相關
  • 彈幕與播放器相關
  • 跨程序通訊手段與注意點,webview相關
  • EventBus相關
  • 效能優化經驗及手段
  • 為什麼想要換工作
  • 興趣愛好,工作室情況,如何協調工作室與辯論隊
  • 平時學習習慣和安排   上述的點可能有一些遺漏或者記得不太清楚,不過整體面試官給人的感覺真的很好,大廠的環境也贊!除了前面聊技術外,也聊興趣愛好,平時一些習慣等,整體來說氛圍很輕鬆。

阿里(第四次)社招二面

二面是一個臉色紅潤,很和藹的一個面試官負責。想了一下,除了和大學廖老師溝通有這種感覺之外,這位面試官給我一種導師的感覺哈。面試的問題主要有:

  • 網路請求涉及,如何設計快取
  • 效能優化手段,場景
  • dp的設計
  • 熟悉的底層原始碼,廣播底層實現,這一點自己確實還了解不夠,不過自己講了哦從wsm->activity->view的事件傳遞過程
  • 聊之前阿里的實習
  • 為什麼想要換工作
  • 職業規劃
  • 短視訊行業,Bolo相關及一些競品,因為平時也會留意自己開發的軟體及競拍,行業情況,所以有一些自己的見解
  • 聊興趣愛好
  • 聊王者榮耀產品相關

整個過程面試官給人印象很深,除了互相交流得開外,他的問題也很有深度,不過如果真的答不上就請教下就好。最後面試官問了是否有哪些問題提問諮詢:

  • 從剛才所述的職業規劃,希望面試官給出意見和建議
  • 如果有後續面試,會在什麼時候安排 還是到上週的面試辦公室,10樓的環境給人的感覺很清新,自由。

阿里(第四次)社招 leader 面

面試官很年輕,讓人感覺很有幹勁。其實今天一整天都昏昏沉沉的,人狀態很差。但是和麵試官聊天,能說到的都是內心的一些想法,所以聊起來很舒服,他的一些建議也很值得我思考反省。

  • 自我介紹
  • 崗位要求
  • 實習內容
  • 工作負責內容
  • 換工作原因
  • 優缺點
  • 學校經驗
  • 家庭情況
  • 個人現狀,還有我的眼睛哈   面試的問題可能記不太清楚,但是有兩個點我很深刻。第一個是自己現階段要穩下心沉得住氣。幾位面試官都和我說到了這一點。確實是這樣,我很看重職業生涯前幾年的學習積累與心態沉澱,也明白了當前自己最需要做的事是什麼。沉得住氣,我自己的理解是:
  • 心態不要浮躁,相信自己的規劃和按照自己的規劃走
  • 學習新知識,要學會從巨集觀上懂得一個知識牽扯出的知識網,更要耐得住心去一句一句程式碼debug每個細節
  • 清楚地看清自己的技術現狀,虛心地取長補短

那天結束之後,用新的心態去學習retrofit原始碼,記得大學的時候看imageloader,volley的時候,會沒有太多的耐心去深挖,雖然知道流程和某些細節,但是對底層原理其實沒有足夠的掌握。

很奇怪,今天越挖,發現自己對Android越無知,我第一次感到自己無知時,確實開心的

當我向我之前同事說某個原始碼細節的邏輯和我們專案所用到的邏輯有偏差時,他去調式之後發現“是專案用錯了!”。感覺心裡還是美滋滋的。

第二個是自己表述不夠精簡,有時會用辯論的方式來解釋一大堆東西,會讓聽眾感覺很囉嗦。這也是我的問題,改!應該嘗試先下結論後再根據情況做分析。面試完走出辦公室,還看到面試官拿著筆記本,打了個招呼,感覺心暖,感謝這次機會。


阿里(第四次)社招HR 面

其實hr面應該是我最緊張的一面。可能是最後一面,也很看重這次的面試,擔心自己說得不好。

過程中自己也因為喉嚨的原因喝了多次水,思維中斷了好多。不過,面試官是一位比較有親和力的姐姐,無論的問問題的方式還是追問一些細節,都讓人挺舒服的,不會感受到太大的壓力。

  • 入職半年多,為什麼選擇換工作
  • 現在事業部狀況
  • 負責的專案工作
  • 最困難的事是什麼,想到的是專案難點和當時在工作室做專案,那段時間確實比較艱難,算印象最深刻的
  • 職業規劃,我可能表述不太好。從2-3年階段性計劃,到今年,這個月,這周。講得邏輯性不好。自己的習慣確實是工作日+週六週日安排,可能當時比較緊張,講得很亂。
  • 堅持最久的事,這個應該是和我兄弟去跑內環哈,從半圈到兩圈是如何煉成的
  • 最有成就感,想到的是專案難點,後面仔細想,確實是因為攻克的難點給使用者帶來好體驗。我還記得菠蘿種子群的一個好友,網易忠實粉絲,和他交流過很多次關於菠蘿的體驗,有一次和我聊到輸入法的原因,後面自己就花時間重構了。其中還和hr聊到關於攻克難點和所花的時間問題,確實是我自己表述不好,一件事的難易程度與完成時間只是正相關。,當專案頻繁迭代,需要想辦法縮短工時並保證質量後“偷”時間來做重構優化,其實自己那時候很有壓力。這些東西不是需求,而是你想讓產品更好卻想去做,改得好固然好,萬一改不好,那就是浪費時間,可能會應該當前開發狀態。和很多同事溝通他們都不會選擇這樣去做,要麼要求產品加工時,要麼就不做。可是自己很難接受放著不管吧。後面用來兩個多星期的午休和下班瑣碎時間,週末空閒時間把東西做出來,第一次正式給專案重構使用,我是很自豪。最開心的應該是那位好友說的“菠蘿的開發真不錯!至少你們對使用者有心”
  • 薪水相關  總的來說,今天面試的表現,自己給自己的評價是一般。最後溝通的時候因為薪資問題最後黃了

三、不甘落敗嘗試螞蟻金服

螞蟻金服的面試機會是那時候在看機會的時候,在脈脈認識的一位螞蟻金服的面試官那裡爭取的。在溝通過後,對其部門的意願挺大的,所以就嘗試下把簡歷給了面試官。

過了幾天,沒想到收到了其部門HR的面試邀約。剛好那時候公司部門架構調整到了尾部,我們可能被合併到一個新的部門中開展新的工作。可能大學實習給我留下非常好的印象,很喜歡阿里的技術部門,加上 UC 的面試沒有如意,所以就毅然進行面試。


阿里(第五次)社招一面

  • 介紹自己
  • 介紹簡歷上的專案
  • 高效能列表實現,重點圍繞 recyclerview 展開,如何複用,如何快取
  • 效能難點如何攻克
  • 效能優化方面專案中做了哪些工作
  • 熱修復原理,類冷啟動修復原理,類熱修復原理,classLoader雙親機制
  • 換膚原理
  • 設計一個圖片框架,我考慮的是如何載入,如何編解碼,如何快取,api的易用性,大部分參考 glide 思路
  • 在很多數中找出前n個最小
  • 自己的方向是什麼?想做業務,還是想做專點的技術,如何理解專案架構。
  • 反提問:“自己技術性回答得怎樣,有哪些改進。” 面試官給的建議是:技術還不錯,但是介紹部門業務和自己的切合度時需要 “表述要簡潔,邏輯要清晰”,**

阿里(第六次)社招 leader 面

  • 介紹自己情況,學android,實習經驗
  • 介紹網易經驗,哪個專案最大,專案規模,專案人員分佈
  • 擅長哪一方面,這個問題非常致命,一定要選你足夠理解的,我那時候講的是效能優化,但是感覺講的不好
  • android 虛擬機器區別,編譯區別,dex區別
  • 熱修復流程,原理是什麼,業界有哪些方案,對比如何
  • 打包流程是怎樣的
  • 應用啟動相關流程,從孵化程序到MainActivity#onResume繪製整個流程
  • 新版本android特性
  • 手勢滑動事件分發
  • view繪製流程
  • gradle執行流程
  • apk安裝底層細節
  • 最後留了一道演算法題,我做了兩天之後發給面試官

阿里(第六次)社招 交叉面

  • 介紹自己
  • 專案經驗,團隊情況
  • 對網路是否熟悉,一次http請求,https整體實現
  • 以後想做什麼,如何規劃自己技術
  • 開源貢獻,部落格記錄相關的開放性問題
  • 反問:後面是否還有技術面試,得到的答案是基本不會有了,等 HR 面試就好

阿里(第六次)社招 HR面

  • 介紹自己
  • 專案經驗,團隊情況,學習情況,薪資待遇
  • 未來技術規劃,是否考慮杭州,未來家庭規劃
  • 反問:大概多久會有答覆,得到的答案是當週週五前。

當週週四收到了人生中第一個阿里的正式 offer,還是我最心儀的螞蟻金服的技術部門的 offer。技術方向和薪資待遇都大大超過我的預期。HR 讓我考慮一週之後給答覆。

過了一週,我決定放棄這個 offer,並開始自己新的技術規劃,在新的部門好好幹。一干,就幹到了現在。

如果到現在問我,“當時放棄螞蟻金服的 offer 後悔嗎?”

我會說 “說真的有點遺憾,但我無法比較孰好孰壞,我現在就挺好的。”

如果你剛開始出來面試,那麼就要用心去準備,去模擬,把每個機會都抓住。

如果你已經面試了幾家但是都還不理想,哪怕是疫情背景下,你不要將就。我一直都覺得做技術的不要將就,可能是我的性格。那麼繼續嘗試,把你每一次的面試的經歷都記錄下來,面試題是什麼,你是怎麼回答的,甚至你可以在面試的時候把自己的回答錄音下來,回去好好聽好好修正。一次會比一次好。

如果你有幾個offer在選擇上出現了分歧,建議要開始規劃從職業規劃來考慮offer。

如果你打算未來深耕音視訊,那麼短視訊技術offer則大於非短視訊技術offer。如果你打算考慮往技術經理/技術團隊管理,那麼能帶團隊的offer > 不能帶團隊的offer,參與技術選型,技術架構搭建的offer > 負責某一塊業務的開發 offer 等等。

這幾年下來,我發現 “選擇” 和 “努力” 在不同時期有不同的側重。

  • 畢業時期,“選擇” > “努力”,好的平臺能帶給你更多的機會,更好的薪資待遇,讓你的視野更廣;
  • 畢業前5年,“努力” > “選擇",當你有一個好的平臺之後,你要懂得利用平臺資源去學習,比如各種內網,公司技術福利等,並藉著平臺專案的實踐機會去野蠻生長;
  • 後幾年,“選擇” > “努力”,這是因為前幾年為了積累的專業優勢或更高的視野讓你看清你以後要幹什麼,如果說選擇的是平臺,那麼這個選擇就是未來要嘗試突破的方向。

當然,這些想法受限於我的經歷,難免難以苟同。

四、非技術性問題的面試準備

非技術性的問題,實際上很多時候程式設計師回答得並不好,除了表達缺乏邏輯性外,溝通不暢也是一個問題。但事實上這些問題都可以提前準備的,而且我自己以前準備面試的時候都會把這些問題過一下,對著鏡子表述。你只需要針對每一個問題點記住幾個關鍵詞,然後嘗試脫稿,自己嘗試把它串起來表達,幾遍之後基本就 OJBK 了。

以下回答僅供參考。

自我介紹

我是來自xxx的xxxx。目前在xxx組Android研發。

平時基本能提前完成需求,經常會給產品同學提供一些技術上的意見或改進,並自主做一些技術調研來優化產品。

另外,我更願意讓別人感受到,我是一個隨和但執行能力知足的人。我喜歡組隊答辯論,樂於與別人溝通與想法碰撞,樂於分享我自己觀點與博文,因為我認為分享不僅僅是知識的傳播交流,對他人也會有知識上的重新認識的效果,同時也是對自己知識體系的一個鞏固也會增強自己的信心,對團隊而言,能活躍整個技術氛圍,讓工作變得輕鬆,對新技術有渴望與追求。

但同時,我對自己的要求也非常嚴格。工作上我喜歡通過畫邏輯圖細化需求實現,並按時從點攻克,這種方法非常有效。而職業規劃上,我會細分到每一週,每個月的學習計劃。每一年或者每個階段我應該去做哪些事情。

可能有人會說,我給自己畫圈限制死我的生活。其實不然,恰好相反,當我到達某個計劃節點時,我更清楚我應該做什麼且明白我為什麼那麼做,這會讓我對生活變得更有信心與熱愛。


平時看的書

技術類的書比如

《Java程式設計思想》《Effective Java》《突破Java程式設計師基本功的16門課》《深入理解Java虛擬機器》 《Android高階工程師進階》《Android研發錄》《Android開發藝術探索》《打造高質量Android應用》《Android應用效能優化》 《安卓核心剖析》《深入安卓卷1》《深入安卓卷2》《Android系統原始碼情景分析》

非技術類的書

《麥田裡的守望者》《小王者》《少年維特》《世界因你而不同》 技術類的書閱讀帶來技術收穫,非技術類的書閱讀是興趣,是擴充套件視野等都可以


部落格類網站

  • App:掘金(yummyLau),以前也有簡書(什麼都學的小明)
  • 網站:簡書,掘金翻譯,Google developers,泡在網上的日子, CodeKK,安卓週報
  • 博主:stormzhang,酷殼,工匠若水,羅昇陽,程式碼家,鴻洋等

怎麼解決問題呢?

先找到問題的原因,然後在找解決問題的辦法,找到問題的原因比找到解決問題的辦法更重要。

如果你不能解決,那麼你可以求助於其他人,而當你不知道問題的原因的時候,你去求助別人的時候,別人還幫你去找問題的原因,這肯定會浪費很多時間的。

先不要找解決問題的辦法,先找問題的原因。

一旦你瞭解解決問題的思路,那麼當問你一些開放性的問題的時候比如 “專案裡你遇到xxxx情況,你怎麼處理的?當你解決不了的時候,你會怎麼做?”

那麼你就可以圍繞上述的邏輯回答 “遇到xxxx情況的時候,首先我會分析出現這個問題的原因,(此處省略1w字),最終解決了。或者解決不了的時候,(這裡需要強調自己能用的都用了,能查的都查了)就會去請教這方面比較專業的同事(此處省略1w字),最終這個問題在他的建議下我成功解決了。”


為什麼選擇離職

最主要的原因還是與自己的職業規劃有偏差。

自己希望能呆在一個有技術方向性與能充分交流碰撞的團隊中,希望能充分發揮自己更多專業能力,在比較充實的節奏中度過職業的現階段。因為事業部重組的原因,我們的專案組被分派xxxxx做xxxxx,目前只需要保證完成工作即可,codereview過程中,能感受到迭代功能完成需求會是最大滿足,同時專案內團隊基本不會互相分享專案經驗及心得。

我希望可以完成得更好提前完成,可以幫助專案做優化做分享。在codereview過程中,我更希望我們不僅僅能把產品做好,還有更多的時間去優化,掌握更多新的技術來優化專案實現,讓產品有更好體驗。我希望我們的團隊有技術瞻仰性與向前性,對技術的思考有深度,我渴望投身這樣的團隊並一起完善團隊建設,而不是單純無線迭代。所以我選擇了在這個時候嘗試新的機會。

很多時候,我們是能保證工作完成的,自己會做更多的優化或者調研工作來完善產品,整個良性過程中,組員的價值能得到最大化體現, 而團隊應該是支援這種行為的,而不是間接地打磨掉組員的正向行為,這會讓組內的氛圍沉寂與消磨人的積極性。

我曾微訊號分享過一篇關於一位大哥“輝哥”的文章,講到做事要有匠心,要較真深挖,我解讀為專注。而團隊溝通工作應該是雙贏的過程,大家可以放開交流碰撞,以team work形式去解決難題,這便是我追求的環境。


如何勝任這份工作

我的理解是,崗位的內容是高質量迭代開發國際業務客戶端,能承擔缺陷重構和痛點優化。

自己接觸Andoid開發也兩三年,在職時間差不多一年,一年內參與了xxxx專案迭代開發,能保證自己負責的工作都是提前完成的。

而剩餘的時間,我會主動去重構專案,也能針對使用者痛點的主動做技術預研。而崗位的內容正是我主動追求的,我很樂意去挑戰工作上的難點。

我個人的職業規劃中,當前階段是想深入掌握android底層的知識,所以當出現一個業務問題前,自己會深刻去認識一個問題產生的原因。針對工作的內容,自己能冷靜分析原因並自主學習一些方案來解決。而提供的崗位工作正好是給了我充分的面對困難場景鍛鍊自己的機會。


學習習慣

這些越細越好,重在真實。

  • 週一到週五,9:30-7:30,上下班分別會看兩篇博文;
  • 工作日完成一般會有兩個小時時間用來繼續本月的規劃
  • 週六週日會把工作日踩的坑記錄下,有時候寫寫部落格,看看技術文章。

興趣愛好

打籃球,寫書法,游泳,桌球,乒乓球等,比較廣泛,但是每一項我都在身邊人中比較拔尖

最近,想練長跑,慢慢看能不能小跑馬拉松。

耐力,定性,這兩者都是我這階段需要的。


優缺點

責任> 協作溝通>接受意見但獨立想法>自學能力>執行能力強

解決問題的心態不成熟,有時候容易鑽牛角尖,處理計劃過於急躁。

但是我相信,這是每個人都會經歷的,而且是一個蛻變的過程,而我也正在慢慢轉型。


工資待遇

可以瞭解下xxx的待遇結構嗎。

希望能在xxxxK,因為(這個要按照真是想法表達)對於自己而言,我更看重xxx平臺能給我的的職業幫助,而我也很相信自己能給團隊創造相應甚至更多的價值。


想問的問題

技術面

  • 經過剛才的交流,針對應聘的崗位,面試官有哪些意見或建議,我能力的匹配度大概多少?
  • 假如有幸能通過面試,這個崗位現階段負責哪些的工作?

HR 面

  • 經過剛才的交流,勝任該職位我應該加強哪些能力?
  • 假如有幸能通過面試,會進入哪個產品線,未來這個產品的發展方向和規劃會有哪些?
  • 面試結果最晚會在什麼時候通知?

面試涉及知識點/體系/書籍推薦

以下是面試中遇到的問題整理,有一些被我整理已被整理成博文,其他的都是我這些年積累的面試筆記,雖然不是很全面,但是已經是我保留的全部了。希望有幫助。

注意以下每個條目都有作者的面試筆記,因為每個的連結太長,建議大家自己獲取PDF檔案研讀。

完整PDF檔案獲取方式: 點這領取

Java相關

  • JVM
  • Object
  • static
  • final
  • String、StringBuffer、StringBuilder
  • 異常處理
  • 內部類
  • 多型
  • 抽象和介面
  • 集合框架
  • 反射
  • 單例
  • 執行緒
  • volatile
  • synchronized
  • 引用型別
  • 動態代理
  • 元註解

image

網路相關

  • 網路體系的分層結構
  • HTTP 相關
  • TCP/IP
  • Socket

image

設計模式

  • 設計模式分類
  • 面向物件六大原則
  • 工廠模式
  • 單例模式
  • 建造者模式
  • 原型模式
  • 介面卡模式
  • 觀察者模式
  • 代理模式
  • 責任鏈模式
  • 策略模式
  • 備忘錄模式

image

Android

  • 原始碼-xml載入流程
  • 原始碼-Touch事件
  • 原始碼-Handler
  • 原始碼解析-Rxpermissions
  • 原始碼解析-LiveData
  • Android類載入器
  • Java類載入
  • Rxjava 的歸納思考
  • Framework基礎結構
  • Android虛擬機器結構區別
  • 啟動app流程
  • 啟動framework流程
  • Android架構總結
  • 模式之MVC/MVP/MVVM
  • 換膚skin-support流程
  • 圖片庫glide
  • 原始碼-AsyncTask
  • 自定義view流程
  • Activity相關
  • Fragment基礎
  • View篇之Touch傳遞
  • EventBus
  • 洩漏型別及定位
  • 效能可優化的點

image

其他

  • 排序
  • 二叉樹
  • 連結串列
  • 棧 / 佇列
  • 雜湊表
  • 堆 / 優先佇列
  • 二叉搜尋樹
  • 陣列 / 雙指標
  • 貪心
  • 字串處理
  • 動態規劃
  • 矩陣
  • 二進位制 / 位運算
  • 反轉整數 LRU快取策略

image

書籍推薦

  • 《Java程式設計思想》
  • 《Effective Java》
  • 《突破Java程式設計師基本功的16門課》
  • 《深入理解Java虛擬機器》
  • 《Android高階工程師進階》
  • 《Android研發錄》
  • 《Android開發藝術探索》
  • 《打造高質量Android應用》
  • 《Android應用效能優化》
  • 《安卓核心剖析》
  • 《深入安卓卷1》
  • 《深入安卓卷2》
  • 《Android系統原始碼情景分析》
  • 《巧用Gradle構建Android應用》
  • 《Android高薪之路》
  • 《Android群英傳》
  • 《程式設計師修煉之道–從小工到專家》
  • 《程式碼的未來》
  • 《第一行程式碼》

最後,在這裡小編還分享一份由幾位大佬一起收錄整理的架構視訊+面試文件+原始碼筆記高階架構技術進階腦圖、Android開發面試專題資料,高階進階架構資料

如果你有需要的話,可以作者:yummyLau

文章篇幅較長,建議耐心食用,相信對你有幫助。碼字不易,如果有誤,歡迎指出。

前部分是面試經歷,後部分是附帶的問題筆記/推薦回答/書籍。

今天去上班的路上,看了下手機的掘金,發現前些天的 《這些年,我爬過的Android坑|持續更新》 一文收到不少點贊,很開心。一方面是自己的文章收到認可,另一方面是文章內容對讀者有幫助。從 2014/10/31 在 CSDN 平臺 寫部落格到 2016年中在 hexo 獨立部落格 上記錄自己的工作,已經過了 6 年,大概有 200 多篇。

直到前些天有個外國的朋友看到我獨立部落格上的一篇文章記錄的問題,發了 gmail 互相討論下了,他表達了 “他找了很久才找到這篇文章記錄的這個方案,很感謝你”。

讓我萌生了 “希望自己以後寫的文章能夠更好的幫助到別人” 的想法,所以我才想寫一寫技術及經驗文章。

本文按照時間軸,從我在校求職到畢業後的面試,列出一些技術點及我的想法,希望夠給疫情下的應屆生及求職者一些參考,同時更加堅定自己內心的想法,不要放棄!(部分內容從我以前的文章整合,如果已經閱讀過該章節,可跳到畢業後的面試直接看),以下內容我基於時間線,以第一人稱的口吻闡述。

一、應屆坎坷求職路

一個廣州非985/211普通本科生,電腦科學與技術專業。以前老是夢想能考一個厲害一點的學府,學習物理專業(因為初中和高中對物理比較有興趣),無奈高考考得不盡人意。來到了計算機專業,才知道有C語言這玩意。

2013年大一,專業C語言成績太差,被分配到B班學習。臨近學校工作室(有真實專案鍛鍊)招新,那時候基礎太差,又不願意做一個loser。正巧同鄉會有一位學長進了該工作室,我向他了解了該工作室的情況,得知有移動Android開發方向。

那年,因為當時用過索尼手機,上面的小遊戲有“Java”標誌,女朋友喜歡小遊戲,於是打算學東西開發一個小遊戲給她玩。於是努力地啃下了Java基礎便去面試,也很幸運地進了工作室。學完Java回頭反而把C語言知識打通,成績一直居B班首位。別人老說“學習其他語言前先學好C語言,看來我是一個奇葩。

**2014年,**跟著工作室開始做專案。前後差不多完成了5個Android方向的專案,主做的有3個。這一年,邊學習Java邊學習Android開發。

**2015年,**春招前。我藉助工作室的專案經驗,製作了簡單的簡歷之後,假裝成大一屆的師兄去參加學校舉辦的招聘會。面了三家,最後有一家對我印象挺好給了我 offer(感覺很罪惡)。但是這三家面試讓我瞭解了我簡歷上的薄弱點,知道了那些知識點我只會用但是原理,那些知識點必須深挖才能在面試上突出自己的能力。於是我到 2015年秋招前都在為這部分做準備,那時候一心就只想進微信。

從 2015 年春招到2016年春招,一共投了 CVTE,阿里巴巴,騰訊,唯品會,4399,珍優科技,YY,百度,迅雷,京東,酷狗,匯豐,技德,美團,網易。這一年的經歷起起伏伏,心情和體重都有較大的波動。

原因是我被擁抱了變化,打亂了我的方向,但是我又堅持了下來,收穫了自己心儀的 offer。

這裡要劃重點:

對於學習計算機的同學而已,大三這個時期很重要,原因是很多大廠會提前招聘實習生,此時只要你技術基礎相對較好,學習態度端正積極,藉助自己有實習或者工作室的專案經驗,很有很大可能通過實習招聘提前進入心儀公司的,並且實習生的轉正機率很大,所以如果大三下學期可以到大廠實習並爭取轉正,大四就有足夠多充足的時間可以自己慢慢安排!學習,旅遊,談戀愛!都可以!

如果大學可以重來,我一定,一定大一就開始努力學習


CVTE實習招聘(第一次)

CVTE是春招中比較快的,也是我面試的第一家企業。

image

**線上測評:**專業+綜合HR面:華工酒店完成一面HR面,主要問職業規劃還有技術掌握程度。

**技術一面:**兩個Android面試官,問了一些專案和Handler機制,佈局優化等,手寫設計模式還有排序演算法。

**技術二面:**我的天〒_〒,是一位數學家(這裡吐槽下,我從下午2點等到快6點才面試,卻很匆忙安排了個數學家。拖這麼久的原因是那些實習的HR安排很不當,那時候輪到我的時候剛好到午飯,而且是我一面面試官,所以就讓我去吃飯等會換面試官,結果HR就把我標記成已面試,而中途HR又換了幾次,每次都認為我面試了,最後拖到6點我真的很疲憊很沒狀態,無奈(╯-╰)/)。

主要手寫HTTP請求頭,某些返回碼的含義;資料庫索引底層實現;手寫演算法判斷連結串列是否有環;Base64底層實現,直接說出A轉化後的結果。整個面試過程都被壓著問,感覺很不友好,因為沒啥狀態,很多東西懂卻頭腦一片空白,竟然忘記了A的ASCLL是多少,想和他解釋下Base64的轉化過程被拒絕,要求說出結果不聽分析,我也真是醉了。

**結果:**在宿舍等了一個晚上,掛了。好揪心好不甘心。於是開始繼續複習,準備騰訊春招和阿里。


阿里內推實習招聘(第一次)

由於過年在家那段時間,工作室的師兄幫我們內推了阿里巴巴春招崗位。自己對部分不熟悉就寫了淘寶和UC,後來內推名額滿了,一個研究生師兄幫我內推到yunOS事業部。現在看來,我更推薦學Android的朋友選擇支付寶和淘寶。

image

**阿里一面:**第一次打電話給我的時候我正在等CVTE的第二面,所以和麵試官說等會再面試。第二次打電話給我的時候已經很晚,那時候在地鐵上清不清楚面試官說話,說等會我出地鐵再面試。出地鐵的那一刻好緊張,CVTE的面試瞬間給我拋到九霄之外。

具體的面試內容我大致只記得談談負責的專案;為什麼會喜歡做安卓;安卓的系統啟動機制;安卓應用的優化還有socket的應用。後來問提問環節問了面試官的工作地點和我面試崗位的工作後,發現是在杭州,請求面試官能不能幫我轉到廣州後,他說可以。

**阿里二面:**大概在一面過了一個星期後打過來,主要面了Java基礎;執行緒同步;集合機制;安卓專案中用到的技術;還有一些不太記得了,最後談談規劃後發現這個崗位還是在杭州。所以又請求面試官能不能轉到廣州崗位,他說可以後結束面試。二面過後,官網發現自己的狀態變成拒絕後重新多了一個簡歷評估的狀態。

**阿里三面:**大概距二面過了15天,我本來以為阿里已經拒了我了。三面面試官打來的時候是我正要去看校辯論賽開場表演賽。剛出門就接到面試官電話,談了一下Java技術和Android技術後覺得我OK,說了是yunOS事業部的,問我有沒有興趣還有以後的職業規劃後。提問環節問了還有沒有面試,面試官說沒有了。官網狀態瞬間變成3面通過。

**阿里四面:**在看比賽過程中,接到總監電話,表明了是yunOS事業部是否想參與實習,表明我通過事業部面試,問我家庭情況,個人性格及其在校活動,職業規劃等,並和我說了入職時間和會有人後續聯絡實習事宜。

**結果:**阿里內推通過,選擇阿里巴巴yunOS事業部實習


騰訊內部機會(第一次)

這次面試是和我工作室安卓組的一位朋友去微信總部直接面試。因為之前我們因為感興趣參加了華工的微信課程學習,朋友得到了面試機會並也跟著前去,那時候是5個人一起去的。

image

**筆試:**完成一份英語的Java筆試題後等通知。

**一面:**一位斯斯文文且很帥氣,負責網路底層開發的面試官面試我,不得不說微信的辦公環境很nice,我們在桌球桌旁邊面試,整個過程氣氛很好。

問了我Java基礎和一些實現細節,安卓也如此。微信的面試官很注重技術實現的細節和優化,雖然有些面試題忘了,但是我還記得他在玻璃牆上畫設計模式和SQLite底層索引實現及其優化的圖。

人超級好,針對我的不足指出給了很多建議。以致於之後我面試過程中遇到過此類問題都能答得不錯。很感謝這位面試官。

**二面:**一位身材高大,比較沉穩的,負責NDK開發的面試官面試我,問了安卓事件接收和傳遞機制;Linux程序和Java程序有何區別;問了一個主執行緒繪製UI的問題;C語言和Java語言的應用及其各自的優勢;自己的規劃等問題。

**三面:**是一位微信元老架構師。為了專案技術和實現細節;問了Http技術還有金鑰交換協議;安全通訊;還有一些忘記了。到四面的時候只剩下3個人面試,面試結果是3選1.

結果:跪了。工作室的朋友面試功過;另外一位華工的朋友也沒進。讓我們去參加騰訊春招。這次面試看到自己的在網路方面很不熟悉,網路課程要等到下學期才開始,所以只能提前自己惡補了。


騰訊實習面試(第二次)

**筆試:**華工筆試,內容涉及C語言,C++語言,Java語言,資料庫,計算機網路還有演算法(網上有好多筆試題,可以借鑑參考下)。

**一面:**喜來登酒店,東圃。比較緊張,面的依然是專案技術,Java基礎,Andriod基礎,演算法(演算法這一塊在劍指offer中題目),作業系統中斷,進執行緒區別;計算機網路 TCP,HTTP相關,NAT等

**二面:**喜來登酒店,東圃。面的和一面差不多,只是知識點會比較深。比如反射機制會問到Android實現場景和優化等等。

**HR面:**和HR說明了想進微信團隊,HR也表明了QQ團隊及其團隊提供的平臺,也向HR表明了通過yunOS事業部實習,HR讓我自己思考及其選擇。

**結果:**沒能參加鵝廠實習〒_〒。現在工作回想起當初如果去 QQ 可能就不會出現後續的曲折,但是想想每個決定都是自己做的,只能自己承受。

到此,春招告一段落,最後選擇了yunOS事業部實習。

整個過程面試安排得很緊密,會覺得面試後很累。建議參加春招的小夥伴能選擇3-4家自己追求的企業針對性去複習,不推薦海投。我本已為春招進了阿里後,能學習留在杭州,接下來一年的大四生活可以安排更多的學習機會〒_〒。

然後最後並沒有,那一年的實習成功擁抱了變化,雖然能轉正到北京或者在杭州轉正做C++,但是並非自己所好。

當大三春招沒有辦法提前去實習轉正的時候,大三秋招其實到了關鍵的時候。一般在我們學校學計算的,基本大三秋招確定了 offer,大四去實習,這個是大部分人選擇的規劃。所以在yunOS實習之後,從杭州飛回廣州,回來的時候是9月5號,進入秋招時段。


阿里實習面試(第二次)

因為知道事業部今年實習生基本都沒有轉正機會,身邊很多實習的研究生師兄自己在阿里平臺上聯絡其他事業群。

無奈我還天真的以為事業部會安排我們面試其他事業部,然而並沒有〒_〒,讓我感覺到巨坑。

後來自己在阿里平臺上搜了做Andoird工作的很多工程師後,有一個主管願意接納我。面試了一些內容後,在後續面試過程中由於崗位需要在北京工作,而且可能需要轉前端,不符合自己的發展意願,所以就明確說了,也很感謝這位大哥給我機會。


騰訊實習面試(第三次)

回到廣州的時候已經9月初,那時候剛下飛機朋友就說明天一起去騰訊筆試〒_〒

**筆試:**基本的內容和春招差不多

**一面:**主要問了專案和在阿里實習負責的專案,Java記憶體和安卓基礎

**二面:**Java和Android的問題基本都能答得出來,卡到演算法。面試官給定一個座標,快速實現該座標方圓1公里內的酒店,座標可動。後來因為解釋不太清楚和麵試時間拖得太長,所以面試官讓我回來發答案給他。最後答案解出來了。面試官再出了一道題,因為自己的表現讓面試官感覺到不夠細心和沉穩,最後沒能過二面。

結果:這次的失利讓自己變得很急很慌。騰訊本來以前自己大學最想進的公司,結果在最關鍵的秋招失敗了,而且自己的阿里實習的時候並不是做安卓技術開發工作,一定程度上讓自己的專案停在春招水平,雖然也有在深入學習其他知識,但自己開始緊張。


唯品會(第一次)

image

**筆試:**參考網上歷屆的試卷,筆試題比較基礎很簡單。

**一面:**在筆試過後,接到面試通知。問了阿里的實習專案;問了ListView實現細節和優化;問了Button定製場景;問了Java基礎和安卓基礎;

**二面:**一面過後再教室外等候,受到二面通知。主要問了阿里的實習專案;專案用到的技術;Java基礎還有安卓記憶體優化等。

**HR面:**過了二面後等了一小會面HR面,HR是一位很資深的大叔,從百度調到唯品會。問了是否能用英語面試,回答否;問了生活背景;問了實習經歷;問了性格特點;然後被定義為太消極,童年有陰影,我也是醉了。我是從小打工,而且從小學,基本每個暑假寒假都要,而且都是那種一天做12個鐘,為的是賺生活費和補貼家裡的學費。這段經歷讓我懂得了吃苦和堅持,怎麼就讓我變得消極和有陰影…

後來HR講了自己人生經歷,說世界觀,人生觀,價值觀。我說價值觀可以變,他說可以嗎?價值觀不就是人對事件價值的判斷嗎?難道不是隨著人的閱歷增長有所調整改變嗎?不過他的經歷讓我深為佩服,從入行講到佛學,是一位很有學識的HR。

**結果:**跪了。原因,至今未知,不過也好像懂得些什麼…


騰訊(第四次)

微眾銀行的面試已經在秋招末。在微信公眾號得知有次機會,故奮不顧身去參加。

**筆試:**和騰訊筆試題差不多。(記憶模糊)

**一面:**也是在東圃酒店。〒_〒面我的是C++工程師,問我會不會C++,我說不會後…狂問演算法,我記得是4道,具體不太記得。其中三道都能手寫出來,最後一道是小儲存存大資料,用的是點陣圖方法。由於自己在面試的時候想不起來(後來回來複習大資料題目的時候才掌握),故只能用hashmap儲存,效率不高。

**結果:**面試官讓我等,結果無果〒_〒


阿里(第三次)

實際上從HRG在杭州告知我回來後會有一個終面部門交叉面,結果在騰訊失利的第二天。直接電話說“對不起…”我直接說理解後掛了電話。

在面試匯豐過後,一段時間,差不多到了11月末,面試了阿里健康。得知從集團簡歷池中選了我之後安排面試,談了轉正待遇後安排面試,兩面都視訊面試。

**一面:**安卓基礎;專案技術;效能優化;學習目標;Java基礎及其記憶體回收等

**二面:**專案技術;安卓Framework知識點;效能優化;開源框架知識;提問環節問了所做業務等 結果:過了,資薪待遇談了也清楚了。因為實習時間及所在地點時間與自身情況衝突,也不是自己最想要去的部門就拒絕了。


迅雷(第一次)

面到這裡基本秋招都已經結束了,學校基本快放假。得到迅雷的面試是由工作室學長B推薦的。

由於部門比較缺人,所以直接技術面

image

**技術VP面:**專案技術細節,面試官抓了很多專案細節問,比如說多執行緒斷點下載的每一步,每一個程式碼邏輯等;效能優化,這一方面我是有過準備的,回答得比較系統,比較滿意;

最新安卓技術瞭解情況;Java技術細節,問得很深,從程式啟動到垃圾回收,〒_〒不愧是vp;最後問了下Java異常和安卓異常的區別,答得不太好;

問了發展意願及其職業規劃等等。

**結果:**直接發offer…很感謝迅雷的HR和技術vp,人真的很nice,後來考慮到發展地點及其工作,沒有接受offer,很可惜。到現在心裡還一直對負責我入職的HR和技術Vp心存愧意。


網易(第一次)

image

也許是我不願意放棄,不願意將就,所以我才會選擇堅持,感謝網易不拘一格。

放假了,基本同學朋友都回去家裡了,整個宿舍只有我一個人,年末了,也該收拾東西回家了。

網易的招聘,是我在校招日曆上看到的,當時和一位學java後臺的哥們一起投的。然後趕緊在校複習知識點和開始畫安卓知識架構(我喜歡用畫圖的形式讓自己掌握的知識互相關聯),然後開始在牛客網(之前面試的企業歷年筆試題基本都在上面能找到,是一個刷題的平臺)及論壇找網易筆試題和麵試,基本刷完了網易網際網路和網易遊戲的題目,雖然有些不懂可是還是需要硬啃下去。接近筆試前夕,我們還是沒有收到筆試通知。

哥們的表姐也投了網易,不過人家是名校碩士〒_〒,收到了面試通知,我倆妥妥地跪了。我不甘心,我認為自己能夠做得出網易的筆試,如果能有一絲機會,死也要讓我死得明白。於是我倆去“霸筆”…幾間筆試科室,廣州地區幾十個運營崗筆試名額,幾十個產品筆試名額,只有6個技術筆試名額,這讓我瞬間很慌很難受。

哥們讓我走,估計我們沒機會,可是我那一刻真的很難受很不甘心。

我硬著頭皮進去問HR說 “我來自…,我投了貴公司的技術崗位後沒有收到通知,請問可以給我筆試機會嗎?”

另一個HR說 “沒收到通知是不可以筆試的,除非有人沒來筆試,試卷只有6張”。

我把自己的簡歷遞給前面HR。

“這個是我的簡歷,如果技術崗有人沒來面試可以不可以給我一次機會,我在外面等候,謝謝你!”

我出去外面後,剛才接了我簡歷的HR出來了說“你們都是沒有接到通知的嗎?(還有一個產品來霸筆),在這裡等一下,如果有機會我就來通知你們。”

後來筆試開始了,有些參加技術崗的還沒有來,可是沒有人通知我們進去筆試。我哥說等到30分如果沒有就走了,後來30分過了,還是沒有人通知我們。我不願意走。

“要不你先走吧,除非HR出來說沒有機會,不然我多等一下吧。”

筆試開始了一段時間,有一位HR走了出來,說 “你們都是來筆試的嗎?進來吧,把簡歷給我。”

我很激動,自信地完成了那份筆試題,到現在,我還依然能記得那時候的感覺。哪怕失敗,也要讓我知道我不行。

**一面:**一面是在網易大廈附近的E時光,三個面試官,一個Java面試官和兩個Android面試官。

問了:Java基礎;執行緒安全處理;手寫解決判斷連結串列是否有環(當時寫了思路);手寫例模式(程序安全版+列舉);Java程式啟動過程(5個過程);Java記憶體回收機制(包括回收演算法);安卓基礎;Handler機制及其原始碼(面試官細節到具體程式碼及方法,〒_〒很年輕的面試官,技術好紮實);訊息傳遞機制(具體到View和ViewGroup的區別);框架了解及其imageloader;Lru演算法及其軟弱引用的使用;解析度適配等等。

**HR面:**網易大廈,問了面試公司及其offer情況,如實回答,希望能在廣州;發展規劃及其學習習慣;網易招聘的優缺點;阿里平臺資源的優點;網易bobo產品及其同行產品的瞭解比較;提問問了是否還有面試,具體工作還有是否可以提前實習,實習安排。

面到這裡,已經年末了。HR說可以提前回去家裡,我還是依然留在學校幾天。整理這幾天的面試問題還有面試經驗,整個宿舍樓沒有人,只有我和幾隻流浪貓。偶爾做做飯,它們也會來我宿舍,我也會給它們吃的,感覺自己變得很安靜。

在回家的大巴上收到了網易的終面,表明年後還有終面。面了那麼多公司,累也該累了,反而覺得很釋然。帶著這個面試訊息回到家了,始終沒能放得下。除了在家了幫幫這幫幫那,在朋友家聊聊天,基本都是在看書,也買了一本新出版的安卓技術的書,過年那段時間看完了。初九那天回到學校,繼續複習,整理在家學習的和以前的知識點,打算面完網易後休息一段時間,希望能傾盡自己所有心力去完成這次面試。

**終面:**HR面+總裁助理面。因為不知道是否是技術面,所以把所有的技術點用三天都複習完了,用一天準備了HR面及其自身情況的問題,主要理清楚說話的邏輯思維。

HR面,是我年前的HR,很親切。和她聊了下年前到年後這段時間的學習情況及其學習了哪些新的知識點;自己每天的學習規劃;bobo產品競品分析;使用過的一些工具,比如思維導圖為知筆記(因為之前裸ubunut系統,所以只能用為知筆記);職業規劃;實習內容及其輪崗事宜;期望工資及其在手offer薪資;行業薪資等;整個過程氛圍很nice;面試完後搭車快回到孤島的時候收到電話通知到需要再面試〒_〒,是另一位面試官。

當時心裡其實蠻緊張(難道對我之前所述技術有疑惑?還是我表達的內容公司還有爭議?)。在車上我回想著整個幾輪面試的過程,細節到我所說到的內容,技術在腦海裡過了一遍。對自己說“來吧!如果你想問我技術,來吧,我都做好準備了!”

就這樣,我很有信心地衝了回去(快6點了,怕面試官下班)。結果回到公司竟然發現面試官是一位很年輕親切的總裁助理,她和我表明了回來面試的原因和給了一杯水(〒_〒,感覺好感動),表達了歉意後開始面試,問了生活情況;學習背景;興趣愛好;長期規劃;聊到網易bobo的產品及其同行同類產品;事業部發展前景;網易公司文化;面試官自身在網易的經歷;女朋友及其未來規劃;學習習慣等等。整個面試過程更像是在聊天,是一個瞭解雙方和建立信任的過程,很nice。

結果:過了。也欣然接受了offer。

在面試阿里騰訊三四次的過程中,雖然有收穫到其他 offer ,但並不是我大學時期心儀的 offer。

所以到最後,還想去網易搏一搏。

結果這一搏,就一直待到了現在。我覺得人生很有意思。高中的時候,我努力想考一個物理專業,但是後來我卻進了計算機專業。大學的時候,我努力想進騰訊或者阿里的技術部門,但是後來我卻來了網易。就是如此夢幻。

假如你已經是應屆生了,經歷過一兩次batm的面試失敗沒有關係,只要有機會就上。哪怕最後你最心儀的機會沒有了,你要懂得抓住當前最合適你的機會。真的,很多時候未來發生什麼你都不知道,或許當前的機會,才是最適合你發展的。

二、被迫考慮機會

真的,很多時候未來發生什麼你都不知道!(預言家 =。=)。

我也不會預想到我工作快一年的部門因為公司架構調整而需要被迫考慮重新找工作。實際上,我非常喜歡當時部門的人,部門是小團隊專案化作戰,非常靈活,技術和產品自由度非常高,大家配合得很愉快。

雖然那時候大家分道揚鑣,但是我們現在的微信群依然保留著之前最完整的人員,還很活躍。

工作認識一知己,前輩,之前就業於UC,平時交流甚歡,喜歡同他討論和交流技術問題,在看身上看到了開放與追求的精神。

正值事業部結構變動,整個事業部工作氛圍和模式都發生了巨大的變化。他建議我去更大的環境更好的氛圍嘗試,我也堅持著自己的職業規劃和學習道路。他同事幫忙內推,不巧的是那天發燒=。=,和公司請了假,本來擔心狀態不好,不過一想到自己以後要做的事,立馬就飛了!不要慫,就是幹!

面試地點在黃埔大道這邊,沒想到離我住的地方那麼近!二十分鐘就到了,原約在2點的面試,我12點50分就到了…提前去面試也不好,畢竟太早去也不是守時,也會打亂別人的計劃安排,故在樓下走了幾圈,有點冷,不過滿滿的熱情啊!把之前準備的知識都過了一邊,演算法,資料結構,網路,作業系統,java和安卓。自己在腦海了想了n多種面試問的業務場景,組織表達了一遍上樓了。


阿里(第四次)社招一面

天吶魯,我還以為要筆試呢,直接進入正題面試,有點措手不及,不過先自我介紹,所以我調整了一下情緒和思路。面試官很帥氣啊,是一個很年輕但是應該有蠻長經驗的面試官。問得問題主要有:

  • 推送sdk底層實現
  • socket相關實現
  • mvc mvp mvvm區別與專案使用情況
  • 網路層相關設計,volley底層實現,快取相關
  • 自定義view相關
  • 下載模組涉及,成功率相關
  • 彈幕與播放器相關
  • 跨程序通訊手段與注意點,webview相關
  • EventBus相關
  • 效能優化經驗及手段
  • 為什麼想要換工作
  • 興趣愛好,工作室情況,如何協調工作室與辯論隊
  • 平時學習習慣和安排   上述的點可能有一些遺漏或者記得不太清楚,不過整體面試官給人的感覺真的很好,大廠的環境也贊!除了前面聊技術外,也聊興趣愛好,平時一些習慣等,整體來說氛圍很輕鬆。

阿里(第四次)社招二面

二面是一個臉色紅潤,很和藹的一個面試官負責。想了一下,除了和大學廖老師溝通有這種感覺之外,這位面試官給我一種導師的感覺哈。面試的問題主要有:

  • 網路請求涉及,如何設計快取
  • 效能優化手段,場景
  • dp的設計
  • 熟悉的底層原始碼,廣播底層實現,這一點自己確實還了解不夠,不過自己講了哦從wsm->activity->view的事件傳遞過程
  • 聊之前阿里的實習
  • 為什麼想要換工作
  • 職業規劃
  • 短視訊行業,Bolo相關及一些競品,因為平時也會留意自己開發的軟體及競拍,行業情況,所以有一些自己的見解
  • 聊興趣愛好
  • 聊王者榮耀產品相關

整個過程面試官給人印象很深,除了互相交流得開外,他的問題也很有深度,不過如果真的答不上就請教下就好。最後面試官問了是否有哪些問題提問諮詢:

  • 從剛才所述的職業規劃,希望面試官給出意見和建議
  • 如果有後續面試,會在什麼時候安排 還是到上週的面試辦公室,10樓的環境給人的感覺很清新,自由。

阿里(第四次)社招 leader 面

面試官很年輕,讓人感覺很有幹勁。其實今天一整天都昏昏沉沉的,人狀態很差。但是和麵試官聊天,能說到的都是內心的一些想法,所以聊起來很舒服,他的一些建議也很值得我思考反省。

  • 自我介紹
  • 崗位要求
  • 實習內容
  • 工作負責內容
  • 換工作原因
  • 優缺點
  • 學校經驗
  • 家庭情況
  • 個人現狀,還有我的眼睛哈   面試的問題可能記不太清楚,但是有兩個點我很深刻。第一個是自己現階段要穩下心沉得住氣。幾位面試官都和我說到了這一點。確實是這樣,我很看重職業生涯前幾年的學習積累與心態沉澱,也明白了當前自己最需要做的事是什麼。沉得住氣,我自己的理解是:
  • 心態不要浮躁,相信自己的規劃和按照自己的規劃走
  • 學習新知識,要學會從巨集觀上懂得一個知識牽扯出的知識網,更要耐得住心去一句一句程式碼debug每個細節
  • 清楚地看清自己的技術現狀,虛心地取長補短

那天結束之後,用新的心態去學習retrofit原始碼,記得大學的時候看imageloader,volley的時候,會沒有太多的耐心去深挖,雖然知道流程和某些細節,但是對底層原理其實沒有足夠的掌握。

很奇怪,今天越挖,發現自己對Android越無知,我第一次感到自己無知時,確實開心的

當我向我之前同事說某個原始碼細節的邏輯和我們專案所用到的邏輯有偏差時,他去調式之後發現“是專案用錯了!”。感覺心裡還是美滋滋的。

第二個是自己表述不夠精簡,有時會用辯論的方式來解釋一大堆東西,會讓聽眾感覺很囉嗦。這也是我的問題,改!應該嘗試先下結論後再根據情況做分析。面試完走出辦公室,還看到面試官拿著筆記本,打了個招呼,感覺心暖,感謝這次機會。


阿里(第四次)社招HR 面

其實hr面應該是我最緊張的一面。可能是最後一面,也很看重這次的面試,擔心自己說得不好。

過程中自己也因為喉嚨的原因喝了多次水,思維中斷了好多。不過,面試官是一位比較有親和力的姐姐,無論的問問題的方式還是追問一些細節,都讓人挺舒服的,不會感受到太大的壓力。

  • 入職半年多,為什麼選擇換工作
  • 現在事業部狀況
  • 負責的專案工作
  • 最困難的事是什麼,想到的是專案難點和當時在工作室做專案,那段時間確實比較艱難,算印象最深刻的
  • 職業規劃,我可能表述不太好。從2-3年階段性計劃,到今年,這個月,這周。講得邏輯性不好。自己的習慣確實是工作日+週六週日安排,可能當時比較緊張,講得很亂。
  • 堅持最久的事,這個應該是和我兄弟去跑內環哈,從半圈到兩圈是如何煉成的
  • 最有成就感,想到的是專案難點,後面仔細想,確實是因為攻克的難點給使用者帶來好體驗。我還記得菠蘿種子群的一個好友,網易忠實粉絲,和他交流過很多次關於菠蘿的體驗,有一次和我聊到輸入法的原因,後面自己就花時間重構了。其中還和hr聊到關於攻克難點和所花的時間問題,確實是我自己表述不好,一件事的難易程度與完成時間只是正相關。,當專案頻繁迭代,需要想辦法縮短工時並保證質量後“偷”時間來做重構優化,其實自己那時候很有壓力。這些東西不是需求,而是你想讓產品更好卻想去做,改得好固然好,萬一改不好,那就是浪費時間,可能會應該當前開發狀態。和很多同事溝通他們都不會選擇這樣去做,要麼要求產品加工時,要麼就不做。可是自己很難接受放著不管吧。後面用來兩個多星期的午休和下班瑣碎時間,週末空閒時間把東西做出來,第一次正式給專案重構使用,我是很自豪。最開心的應該是那位好友說的“菠蘿的開發真不錯!至少你們對使用者有心”
  • 薪水相關  總的來說,今天面試的表現,自己給自己的評價是一般。最後溝通的時候因為薪資問題最後黃了

三、不甘落敗嘗試螞蟻金服

螞蟻金服的面試機會是那時候在看機會的時候,在脈脈認識的一位螞蟻金服的面試官那裡爭取的。在溝通過後,對其部門的意願挺大的,所以就嘗試下把簡歷給了面試官。

過了幾天,沒想到收到了其部門HR的面試邀約。剛好那時候公司部門架構調整到了尾部,我們可能被合併到一個新的部門中開展新的工作。可能大學實習給我留下非常好的印象,很喜歡阿里的技術部門,加上 UC 的面試沒有如意,所以就毅然進行面試。


阿里(第五次)社招一面

  • 介紹自己
  • 介紹簡歷上的專案
  • 高效能列表實現,重點圍繞 recyclerview 展開,如何複用,如何快取
  • 效能難點如何攻克
  • 效能優化方面專案中做了哪些工作
  • 熱修復原理,類冷啟動修復原理,類熱修復原理,classLoader雙親機制
  • 換膚原理
  • 設計一個圖片框架,我考慮的是如何載入,如何編解碼,如何快取,api的易用性,大部分參考 glide 思路
  • 在很多數中找出前n個最小
  • 自己的方向是什麼?想做業務,還是想做專點的技術,如何理解專案架構。
  • 反提問:“自己技術性回答得怎樣,有哪些改進。” 面試官給的建議是:技術還不錯,但是介紹部門業務和自己的切合度時需要 “表述要簡潔,邏輯要清晰”,**

阿里(第六次)社招 leader 面

  • 介紹自己情況,學android,實習經驗
  • 介紹網易經驗,哪個專案最大,專案規模,專案人員分佈
  • 擅長哪一方面,這個問題非常致命,一定要選你足夠理解的,我那時候講的是效能優化,但是感覺講的不好
  • android 虛擬機器區別,編譯區別,dex區別
  • 熱修復流程,原理是什麼,業界有哪些方案,對比如何
  • 打包流程是怎樣的
  • 應用啟動相關流程,從孵化程序到MainActivity#onResume繪製整個流程
  • 新版本android特性
  • 手勢滑動事件分發
  • view繪製流程
  • gradle執行流程
  • apk安裝底層細節
  • 最後留了一道演算法題,我做了兩天之後發給面試官

阿里(第六次)社招 交叉面

  • 介紹自己
  • 專案經驗,團隊情況
  • 對網路是否熟悉,一次http請求,https整體實現
  • 以後想做什麼,如何規劃自己技術
  • 開源貢獻,部落格記錄相關的開放性問題
  • 反問:後面是否還有技術面試,得到的答案是基本不會有了,等 HR 面試就好

阿里(第六次)社招 HR面

  • 介紹自己
  • 專案經驗,團隊情況,學習情況,薪資待遇
  • 未來技術規劃,是否考慮杭州,未來家庭規劃
  • 反問:大概多久會有答覆,得到的答案是當週週五前。

當週週四收到了人生中第一個阿里的正式 offer,還是我最心儀的螞蟻金服的技術部門的 offer。技術方向和薪資待遇都大大超過我的預期。HR 讓我考慮一週之後給答覆。

過了一週,我決定放棄這個 offer,並開始自己新的技術規劃,在新的部門好好幹。一干,就幹到了現在。

如果到現在問我,“當時放棄螞蟻金服的 offer 後悔嗎?”

我會說 “說真的有點遺憾,但我無法比較孰好孰壞,我現在就挺好的。”

如果你剛開始出來面試,那麼就要用心去準備,去模擬,把每個機會都抓住。

如果你已經面試了幾家但是都還不理想,哪怕是疫情背景下,你不要將就。我一直都覺得做技術的不要將就,可能是我的性格。那麼繼續嘗試,把你每一次的面試的經歷都記錄下來,面試題是什麼,你是怎麼回答的,甚至你可以在面試的時候把自己的回答錄音下來,回去好好聽好好修正。一次會比一次好。

如果你有幾個offer在選擇上出現了分歧,建議要開始規劃從職業規劃來考慮offer。

如果你打算未來深耕音視訊,那麼短視訊技術offer則大於非短視訊技術offer。如果你打算考慮往技術經理/技術團隊管理,那麼能帶團隊的offer > 不能帶團隊的offer,參與技術選型,技術架構搭建的offer > 負責某一塊業務的開發 offer 等等。

這幾年下來,我發現 “選擇” 和 “努力” 在不同時期有不同的側重。

  • 畢業時期,“選擇” > “努力”,好的平臺能帶給你更多的機會,更好的薪資待遇,讓你的視野更廣;
  • 畢業前5年,“努力” > “選擇",當你有一個好的平臺之後,你要懂得利用平臺資源去學習,比如各種內網,公司技術福利等,並藉著平臺專案的實踐機會去野蠻生長;
  • 後幾年,“選擇” > “努力”,這是因為前幾年為了積累的專業優勢或更高的視野讓你看清你以後要幹什麼,如果說選擇的是平臺,那麼這個選擇就是未來要嘗試突破的方向。

當然,這些想法受限於我的經歷,難免難以苟同。

四、非技術性問題的面試準備

非技術性的問題,實際上很多時候程式設計師回答得並不好,除了表達缺乏邏輯性外,溝通不暢也是一個問題。但事實上這些問題都可以提前準備的,而且我自己以前準備面試的時候都會把這些問題過一下,對著鏡子表述。你只需要針對每一個問題點記住幾個關鍵詞,然後嘗試脫稿,自己嘗試把它串起來表達,幾遍之後基本就 OJBK 了。

以下回答僅供參考。

自我介紹

我是來自xxx的xxxx。目前在xxx組Android研發。

平時基本能提前完成需求,經常會給產品同學提供一些技術上的意見或改進,並自主做一些技術調研來優化產品。

另外,我更願意讓別人感受到,我是一個隨和但執行能力知足的人。我喜歡組隊答辯論,樂於與別人溝通與想法碰撞,樂於分享我自己觀點與博文,因為我認為分享不僅僅是知識的傳播交流,對他人也會有知識上的重新認識的效果,同時也是對自己知識體系的一個鞏固也會增強自己的信心,對團隊而言,能活躍整個技術氛圍,讓工作變得輕鬆,對新技術有渴望與追求。

但同時,我對自己的要求也非常嚴格。工作上我喜歡通過畫邏輯圖細化需求實現,並按時從點攻克,這種方法非常有效。而職業規劃上,我會細分到每一週,每個月的學習計劃。每一年或者每個階段我應該去做哪些事情。

可能有人會說,我給自己畫圈限制死我的生活。其實不然,恰好相反,當我到達某個計劃節點時,我更清楚我應該做什麼且明白我為什麼那麼做,這會讓我對生活變得更有信心與熱愛。


平時看的書

技術類的書比如

《Java程式設計思想》《Effective Java》《突破Java程式設計師基本功的16門課》《深入理解Java虛擬機器》 《Android高階工程師進階》《Android研發錄》《Android開發藝術探索》《打造高質量Android應用》《Android應用效能優化》 《安卓核心剖析》《深入安卓卷1》《深入安卓卷2》《Android系統原始碼情景分析》

非技術類的書

《麥田裡的守望者》《小王者》《少年維特》《世界因你而不同》 技術類的書閱讀帶來技術收穫,非技術類的書閱讀是興趣,是擴充套件視野等都可以


部落格類網站

  • App:掘金(yummyLau),以前也有簡書(什麼都學的小明)
  • 網站:簡書,掘金翻譯,Google developers,泡在網上的日子, CodeKK,安卓週報
  • 博主:stormzhang,酷殼,工匠若水,羅昇陽,程式碼家,鴻洋等

怎麼解決問題呢?

先找到問題的原因,然後在找解決問題的辦法,找到問題的原因比找到解決問題的辦法更重要。

如果你不能解決,那麼你可以求助於其他人,而當你不知道問題的原因的時候,你去求助別人的時候,別人還幫你去找問題的原因,這肯定會浪費很多時間的。

先不要找解決問題的辦法,先找問題的原因。

一旦你瞭解解決問題的思路,那麼當問你一些開放性的問題的時候比如 “專案裡你遇到xxxx情況,你怎麼處理的?當你解決不了的時候,你會怎麼做?”

那麼你就可以圍繞上述的邏輯回答 “遇到xxxx情況的時候,首先我會分析出現這個問題的原因,(此處省略1w字),最終解決了。或者解決不了的時候,(這裡需要強調自己能用的都用了,能查的都查了)就會去請教這方面比較專業的同事(此處省略1w字),最終這個問題在他的建議下我成功解決了。”


為什麼選擇離職

最主要的原因還是與自己的職業規劃有偏差。

自己希望能呆在一個有技術方向性與能充分交流碰撞的團隊中,希望能充分發揮自己更多專業能力,在比較充實的節奏中度過職業的現階段。因為事業部重組的原因,我們的專案組被分派xxxxx做xxxxx,目前只需要保證完成工作即可,codereview過程中,能感受到迭代功能完成需求會是最大滿足,同時專案內團隊基本不會互相分享專案經驗及心得。

我希望可以完成得更好提前完成,可以幫助專案做優化做分享。在codereview過程中,我更希望我們不僅僅能把產品做好,還有更多的時間去優化,掌握更多新的技術來優化專案實現,讓產品有更好體驗。我希望我們的團隊有技術瞻仰性與向前性,對技術的思考有深度,我渴望投身這樣的團隊並一起完善團隊建設,而不是單純無線迭代。所以我選擇了在這個時候嘗試新的機會。

很多時候,我們是能保證工作完成的,自己會做更多的優化或者調研工作來完善產品,整個良性過程中,組員的價值能得到最大化體現, 而團隊應該是支援這種行為的,而不是間接地打磨掉組員的正向行為,這會讓組內的氛圍沉寂與消磨人的積極性。

我曾微訊號分享過一篇關於一位大哥“輝哥”的文章,講到做事要有匠心,要較真深挖,我解讀為專注。而團隊溝通工作應該是雙贏的過程,大家可以放開交流碰撞,以team work形式去解決難題,這便是我追求的環境。


如何勝任這份工作

我的理解是,崗位的內容是高質量迭代開發國際業務客戶端,能承擔缺陷重構和痛點優化。

自己接觸Andoid開發也兩三年,在職時間差不多一年,一年內參與了xxxx專案迭代開發,能保證自己負責的工作都是提前完成的。

而剩餘的時間,我會主動去重構專案,也能針對使用者痛點的主動做技術預研。而崗位的內容正是我主動追求的,我很樂意去挑戰工作上的難點。

我個人的職業規劃中,當前階段是想深入掌握android底層的知識,所以當出現一個業務問題前,自己會深刻去認識一個問題產生的原因。針對工作的內容,自己能冷靜分析原因並自主學習一些方案來解決。而提供的崗位工作正好是給了我充分的面對困難場景鍛鍊自己的機會。


學習習慣

這些越細越好,重在真實。

  • 週一到週五,9:30-7:30,上下班分別會看兩篇博文;
  • 工作日完成一般會有兩個小時時間用來繼續本月的規劃
  • 週六週日會把工作日踩的坑記錄下,有時候寫寫部落格,看看技術文章。

興趣愛好

打籃球,寫書法,游泳,桌球,乒乓球等,比較廣泛,但是每一項我都在身邊人中比較拔尖

最近,想練長跑,慢慢看能不能小跑馬拉松。

耐力,定性,這兩者都是我這階段需要的。


優缺點

責任> 協作溝通>接受意見但獨立想法>自學能力>執行能力強

解決問題的心態不成熟,有時候容易鑽牛角尖,處理計劃過於急躁。

但是我相信,這是每個人都會經歷的,而且是一個蛻變的過程,而我也正在慢慢轉型。


工資待遇

可以瞭解下xxx的待遇結構嗎。

希望能在xxxxK,因為(這個要按照真是想法表達)對於自己而言,我更看重xxx平臺能給我的的職業幫助,而我也很相信自己能給團隊創造相應甚至更多的價值。


想問的問題

技術面

  • 經過剛才的交流,針對應聘的崗位,面試官有哪些意見或建議,我能力的匹配度大概多少?
  • 假如有幸能通過面試,這個崗位現階段負責哪些的工作?

HR 面

  • 經過剛才的交流,勝任該職位我應該加強哪些能力?
  • 假如有幸能通過面試,會進入哪個產品線,未來這個產品的發展方向和規劃會有哪些?
  • 面試結果最晚會在什麼時候通知?

面試涉及知識點/體系/書籍推薦

以下是面試中遇到的問題整理,有一些被我整理已被整理成博文,其他的都是我這些年積累的面試筆記,雖然不是很全面,但是已經是我保留的全部了。希望有幫助。

注意以下每個條目都有作者的面試筆記,因為每個的連結太長,建議大家自己獲取PDF檔案研讀。

完整PDF檔案獲取方式:點這領取

Java相關

  • JVM
  • Object
  • static
  • final
  • String、StringBuffer、StringBuilder
  • 異常處理
  • 內部類
  • 多型
  • 抽象和介面
  • 集合框架
  • 反射
  • 單例
  • 執行緒
  • volatile
  • synchronized
  • 引用型別
  • 動態代理
  • 元註解

網路相關

  • 網路體系的分層結構
  • HTTP 相關
  • TCP/IP
  • Socket

設計模式

  • 設計模式分類
  • 面向物件六大原則
  • 工廠模式
  • 單例模式
  • 建造者模式
  • 原型模式
  • 介面卡模式
  • 觀察者模式
  • 代理模式
  • 責任鏈模式
  • 策略模式
  • 備忘錄模式

Android

  • 原始碼-xml載入流程
  • 原始碼-Touch事件
  • 原始碼-Handler
  • 原始碼解析-Rxpermissions
  • 原始碼解析-LiveData
  • Android類載入器
  • Java類載入
  • Rxjava 的歸納思考
  • Framework基礎結構
  • Android虛擬機器結構區別
  • 啟動app流程
  • 啟動framework流程
  • Android架構總結
  • 模式之MVC/MVP/MVVM
  • 換膚skin-support流程
  • 圖片庫glide
  • 原始碼-AsyncTask
  • 自定義view流程
  • Activity相關
  • Fragment基礎
  • View篇之Touch傳遞
  • EventBus
  • 洩漏型別及定位
  • 效能可優化的點

其他

  • 排序
  • 二叉樹
  • 連結串列
  • 棧 / 佇列
  • 雜湊表
  • 堆 / 優先佇列
  • 二叉搜尋樹
  • 陣列 / 雙指標
  • 貪心
  • 字串處理
  • 動態規劃
  • 矩陣
  • 二進位制 / 位運算
  • 反轉整數 LRU快取策略

書籍推薦

  • 《Java程式設計思想》
  • 《Effective Java》
  • 《突破Java程式設計師基本功的16門課》
  • 《深入理解Java虛擬機器》
  • 《Android高階工程師進階》
  • 《Android研發錄》
  • 《Android開發藝術探索》
  • 《打造高質量Android應用》
  • 《Android應用效能優化》
  • 《安卓核心剖析》
  • 《深入安卓卷1》
  • 《深入安卓卷2》
  • 《Android系統原始碼情景分析》
  • 《巧用Gradle構建Android應用》
  • 《Android高薪之路》
  • 《Android群英傳》
  • 《程式設計師修煉之道–從小工到專家》
  • 《程式碼的未來》
  • 《第一行程式碼》

最後,在這裡小編還分享一份由幾位大佬一起收錄整理的架構視訊+面試文件+原始碼筆記高階架構技術進階腦圖、Android開發面試專題資料,高階進階架構資料

如果你有需要的話,可以點這領取

喜歡本文的話,不妨順手給我點個小贊、評論區留言或者轉發支援一下唄~