【金三銀四】2022 Android面經(jīng)實(shí)錄

1. 前言

春水初盛,垂釣者絡(luò)繹不絕,魚兒按捺不住,拍打著尾鰭紛紛躍出水面,沽個好價。

本篇真實(shí)的記錄了我從 準(zhǔn)備->復(fù)習(xí)->面試 的全過程,分享一些我的真實(shí)經(jīng)驗(yàn),希望能幫到大家。

2. 準(zhǔn)備工作

開始準(zhǔn)備工作之前,首先思考幾個問題:

  • 如何準(zhǔn)備
  • 需要復(fù)習(xí)哪些東西
  • 該怎么復(fù)習(xí)
  • 怎么復(fù)習(xí)最高效
  • 職業(yè)規(guī)劃
  1. 如何準(zhǔn)備,從哪里開始著手?首先是想好自己是否真的需要換工作,確定好需要換之后就開始寫簡歷,將個人技能點(diǎn)、業(yè)務(wù)經(jīng)驗(yàn)、業(yè)務(wù)成績等寫上去。

  2. 需要復(fù)習(xí)哪些東西?我個人認(rèn)為首先是復(fù)習(xí)Java基礎(chǔ)和Android基礎(chǔ),然后再根據(jù)簡歷上寫的技能點(diǎn)和業(yè)務(wù)經(jīng)歷,復(fù)習(xí)相關(guān)的知識點(diǎn)。有時候,你做過的某個東西,可能敘述出來不是特別清晰,或者根本就想不起來具體是怎么做的了,這個時候就需要復(fù)習(xí)代碼回顧一下。

下面是一些我需要復(fù)習(xí)的點(diǎn):

  • 項(xiàng)目經(jīng)歷,業(yè)務(wù),難點(diǎn)
  • Java基礎(chǔ),JVM,集合原理
  • Android基礎(chǔ),View體系,View繪制流程,事件分發(fā),屏幕刷新,動畫原理
  • 常見三方庫原理
  • Jetpack
  • Android Framework
  • 算法
  • Kotlin
  1. 該怎么復(fù)習(xí)?將以前學(xué)習(xí)該部分時寫過的博客或者筆記拿出來復(fù)習(xí),結(jié)合源碼。如果是以前沒有寫過相關(guān)筆記的,就找一下相關(guān)的技術(shù)文章,匯總,看一波。

  2. 怎么復(fù)習(xí)最高效?一個技術(shù)點(diǎn)或者做過的業(yè)務(wù),最好是先復(fù)習(xí)一下,然后用自己的話把它描述出來,最好是寫成文字,記錄到云筆記上,方便隨時復(fù)習(xí)。當(dāng)然,這只是一個點(diǎn)的復(fù)習(xí)方式。而簡歷上有很多很多個這樣的點(diǎn),我們需要設(shè)置一個dead line,設(shè)置一個復(fù)習(xí)總時長,到哪個日期截止,必須在那個日期結(jié)束前復(fù)習(xí)完成。然后將需要復(fù)習(xí)的點(diǎn)詳細(xì)安排到每一天,每天需要復(fù)習(xí)哪些東西,必須當(dāng)天完成,禁止自己拖到第二天,最好是明天的任務(wù)內(nèi)容今天就把它完成了,然后明天就去復(fù)習(xí)后天的任務(wù)內(nèi)容。給自己留有余地,即使某天沒時間復(fù)習(xí),也不至于落后于計(jì)劃。最好是開始復(fù)習(xí)計(jì)劃之前就把每一個知識點(diǎn)需要看的東西全部給列出來,比如需要復(fù)習(xí)哪篇筆記、哪篇文章、哪部分代碼等,到時在復(fù)習(xí)的時候就無需關(guān)心該復(fù)習(xí)哪里,直接照著之前安排好的計(jì)劃開整就行了。

下面是一些我在復(fù)習(xí)時的部分計(jì)劃,完成時打個勾

