閱讀前請點擊右上角“關注”,每天免費獲取Android知識解析及面試解答。Android架構解析,只做職場乾貨,完全免費分享!
在這本該屬於程序員的“金三銀四”面試跳槽旺季,因為一場突如其來的“新冠肺炎”而蒙上了一層陰影。
人生找工作就是一場戰役,讓我認識到了現實的殘酷,從去年七月底開始投遞度孃的那一刻開始,我的BAT面試之路也正式開始,直到現在也沒有拿到一個offer,很多次本以為自己穩了,結果就是掛掉,心態很崩。這期間起起伏伏,還有自己的不爭氣,我只能說,這個春天有點冷!
一面:
- OSI模式,各層介紹
- 域名轉換IP
- HTTP,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 A
- Activity A 啟動模式為 singleTask
- Activity 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,很大一部分原因是因為算法和數據結構掌握的好,當然薪資也非常可觀。社會人士雖然在面試大廠時對相關的項目有一定的工作經驗,沒有像應屆生要求那麼高,但是最基礎最常用的算法和數據結構還是要熟悉的。
說了這麼多,那麼大廠面試到底要求哪些算法和數據結構知識?我根據我面試的經驗,給大家整理了一個清單:
- 算法面試到底是什麼鬼?
- 面試中的複雜度分析
- 數組中的問題其實最常見
- 查找表相關問題
- 在鏈表中穿針引線
- 棧、隊列、優先隊列
- 二叉樹和遞歸
- 遞歸和回溯法
- 動態規劃基礎
- 談心算法
因為我能講課,之前就一直籌備著,就把上面的清單的內容全部錄製成視頻,前前後後大概錄製了一百多個視頻,全部上傳到百度網盤,免費供大家觀看,從去年九月份之後就一直在錄製視頻和準備文檔,大概花了近半年的時間。
需要的朋友,可以點擊關注+轉發+私信**學習**前往免費領取!
當然還有部分企業對有一定工作年限的員工除了算法和數據結構外,提出了更高的要求,比如Android前沿技術和項目經驗,同樣的給大家整理了一個清單:
視頻具體內容如下:
- 第1章 課程介紹
- 第2章 一線互聯網公司初中高Android開發工程師的技能要求
- 第3章 Android基礎相關面試題
- 第4章 異步消息處理機制相關面試問題
- 第5章 View相關面試問題
- 第6章 Android項目構建相關面試問題
- 第7章 開源框架相關面試問題
- 第8章 Android異常與性能優化相關面試問題
- 第9章 熱門前沿知識相關面試問題
視頻圍繞“BAT大牛解密Android面試?”的主題,內容由淺入深,同時,對於項目專題、開源框架、Android前沿技術,底層源碼等相關面試問題也作出重點解讀!
需要上述所有視頻的朋友,可以點擊關注+轉發+私信**學習**前往免費領取!
閱讀更多 Android架構解析 的文章