2019 Android 面試真題集錦

南塵在 2019 年 7 月毫無準(zhǔn)備的情況下也參加了幾家一線互聯(lián)網(wǎng)公司的面試,包括阿里、頭條、快手、趣頭條、BIGO、訊飛、OPPO,也熙熙攘攘拿了幾個 offer,最終選取了其中一家公司進(jìn)行入職。
每次面試后,其實也有進(jìn)行面試題的一些收集和總結(jié),確實,面試其實就是一次查漏補缺的過程。本著對公司負(fù)責(zé)的態(tài)度,這里就不說面試題來自哪家公司了。不過還是要把記錄下來的這些真題分享給大家。
另外,面試題一般都是基礎(chǔ) && 項目兩部分結(jié)合,而且還要看面試官當(dāng)時對你的準(zhǔn)備,所以面試真題雖然「真」,但卻僅僅只能作為大家準(zhǔn)備面試的一個大綱吧。
當(dāng)然,有些題目沒記錄完全,有些題目也出現(xiàn)多家公司提問,這里就不重復(fù)了。
Java 基礎(chǔ)部分
基本這些公司都會問到相關(guān)基礎(chǔ),所以,一般來說基礎(chǔ)的準(zhǔn)備是必要并且通用的,所以這部分真的很重要。
1、HashMap 和 HashTable 以及 CurrentHashMap 的區(qū)別。
一般來說,這三個東西基本在面試中 70% 會被問到,而問的方向也不太一樣。比如初級的問法是講講它們之前的區(qū)別,這個我想沒什么難度,大多數(shù)人還是知道主要核心區(qū)別是并發(fā)上的處理。此外,內(nèi)部數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)、擴容、存取操作這些問題應(yīng)該是很老生常談了,這并沒有什么好說的,大多數(shù)人也都知道。稍微問的深一點的可能會在下面這些點上出問題。哈希碰撞,哈希計算,哈希映射,為什么是頭插法,擴容為什么是 2 的冪次等這樣的問題。
2、synchronized 和 volatile 、ReentrantLock 、CAS 的區(qū)別。
這個問題被問頻率不在 HashMap 之下,因為并發(fā)編程,真的很重要。能問到這幾個點的方式真的是太多了,我們能發(fā)揮的空間也同樣很大。CAS 的 ABA 問題?上面幾個東西的特性?使用場景?大概我不用再例舉了吧?對了,我多次被問到的一個問題是:synchronized 修飾實例方法和修飾靜態(tài)方法有啥不一樣。
3、JVM 類加載機制、垃圾回收算法對比、Java 虛擬機結(jié)構(gòu)等。
這三個問題大概出現(xiàn)概率 40%,基本只需要看我每日一問系列的推文就差不多了吧,希望更清楚明白的可以直接看《深入理解 Java 虛擬機》。當(dāng)你講到分代回收算法的時候,不免會被追問到新生對象是怎么從年輕代到老年代的,以及可以作為 root 結(jié)點的對象有哪些兩個問題。
4、Java 的四大引用
四大引用面試出現(xiàn)概率比我想象中要高,我原本以為就強引用、軟引用、弱引用、虛引用這四個玩意兒沒啥可講的。實際上也確實沒啥好講的,稍微問的深一些的面試官會和內(nèi)存泄漏檢測原理以及垃圾回收糅雜在一起。
5、Java 的泛型,<? super T> 和 <? extends T> 的區(qū)別。
Java 泛型還是會在面試中出現(xiàn)的,不過幾率不是很高,大概是因為我簡歷中有提到泛型擦除相關(guān)的東西。所以會被問到泛型、泛型擦除、通配符相關(guān)的東西。不過這個東西,不應(yīng)該是為了應(yīng)付面試,實際開發(fā)中真的很重要。
6、Java 線程有哪些狀態(tài),有哪些鎖,各種鎖的區(qū)別。
這個問題講真,我也只懂一點皮毛,并且當(dāng)時回答不是很全面,出現(xiàn)概率的話,不是很高吧。
7、final 、finally、finalize 區(qū)別。
老生常談的問題,沒啥好說的,實際上這次社招面試也只遇到了兩次。比較喜歡追根溯源的面試官可能會對這個 finalize 有點執(zhí)念,一定希望搞清楚,這玩意兒我們是不是可以真的搞點黑科技騷操作。
8、接口和抽象類的區(qū)別。
沒想到還被問了一次這個,這玩意兒給我的感覺就是隨時都在用,但真要較真,還真不能一口氣把所有區(qū)別都信手拈來。
9、sleep 、wait、yield 的區(qū)別,wait 的線程如何喚醒它?
大多數(shù) Android 應(yīng)用開發(fā)并接觸不到很多并發(fā)相關(guān)的東西,不過這玩意兒還是在面試中挺容易出現(xiàn)的。
計算機網(wǎng)絡(luò)部分。
計算機網(wǎng)絡(luò)部分還是挺容易考察的,不過考察的點不會那么深入。通常來說也就是這些問題:
- TCP 有哪些狀態(tài)。
- 三次握手、四次揮手。為啥是三次不是兩次?
- HTTPS 和 HTTP 的區(qū)別。HTTPS 2.0,3.0?
- 瀏覽器輸入一個 URL,按下回車網(wǎng)絡(luò)傳輸?shù)牧鞒蹋?/li>
- 喜歡深問一點的還會問到網(wǎng)絡(luò)架構(gòu),每層有些什么協(xié)議,F(xiàn)TP 這些相關(guān)原理,印象比較深刻的還有一個問題是:TCP 建立連接后,發(fā)包頻率是怎樣的?
Android 部分
Android 很廣,所以這里只是簡單說下有些什么問題。這個的話其實真的 70% 問題出自你的簡歷。
- Activity 的生命周期;
- Android 的 4 大啟動模式,注意 onNewIntent() 的調(diào)用;
- 組件化架構(gòu)思路,如何從一個老項目一步一步實現(xiàn)組件化,主要問實現(xiàn)思路,考察應(yīng)試者的架構(gòu)能力和思考能力。這一塊內(nèi)容真的很多,你需要考慮的問題很多,哪一步做什么,順序很重要。
- MVC、MCP、MVVP 的區(qū)別和各種使用場景,如何選擇適合自己的開發(fā)架構(gòu)?
- Router 原理,如何實現(xiàn)組件間通信,組件化平級調(diào)用數(shù)據(jù)方式。
- 系統(tǒng)打包流程;
- APP 啟動流程;
- 如何做啟動優(yōu)化?冷啟動什么的肯定是基礎(chǔ),后續(xù)應(yīng)該還有的是懶加載,丟線程池同步處理,需要注意這里可能會有的坑是,丟線程池如何知道全部完成。
- 事件分發(fā)機制。事件分發(fā)已經(jīng)不是直接讓你講了,會給你具體的場景,比如 A 嵌套 B ,B 嵌套 C,從 C 中心按下,一下滑出到 A,事件分發(fā)的過程,這里面肯定會有 ACTION_CANCEL 的相關(guān)調(diào)用時機。
- 如何檢測卡頓,卡頓原理是什么,怎么判斷是頁面響應(yīng)卡頓還是邏輯處理造成的卡頓?
- 生產(chǎn)者模式和消費者模式的區(qū)別?
- 單例模式雙重加鎖,為什么要這樣做。
- Handler 機制原理,IdleHandler 什么時候調(diào)用。
- LeakCanary 原理,為什么檢測內(nèi)存泄漏需要兩次?
- BlockCanary 原理。
- ViewGroup 繪制順序;
- Android 有哪些存儲數(shù)據(jù)的方式。
- SharedPrefrence 源碼和問題點;
- 講講 Android 的四大組件;
- 屬性動畫、補間動畫、幀動畫的區(qū)別和使用場景;
- 自定義 ViewGroup 如何實現(xiàn) FlowLayout?如何實現(xiàn) FlowLayout 調(diào)換順序?
- 自定義 View 如何實現(xiàn)打桌球效果;
- 自定義 View 如何實現(xiàn)拉弓效果,貝瑟爾曲線原理實現(xiàn)?
- APK 瘦身是怎么做的,只用 armabi-v7a 沒有什么問題么?APK 瘦身這個基本是 100% 被面試問到,可能是我簡歷上提到的原因。
- ListView 和 RecyclerView 區(qū)別?RecyclerView 有幾層緩存,如何讓兩個 RecyclerView 共用一個緩存?
- 如何判斷一個 APP 在前臺還是后臺?
- 如何做應(yīng)用?;??全家桶原理?
- 講講你所做過的性能優(yōu)化。
- Retrofit 在 OkHttp 上做了哪些封裝?動態(tài)代理和靜態(tài)代理的區(qū)別,是怎么實現(xiàn)的。
- 講講軌跡視頻的音視頻合成原理;
- AIDL 相關(guān);
- Binder 機制,講講 Linux 上的 IPC 通信,Binder 有什么優(yōu)勢,Android 上有哪些多進(jìn)程通信機制?
- RxJava 的線程切換原理。
- OkHttp 和 Volloy 區(qū)別;
- Glide 緩存原理,如何設(shè)計一個大圖加載框架。
- LRUCache 原理;
- 講講咕咚項目開發(fā)中遇到的最大的一個難題和挑戰(zhàn);
- 這個問題基本是 95% 必問的一個問題;
- 說說你開發(fā)最大的優(yōu)勢點。出現(xiàn)率同上。
算法
- String 轉(zhuǎn) int。核心算法就三行代碼,不過臨界條件很多,除了判空,還需要注意負(fù)數(shù)、Integer 的最大最小值邊界等;
- 如何判斷一個單鏈表有環(huán)?
- 鏈表翻轉(zhuǎn);
- 快排;
- 100 億個單詞,找出出現(xiàn)頻率最高的單詞。要求幾種方案;
- 鏈表每 k 位逆序;
- 鏡像二叉樹;
- 找出一個無序數(shù)組中出現(xiàn)超過一半次數(shù)的數(shù)字;
- 計算二叉樹的最大深度,要求非遞歸算法。
- String 方式計算加法。
HR 面
- 你為什么離開咕咚?
- 你的缺點是什么?
- 你能給公司帶來什么效益?
- 你對未來的職業(yè)規(guī)劃?
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
- 這篇文章主要介紹了華為Android三面成功通過,面試官都問了什么,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-26
- 這篇文章主要介紹了Android 一線大廠面試總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-08
2019年Android高級面試題與相關(guān)知識點總結(jié)
這篇文章主要介紹了2019年Android高級面試題與相關(guān)知識點,總結(jié)分析了Android開發(fā)中涉及的各種常見知識點與相關(guān)原理,需要的朋友可以參考下2019-11-21- 這篇文章主要介紹了2019年必備的Android面試題及參考答案,整理匯總了Android開發(fā)中常見的各種知識點、技術(shù)細(xì)節(jié)與注意事項,需要的朋友可以參考下2019-10-30
2019 金三銀四:阿里P9架構(gòu)的Android大廠面試題總結(jié)
面試是一道坎,很多人會恐懼面試,即使是工作很多年的老鳥,可能仍存在面試的焦慮。 今天介紹了阿里P9架構(gòu)的Android大廠面試題總結(jié)的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分2019-05-05- 這篇文章主要介紹了這20道題,聽說只有大廠的Android工程師能全對,趕快一起來測試一下自己把,看看是不是都掌握了2020-05-25