金三銀四:我帶你去BAT面試現場去看別人“面試被拒”

閱讀前請點擊右上角“關注”,每天免費獲取Android知識解析及面試解答。Android架構解析,只做職場乾貨,完全免費分享!

在這本該屬於程序員的“金三銀四”面試跳槽旺季,因為一場突如其來的“新冠肺炎”而蒙上了一層陰影。

人生找工作就是一場戰役,讓我認識到了現實的殘酷,從去年七月底開始投遞度孃的那一刻開始,我的BAT面試之路也正式開始,直到現在也沒有拿到一個offer,很多次本以為自己穩了,結果就是掛掉,心態很崩。這期間起起伏伏,還有自己的不爭氣,我只能說,這個春天有點冷!


一面:

OSI模式,各層介紹域名轉換IPHTTP,HTTPs加密線程進程區別死鎖不同步問題B樹,B+樹編譯,鏈接樹的先序中序後序

二面:

項目(很久)activity啟動模式進程通信動畫線程進程區別調度

三面:

項目中承擔角色項目中如何溝通協作項目中的問題項目規劃什麼的

總結:面試中的面試官,一面很溫柔,二面有點嚴厲,三面正常,項目經驗缺乏,沒答好。(只能心裡許願求offer)

網易有道(內推)


一面:

http1.0和1.1區別?範式是什麼?Session和Cookie的區別?講一講鎖,鎖是怎麼產生的?hashmap和hashtable區別?stringbuffer和stringbuilder的區別?osi七層模型是哪七層?https和http的區別?

總結:第一次大廠面試,發現大廠更著重底層和基礎原理,一面基本面試裡數據庫,計算機網絡,操作系統還有Java的基礎,Android知識基本不問。

美團點評(內推)


一面:

為什麼用單例?Java裡public、private、default、protected 區別是什麼?ArrayList和LinkedList的區別?Java的線程解釋一下?Java的垃圾回收解釋一下?Activity的生命週期?Activity中頁面A跳轉到頁面B這其中產生的生命週期是怎麼樣的?Android的分發機制講解一下?Android有什麼方法可以更新UI?為什麼會產生oor?ANR是怎麼產生的?為什麼要用Fragment?Android有哪些佈局?講解一下ListView的原理?手寫一個排序算法。手寫一個單例模式。

總結:面試官一來沒有自我介紹直接手撕一道算法題,奈何算法太差,導致時間做的有一點點久,面試官總結基礎不錯,算法還需要加強,這就是我被髮感謝信的原因吧(哭)。

永輝雲創(拉勾招聘投遞)

一面:

Fragment怎麼把數據傳遞到Activity?Activity怎麼把數據傳遞到Fragment?Fragment的生命週期?Android中一般用什麼方式進行異步操作?有學過Kotlin嗎?ListView和RecyclerView有什麼區別?

總結:創業公司相比大廠來說,更看重項目實踐經驗,基礎的方面問的很少,一開始就手撕項目,項目中主要是用到Fragment才會問相關的問題。

二面:

Fluuter用過哪些組件?Fluuter裡靜態組件怎麼刷新數據?怎麼設置控件的Padding?Container可以設置padding嗎?

總結:永輝雲創的技術棧很新,都是用的最新出的技術和框架之類的,所以一般都是問這方面的問題。

貓眼(內推)

一面:

組件化設計,業務模塊怎麼獲取到核心模塊的內容?單Activity+多Fragment的新架構瞭解嗎?一個下載業務模塊你會怎麼設計?瞭解過RxJava嗎?用過哪些圖片框架,瞭解其中的原理嗎?你用過okhttp,其中的實現原理和裡面的攔截器實現能解釋下嗎?Handler的原理解釋下?Looper和Handler是隻能有一個嗎?HandlerThread和ThreadLocal瞭解嗎?IntentService的原理解釋下?Fluuter用過哪些組件?Fluuter的WebView你是怎麼設計的?asyncTask的使用注意事項知道嗎?Java裡用過哪些集合,他們的時間複雜度分別是多少?HashMap的底層實現原理?hashCode有什麼用的,你一般怎麼計算的?Hash衝突是什麼解釋一下?hashCode和equals的區別是什麼?一個數插入到第k個位置的時間複雜度是多少,插入到鏈表呢?快速排序和二分查找的時間複雜度是多少?寫一個雙重檢查單例。synchronize和volatile分別有什麼用?你瞭解鎖嗎?抽象類和接口有什麼區別?分發的原理?瞭解過滑動衝突嗎?

總結:題目質量很高,一開始沒有自我介紹,直接撕項目,全程狂轟亂炸沒有停過的,說的嘴巴都要乾了,面試完也沒有反問環節,貌似面試官也挺忙的,然後就給我發了感謝信(o(╥﹏╥)o)。

字節跳動 Android 開發崗面經


一面:

