最全Android面試題大集合(Android、Java、計算機基礎、設計模式)持續更新

寫在前邊

最近在準備面試,費了很大勁收集整理了面試題,包括Android基礎、Android高級、Java、計算機基礎、設計模式、以及一些常見的問題。所有題目來源於網絡,包含了掘金,簡書以及其他平臺的文章。面經等等。有大廠也有小公司,有基礎也有高級,文章最後附上了鏈接,希望能幫到有需要的人,做好充足的準備,找到滿意的工作。


Android

  • 基礎:

    • 1.四大組件及生命週期;

    • 2.安卓子線程是否能更新UI,如果能請說明具體細節。

    • 3.什麼是ANR?ANR產生的原因和解決步驟 ?ANR 具體產生的類型有哪些,具體說下其產生的最大超時時間。 如何避免它?

    • 4.activty和Fragmengt之間怎麼通信,Fragmengt和Fragmengt怎麼通信

    • 5.廣播註冊一般有幾種,各有什麼優缺點

    • 6.服務啓動一般有幾種,服務和activty之間怎麼通信,服務和服務之間怎麼通信

    • 7.數據庫的知識,包括本地數據庫優化點。

    • 8.如何針對具體的SQL做優化;mysql的存儲引擎有哪些,區別;

    • 9.請描述安卓四大組建之間的關係,並說下安卓MVC的設計模式。

    • 10.ContentProvider的權限管理(讀寫分離,權限控制-精確到表級,URL控制);

    • 11.Activity的四種啓動模式對比;Activity狀態保存於恢復;

    • 12.什麼是AIDL 以及如何使用;

    • 13.請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關係;

    • 14.Fragment生命週期;Fragment狀態保存;

    • 15.startActivityForResult是哪個類的方法,在什麼情況下使用,如果在Adapter中使用應該如何解耦;

    • 16.AsyncTask原理及不足(AsyncTask 如何使用;);

    • 17.IntentService原理;

    • 18.Activity 怎麼和Service 綁定,怎麼在Activity 中啓動自己對應的Service;

    • 20.請描述一下Service 的生命週期;

    • 21.如何通過廣播攔截和abort一條短信;

    • 22.廣播是否可以請求網絡?廣播引起anr的時間限制;

    • 23.事件分發中的onTouch 和onTouchEvent 有什麼區別,又該如何使用?

    • 24.說說ContentProvider、ContentResolver、ContentObserver 之間的關係;

    • 25.請介紹下ContentProvider 是如何實現數據共享的;

    • 26.Handler機制及底層實現;

    • 27.Binder機制及底層實現;

    • 28.在manifest 和代碼中如何註冊和使用BroadcastReceiver;

    • 29.說說Activity、Intent、Service 是什麼關係;

    • 30.ApplicationContext和ActivityContext的區別;

    • 31.Serializable 和Parcelable 的區別;

    • 32.請描述一下BroadcastReceiver;

    • 33.OOM的避免異常及解決方法;

    • 34.兩個Activity 之間跳轉時必然會執行的是哪幾個方法?

    • 35.理解Activity,View,Window三者關係

    • 36.四種LaunchMode及其使用場景

    • 37.recycleView與listView的區別

    • 38.什麼情況下,Activity的onNewInstent()方法會執行?Activity的啓動模式相關。

    • 39.Fragment能否不依賴於Activity存在?簡析一下Fragment的棧管理。

    • 40.View的post(Runnable r)方法裏,r會帶來一個新的線程嗎?多線程相關。

    • 41.在非UI線程中使用Handler需要注意哪些問題?

    • 42.Android ListView優化之局部刷新(更新)(非notifyDataSetChanged)

    • 43.EventBus的機制是什麼?和Handler的區別怎樣?

    • 44.Broadcast Receiver在什麼情況下能用得到?

    • 45.請簡述一下你對fragment的理解?

    • 46.請簡述一下Fragment的生命週期?

    • 47.說說你知道的Android5.0和Android6.0的新功能?

    • 48.RecyclerView 和 ListView 使用對比分析

    • 49.Android的APK瘦身方法你瞭解多少?

    • 50.android項目目錄中res目錄和assets目錄的區別?

    • 51.你用過Gradle嗎?

    • 52.Activity的四種狀態是什麼,分別對應的Activity的生命週期是什麼?

    • 53.請說說你是怎麼優化ListView的?

    • 54.android中進程的優先級?

    • 55.Serializable和Parcelable

    • 56.Context相關

    • 57.Jar和Aar的區別

    • 58.什麼是三級緩存

    • 59.Android爲每個應用程序分配的內存大小是多少

    • 60.更新UI方式

    • 61.Activity啓動過程詳解

    • 62.SurfaceView和View的最本質的區別


  • 高級

    • 1.安卓事件分發機制,請詳細說下整個流程

    • 2.安卓view繪製機制和加載過程,請詳細說下整個流程

    • 3.多線程和安全問題(安卓解決線程併發問題)

    • 4.多線程多點下載的過程

    • 5.怎麼讓自己的進程不被第三方應用殺掉,系統殺掉之後怎麼能啓動起來。

    • 6.自定義view效率高於xml定義嗎?說明理由。

    • 7.activty的加載過程 請詳細介紹下(不是生命週期切記)

    • 8.安卓採用自動垃圾回收機制,請說下安卓內存管理的原理

    • 9.說下安卓虛擬機和java虛擬機的原理和不同點

    • 10.JNI 調用過程中 混淆問題

    • 11.handler機制

    • 12.Android 繪製過程,onMeasure 的原理,解決了什麼問題;

    • 13.自定義View如何考慮機型適配?自定義View的事件分發機制?自定義View如何提供獲取View屬性的接口;

    • 14.View和ViewGroup分別有哪些事件分發相關的回調方法;

    • 15.AstncTask+HttpClient與AsyncHttpClient有什麼區別;

    • 16.如何保證一個後臺服務不被殺死;比較省電的方式是什麼;

    • 17.ListView 中圖片錯位的問題是如何產生的;

    • 18.一張Bitmap所佔內存以及內存佔用的計算;

    • 19.請介紹一下NDK;什麼是NDK庫?如何在jni中註冊native函數,有幾種註冊方式;

    • 20.什麼情況下會導致內存泄露;

    • 21.屏幕適配的處理技巧都有哪些;

    • 22.Android中跨進程通訊的幾種方式

    • 23.Android 三大圖片緩存原理、特性對比

    • 24.Android內存泄漏研究

    • 25.Android6.0運行時權限

    • 26.Activity建立在哪些窗口組件之上?順帶涉及View的事件傳遞問題

    • 27.引起內存泄漏的情況

    • 28.動畫:


  • 性能優化

    • 1.安卓性能優化和兼容問題

    • 2.安卓佈局優化方案,(佈局優化主要哪些?具體優化?)

    • 3.如何對Android 應用進行性能分析以及優化;

    • 4.屏幕適配:


  • 開源項目:

    • 1.hybrid混合開發,響應式編程等

    • 2.Android開源框架otto,eventbus

    • 3.網絡框架用的什麼,OkHttp 的功能是什麼;

    • 4.都使用過哪些框架、平臺;都使用過哪些自定義控件;

    • 5.ButterKnife原理


  • 擴展

    • 1.android 5.0 6.0 以及7.0預測新特性

    • 2.看過安卓源碼嗎,請說出一個你看過的API或者組建內部原理。

    • 3.Art和Dalvik對比;

    • 4.虛擬機原理,如何自己設計一個虛擬機(內存管理,類加載,雙親委派);

    • 5.JVM內存模型及類加載機制;內存對象的循環引用及避免;

    • 6.ddms 和 traceView的區別;

    • 7.對於應用更新這塊是如何做的?(灰度,強制更新,分區域更新);

    • 8.混合開發,RN,weex,H5,小程序(做Android的瞭解一些前端js等還是很有好處的);

    • 9.說一款你認爲當前比較火的應用並設計(直播APP);

    • 10.熱修復:

    • 11.Android的多渠道打包你瞭解嗎


