2018全新的大廠(chǎng)Android面試真題
前言
從去年底就開(kāi)始看,android的好機(jī)會(huì)確實(shí)不太多,但也還好,3年+的android開(kāi)發(fā)經(jīng)歷還是有一些面試機(jī)會(huì)的,不過(guò)確實(shí)不像幾年前門(mén)檻那么低了,總的體會(huì)就是小的創(chuàng)業(yè)公司比較注重你的項(xiàng)目經(jīng)歷是否和自己的貼合,直接能過(guò)來(lái)獨(dú)當(dāng)一面。大廠(chǎng)除了看中項(xiàng)目經(jīng)歷外,還比較注重你知識(shí)面的廣度,是廣度、深度和解決方案等多方面的考察,平時(shí)夠工作要好好積累臨時(shí)刷題只聊點(diǎn)皮毛估計(jì)是過(guò)不了關(guān)的。
下面就總結(jié)一些遇到的題目,各種風(fēng)格的都有。這里先列舉問(wèn)題。
面試真題
又坐標(biāo)hz,各廠(chǎng)名字字母表示,自己猜。本題目整理不保證你會(huì)遇到相同的問(wèn)題,根據(jù)崗位和面試官本身情況,問(wèn)題可能差別很大,比如有做中間件的同學(xué)被問(wèn)到熱修復(fù)的細(xì)節(jié)等等??傮w說(shuō)來(lái)阿里的面試是很正規(guī)的,從android基礎(chǔ)到一定程度的理解總結(jié)性問(wèn)題,然后回到j(luò)ava基礎(chǔ)及原理,主要著重問(wèn)簡(jiǎn)歷上的,或從簡(jiǎn)歷出發(fā)發(fā)散問(wèn)題,問(wèn)題會(huì)由表及里逐漸深入,很考察對(duì)你負(fù)責(zé)的項(xiàng)目的理解和其中用到知識(shí)原理。因?yàn)槭菓{著記憶后記的,以下問(wèn)題不分先后。這里按崗位來(lái)分類(lèi),能有個(gè)漸進(jìn)的感覺(jué)。
一.tb:電面一
- dp是什么,sp呢,有什么區(qū)別
- 自定義View,ViewGroup注意那些回調(diào)?
- 界面卡頓的原因以及解決方法
- android中的存儲(chǔ)類(lèi)型
- service用過(guò)么,基本調(diào)用方法
- Handler機(jī)制
- LinearLayout、FrameLayout、RelativeLayout性能對(duì)比,為什么
- Activity的生命周期,finish調(diào)用后其他生命周期還會(huì)走么?
- FW層熟悉么,源碼看過(guò)么
- GC回收機(jī)制熟悉么,分代算法知道么
- Java的類(lèi)類(lèi)加載原理
- 內(nèi)存泄漏如何排查,MAT分析方法以及原理,各種泄漏的原因是什么比如
- Handler為什么會(huì)泄漏
- gradle熟悉么,自動(dòng)打包知道么
- 介紹下先的app架構(gòu)和通信
- 自己負(fù)責(zé)過(guò)哪些模塊,跟同事相比自己的優(yōu)勢(shì)是什么
- 遇到過(guò)什么印象深刻的問(wèn)題,怎么解決的
現(xiàn)場(chǎng)面試:三場(chǎng)
First:
- 最近都做了哪些工作?
- 遇到了什么印象深刻的問(wèn)題。A:會(huì)順著你介紹的項(xiàng)目問(wèn)下具體實(shí)現(xiàn)。
- 推送消息有富文本么?
- 熱修復(fù)了解么,用的什么?
- apk包大小有限制么?怎么減少包大小?
- 工作中有沒(méi)有用過(guò)或者寫(xiě)過(guò)什么工具?腳本,插件等等
- 比如:多人協(xié)同開(kāi)發(fā)可能對(duì)一些相同資源都各自放了一份,有沒(méi)有方法自動(dòng)檢測(cè)這種重復(fù)之類(lèi)的
- 寫(xiě)過(guò)native的底層代碼么
- view的繪制熟悉么,介紹下
- gc相關(guān)的算法
- anr是因?yàn)槭裁串a(chǎn)生的,怎么排查
- 界面上的話(huà),有什么優(yōu)化措施么?比如列表展示之類(lèi)的,平時(shí)遇到過(guò)內(nèi)存問(wèn)題嗎,怎么優(yōu)化的?
- 平時(shí)用過(guò)哪些設(shè)計(jì)模式?
Second:
- 介紹下最近一年主要做了什么工作
- 會(huì)對(duì)簡(jiǎn)歷上突出的技能進(jìn)行詳情的詢(xún)問(wèn):
- 比如:音頻合成的具體步驟,以及遇到的一些問(wèn)題和細(xì)節(jié)處理。
- 會(huì)根據(jù)面試發(fā)散一些問(wèn)題,問(wèn)到,seek方法播放到末尾后重新播放會(huì)有一些卡頓的不流暢問(wèn)題,怎么避免,從交互設(shè)計(jì)或者技術(shù)角度。(個(gè)人表示沒(méi)怎么關(guān)注這種)。
- 項(xiàng)目團(tuán)隊(duì)多少人,怎么分配工作
- 線(xiàn)程之間怎么通信的?
- app的架構(gòu)是怎么樣的,并且為什么這樣,有什么優(yōu)缺點(diǎn)?
- 算法熟悉么?給了一個(gè)二叉排序樹(shù),出了一個(gè)給定節(jié)點(diǎn)找到它的下一個(gè)元素(指的是大小順序的下一個(gè))的算法題。
- 為什么找工作,自己的優(yōu)勢(shì)是什么
Third:
技術(shù)問(wèn)題不再局限于簡(jiǎn)歷,可能根據(jù)簡(jiǎn)歷和回答情況漸進(jìn)并擴(kuò)散。
- 感覺(jué)各個(gè)技術(shù)面試官之前并沒(méi)有溝通,可能會(huì)問(wèn)到類(lèi)似的問(wèn)題
- 介紹下自己主要負(fù)責(zé)的工作
- Activity的生命周期有哪些,知道onRestart么,介紹下
- savedInstanceState知道么,干什么用的,什么時(shí)候有值,什么時(shí)候?yàn)榭?,平時(shí)是怎么用的
- View繪制熟悉么,介紹下,能說(shuō)下是實(shí)現(xiàn)原理么?
- 平時(shí)用過(guò)什么開(kāi)發(fā)工具,分析工具?
- ANR是怎么回事?怎么查?Service會(huì)引起ANR么?
- Activity的啟動(dòng)模式有哪些?棧里是A-B-C,先想直接到A,BC都清理掉,有幾種方法可以做到?這幾種方法產(chǎn)生的結(jié)果是有幾個(gè)A的實(shí)例?
- 有什么工具可以看到Activity棧信息么?多個(gè)棧話(huà),有方法分別得到各個(gè)棧的Activity列表么
- 都熟悉哪些命令?知道怎么用命令啟動(dòng)一個(gè)Activity么?
- SharedPrefrences的apply和commit有什么區(qū)別
- java里帶$的函數(shù)見(jiàn)過(guò)么,是什么意思
- MD5是加密方法么,Base64呢
- 有博客和github,主要是寫(xiě)的什么?有哪些關(guān)注
- android 8.0 有哪些新特性
差不多就這些吧。。***每個(gè)面試官都會(huì)讓你問(wèn)他問(wèn)題。
二.
- glide緩存策略?同一個(gè)圖片跟size有關(guān)么
- android中的動(dòng)畫(huà)有哪些
- View事件傳遞機(jī)制
- 界面卡頓怎么排查和優(yōu)化?
- Fragment的replace和end??的區(qū)別?
- MVP,MVVM,MVC解釋和實(shí)踐
- 項(xiàng)目之外的,對(duì)技術(shù)的見(jiàn)解,拓展知識(shí)
二面:
- 微信跳一跳外掛怎么實(shí)現(xiàn),檢測(cè)怎么做的?
- 一張純色背景下怎么有效檢測(cè)各個(gè)矩形?
- 對(duì)接的so算法了解么,有接觸過(guò)相關(guān)的庫(kù)么?
- 三個(gè)算法題選一個(gè)并寫(xiě)出測(cè)試用例:打印n-m之間所有的素?cái)?shù);計(jì)算n-m之間1出現(xiàn)的次數(shù);指定數(shù)字序列的排序;
- android api層的源碼熟悉哪些?解釋一下
- ACTION_CANCEL什么時(shí)候觸發(fā),觸摸button然后滑動(dòng)到外部抬起會(huì)觸發(fā)點(diǎn)擊事件嗎,在+ + 滑動(dòng)回去抬起會(huì)么
- 怎么處理嵌套View的滑動(dòng)沖突問(wèn)題
- 熱修復(fù)相關(guān)的原理,框架熟悉么
- gradle打包流程熟悉么
任意提問(wèn)環(huán)節(jié):其實(shí)可以問(wèn)之前面試中遇到的問(wèn)題:比如,多模塊開(kāi)發(fā)的時(shí)候不同的負(fù)責(zé)人可能會(huì)引入重復(fù)資源,相同的字符串,相同的icon等但是文件名并不一樣,怎樣去重?
三.NetBase:
- Canvas的底層機(jī)制,繪制框架,硬件加速是什么原理,canvas lock的緩沖區(qū)是怎么回事
- surfaceview, suface,surfacetexure等相關(guān)的,以及底層原理
- android文件存儲(chǔ),各版本存儲(chǔ)位置的權(quán)限控制的演進(jìn),外部存儲(chǔ),內(nèi)部存儲(chǔ)
- 上層業(yè)務(wù)activity和fragment的遇到什么坑??頁(yè)面展示上的一些坑和優(yōu)化經(jīng)驗(yàn)
- 網(wǎng)絡(luò)請(qǐng)求的開(kāi)源框架:OKHttp介紹,寫(xiě)過(guò)攔截器么
四.Netbase:AI
- 數(shù)據(jù)層有統(tǒng)一的管理么,數(shù)據(jù)緩存是怎么做的,http請(qǐng)求等有提供統(tǒng)一管理么?
- 有用什么模式么,邏輯什么的都在A(yíng)ctivity層?怎么分離的
- 如果用了一些解耦的策略,怎么管理生命周期的?
- 有什么提高編譯速度的方法?
- 對(duì)應(yīng)用里的線(xiàn)程有做統(tǒng)一管理么?
- jni的算法提供都是主線(xiàn)程的?是不是想問(wèn)服務(wù)類(lèi)的啊
- 邊沿檢測(cè)用的啥?深度學(xué)習(xí)相關(guān)的有了解么?
- 上線(xiàn)后的app性能分析檢測(cè)有做么
五.yz:
- 進(jìn)程間通信方式?Binder的構(gòu)成有幾部分?
- HttpClient和HttpConnection的區(qū)別
- View的事件傳遞機(jī)制
- MVC,MVP,MVVM分別是什么?
- Android中常用的設(shè)計(jì)模式,說(shuō)三個(gè)比較高級(jí)的?
- 內(nèi)存優(yōu)化,OOM的原因和排查方法
- 想改變listview的高度,怎么做
- Https是怎么回事?
- 除了日常開(kāi)發(fā),其他有做過(guò)什么工作?比如持續(xù)化集成,自動(dòng)化測(cè)試等等
六.DiDi:比較全面
- ActivityA跳轉(zhuǎn)ActivityB然后B按back返回A,各自的生命周期順序,A與B均不透明。
- Synchronize關(guān)鍵字后面跟類(lèi)或者對(duì)象有什么不同。
- 單例的DCL方式下,那個(gè)單例的私有變量要不要加volatile關(guān)鍵字,這個(gè)關(guān)鍵字有什么用
- JVM的引用樹(shù),什么變量能作為GCRoot?GC垃圾回收的幾種方法
- ThreadLocal是什么?Looper中的消息死循環(huán)為什么沒(méi)有ANR?
- Android中main方法入口在哪里
- jdk1.5?SparseArray和ArrayMap各自的數(shù)據(jù)結(jié)構(gòu),前者的查找是怎么
- 實(shí)現(xiàn)的,與HashMap的區(qū)別
- Runnable與Callable、Future、FutureTask的區(qū)別,AsyncTask用到哪個(gè)?AsyncTask是順序執(zhí)行么,for循環(huán)中執(zhí)行200次new AsyncTask并execute,會(huì)有異常嗎
- IntentService生命周期是怎樣的,使用場(chǎng)合等
- RecyclerView和ListView有什么區(qū)別?局部刷新?前者使用時(shí)多重type場(chǎng)景下怎么避免滑動(dòng)卡頓。懶加載怎么實(shí)現(xiàn),怎么優(yōu)化滑動(dòng)體驗(yàn)。
- SQLite的數(shù)據(jù)庫(kù)升級(jí)用過(guò)么
- 開(kāi)放問(wèn)題:如果提高啟動(dòng)速度,設(shè)計(jì)一個(gè)延遲加載框架或者sdk的方法和注意的問(wèn)題。
- Scroller有什么方法,怎么使用的。
- 分享下項(xiàng)目中遇到的問(wèn)題
- webwiew了解?怎么實(shí)現(xiàn)和javascript的通信?相互雙方的通信。@JavascriptInterface在?版本有bug,除了這個(gè)還有其他調(diào)用android方法的方案嗎?
- ReactiveNative了解多少
- JNI和NDK熟悉么?Java和C方法之前的相互調(diào)用怎么做?
幾點(diǎn)建議
- 簡(jiǎn)歷要如實(shí)寫(xiě),相關(guān)的知識(shí)點(diǎn)一定要爛熟于心。
- 基礎(chǔ)扎實(shí),android和java相關(guān)的知識(shí)樹(shù)網(wǎng)上有很多資料,看過(guò)但讓你講出來(lái)未必能說(shuō)的好。
- 提前總結(jié),你還擅長(zhǎng)什么其他技術(shù)?這種開(kāi)放問(wèn)題要看知識(shí)面了。
- 學(xué)會(huì)提問(wèn),你有什么問(wèn)題要問(wèn)我嗎?這種禮貌性問(wèn)題也是一個(gè)了解對(duì)方的好機(jī)會(huì)。
- 良好的心里素質(zhì),無(wú)論遇到什么情況,面試官遲到、面試官態(tài)度冰冷說(shuō)話(huà)不客氣、質(zhì)疑你的回答等等各種問(wèn)題都不要慌也不要排斥,一定要沉住氣,耐心積極的思考并回答對(duì)方的提問(wèn)。
- 推薦幾本書(shū),也是好幾次面試后發(fā)現(xiàn)里面涵蓋了大部分答案?!禔ndroid開(kāi)發(fā)藝術(shù)探索》《Android源碼設(shè)計(jì)模式-解析與實(shí)戰(zhàn)》《Android進(jìn)階之光》《深入理解Java虛擬機(jī)》,多看幾遍。
大廠(chǎng)的面試流程比較長(zhǎng),面試是一場(chǎng)全面大考驗(yàn),如果想換個(gè)工作,***提前充分準(zhǔn)備。