2018金三銀四,Android大廠面試題整理

YinWei_LF發表於2018-03-18

目錄

  • (1)java面試題 (2)Android面試題 (3)高階技術面試題 (4)非技術性問題&HR問題彙總

java面試題

熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉原始碼實現原理,甚至要你知道有哪些不足,怎麼改進,還有一些java有關的一些演算法,設計模式等等。

(一) java基礎面試知識點

java中==和equals和hashCode的區別
int、char、long各佔多少位元組數
int與integer的區別
探探對java多型的理解
String、StringBuffer、StringBuilder區別
什麼是內部類?內部類的作用
抽象類和介面區別
抽象類的意義
抽象類與介面的應用場景
抽象類是否可以沒有方法和屬性?
介面的意義
泛型中extends和super的區別
父類的靜態方法能否被子類重寫
程式和執行緒的區別
final,finally,finalize的區別
序列化的方式
Serializable 和Parcelable 的區別
靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?
靜態內部類的設計意圖
成員內部類、靜態內部類、區域性內部類和匿名內部類的理解,以及專案中的應用
談談對kotlin的理解
閉包和區域性內部類的區別
string 轉換成 integer的方式及原理

(二) java深入原始碼級的面試題(有難度)

哪些情況下的物件會被垃圾回收機制處理掉?
講一下常見編碼方式?
utf-8編碼中的中文佔幾個位元組;int型幾個位元組?
靜態代理和動態代理的區別,什麼場景使用?
Java的異常體系
談談你對解析與分派的認識。
修改物件A的equals方法的簽名,那麼使用HashMap存放這個物件例項的時候,會呼叫哪個equals方法?
Java中實現多型的機制是什麼?
如何將一個Java物件序列化到檔案裡?
說說你對Java反射的理解
說說你對Java註解的理解
說說你對依賴注入的理解
說一下泛型原理,並舉例說明
Java中String的瞭解
String為什麼要設計成不可變的?
Object類的equal和hashCode方法重寫,為什麼?

(三) 資料結構