Java

  • Java 部分

    • 1.說說你對Java的線程機制的理解?

    • 2.abstract和interface的區別?

    • 3.array,arrayList, List ,三者有何區別?ArrayList原理

    • 4.hashtable和hashmap的區別,並簡述Hashmap的實現原理

    • 5.StringBuilder和],String ,subString方法的細微差別

    • 6.線程中sleep()和wait()有和卻別,各有什麼含義

    • 7.談下對Java OOP中多態的理解 Java中實現多態的機制是什麼;

    • 8.HashMap原理

    • 9.反射,註解的原理

    • 10.ArrayList 和 LinkedList 的區別?造成區別的原因是什麼,爲什麼刪查的複雜度不同;

    • 11.Java 線程同步瞭解不,同步方法在不同的實例之間是否仍然保持同步,有沒有什麼隱患;

    • 12.Java 類加載機制瞭解不,雙親委派原理;

    • 13.單例設計模式:

    • 14.簡述synchronized?Object;Monitor機制

    • 15.簡述happen-before規則;

    • 16.JUC和Object;Monitor機制區別是什麼;簡述AQS原理;

    • 17.簡述nio原理;

    • 18.簡述class加載各階段過程;class;loader有哪些模型;

    • 19.多線程中的安全隊列一般通過什麼實現?線程池原理?(java)

    • 20.多線程,多併發怎麼處理,怎麼優化

    • 21.簡述DCL失效原因,解決方法;

    • 22.簡述字節碼文件組成;

    • 23.集合類以及集合框架;HashMap與HashTable實現原理,線程安全性,hash衝突及處理算法;ConcurrentHashMap;

    • 24.Java的併發、多線程、線程模型;

    • 25.如何控制某個方法允許併發訪問線程的個數;

    • 26.什麼是線程池,如何使用?

    • 27.數據一致性如何保證;Synchronized關鍵字,類鎖,方法鎖,重入鎖;

    • 28.如何將一個Java對象序列化到文件裏;

    • 29.說說你對Java反射的理解;

    • 30.在Java中wait和seelp方法的不同;

    • 31.synchronized 和volatile 關鍵字的作用;

    • 32.ThreadLocal原理,實現及如何保證Local屬性;

    • 33.String StringBuilder StringBuffer對比;

    • 34.你所知道的設計模式有哪些;

    • 35.Java如何調用c、c++語言;

    • 36.接口與回調;回調的原理;寫一個回調demo;

    • 37.泛型原理,舉例說明;解析與分派;

    • 38.抽象類與接口的區別;應用場景;抽象類是否可以沒有方法和屬性;

    • 39.靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?

    • 40.修改對象A的equals方法的簽名,那麼使用HashMap存放這個對象實例的時候,會調用哪個equals方法;

    • 41.Java的異常體系;

    • 42.動態代理的區別,什麼場景使用;

    • 43.說說你瞭解的一個線程安全隊列;

    • 44.JavaGC機制的原理和內存泄露

    • 45.內存回收機制與GC算法(各種算法的優缺點以及應用場景);
      GC原理時機以及GC對象;內存泄露場景及解決方法;
      Java GC 瞭解過沒有,如何判斷一個對象是否可以被GC;
      gc算法有哪些;gc收集器有哪些;

    • 46.說說你對Java中幾種引用的理解?

    • 47.DVM與JVM分別是什麼,他們之間有什麼區別?

    • 48.jvm運行時數據區域有哪幾部分組成,各自作用;

    • 49.簡述常用的JDK命令行工具;

    • 50.Atomic包的實現原理是什麼;

    • 51.CAS又是怎麼保證原子性的;

    • 52.string分析1000次循環subString用了多少內存;