2022階梯計(jì)劃
  1. 職業(yè)規(guī)劃?開始找工作之前,最好是先想好自己下一份工作想做什么,去怎么樣的公司,將來想怎么發(fā)展。

3. 我的復(fù)習(xí)資料

這塊大家盡量按照自己簡歷的內(nèi)容來進(jìn)行專項(xiàng)復(fù)習(xí),下面是一些我復(fù)習(xí)時用到的資料。因?yàn)檫@些都是自己的技能點(diǎn),所以復(fù)習(xí)要稍微加快一下速度,控制好復(fù)習(xí)總時長。

3.1 算法部分

3.2 Java基礎(chǔ)

3.3 Android

4. 技術(shù)面試真題

只記錄了部分公司和部分題目,有時候面試完忘記記錄了,后面就想不起來了。

公司1:

  • 包體積優(yōu)化
  • handler原理
  • 如何退出app
  • synchronized和lock
  • 鴻蒙了解過嗎
  • flutter了解過嗎,compose呢
  • 跨進(jìn)程通信,線程通信
  • 組件化是怎么做的
  • 做過的項(xiàng)目,主要負(fù)責(zé)什么
  • 擔(dān)任的角色
  • 最難的是什么?怎么解決的
  • 開發(fā)流程是怎么樣的?有做設(shè)計(jì)文檔嗎?
  • 職業(yè)規(guī)劃,為什么做安卓?鴻蒙有了解嗎?
  • 平時怎么學(xué)習(xí)的?最近學(xué)了什么?給工作帶來了哪些好處?
  • 看過哪些技術(shù)書籍
  • 平時有什么愛好
  • 對你想要去的公司團(tuán)隊(duì)有什么要求?或者說你想去什么氛圍的項(xiàng)目組?

公司2:

  • sleep和wait區(qū)別
  • mvp
  • 組件化
  • livedata,viewmodel原理
  • 內(nèi)存優(yōu)化
  • 啟動優(yōu)化
  • leakcanary原理
  • 換膚原理
  • 怎么hook ams

公司3:

  • volatile、synchronized、原子類的原理
  • 數(shù)據(jù)庫優(yōu)化是怎么做的
  • 性能優(yōu)化
  • kotlin伴生對象和init
  • 斐波拉契序列
  • 反轉(zhuǎn)鏈表

公司4:

  • fragment生命周期
  • 屏幕刷新機(jī)制
  • binder理解
  • bindService校驗(yàn): 權(quán)限,包名
  • https的原理
  • 響應(yīng)式編程
  • 熱修復(fù):class和資源
  • invalidate 和 postInvalidate區(qū)別
  • handler原理,sendMessageDelayed是怎么實(shí)現(xiàn)的,為什么不卡主線程,底層是如何通知進(jìn)程這邊恢復(fù)阻塞的
  • java掌握到什么程度了,kotlin呢?android呢?
  • 響應(yīng)式編程
  • 看過哪些書?推薦一本你覺得不錯的書,為什么不錯
  • android最近這2年值得關(guān)注的框架
  • 敏捷開發(fā)模式
  • 你給你自己的水平打分,計(jì)劃怎么完善和精進(jìn)自己的技術(shù)棧

公司5:

  • app啟動過程+activity啟動過程,activity啟動過程中的launchmode的原理
  • handler
  • java 方法重載問題,泛型相關(guān)
  • 卡頓優(yōu)化,冷啟動優(yōu)化,線上監(jiān)控方式
  • 慢函數(shù)線上監(jiān)控

公司6:

  • 3個線程如何依次執(zhí)行
  • 設(shè)計(jì)一個圖片加載庫,lrucache原理,linkedhashmap實(shí)現(xiàn)
  • lifecycle,viewmodel原理
  • view事件分發(fā)

