【轉-面試題】2017下半年,一二線互聯網公司Android面試題彙總

轉自 逆流的魚yuiop 何俊林

轉眼就到了2017年10月,離2018就剩下幾個月了,不少人估計正在跳槽的路上,整理一份Android高級開發工程師面試集錦,對照這些問題進行復習,將會事半功倍。廢話很少說,直接上乾貨,因爲是整理於網絡,就不標明原創,但願你們多多分享和轉發給有須要的同窗。

 

阿里巴巴

  • LRUCache原理java

  • 圖片加載原理android

  • 模塊化實現(好處,緣由)面試

  • JVM算法

  • 視頻加密傳輸sql

  • 統計啓動時長,標準數據庫

  • 如何保持應用的穩定性設計模式

  • 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的做用,優缺點

相關文章
相關標籤/搜索