設計模式:
請寫出四種以上你知道的設計模式,並介紹下實現原理
請你詳細說下你知道的一種設計模式,並解釋下java的高內聚和低耦合。


計算機基礎

  • 計算機基礎

    • 進程和線程的區別;

    • 你知道的數據結構有哪些,說下具體實現機制

    • 十六進制數據怎麼和十進制和二進制之間轉換

    • 安卓權限管理,爲何在清單中註冊權限,安卓APP就可以使用,反之不可以(操作系統)

    • socket短線重連怎麼實現,心跳機制又是怎樣實現,四次握手步驟有哪些(網絡通訊原理)

    • http中TCP和UDP有啥區別,說下HTTP請求的IP報文結構(計算機網絡)

    • 你知道的安全加密有哪些?

    • 你知道的數據存儲結構?堆棧和鏈表內部機制。(數據結構)

    • 說下Linux進程和線程的區別。進程調度優先級,和cpu調度進程關係。(操作系統)

    • spring 的反射和代理,在安卓中應用場景(插件和ROM數據框架)

    • http協議的理解和用法

    • 堆和棧在內存中的區別是什麼(數據結構方面以及實際實現方面);

    • 最快的排序算法是哪個?給阿里2萬多名員工按年齡排序應該選擇哪個算法?堆和樹的區別;寫出快排代碼;鏈表逆序代碼;

    • 求1000以內的水仙花數以及40億以內的水仙花數;

    • 子串包含問題(KMP 算法)寫代碼實現;

    • 萬億級別的兩個URL文件A和B,如何求出A和B的差集C,(Bit映射->hash分組->多文件讀寫效率->磁盤尋址以及應用層面對尋址的優化)

    • 蟻羣算法與蒙特卡洛算法;

    • 寫出你所知道的排序算法及時空複雜度,穩定性;

    • 百度POI中如何試下查找最近的商家功能(座標鏡像+R樹)。

    • 死鎖的四個必要條件;

    • 常見編碼方式;utf-8編碼中的中文佔幾個字節;int型幾個字節;

    • 實現一個Json解析器(可以通過正則提高速度);

    • MVC MVP MVVM; 常見的設計模式;寫出觀察者模式的代碼;

    • TCP的3次握手和四次揮手;TCP與UDP的區別;

    • HTTP協議;HTTP1.0與2.0的區別;HTTP報文結構;

    • HTTP與HTTPS的區別以及如何實現安全性;

    • 5枚硬幣,2正3反如何劃分爲兩堆然後通過翻轉讓兩堆中正面向上的硬幣和反面向上的硬幣個數相同;
      時針走一圈,時針分針重合幾次;

    • N * N的方格紙,裏面有多少個正方形;

    • 現在下載速度很慢,試從網絡協議的角度分析原因,並優化(網絡的5層都可以涉及)。

    • 請在100個電話號碼找出135的電話號碼 注意 不能用正則,(類似怎麼最好的遍歷LogGat日誌)