公司7:

  • gc roots
  • JVM垃圾回收算法,Android虛擬機(jī)垃圾回收算法
  • 分代回收思想
  • Java類加載機(jī)制
  • 線程池有幾種,分別是什么特征,自定義線程池需要注意什么,核心線程數(shù)是多少
  • hashmap原理(紅黑樹會退成鏈表嗎?什么情況下?),ConcurrentHashMap原理,Hashtable原理
  • StringBuilder和StringBuffer原理
  • 反射原理及其優(yōu)缺點(diǎn)
  • 泛型拿來做什么的
  • synchronized用法及原理,1.6做了哪些優(yōu)化,Mark word
  • 常用的三方庫原理,隨便挑一個說
  • 換膚原理
  • 動畫有哪幾種,屬性動畫原理,vsync
  • View繪制流程
  • 短時間內(nèi)多次調(diào)用requestLayout,哪些View會重繪
  • 冷啟動優(yōu)化
  • 包體積優(yōu)化
  • 插件化原理,startActivity
  • mvc,mvp,mvvm
  • requestLayout流程
  • 算法1:反轉(zhuǎn)單詞
  • 算法2:環(huán)形鏈表求環(huán)入口節(jié)點(diǎn),不準(zhǔn)用快慢指針,O(1)空間復(fù)雜度,O(n)時間復(fù)雜度,可修改鏈表節(jié)點(diǎn)的指針和數(shù)據(jù)。不能在鏈表節(jié)點(diǎn)中新增屬性

公司8:

  • 說一下項(xiàng)目的架構(gòu),哪一塊是你主要負(fù)責(zé)的?說一下是怎么設(shè)計(jì)的
  • livedata原理
  • handler原理
  • 組件化傳遞大數(shù)據(jù)
  • 單例里面的數(shù)據(jù)線程安全
  • 內(nèi)存優(yōu)化,卡頓優(yōu)化,冷啟動優(yōu)化
  • 怎么檢測已發(fā)生了內(nèi)存泄露的對象?不知道那個對象是誰
  • 協(xié)程和RxJava原理,區(qū)別

公司9:

  • view繪制流程
  • 事件分發(fā)流程,外部攔截法,內(nèi)部攔截法
  • Kotlin協(xié)程,協(xié)程原理,怎么開協(xié)程,怎么切線程
  • viewpager內(nèi)部view高度不一致,怎么解決
  • startActivity流程
  • 啟動優(yōu)化,包體積優(yōu)化
  • livedata原理
  • gradle 馬甲包
  • 換膚原理
  • 協(xié)程狀態(tài)機(jī)
  • let和also區(qū)別
  • mvvm

5. HR面

一般HR面就比較輕松了,不會涉及什么高難度的問題。一般就問問你為什么離職、住哪里、有對象嗎、結(jié)婚了嗎、有小孩嗎、小孩多大了、買房了嗎、哪里人,然后HR還會介紹公司的情況、產(chǎn)品、公司規(guī)劃、福利之類的。下面這些是我在網(wǎng)絡(luò)上搜集的一些比較重要的問題,需要詳細(xì)向HR了解清楚。

每個問題都很重要,必問

  • 工資是*12 ?
  • 有年終嗎?
  • 五險(xiǎn)一金是全額?多少比例?
  • 加班有錢?
  • 晉升制度,漲薪制度
  • 年假?
  • 績效考評是怎么樣的?
  • 午休時間,上下班時間
  • 雙休?
  • 試用期多久?轉(zhuǎn)正標(biāo)準(zhǔn)
  • 工作強(qiáng)度

6. 其他注意事項(xiàng)

  • 技術(shù)復(fù)盤:在每輪技術(shù)面試完成后,肯定是有些問題回答得不好的,或者是沒有答上來的,回去之后需要及時整理并復(fù)習(xí),最好是能用自己的話復(fù)述一下這個問題。
  • 提前了解好要去面試的公司的產(chǎn)品、方向
  • 提前了解好當(dāng)前公司辦理離職需要多久
  • 社保和公積金不能斷
  • 盡量遠(yuǎn)程面試,避免耽擱現(xiàn)在的工作

7. 最后

現(xiàn)在正值金三銀四招聘旺季,祝正在求職的伙伴都能找到自己喜歡的工作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容