2017下半年,一二線網際網路公司Android面試題彙總

weixin_33890499發表於2018-04-09

阿里巴巴

LRUCache原理
圖片載入原理
模組化實現(好處,原因)
JVM
視訊加密傳輸
統計啟動時長,標準
如何保持應用的穩定性
ThreadLocal 原理
談談classloader
動態佈局
熱修復,外掛化
HashMap原始碼,SpareArray原理
效能優化,怎麼保證應用啟動不卡頓
怎麼去除重複程式碼
SP是程式同步的嗎?有什麼方法做到同步
介紹下SurfView
HashMap實現原理,ConcurrentHashMap 的實現原理
BroadcastReceiver,LocalBroadcastReceiver 區別
Bundle 機制
Handler 機制
android 事件傳遞機制
執行緒間 操作 List
App啟動流程,從點選桌面開始
動態載入
類載入器
OSGI
Https請求慢的解決辦法,DNS,攜帶資料,直接訪問IP
GC回收策略
畫出 Android 的大體架構圖
描述清點選 Android Studio 的 build 按鈕後發生了什麼
大體說清一個應用程式安裝到手機上時發生了什麼;
對 Dalvik、ART 虛擬機器有基本的瞭解;
Android 上的 Inter-Process-Communication 跨程式通訊時如何工作的;
App 是如何沙箱化,為什麼要這麼做;
許可權管理系統(底層的許可權是如何進行 grant 的)
程式和 Application 的生命週期;
系統啟動流程 Zygote程式 –> SystemServer程式 –> 各種系統服務 –> 應用程式
recycleview listview 的區別,效能
排序,快速排序的實現
樹:B+樹的介紹
圖:有向無環圖的解釋
TCP/UDP的區別
synchronized與Lock的區別
volatile
Java執行緒池
Java中物件的生命週期
類載入機制
雙親委派模型
Android事件分發機制
MVP模式
RxJava
抽象類和介面的區別
集合 Set實現 Hash 怎麼防止碰撞
JVM 記憶體區域 開執行緒影響哪塊記憶體
垃圾收集機制 物件建立,新生代與老年代
二叉樹 深度遍歷與廣度遍歷
B樹、B+樹
訊息機制
程式排程
程式與執行緒
死鎖
程式狀態
JVM記憶體模型
併發集合瞭解哪些
ConCurrentHashMap實現
CAS介紹
開啟執行緒的三種方式,run()和start()方法區別
執行緒池
常用資料結構簡介
判斷環(猜測應該是連結串列環)
排序,堆排序實現
連結串列反轉
騰訊

synchronized用法
volatile用法
動態許可權適配方案,許可權組的概念
網路請求快取處理,okhttp如何處理網路快取的
圖片載入庫相關,bitmap如何處理大圖,如一張30M的大圖,如何預防OOM
程式保活
listview圖片載入錯亂的原理和解決方案
https相關,如何驗證證照的合法性,https中哪裡用了對稱加密,哪裡用了非對稱加密,對加密演算法(如RSA)等是否有了解

滴滴

MVP
廣播(動態註冊和靜態註冊區別,有序廣播和標準廣播)
service生命週期
handler實現機制(很多細節需要關注:如執行緒如何建立和退出訊息迴圈等等)
多執行緒(關於AsyncTask缺陷引發的思考)
資料庫資料遷移問題
設計模式相關(例如Android中哪裡使用了觀察者模式,單例模式相關)
x個蘋果,一天只能吃一個、兩個、或者三個,問多少天可以吃完
TCP與UDP區別與應用(三次握手和四次揮手)涉及到部分細節(如client如何確定自己傳送的訊息被server收到) HTTP相關 提到過Websocket 問了WebSocket相關以及與socket的區別
是否熟悉Android jni開發,jni如何呼叫java層程式碼
程式間通訊的方式
java註解
計算一個view的巢狀層級
專案元件化的理解
多執行緒斷點續傳原理
Android系統為什麼會設計ContentProvider,程式共享和執行緒安全問題
jvm相關
Android相關優化(如記憶體優化、網路優化、佈局優化、電量優化、業務優化)
EventBus實現原理
美團

static synchronized 方法的多執行緒訪問和作用,同一個類裡面兩個synchronized方法,兩個執行緒同時訪問的問題
內部類和靜態內部類和匿名內部類,以及專案中的應用
handler發訊息給子執行緒,looper怎麼啟動
View事件傳遞
activity棧
封裝view的時候怎麼知道view的大小
arraylist和linkedlist的區別,以及應用場景
怎麼啟動service,service和activity怎麼進行資料互動
下拉狀態列是不是影響activity的生命週期,如果在onStop的時候做了網路請求,onResume的時候怎麼恢復
view渲染