其它

  • 說下平時開發中比較注意的一些問題,

  • 爲啥離職呢 對待加班看法

  • 你擅長什麼,做了那些東西。

  • 研究比較深入的領域有哪些;

  • 對業內信息的關注渠道有哪些;

  • 最近都讀哪些書;

  • 自己最擅長的技術點,最感興趣的技術領域和技術點;

  • 項目中用了哪些開源庫,如何避免因爲引入開源庫而導致的安全性和穩定性問題;

  • 講一件你印象最深的一件事情;

  • 介紹一個你影響最深的項目;

  • 介紹你最熱愛最擅長的專業領域;

  • 與上級意見不一致時,你將怎麼辦;

  • 自己的優點和缺點是什麼?並舉例說明?

  • 你的學習方法是什麼樣的?實習過程中如何學習?實習項目中遇到的最大困難是什麼以及如何解決的;

  • 針對你你申請的這個職位,你認爲你還欠缺什麼;

  • 如果通過這次面試我們單位錄用了你,但工作一段時間卻發現你根本不適合這個職位,你怎麼辦;

  • 項目中遇到最大的困難是什麼?如何解決的;

  • 你的職業規劃以及個人目標;未來發展路線及求職定位;

  • 如果你在這次面試中沒有被錄用,你怎麼打算;

  • 評價下自己,評價下自己的技術水平,個人代碼量如何;

  • 通過哪些渠道瞭解的招聘信息,其他同學都投了哪些公司;

  • 業餘都有哪些愛好;

  • 你對一份工作更看重哪些方面?平臺,技術,氛圍,城市,money;

  • 理想中的工作環境是什麼;

  • 談談你對跳槽的看法;

  • 說說你對行業、技術發展趨勢的看法;

  • 實習過程中周圍同事/同學有哪些值得學習的地方;

  • 如果你的工作出現失誤,給本公司造成經濟損失,你認爲該怎麼辦;

  • 你看中公司的什麼?或者公司的那些方面最吸引你。


