概述
感覺畢業後時間過得真快啊,從 19 年 7 月本科畢業入職後,到現在快兩年了,最近金三銀四期間想着找一個新的工作,前前後後花了一個多月的時間複習以及面試,最近基本上差不多了,把部分大廠的面試經驗分享給大家,祝想找工作的同學都能去自己心儀的公司!
A公司一面(1.5h)
- 自我介紹
- Android 生命週期中 onStart 裏面幹了啥?
- 介紹一下 Activity 的四種啓動模式
-
android:style
和android:theme
的區別 - http 和 https 的區別,http 組成,http 請求的整個過程
- 動畫種類及其工作原理
- 線程啓動方式,線程池原理清楚不?
- 講講 IntentService
- 知道哪些 Jetpack 組件?挑一兩個講講原理
- 有哪些 ipc 方式
- Sp 怎麼支持跨進程?
- Binder 原理流程介紹一下
- window, view, activity 關係
- 軟硬件繪製區別,性能比較,具體繪製任務(如複雜動畫)怎麼選擇?
- 性能優化方式講一講
- 查找算法有哪些?手寫二分查找
- 瞭解哪些跨平臺方案?
A公司二面(1h)
- 自我介紹
- 主要是摳實際項目,然後從中引出一些問題
B公司一面(1h)
- 自我介紹
- 問項目的一些細節,優化方案等
- SurfaceView, TextureView及View的區別。SurfaceView怎麼控制它處於的層級
- Binder工作流程
- 介紹一下MVC,MVP,MVVM,你們項目用的是哪個?
- 對組件化的理解,你們是怎麼實現組件化的?功能模塊之間互相引用會有什麼問題?
- 內存優化工具,LeakCanary和MAT的原理
- JVM內存模型
- Java同步機制有哪些,volatile和syncronized區別
- HashMap和HashTable區別,ConcurrentHashMap分段加鎖的原理
- 二叉樹的前中後遍歷
- 算法:判斷一棵樹是否是平衡二叉樹
- 算法題:給定一個鏈表L1、L2,每個元素是爲10以內的正整數,鏈表表示一個數字,表頭爲高位。 求兩個鏈表之差,以鏈表形式返回
- Java和Kotlin的一些區別,Kotlin的缺點?
- SurfaceView和TextureView的區別?
- 瞭解過哪些插件化的實現?
- 說說ARouter的原理
- 兩個業務組件模塊之間,怎麼實現相互調用接口?
- 讓你設計一個下載功能,實現多個大文件同時下載,考慮哪些(斷點續傳)?
- 有沒有音視頻開發經驗?
- 怎麼處理內存泄漏?強引用弱引用?LeakCanary原理說一下。
B公司二面(1h)
- 問更熟悉Java還是Kotlin,答Java,所以問的都是Java相關的一些題
- HashMap擴容機制
- Java volatile原理和作用
- 樂觀鎖,悲觀鎖區別
- 線程池工作原理,各個參數的作用
- Android 三緩存是什麼?爲什麼需要它
- 講講做的業務開發中比較有挑戰的項目
- 還有一些比較常規的Android方面的問題,具體想不起來了
- 算法題:查找單鏈表中倒數第k個節點。做完後面試官問是不是刷過這道題,那我再出一道吧...
- 題:給定一臺8核的手機,設計一個快速檢索出sdcard下所有文件名爲a的程序,返回一個列表
B公司三面(1.5h)
- 主要深挖項目細節,有些不太清楚的最好別提,不然被挖到了很尷尬
- 平時怎麼學習技術
- 在之前的公司,你對自己的成長滿意嗎
- 在面哪些公司,情況怎麼樣
C公司一面(1.5h)
- 不記得了。。
- 算法題:給定一個排好序的數組,找出最左邊的某個指定數字的下標。
C公司二面(40min)
- 介紹項目,問一些細節。
- 你認爲Java和Kotlin的不同點,在編程範式角度再介紹一下區別?Java的lamda和Kotlin函數對象區別?
- Kotlin協程爲什麼能以同步代碼寫出異步邏輯?
- 在協程上定義了一個局部變量,爲什麼在其中的其他線程裏的協程也能訪問到?
- JetPack Compose有了解過沒?
- 性能優化;ConstraintLayout爲什麼效果好?爲什麼多了層級,性能可能會差很多?
C公司三面(1h)
- 依舊是項目細節,三面比較長的時間都是項目
- 爲什麼要離職,家是哪裏的之類的問題
D公司一面(45min)
- 主要聊項目細節
- 線程池運行流程,你們平時怎麼使用線程池?一個線程池夠嗎?
- 覺得工作經驗不長,說當應屆生面的,要求低。。。
D公司二面(1h)
- 自我介紹
- 不知道爲啥,跳過了第二輪技術面,直接來了 leader 面。聊人生,聊性格,聊成才和氛圍比薪資重要等等
- 沒有技術問題
一些總結
畢業時選擇的是一家非一線大廠的公司,在這邊工作的近兩年時間裏,業餘學習了許多 Android 相關的專業知識(因爲不忙),但是由於業務原因,且公司發展一直在走下坡路,我在項目上的經驗比較欠缺,因此考慮進一家大廠繼續磨練磨練自己。
這次面試也暴露出了我的一些問題,最主要的話還是業務項目經驗上不太足,所幸面試到的公司基本上都通過了,可能是因爲我在 Android 基礎上還可以吧。面試也是一種能夠快速地發現自己缺點與不足的方法,可以更好地提高自己。
關於算法題:個人感覺有些八股了,也比較討厭刷題,只寫了劍指offer和leetcode上hot前百中所有easy難度的題,以及幾道中等題,總共估計不超過100道吧。。。面試的時候感覺算法題這塊都不是很難,大概也許可能是運氣好唄。
另外就是可以自己搞一些比較有亮點的地方,我的話是對 Android 圖形系統這塊比較熟悉,所以上面面試中有一些都涉及到了這個,像Surface這些,如果面試官也比較懂這塊知識的話,可以聊的很開心。
最後的話就是 Android, Java, Kotlin 中一些常問的知識點了,這種就跟考試一樣,有些東西可能有些八股味兒,不過還是得準備準備,其實也不用花太多時間,最主要的積累過程,都在於日常的工作和學習中。
面試前的一些準備
接下來分享的系統學習資源以詳解各大互聯網公司的 Android 常見面試題爲主線,從面試的角度帶你介紹必備知識點,以及該知識點在項目中的實際應用。
幫你在現在的基礎上,重新梳理和建立 Android 開發的知識體系。無論是你短期內想提升 Android 內功實力,突破自己工作中的能力瓶頸,還是準備參加 Android 面試,都會在這份資料中有所一些收穫。
從架構基礎開始,分了8個模塊來逐步從基礎進階到架構師的環節:
多餘的話就不講了,接下來將分享面試的一個複習路線,如果你也在準備面試但是不知道怎麼高效複習,可以參考一下我的複習路線,有任何問題也歡迎一起互相交流,加油吧!
首先是超級詳細得不能再詳細的Android開發學習思維導圖,因爲圖片實在是太大了,所以我就只把二級目錄的內容放出來,更加詳細的你們可以點擊這裏。
接下來就需要梳理知識,提升儲備了!(Android移動架構師七大專題學習資源)
架構師築基必備技能:深入Java泛型+註解深入淺出+併發編程+數據傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO
Android高級UI與FrameWork源碼:高級UI晉升+Framework內核解析+Android組件內核+數據持久化
360°全方面性能調優:設計思想與代碼質量優化+程序性能優化+開發效率優化
解讀開源框架設計思想:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack
NDK模塊開發:NDK基礎知識體系+底層圖片處理+音視頻開發
微信小程序:小程序介紹+UI開發+API操作+微信對接
Hybrid 開發與Flutter:Html5項目實戰+Flutter進階
知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結。
然後再是通過源碼來系統性地學習
只要是程序員,不管是Java還是Android,如果不去閱讀源碼,只看API文檔,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。
真正最能鍛鍊能力的便是直接去閱讀源碼,不僅限於閱讀各大系統源碼,還包括各種優秀的開源庫。
刷大廠面試題備戰,增加大廠通過率
歷時半年,整理了這份市面上最全面的安卓面試題解析大全。
1.可以通過目錄索引直接翻看需要的知識點,查漏補缺。
2.五角星數表示面試問到的頻率,代表重要推薦指數
以上這些內容均免費分享給大家,需要完整版的朋友,點這裏可以看到全部內容。或者點擊 【這裏】 查看獲取方式。
最後還有耗時一年多整理的一系列Android學習資源:Android源碼解析、Android第三方庫源碼筆記、Android進階架構師七大專題學習、歷年BAT面試題解析包、Android大佬學習筆記
等等,這些內容均免費分享給大家。
好了,暫時只能想到這些,後面如有想到其它東西再補充哈,祝想找工作的同學都能去自己心儀的公司,前程似錦!