1. 程式人生 > >2018 Android面試題整理

2018 Android面試題整理

    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的作用,優缺點
---------------------
原文地址:https://blog.csdn.net/huanghuansen/article/details/81534107