面試題Or面經

https://juejin.im/entry/58ca4c8d128fe1006c7dbc82
https://juejin.im/entry/58aa5f94b123db00671b3c05
https://juejin.im/entry/584df7dfac502e00692f3455
https://juejin.im/entry/589d70210ce46300562ca316
https://juejin.im/entry/578d938079bc44005ff26aec
https://juejin.im/entry/589d70238d6d81006c87d128
https://juejin.im/entry/589d70268d6d81006c87d13f
https://juejin.im/entry/57e2296d7db2a24eb1d03918
https://juejin.im/entry/579052d1128fe100568f2515
https://juejin.im/entry/57466b5e71cfe40068cd862a

https://juejin.im/entry/5838f9f1128fe1006bdaa456
https://juejin.im/entry/57aad0728ac247005f4cfa81
https://juejin.im/entry/570e6f7471cfe4005bf7888d
https://juejin.im/entry/58252337570c350060d63756
https://juejin.im/entry/579ca945c4c971005acf5f4a
https://juejin.im/entry/57a02f58c4c971005ae9022b
https://juejin.im/entry/580ead8dc4c97100589d8dda
https://juejin.im/entry/5796294d8ac247005f359f81


http://www.jianshu.com/p/1d3a2227fb72
http://www.jianshu.com/p/c861f4c35b62
http://www.jianshu.com/p/59e03fc7e6d4
http://www.jianshu.com/p/7c9df5b59a26
http://www.jianshu.com/p/9c0d9f561c8e
http://www.jianshu.com/p/05ddce703d12
http://www.jianshu.com/p/c07bec84d904
http://www.jianshu.com/p/dba49efea11a
http://www.jianshu.com/p/a5f15200caa9
http://www.jianshu.com/p/362c13f79155
http://www.jianshu.com/p/64d4d612aa8b
http://www.jianshu.com/p/c6c3f50b329f
http://www.jianshu.com/p/cd9f97853f54

https://androidquestions.quora.com/Android-interview-questions
https://androidquestions.quora.com/Android-interview-questions-for-2-5-yrs-experienced

http://www.jianshu.com/p/39e8768843d2
http://www.jianshu.com/p/596778ae116b
http://www.jianshu.com/p/7c309b8b8e1b
http://www.jianshu.com/p/bffccf5aa68e
http://www.jianshu.com/p/8aa12128a116
http://www.jianshu.com/p/213cb38240fc
http://www.jianshu.com/p/72d2e3491346
http://www.jianshu.com/p/afc54b7e90cb
http://www.jianshu.com/p/c53ca5eb0853
http://www.jianshu.com/p/706869b3f301
http://www.jianshu.com/p/d0a4ce3a3b65
http://www.jianshu.com/p/c27fb18a7c5d
http://www.jianshu.com/p/c4ce53157e33
http://www.jianshu.com/p/7bf670f3ea4d
http://www.jianshu.com/p/64ec5cca1613
http://www.jianshu.com/p/11a66f6edaac
http://www.jianshu.com/p/0c9c4ffe2f1f
http://www.jianshu.com/p/0747e2d4a2a1
http://www.jianshu.com/p/2a069c61e9c8
http://www.jianshu.com/p/94ec12462e4e
http://www.jianshu.com/p/fce8d5f72485
http://www.jianshu.com/p/fc5384e56713
http://www.jianshu.com/p/344b1b946ee9
http://www.jianshu.com/p/09f012af360d
http://www.jianshu.com/p/97c279db3c34
http://www.jianshu.com/p/b4ef67b30d5e

http://www.cnblogs.com/deman/p/5860976.html

http://blog.csdn.net/johnson67/article/details/8612868

http://www.jianshu.com/p/ccb5e3f3158f

https://juejin.im/entry/58da1620570c350058e9d179

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章