Android 面試題整理

概述

網上有不少的面試題系列,Android學習路線系列,本次整理也是看下本身對Android的熟悉程度,有哪些本身會了,哪些本身還不會須要學習,以便於本身更好的提升本身html

(文章末尾附有相關參考文章,都寫的特別好)java

java基礎

  • java根類Object的方法說明
    fangjian0423.github.io/2016/03/12/…android

  • java JVM虛擬機
    blog.csdn.net/qq_41701956…git

  • Object類的equal和hashCode方法須要同時重寫,爲何? www.cnblogs.com/tiancai/p/9…
    若是2個對象使用equals方法進行比較而且相同的話,那麼這2個對象的hashCode方法的值也必須相等。 違反這一點產生的後果就是若是一個stu1實例是Student(「fo」, 11),stu2實例是Student(「fo」, 11),那麼這2個實例是相等的,可是他們的hashCode不同,這樣是致使哈希表中都會存入stu1實例和stu2實例,可是實際狀況下,stu1和stu2是重複數據,只容許存在一條數據在哈希表中。因此這一點是很是重點的,再強調一下:若是2個對象的equals方法相等,那麼他們的hashCode值也必須相等,反之,若是2個對象hashCode值相等,可是equals不相等,這樣會影響性能,因此仍是建議2個方法都一塊兒重寫。github

  • HashMap原理,Hash衝突,併發集合,線程安全集合及實現原理 blog.csdn.net/ptsx0607/ar…面試

  • HashMap 和 HashTable 區別算法

  • HashCode 做用,如何重載hashCode方法數組

  • ArrayList與LinkList區別與聯繫緩存

  • GC機制安全

  • Java反射機制,Java代理模式

  • Synchronized原理

  • Volatile實現原理

  • 死鎖的四個必要條件 blog.csdn.net/yangquanhui…
    (1) 互斥條件:一個資源每次只能被一個進程使用。
    (2) 佔有且等待:一個進程因請求資源而阻塞時,對已得到的資源保持不放。
    (3)不可強行佔有:進程已得到的資源,在末使用完以前,不能強行剝奪。
    (4) 循環等待條件:若干進程之間造成一種頭尾相接的循環等待資源關係 存在一個進程等待序列{P1,P2,...,Pn},其中P1等待P2所佔有的某一資源,P2等待P3所佔有的某一 源,......,而Pn等待P1所佔有的的某一資源,造成一個進程循環等待環。就像前面的過獨木橋問題,甲等待乙 佔有的橋面,而乙又等待甲佔有的橋面,從而彼此循環等待。

  • 怎麼避免死鎖

  • 對象鎖和類鎖是否會互相影響

  • 方法鎖、對象鎖、類鎖的意義和區別

  • 寫一個單例模式,如何作到線程安全(雙重加鎖)

  • Java鎖的種類: 公平鎖、樂觀鎖、互斥鎖、分段鎖、偏向鎖、自旋鎖等

  • ThreadLocal的原理和用法

  • ThreadPool的用法和示例 —— 線程池的實現原理

  • 開啓線程的三種方式

  • wait()和sleep()的區別

  • join的用法

  • 什麼致使線程阻塞?

  • 線程如何關閉?

  • run()和start()方法區別

  • 進程和線程的區別

  • int、char、long各佔多少字節數

  • 引用類型

  • 談談對java多態的理解

  • String、StringBuffer、StringBuilder區別

數據結構

Android 相關

  • Android各個版本API的區別 mp.weixin.qq.com/s/uPKY372k1…

  • Activity-Window-View三者的差異 juejin.im/entry/59632…

  • Application生命週期
    blog.csdn.net/maican666/a…

  • Android Activity生命週期
    www.jianshu.com/p/fb44584da…

  • onStart()與onResume()有什麼區別?

  • Android Activity啓動模式
    blog.csdn.net/linghu_java…

  • singleInstance和singleTask的應用場景 xiazdong.github.io/2015/03/08/…

  • service和activity怎麼進行數據交互

  • Fragment的生命週期

  • Android Service、IntentService,Service和組件間通訊

  • 如何保證Service不被殺死?如何保證進程不被殺死?

  • Service的開啓方式

  • Android消息機制
    www.jianshu.com/p/36a978b6c…

  • Looper.loop()爲何不會阻塞主線程

  • Handler、Thread和HandlerThread的差異

  • Android 多線程的實現:Thread、HandlerThread、AsyncTask、IntentService、RxJava

  • ActivityThread工做原理

  • RecyclerView與ListView(緩存原理,區別聯繫,優缺點)

  • View的繪製原理,自定義View,自定義ViewGroup

  • getWidth()方法和getMeasureWidth()區別呢?

  • Asset目錄與res目錄的區別

  • 序列化serializable和parcelable的區別

  • ANR產生的緣由是什麼

  • Apk 打包流程梳理

  • Android 觸摸事件機制

  • APK瘦身

  • Android進程間通信 aidl

  • Android Activity啓動原理

  • Android AMS的瞭解

  • Android 進程間通信的原理

  • Android 模塊化 組件化 插件化 移動端架構的瞭解

  • Android 性能優化

  • 各類原理,經典第三方庫源碼系列(glide,OKHTTP,EventBus等等)

最後

出了技術相關的知識外,咱們還須要額外準備一些東西

  • 你工做中最牛逼or最成功or最有貢獻的一件事是什麼?
  • 項目中的亮點是哪些?怎麼實現的?(實在沒有的本身去找,只能用別人的案例了)
  • 作項目的過程當中有沒有遇到過困難?怎麼克服的?

參考

如下幾篇關於寫Android面試的文章都寫的很好

相關文章
相關標籤/搜索