常用資料結構簡介
併發集合瞭解哪些?
列舉java的集合以及集合之間的繼承關係
集合類以及集合框架
容器類介紹以及之間的區別(容器類估計很多人沒聽這個詞,Java容器主要可以劃分為4個部分:List列表、Set集合、Map對映、工具類(Iterator迭代器、Enumeration列舉類、Arrays和Collections),具體的可以看看這篇博文 Java容器類 http://alexyyek.github.io/2015/04/06/Collection/
List,Set,Map的區別
List和Map的實現方式以及儲存方式
HashMap的實現原理
HashMap資料結構?
HashMap原始碼理解
HashMap如何put資料(從HashMap原始碼角度講解)?
HashMap怎麼手寫實現?
ConcurrentHashMap的實現原理
ArrayMap和HashMap的對比
HashTable實現原理
TreeMap具體實現
HashMap和HashTable的區別
HashMap與HashSet的區別
HashSet與HashMap怎麼判斷集合元素重複?
集合Set實現Hash怎麼防止碰撞
ArrayList和LinkedList的區別,以及應用場景
陣列和連結串列的區別
二叉樹的深度優先遍歷和廣度優先遍歷的具體實現
堆的結構
堆和樹的區別
堆和棧在記憶體中的區別是什麼(解答提示:可以從資料結構方面以及實際實現方面兩個方面去回答)?
什麼是深拷貝和淺拷貝
手寫連結串列逆序程式碼
講一下對樹,B+樹的理解
講一下對圖的理解
判斷單連結串列成環與否?
連結串列翻轉(即:翻轉一個單項鍊表)
合併多個單有序連結串列(假設都是遞增的)

(四) 執行緒、多執行緒和執行緒池

開啟執行緒的三種方式?
執行緒和程式的區別?
為什麼要有執行緒,而不是僅僅用程式?
run()和start()方法區別
如何控制某個方法允許併發訪問執行緒的個數?
在Java中wait和seelp方法的不同;
談談wait/notify關鍵字的理解
什麼導致執行緒阻塞?
執行緒如何關閉?
講一下java中的同步的方法
資料一致性如何保證?
如何保證執行緒安全?
如何實現執行緒同步?
兩個程式同時要求寫或者讀,能不能實現?如何防止程式的同步?
執行緒間操作List
Java中物件的生命週期
Synchronized用法
synchronize的原理
談談對Synchronized關鍵字,類鎖,方法鎖,重入鎖的理解
static synchronized 方法的多執行緒訪問和作用
同一個類裡面兩個synchronized方法,兩個執行緒同時訪問的問題
volatile的原理
談談volatile關鍵字的用法
談談volatile關鍵字的作用
談談NIO的理解
synchronized 和volatile 關鍵字的區別
synchronized與Lock的區別
ReentrantLock 、synchronized和volatile比較
ReentrantLock的內部實現
lock原理
死鎖的四個必要條件?
怎麼避免死鎖?
物件鎖和類鎖是否會互相影響?
什麼是執行緒池,如何使用?
Java的併發、多執行緒、執行緒模型
談談對多執行緒的理解
多執行緒有什麼要注意的問題?
談談你對併發程式設計的理解並舉例說明
談談你對多執行緒同步機制的理解?
如何保證多執行緒讀寫檔案的安全?
多執行緒斷點續傳原理
斷點續傳的實現

(五)併發程式設計有關知識點

(這個是一般Android開發用的少的,所以建議多去看看):
平時Android開發中對併發程式設計可以做得比較少,Thread這個類經常會用到,但是我們想提升自己的話,一定不能停留在表面,,我們也應該去了解一下java的關於執行緒相關的原始碼級別的東西。

學習的參考資料如下:

Java 記憶體模型
java執行緒安全總結
http://www.iteye.com/topic/806990
深入理解java記憶體模型系列文章
http://ifeve.com/java-memory-model-0/

執行緒狀態:
一張圖讓你看懂JAVA執行緒間的狀態轉換
https://my.oschina.net/mingdongcheng/blog/139263

鎖:
鎖機制:synchronized、Lock、Condition
http://blog.csdn.net/vking_wang/article/details/9952063
Java 中的鎖
http://wiki.jikexueyuan.com/project/java-concurrent/locks-in-java.html

併發程式設計:
Java併發程式設計:Thread類的使用
http://www.cnblogs.com/dolphin0520/p/3920357.html
Java多執行緒程式設計總結
http://blog.51cto.com/lavasoft/27069
Java併發程式設計的總結與思考
https://www.jianshu.com/p/053943a425c3#
Java併發程式設計實戰—–synchronized
http://www.cnblogs.com/chenssy/p/4701027.html
深入分析ConcurrentHashMap
http://www.infoq.com/cn/articles/ConcurrentHashMap#

Android面試題

Android面試題包括Android基礎,還有一些原始碼級別的、原理這些等。所以想去大公司面試,一定要多看看原始碼和實現方式,常用框架可以試試自己能不能手寫實現一下,鍛鍊一下自己。

(一)Android基礎知識點

四大元件是什麼
四大元件的生命週期和簡單用法
Activity之間的通訊方式
Activity各種情況下的生命週期
橫豎屏切換的時候,Activity 各種情況下的生命週期
Activity與Fragment之間生命週期比較
Activity上有Dialog的時候按Home鍵時的生命週期
兩個Activity 之間跳轉時必然會執行的是哪幾個方法?
前臺切換到後臺,然後再回到前臺,Activity生命週期回撥方法。彈出Dialog,生命值週期回撥方法。
Activity的四種啟動模式對比
Activity狀態儲存於恢復
fragment各種情況下的生命週期
Fragment狀態儲存startActivityForResult是哪個類的方法,在什麼情況下使用?
如何實現Fragment的滑動?
fragment之間傳遞資料的方式?
Activity 怎麼和Service 繫結?
怎麼在Activity 中啟動自己對應的Service?
service和activity怎麼進行資料互動?
Service的開啟方式
請描述一下Service 的生命週期
談談你對ContentProvider的理解
說說ContentProvider、ContentResolver、ContentObserver 之間的關係
請描述一下廣播BroadcastReceiver的理解
廣播的分類
廣播使用的方式和場景
在manifest 和程式碼中如何註冊和使用BroadcastReceiver?
本地廣播和全域性廣播有什麼差別?
BroadcastReceiver,LocalBroadcastReceiver 區別
AlertDialog,popupWindow,Activity區別
Application 和 Activity 的 Context 物件的區別
Android屬性動畫特性
如何匯入外部資料庫?
LinearLayout、RelativeLayout、FrameLayout的特性及對比,並介紹使用場景。
談談對介面與回撥的理解
回撥的原理
寫一個回撥demo
介紹下SurfView
RecycleView的使用
序列化的作用,以及Android兩種序列化的區別
差值器
估值器
Android中資料儲存方式

(二)Android原始碼相關分析

Android動畫框架實現原理
Android各個版本API的區別
Requestlayout,onlayout,onDraw,DrawChild區別與聯絡
invalidate和postInvalidate的區別及使用
Activity-Window-View三者的差別
談談對Volley的理解
如何優化自定義View
低版本SDK如何實現高版本api?
描述一次網路請求的流程
HttpUrlConnection 和 okhttp關係
Bitmap物件的理解
looper架構
ActivityThread,AMS,WMS的工作原理
自定義View如何考慮機型適配
自定義View的事件
AstncTask+HttpClient 與 AsyncHttpClient有什麼區別?
LaunchMode應用場景
AsyncTask 如何使用?
SpareArray原理
請介紹下ContentProvider 是如何實現資料共享的?
AndroidService與Activity之間通訊的幾種方式
IntentService原理及作用是什麼?
說說Activity、Intent、Service 是什麼關係
ApplicationContext和ActivityContext的區別
SP是程式同步的嗎?有什麼方法做到同步?
談談多執行緒在Android中的使用
程式和 Application 的生命週期
封裝View的時候怎麼知道view的大小
RecycleView原理
AndroidManifest的作用與理解

(三)常見的一些原理性問題

Handler機制和底層實現
Handler、Thread和HandlerThread的差別
handler發訊息給子執行緒,looper怎麼啟動?
關於Handler,在任何地方new Handler 都是什麼執行緒下?
ThreadLocal原理,實現及如何保證Local屬性?
請解釋下在單執行緒模型中Message、Handler、Message Queue、Looper之間的關係
請描述一下View事件傳遞分發機制
Touch事件傳遞流程
事件分發中的onTouch 和onTouchEvent 有什麼區別,又該如何使用?
View和ViewGroup分別有哪些事件分發相關的回撥方法
View重新整理機制
View繪製流程
自定義控制元件原理
自定義View如何提供獲取View屬性的介面?
Android程式碼中實現WAP方式聯網
AsyncTask機制
AsyncTask原理及不足
如何取消AsyncTask?
為什麼不能在子執行緒更新UI?
ANR產生的原因是什麼?
ANR定位和修正
oom是什麼?
什麼情況導致oom?
有什麼解決方法可以避免OOM?
Oom 是否可以try catch?為什麼?
記憶體洩漏是什麼?
什麼情況導致記憶體洩漏?
如何防止執行緒的記憶體洩漏?
記憶體洩露場的解決方法
記憶體洩漏和記憶體溢位區別?
LruCache預設快取大小
ContentProvider的許可權管理(解答:讀寫分離,許可權控制-精確到表級,URL控制)
如何通過廣播攔截和abort一條簡訊?
廣播是否可以請求網路?
廣播引起anr的時間限制是多少?
計算一個view的巢狀層級
Activity棧
Android執行緒有沒有上限?
執行緒池有沒有上限?
ListView重用的是什麼?
Android為什麼引入Parcelable?
有沒有嘗試簡化Parcelable的使用?

(四)開發中常見的一些問題

ListView 中圖片錯位的問題是如何產生的?
混合開發有了解嗎?
知道哪些混合開發的方式?說出它們的優缺點和各自使用場景?(解答:比如:RN,weex,H5,小程式,WPA等。做Android的瞭解一些前端js等還是很有好處的);
螢幕適配的處理技巧都有哪些?
伺服器只提供資料接收介面,在多執行緒或多程式條件下,如何保證資料的有序到達?
動態佈局的理解
怎麼去除重複程式碼?
畫出 Android 的大體架構圖
Recycleview和ListView的區別
ListView圖片載入錯亂的原理和解決方案
動態許可權適配方案,許可權組的概念
Android系統為什麼會設計ContentProvider?
下拉狀態列是不是影響activity的生命週期
如果在onStop的時候做了網路請求,onResume的時候怎麼恢復?
Bitmap 使用時候注意什麼?
Bitmap的recycler()
Android中開啟攝像頭的主要步驟
ViewPager使用細節,如何設定成每次只初始化當前的Fragment,其他的不初始化?
點選事件被攔截,但是想傳到下面的View,如何操作?
微信主頁面的實現方式
微信上訊息小紅點的原理
CAS介紹(這是阿里巴巴的面試題,我不是很瞭解,可以參考部落格: CAS簡介http://blog.csdn.net/jly4758/article/details/46673835

高階技術面試題

這裡講的是大公司需要用到的一些高階Android技術,這裡專門整理了一個文件,希望大家都可以看看。這些題目有點技術含量,需要好點時間去研究一下的。

(一)圖片

圖片庫對比
圖片庫的原始碼分析
圖片框架快取實現
LRUCache原理
圖片載入原理
自己去實現圖片庫,怎麼做?
Glide原始碼解析
Glide使用什麼快取?
Glide記憶體快取如何控制大小?

(二)網路和安全機制

網路框架對比和原始碼分析
自己去設計網路請求框架,怎麼做?
okhttp原始碼
網路請求快取處理,okhttp如何處理網路快取的
從網路載入一個10M的圖片,說下注意事項
TCP的3次握手和四次揮手
TCP與UDP的區別
TCP與UDP的應用
HTTP協議
HTTP1.0與2.0的區別
HTTP報文結構
HTTP與HTTPS的區別以及如何實現安全性
如何驗證證照的合法性?
https中哪裡用了對稱加密,哪裡用了非對稱加密,對加密演算法(如RSA)等是否有了解?
client如何確定自己傳送的訊息被server收到?
談談你對WebSocket的理解
WebSocket與socket的區別
談談你對安卓簽名的理解。
請解釋安卓為啥要加簽名機制?
視訊加密傳輸
App 是如何沙箱化,為什麼要這麼做?
許可權管理系統(底層的許可權是如何進行 grant 的)?

(三)資料庫

sqlite升級,增加欄位的語句
資料庫框架對比和原始碼分析
資料庫的優化
資料庫資料遷移問題

(四)演算法

排序演算法有哪些?
最快的排序演算法是哪個?
手寫一個氣泡排序
手寫快速排序程式碼
快速排序的過程、時間複雜度、空間複雜度
手寫堆排序
堆排序過程、時間複雜度及空間複雜度
寫出你所知道的排序演算法及時空複雜度,穩定性
二叉樹給出根節點和目標節點,找出從根節點到目標節點的路徑
給阿里2萬多名員工按年齡排序應該選擇哪個演算法?
GC演算法(各種演算法的優缺點以及應用場景)
蟻群演算法與蒙特卡洛演算法
子串包含問題(KMP 演算法)寫程式碼實現
一個無序,不重複陣列,輸出N個元素,使得N個元素的和相加為M,給出時間複雜度、空間複雜度。手寫演算法
萬億級別的兩個URL檔案A和B,如何求出A和B的差集C(提示:Bit對映->hash分組->多檔案讀寫效率->磁碟定址以及應用層面對定址的優化)
百度POI中如何試下查詢最近的商家功能(提示:座標映象+R樹)。
兩個不重複的陣列集合中,求共同的元素。
兩個不重複的陣列集合中,這兩個集合都是海量資料,記憶體中放不下,怎麼求共同的元素?
一個檔案中有100萬個整數,由空格分開,在程式中判斷使用者輸入的整數是否在此檔案中。說出最優的方法
一張Bitmap所佔記憶體以及記憶體佔用的計算
2000萬個整數,找出第五十大的數字?
燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若干條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?
求1000以內的水仙花數以及40億以內的水仙花數
5枚硬幣,2正3反如何劃分為兩堆然後通過翻轉讓兩堆中正面向上的硬8幣和反面向上的硬幣個數相同
時針走一圈,時針分針重合幾次
N*N的方格紙,裡面有多少個正方形
x個蘋果,一天只能吃一個、兩個、或者三個,問多少天可以吃完?

(五)外掛化、模組化、元件化、熱修復、增量更新、Gradle

對熱修復和外掛化的理解
外掛化原理分析
模組化實現(好處,原因)
熱修復,外掛化
專案元件化的理解
描述清點選 Android Studio 的 build 按鈕後發生了什麼

(六)架構設計和設計模式

談談你對Android設計模式的理解
MVC MVP MVVM原理和區別
你所知道的設計模式有哪些?
專案中常用的設計模式
手寫生產者/消費者模式
寫出觀察者模式的程式碼
介面卡模式,裝飾者模式,外觀模式的異同?
用到的一些開源框架,介紹一個看過原始碼的,內部實現過程。
談談對RxJava的理解
RxJava的功能與原理實現
RxJava的作用,與平時使用的非同步操作來比的優缺點
說說EventBus作用,實現方式,代替EventBus的方式
從0設計一款App整體架構,如何去做?
說一款你認為當前比較火的應用並設計(比如:直播APP,P2P金融,小視訊等)
談談對java狀態機理解
Fragment如果在Adapter中使用應該如何解耦?
Binder機制及底層實現
對於應用更新這塊是如何做的?(解答:灰度,強制更新,分割槽域更新)?
實現一個Json解析器(可以通過正則提高速度)
統計啟動時長,標準

(七)效能優化

如何對Android 應用進行效能分析以及優化?
ddms 和 traceView
效能優化如何分析systrace?
用IDE如何分析記憶體洩漏?
Java多執行緒引發的效能問題,怎麼解決?
啟動頁白屏及黑屏解決?
啟動太慢怎麼解決?
怎麼保證應用啟動不卡頓?
App啟動崩潰異常捕捉
自定義View注意事項
現在下載速度很慢,試從網路協議的角度分析原因,並優化(提示:網路的5層都可以涉及)。
Https請求慢的解決辦法(提示:DNS,攜帶資料,直接訪問IP)
如何保持應用的穩定性
RecyclerView和ListView的效能對比
ListView的優化
RecycleView優化
View渲染
Bitmap如何處理大圖,如一張30M的大圖,如何預防OOM
java中的四種引用的區別以及使用場景
強引用置為null,會不會被回收?

(八)NDK、jni、Binder、AIDL、程式通訊有關

請介紹一下NDK
什麼是NDK庫?
jni用過嗎?
如何在jni中註冊native函式,有幾種註冊方式?
Java如何呼叫c、c++語言?
jni如何呼叫java層程式碼?
程式間通訊的方式?
Binder機制
簡述IPC?
什麼是AIDL?
AIDL解決了什麼問題?
AIDL如何使用?
Android 上的 Inter-Process-Communication 跨程式通訊時如何工作的?
多程式場景遇見過麼?
Android程式分類?
程式和 Application 的生命週期?
程式排程
談談對程式共享和執行緒安全的認識
談談對多程式開發的理解以及多程式應用場景
什麼是協程?

(九)framework層、ROM定製、Ubuntu、Linux之類的問題

java虛擬機器的特性
談談對jvm的理解
JVM記憶體區域,開執行緒影響哪塊記憶體
對Dalvik、ART虛擬機器有什麼瞭解?
Art和Dalvik對比
虛擬機器原理,如何自己設計一個虛擬機器(記憶體管理,類載入,雙親委派)
談談你對雙親委派模型理解
JVM記憶體模型,記憶體區域
類載入機制
談談對ClassLoader(類載入器)的理解
談談對動態載入(OSGI)的理解
記憶體物件的迴圈引用及避免
記憶體回收機制、GC回收策略、GC原理時機以及GC物件
垃圾回收機制與呼叫System.gc()區別
Ubuntu編譯安卓系統
系統啟動流程是什麼?(提示:Zygote程式 –> SystemServer程式 –> 各種系統服務 –> 應用程式)
大體說清一個應用程式安裝到手機上時發生了什麼
簡述Activity啟動全部過程
App啟動流程,從點選桌面開始
邏輯地址與實體地址,為什麼使用邏輯地址?
Android為每個應用程式分配的記憶體大小是多少?
Android中程式記憶體的分配,能不能自己分配定額記憶體?
程式保活的方式
如何保證一個後臺服務不被殺死?(相同問題:如何保證service在後臺不被kill?)比較省電的方式是什麼?
App中喚醒其他程式的實現方式

非技術性問題&HR問題彙總

這裡整理的是一些與技術沒有直接關係的面試題,但是能夠考察你的綜合水平,所以不要以為不是技術問題,就不看,往往有時候就是這樣一些細節的題目被忽視,而錯過了一次次面試機會。

(一)非技術問題

介紹你做過的哪些專案
都使用過哪些框架、平臺?
都使用過哪些自定義控制元件?
研究比較深入的領域有哪些?
對業內資訊的關注渠道有哪些?
最近都讀哪些書?
有沒有什麼開源專案?
自己最擅長的技術點,最感興趣的技術領域和技術點
專案中用了哪些開源庫,如何避免因為引入開源庫而導致的安全性和穩定性問題
實習過程中做了什麼,有什麼產出?

(二)HR提出的面試問題

您在前一家公司的離職原因是什麼?
講一件你印象最深的一件事情
介紹一個你影響最深的專案
介紹你最熱愛最擅長的專業領域
公司實習最大的收穫是什麼?
與上級意見不一致時,你將怎麼辦?
自己的優點和缺點是什麼?並舉例說明?
你的學習方法是什麼樣的?實習過程中如何學習?實習專案中遇到的最大困難是什麼以及如何解決的?
說一件最能證明你能力的事情
針對你你申請的這個職位,你認為你還欠缺什麼
如果通過這次面試我們單位錄用了你,但工作一段時間卻發現你根本不適合這個職位,你怎麼辦?
專案中遇到最大的困難是什麼?如何解決的?
你的職業規劃以及個人目標、未來發展路線及求職定位
如果你在這次面試中沒有被錄用,你怎麼打算?
評價下自己,評價下自己的技術水平,個人程式碼量如何?
通過哪些渠道瞭解的招聘資訊,其他同學都投了哪些公司?
業餘都有哪些愛好?
你做過的哪件事最令自己感到驕傲?
假如你晚上要去送一個出國的同學去機場,可單位臨時有事非你辦不可,你怎麼辦?
就你申請的這個職位,你認為你還欠缺什麼?
當前的offer狀況;如果BATH都給了offer該如何選?
你對一份工作更看重哪些方面?平臺,技術,氛圍,城市,還是money?
理想薪資範圍;杭州崗和北京崗選哪個?
理想中的工作環境是什麼?
談談你對跳槽的看法
說說你對行業、技術發展趨勢的看法
實習過程中周圍同事/同學有哪些值得學習的地方?
家人對你的工作期望及自己的工作期望
如果你的工作出現失誤,給本公司造成經濟損失,你認為該怎麼辦?
若上司在公開會議上誤會你了,該如何解決?
是否可以實習,可以實習多久?
在五年的時間內,你的職業規劃
你看中公司的什麼?或者公司的那些方面最吸引你?

本文參考相關博文如下:
可原文檢視。
阿里、騰訊、百度、華為、京東、搜狗和滴滴最新面試題彙集
2017下半年,一二線網際網路公司Android面試題彙總
2017 年初、阿里、騰訊、百度、華為、京東、搜狗和滴滴面試題彙集(更新篇)
android_interview
AndroidInterview-Q-A

最後附上 紅橙Darren最近的面試總結

總結一下找工作這段時間的經歷,問得最多的是自定義 View 基本每家都問,問 View 的繪製流程,自定義View的步驟,有時會涉及到細節比如 PhoneWindow 例項是在哪個類哪個方法中例項化的,Selector 是怎麼實現的,View 動畫是怎麼實現的為什麼移動後點選事件還在原來的位置,屬性動畫的原理機制。Android 系統原始碼部分,事件攔截和分發,程式間的通訊方式,應用的建立啟動流程,Handler 是怎麼導致記憶體洩露的。第三方庫的原始碼,Glide、OkHttp 和 Retrofit 問得比較多,MVC,MVP和 MVVM 開發模式優缺點,常用設計模式理解問得也多,大公司 Binder 驅動和虛擬機器方面問得比較多。資料結構和演算法,Java 的常用集合實現原理,比如 ArrayList ,LinkedHashMap 的實現原理,快取淘汰策略,紅黑樹和二叉樹,最短路徑規劃,海量資料篩選,很榮幸的是面試官目前還沒有要我手寫演算法。效能優化,如何檢測一段程式碼的執行時間,介面卡頓如何修復,滑動不流暢怎麼處理, 50fps 有什麼辦法可以提高到 60fps,記憶體洩露怎麼檢測,leakcanay 的原理。執行緒和執行緒池,wait() 和 sleep() 的區別,同步鎖,執行緒池的引數詳解,AsyncTask 原始碼引數詳解,我能記得的大概就這些了。最後還囉嗦一下,有很多公司標明瞭,你必須要會 C 和 C++, OpenGL 或 OpenCv 或音視訊編解碼。選工作的時候要小心,我寫的是熟悉,因為像音視訊和 OpenCv 影象處理這些方面,沒做個6、7年最好不要寫精通。

附上兩篇演算法的:
https://mp.weixin.qq.com/s/msj314u5U2v5477cgkzojg
https://mp.weixin.qq.com/s/d03jcMWY0zjxtw4KLmCxrw

來一篇帶答案的
https://mp.weixin.qq.com/s/S8t-gLjl9BCAABbsH-9lHQ

相關文章