今日頭條
資料結構中堆的概念,堆排序
死鎖的概念,怎麼避免死鎖
ReentrantLock 、synchronized和volatile(n面)
HashMap
singleTask啟動模式
用到的一些開源框架,介紹一個看過原始碼的,內部實現過程。
訊息機制實現
ReentrantLock的內部實現
App啟動崩潰異常捕捉
事件傳遞機制的介紹
ListView的優化
二叉樹,給出根節點和目標節點,找出從根節點到目標節點的路徑
模式MVP,MVC介紹
斷點續傳的實現
集合的介面和具體實現類,介紹
TreeMap具體實現
synchronized與ReentrantLock
手寫生產者/消費者模式
邏輯地址與實體地址,為什麼使用邏輯地址
一個無序,不重複陣列,輸出N個元素,使得N個元素的和相加為M,給出時間複雜度、空間複雜度。手寫演算法
.Android程式分類
前臺切換到後臺,然後再回到前臺,Activity生命週期回撥方法。彈出Dialog,生命值週期回撥方法。
Activity的啟動模式
愛奇藝
RxJava的功能與原理實現
RecycleView的使用,原理,RecycleView優化
ANR的原因
四大元件
Service的開啟方式
Activity與Service通訊的方式
Activity之間的通訊方式
HashMap的實現,與HashSet的區別
JVM記憶體模型,記憶體區域
Java中同步使用的關鍵字,死鎖
MVP模式
Java設計模式,觀察者模式
Activity與Fragment之間生命週期比較
廣播的使用場景
百度
Bitmap 使用時候注意什麼?
Oom 是否可以try catch ?
記憶體洩露如何產生?
介面卡模式,裝飾者模式,外觀模式的異同?
ANR 如何產生?
String buffer 與string builder 的區別?
如何保證執行緒安全?
java四中引用
Jni 用過麼?
多程式場景遇見過麼?
關於handler,在任何地方new handler 都是什麼執行緒下
sqlite升級,增加欄位的語句
bitmap recycler 相關
強引用置為null,會不會被回收?
glide 使用什麼快取?
Glide 記憶體快取如何控制大小?
如何保證多執行緒讀寫檔案的安全?
攜程
Activity啟動模式
廣播的使用方式,場景
App中喚醒其他程式的實現方式
AndroidManifest的作用與理解
List,Set,Map的區別
HashSet與HashMap怎麼判斷集合元素重複
Java中記憶體區域與垃圾回收機制
EventBus作用,實現方式,代替EventBus的方式
Android中開啟攝像頭的主要步驟
網易
集合
concurrenthashmap
volatile
synchronized與Lock
Java執行緒池
wait/notify
NIO
垃圾收集器
Activity生命週期
AlertDialog,popupWindow,Activity區別
小米
String 為什麼要設計成不可變的?
fragment 各種情況下的生命週期
Activity 上有 Dialog 的時候按 home 鍵時的生命週期
橫豎屏切換的時候,Activity 各種情況下的生命週期
Application 和 Activity 的 context 物件的區別
序列化的作用,以及 Android 兩種序列化的區別。
List 和 Map 的實現方式以及儲存方式。
靜態內部類的設計意圖。
執行緒如何關閉,以及如何防止執行緒的記憶體洩漏
360
軟引用、弱引用區別
垃圾回收
多執行緒:怎麼用、有什麼問題要注意;Android執行緒有沒有上限,然後提到執行緒池的上限
JVM

OOM,記憶體洩漏
ANR怎麼分析解決
LinearLayout、RelativeLayout、FrameLayout的特性、使用場景
如何實現Fragment的滑動
ViewPager使用細節,如何設定成每次只初始化當前的Fragment,其他的不初始化
ListView重用的是什麼
程式間通訊的機制
AIDL機制
AsyncTask機制
如何取消AsyncTask
序列化
Android為什麼引入Parcelable
有沒有嘗試簡化Parcelable的使用
AIDL機制
專案:拉活怎麼做的
應用安裝過程
某海外直播公司
執行緒和程式的區別?
為什麼要有執行緒,而不是僅僅用程式?
演算法判斷單連結串列成環與否?
如何實現執行緒同步?
hashmap資料結構?
arraylist 與 linkedlist 異同?
object類的equal 和hashcode 方法重寫,為什麼?
hashmap如何put資料(從hashmap原始碼角度講解)?
簡述IPC?
fragment之間傳遞資料的方式?
簡述tcp四次揮手?
threadlocal原理
記憶體洩漏的可能原因?
用IDE如何分析記憶體洩漏?
OOM的可能原因?
執行緒死鎖的4個條件?
差值器&估值器
簡述訊息機制相關
程式間通訊方式?
Binder相關?
觸控事件的分發?
簡述Activity啟動全部過程?
okhttp原始碼?
RxJava簡介及其原始碼解讀?
效能優化如何分析systrace?
廣播的分類?
點選事件被攔截,但是相傳到下面的view,如何操作?
Glide原始碼?
ActicityThread相關?
volatile的原理
synchronize的原理
lock原理
翻轉一個單項鍊表
string to integer
合併多個單有序連結串列(假設都是遞增的)
其他公司

四大元件
Android中資料儲存方式
微信主頁面的實現方式
微信上訊息小紅點的原理
兩個不重複的陣列集合中,求共同的元素。
上一問擴充套件,海量資料,記憶體中放不下,怎麼求出。
Java中String的瞭解。
ArrayList與LinkedList區別
堆排序過程,時間複雜度,空間複雜度
快速排序的時間複雜度,空間複雜度
RxJava的作用,與平時使用的非同步操作來比,優勢
Android訊息機制原理
Binder機制介紹
為什麼不能在子執行緒更新UI
JVM記憶體模型
Android中程式記憶體的分配,能不能自己分配定額記憶體
垃圾回收機制與呼叫System.gc()區別
Android事件分發機制
斷點續傳的實現
RxJava的作用,優缺點

相關文章