算法題 兩個棧實現隊列算法題 輸入一個數組,想一種方法讓這個數組儘可能的亂序,保證功能能實現的情況下時間複雜度和空間複雜度儘可能的小,可使用隨機數函數。(面試官最後說了 O(n)的時間複雜度能實現)寫一個單例(自己寫一種就行)ActivityA -> Activity B -> Activity AActivity A 啟動模式為 singleTaskActivity B 啟動模式為常規模式問 A 啟動 B,B 又啟動 A 的生命週期調用順序?你剛才提到 onsaveinstancestate() ,說一下調用時機,它用來幹什麼的。onsaveinstancestate() 保存的那個參數叫什麼?Bundle 裡面都放一些什麼東西?怎麼實現序列化?Parcelable 和 Serializable 有什麼區別?Bundle 。數組和鏈表的區別HashMap 的結構以及原理我看你簡歷上寫了 retrofit,你能說一下它是做什麼的,如果知道基本框架也說一下瞭解 View 的繪製機制嗎,能說一下嗎我看你項目裡用的 Fragment 能說一下 Fragment A 啟動了 Fragment B,Fragment B 中按下返回鍵只退出 Fragment B 怎麼實現。你還有什麼要問的嗎?

二面:

算法題 一個字符串,求最長沒有重複字符的字符串長度string stringbuffer 和 stringbuilder 區別final finally finalize區別數組和鏈表的區別HashMap 瞭解過嗎Tcp 三次握手四次揮手 get 與 post 的區別synchronized 的作用你知道哪些設計模式Android 進程通信的方法那你能說一下 Intent 是怎麼進程通信的內存洩漏有哪幾種情況有什麼要問的嗎

總結:同樣也是算法問題,導致時間做的有一點點久,面試官總結基礎不錯,算法還需要加強,這就是我被髮感謝信的原因吧(哭)。

最後

看到上述網友們分享給我的面試涼經,而我在大廠和小廠都待過,也面試過很多人。一些朋友就“如何進BAT大廠?”這個問題找我諮詢時,尤其是一些學生朋友在找我聊職業規劃和職場困惑時,我給的建議就是,如果你是應屆生或者工作年限較短(五年以下),那一定要找個機會去大廠工作幾年。

進入大廠的難點

雖然大廠很好,但是進大廠對個人資質、個人素養和技術水平都有一定的要求,並不是每個人都有機會的。

無論是應屆生還是工作幾年的人,一般都需要通過技術面試才能進入大廠。那麼大廠技術面試一般會哪些問題呢?除了少部分相關的技術外,重頭戲都是算法與數據結構。從上述網友分享的大廠面試涼經來看,也確實是掛在了算法上面。真的很可惜!

學好算法和數據結構,無論對從技術水平長遠的發展來說,還是對個人邏輯思維鍛鍊都是大有裨益的。

國內的大廠面試,基本上大多數問題都是各種算法和數據結構題,而國外的大廠,像 Google、Facebook、微軟等等,基本上百分之百是算法和數據結構題目。

很多應屆畢業生橫掃各大大廠 Offer,很大一部分原因是因為算法和數據結構掌握的好,當然薪資也非常可觀。社會人士雖然在面試大廠時對相關的項目有一定的工作經驗,沒有像應屆生要求那麼高,但是最基礎最常用的算法和數據結構還是要熟悉的。

說了這麼多,那麼大廠面試到底要求哪些算法和數據結構知識?我根據我面試的經驗,給大家整理了一個清單:

算法面試到底是什麼鬼?面試中的複雜度分析數組中的問題其實最常見查找表相關問題在鏈表中穿針引線棧、隊列、優先隊列二叉樹和遞歸遞歸和回溯法動態規劃基礎談心算法

因為我能講課,之前就一直籌備著,就把上面的清單的內容全部錄製成視頻,前前後後大概錄製了一百多個視頻,全部上傳到百度網盤,免費供大家觀看,從去年九月份之後就一直在錄製視頻和準備文檔,大概花了近半年的時間。

玩轉算法面試 leetcode

需要的朋友,可以點擊關注+轉發+私信**學習**前往免費領取!

當然還有部分企業對有一定工作年限的員工除了算法和數據結構外,提出了更高的要求,比如Android前沿技術和項目經驗,同樣的給大家整理了一個清單:

視頻具體內容如下:

第1章 課程介紹第2章 一線互聯網公司初中高Android開發工程師的技能要求第3章 Android基礎相關面試題第4章 異步消息處理機制相關面試問題第5章 View相關面試問題第6章 Android項目構建相關面試問題第7章 開源框架相關面試問題第8章 Android異常與性能優化相關面試問題第9章 熱門前沿知識相關面試問題


BAT大牛解密Android面試


第6章 Android項目構建相關面試問題

視頻圍繞“BAT大牛解密Android面試?”的主題,內容由淺入深,同時,對於項目專題、開源框架、Android前沿技術,底層源碼等相關面試問題也作出重點解讀!

需要上述所有視頻的朋友,可以點擊關注+轉發+私信**學習**前往免費領取!