1.什麼是操做系統?html
2.什麼是線程,什麼是進程?面試
1.JDK & JVM & JRE分別是什麼以及它們的區別?正則表達式
2.解釋一下爲何Java能夠跨平臺?算法
1.什麼是面向過程 & 什麼是面向對象 & 區別?數據庫
2.給我說說Java面向對象的特徵以及講講你代碼中凸顯這些特徵的經驗。編程
3.什麼是重載 & 什麼是重寫 & 區別。設計模式
4.談談你對this和super的認識。數組
5.接口和抽象類的區別。瀏覽器
6.靜態屬性和靜態方法能被繼承嗎?靜態方法又是否能被重寫呢?緩存
7.給我說說權限修飾符特性。
8.給我談談Java中的內部類。
9.閉包和內部類的區別?
10.Java多態的實現機制是什麼?
11.談談你對對象生命週期的認識?
12.static關鍵字的做用?
13.final關鍵字的做用。
1.說說Java中的8大基本類型 & 內存中佔有的字節 & 什麼是引用類型?
2.什麼是拆箱 & 裝箱,能給我舉栗子嗎?
1.能說說多維數組在內存上是怎麼存儲的嗎?
2.你對數組二次封裝過嗎?說說封裝了什麼
1.說說Java異常體系主要用來幹什麼的 & 異常體系?
2.Error和Exception的區別?
3.說說運行時異常和非運行時異常的區別?
4.如何自定義一個異常?
5.throw和throws 的區別?
6.try{}catch{}finally{}能夠沒有finally嗎?
7.finally語塊有什麼特色?
8.return在try{}catch{}finally{}中執行具備哪些規則?
9.給我例舉至少5個常見的運行時異常。
1.NIO是什麼 & BIO是什麼 & AIO是什麼 & 它們之間的區別?
2.IO按照方向和數據類型劃分能劃分爲哪些數據流?
3.能給我說說NIO有什麼特色?日常開發中使用過嗎?
1.說說Java中集合的框架?
2.Collection & Map區別
3.談談你經常使用的集合 & 它們底層的實現方式 & 優缺點 & 使用場景。
4.Map的遍歷方式有哪些?
5.給我說說ArrayList的擴容機制.
6.什麼是深拷貝 & 淺拷貝 & 如何深拷貝一個List集合.
7.Set是如何確保它的惟一性的。
8.你以爲HashMap的元素順序和什麼有關?
9.Java中HashMap如何解決哈希碰撞的?
10.ConcurrentHashMap如何實現併發訪問的?
11.談談Java集合中那些線程安全的集合 & 實現原理。
12.說說有哪些集合能加入null,哪些不能加入null,爲何?
13.說說LinkedHashMap原理。
14.Collection 和 Collections的區別?
15.比較一下ArrayMap和HashMap。
16.說說HashMap的原理。
1.什麼是線程?能解決什麼問題。
2.Java中建立線程的2種方式 & 區別?
3.給我說說線程的生命週期。
4.線程死鎖的緣由 & 舉個栗子 & 如何避免死鎖。
5.Synchronized放在靜態方法和非靜態方法上的鎖對象分別是什麼?
6.如何中止掉一個線程?
7.給我說說線程池的種類 & 特色 & 內部原理 & 平時當中使用案例。
8.給我談談你是如何保證線程數據安全問題的?
9.wait()和sleep()的區別?
10.什麼是公平鎖&非公平鎖&區別?
11.給我講講線程間通訊
12.volatile關鍵字是如何使用的?原理是什麼
13.說說使用5個線程去計算一個數組之和的思路。
14.談談線程阻塞的緣由有哪些?
15.談談你對notify的理解?
16.你以爲Lock和Synchronized的區別是什麼?
17.談談你對ReentrantLock的認識。
18.調用run()和start()的區別?
19.transient關鍵字的用法 & 做用 & 原理。
20.線程池的種類 & 工做原理 & ThreadPoolExecutor的工做策略有哪些?
21.ThreadLocal瞭解嗎?說說原理。
22.權衡多線程的性能。
23.如何理解同步和異步,阻塞和非阻塞。
1.什麼是泛型?能解決什麼問題?
2.說說Java中泛型的工做機制?
3.在泛型種extends和super關鍵字的區別是什麼?
1.什麼是反射?
2.如何獲取一個類的成員變量 & 成員方法 & 註解信息 & ...。
3.一般在項目當中用到反射多嗎?都是用來幹嗎?
1.什麼是註解 & 它和註釋的區別?
2.註解的工做機制是什麼?
1.什麼是Socket編程?
2.什麼是TCP,什麼是UDP,兩者之間區別如何?
1.說說設計模式的六大原則。
2.請講講你會使用的一些設計模式?
3.請說說單例模式 & 你項目中經常使用的單例模式。
4.懶漢單例模式爲何要加volaitle?
5.可否給我說說Android中至少3個用到設計模式的栗子?
1.什麼是class文件?
2.Java代碼執行流程?
3.Java內存結構 & 內存模型。
4.GC回收機制。
5.Java虛擬機是如何加載一個類的?
6.給我談談類加載器。
7.談談static編譯運行時的流程,在虛擬機中如何保存的?
8.說說Java種的4種引用以及用法?
9.如何判斷一個對象是死亡的?
10.代碼中直接調用System.gc()會發生什麼?
11.一個強引用直接被null賦值,那麼這個對象會被馬上回收嗎?
12.String a = "a"+"b"+"c";在內存中建立了幾個對象?
13.談談你對字符集的理解。
14.常見的編碼格式有哪些?
15.utf-8中的中文佔幾個字節?int型佔幾個字節?
16.談談你對邏輯地址和物理地址的理解?
17.你知道對象何時會回調finalize方法嗎?
1.爲何局部內部類訪問局部變量須要final?
2.String、StringBuffer、StringBuilder、CharSequence的區別。
3.equals和==的區別?
4.關於字符串的拼接你在項目中經常怎麼操做的?爲何不能用「+」的方式進行拼接呢?
5.什麼是Callback,講講你項目中使用的一些有關Callback的栗子。
6.retrun & break & continue 區別?
7.如何判斷一個字符串是迴文字符串?
8.final,finally,finalize的區別?
9.什麼是動態代理 & 什麼是靜態代理?
10.String爲何會加final?
11.OOM能夠try{}catch{}嗎?
12.給我談談正則表達式。
13.如何將String轉成int?
14.談談你對String的理解。
15.你如何理解序列化?有哪些方式序列化?
16.談談你對依賴注入的理解。
17.給我談談你對分派的理解。
答案連接 http://www.javashuo.com/article/p-ofxuuqzq-cn.html
四大組件是哪四個?ABCS(Activity,Braodcast,ContentProvider,Service)
1.Activity是什麼?
2.典型狀況下的Activity生命週期?
3.異常狀況下的Activity的生命週期 & 數據如何保存和恢復?
4.從Activity A跳轉到Activity B以後,而後再點擊back建以後,它們的生命週期調用流程是什麼?
5.如何統計Activity的工做時間?
6.給我說說Activity的啓動模式 & 使用場景。
7.如何在任意位置關掉應用全部Activity & 如何在任意位置關掉指定的Activity?
8.Activity的啓動流程(從源碼角度解析)?
9.啓動一個其它應用的Activity的生命週期分析。
10.Activity任務棧是什麼?在項目中有用到它嗎?說給我聽聽
11.什麼狀況下Activity不走onDestory?
12.什麼狀況下Activity會單獨執行onPause?
13.a->b->c界面,其中b是SingleInstance的,那麼c界面點back返回a界面,爲何?
14.若是一個Activity彈出一個Dialog,那麼這個Acitvity會回調哪些生命週期函數呢?
15.Activity之間如何通訊 & Activity和Fragment之間通訊 & Activity和Service之間通訊?
16.說說Activity橫豎屏切換的生命週期。
17.前臺切換到後臺,而後在回到前臺時Activity的生命週期。
18.下拉狀態欄時Activity的生命週期?
19.Activity與Fragment的生命週期比較?
20.瞭解哪些Activity經常使用的標記位Flags?
21.談談隱式啓動和顯示啓動Activity的方式?
22.Activity用Intent傳遞數據和Bundle傳遞數據的區別?爲何不用HashMap呢?
23.在隱式啓動中Intent能夠設置多個action,多個category嗎 & 順便講講它們的匹配規則?
24.Activity能夠設置爲對話框的形式嗎?
25.如何給Activity設置進入和退出的動畫?
26.Activity使用Intent傳遞數據是否有限制 & 若是傳遞一個複雜的對象,例如一個複雜的控件對象應該怎麼作?
1.廣播是什麼?
2.廣播的註冊方式有哪些?
3.廣播的分類 & 特性 & 使用場景?
4.說說系統廣播和本地廣播的原理 & 區別 & 使用場景。
5.有兩個應用註冊了同樣的廣播,一個是靜態,一個是動態,連優先級也同樣,那麼當廣播從系統發出來後,哪一個應用先接收到廣播?
1.什麼是內容提供者?
2.說說如何建立本身應用的內容提供者 & 使用場景。
3.說說ContentProvider的原理。
4.ContentProvider,ContentResolver,ContentObserver之間的關係?
5.說說ContentProvider的權限管理。
1.什麼是Service?
2.說說Service的生命週期。
3.Service和Thread的區別?
4.Android 5.0以上的隱式啓動問題及其解決方案。
5.給我說說Service保活方案
6.IntentService是什麼 & 原理 & 使用場景 & 和Service的區別。
7.建立一個獨立進程的Service應該怎樣作?
8.Service和Activity之間如何通訊?
9.說說你瞭解的系統Service。
10.談談你對ActivityManagerService的理解。
11.在Activtiy中建立一個Thread和在一個Service中建立一個Thread的區別?
1.子線程必定不能更新UI嗎?
2.給我說說Handler的原理
3.Handler致使的內存泄露你是如何解決的?
4.如何使用Handler讓子線程和子線程通訊?
5.你能給我說說Handler的設計原理?
6.HandlerThread是什麼 & 原理 & 使用場景?
7.IdleHandler是什麼?
8.一個線程可否建立多個Handler,Handler和Looper之間的對應關係?
9.爲何Android系統不建議子線程訪問UI?
10.Looper死循環爲何不會致使應用卡死?
11.使用Handler的postDealy後消息隊列有什麼變化?
12.能夠在子線程直接new一個Handler出來嗎?
13.Message對象建立的方式有哪些 & 區別?
1.AsyncTask是什麼?能解決什麼問題
2.給我談談AsyncTask的三個泛型參數做用 & 它的一些方法做用。
3.給我說說AsyncTask的原理。
4.你以爲AsyncTask有不足之處嗎?
1.Android中v4包下Fragment和app包下Fragment的區別是什麼?
2.Fragment的生命週期 & 請結合Activity的生命週期再一塊兒說說。
3.說說Fragment如何進行懶加載。
4.ViewPager + Fragment結合使用會出現內存泄漏嗎 & 如何解決?
5.Fragment如何和Activity進行通訊 & Fragment之間如何進行通訊?
6.給我談談Fragment3種切換的方式以及區別 & 使用場景。
7.getFragmentManager,getSupportFragmentManager,getChildFragmentManager之間的區別?
8.FragmentPagerAdapter和FragmentStatePagerAdapter區別?
9.Fragment如何實現相似Activity棧的壓棧和出棧效果的?
1.什麼是序列化 & 能用來幹什麼?
2.Android中序列化方式有幾種?說說它們的區別。
3.若是想要序列化的類中某些字段不序列化,那麼應該怎麼作?
1.說說你對Android多進程開發的認識?
2.Android中進程間通訊的方式有哪些?
3.什麼是AIDL?如何建立一個AIDL。
1.說說Android中數據持久化的方式 & 使用場景。
2.接觸過MMKV嗎?說說SharedPreference和它的區別。
3.第三方數據庫框架用過哪些?有沒有本身封裝過一個SQLite的庫?
4.SQLite是線程安全的嗎 & SharedPreference是線程安全的嗎?
5.請簡單的給我說說什麼是三級緩存?
6.SharedPreference的apply和commit的區別。
7.談談你對SQLite事務的認識。
8.千奇百怪的SQL語句考察。
9.SharePreference跨進程使用會怎麼樣?如何保證跨進程使用安全?
10.談談SQLite升級要注意哪些地方?
1.ListView是什麼?如何使用?
2.RecyclerView是什麼?如何使用?如何返回不同的Item。
3.ListView和RecycyclerView的區別是什麼?
4.分別講講你對ListView & RecyclerView的優化經驗。
5.給我說說RecyclerView的回收複用機制
6.說說你是如何給ListView & RecyclerView加上拉刷新 & 下拉加載更多機制。
7.談談你是如何對ListView & RecycleView進行局部刷新的?
8.談談如何進行分頁加載?
9.ScrollView下嵌套一個ListView一般會出現什麼問題?
10.一個ListView或者一個RecyclerView在顯示新聞數據的時候,出現圖片錯位,可能的緣由有哪些 & 如何解決?
1.你對Bitmap瞭解嗎?它在內存中如何存在?
2.有關Bitmap致使OOM的緣由知道嗎?如何優化?
3.給我談談圖片壓縮。
4.LruCache & DiskLruCache原理。
5.說說你日常會使用的一些第三方圖片加載庫,最好給我談談它的原理。
6.若是讓你設計一個圖片加載庫,你會如何設計?
7.有一張很是大的圖片,你如何去加載這張大圖片?
8.你知道Android中處理圖片的一些庫嗎(OpenCv & GPUImage ...)?
9.如何計算一張圖片在內存中佔用的大小?
1.WebView是什麼?
2.WebView會致使內存泄露嗎?緣由是什麼?解決方式有哪些?
3.你知道Hybrid開發嗎?說說你的相關經驗。
4.說說WebSettings & WebViewClient & WebChromeClient這三個類的做用 & 用法。
5.說說你瞭解的Hybrid框架。
1.什麼是ViewPager?說說它的那些適配器。
2.你瞭解ViewPager2嗎?和ViewPager 1有哪些區別?
3.ViewPager + Fragment結合使用存在的內存泄漏的緣由是什麼?如何解決?
1.什麼是事件分發機制?主要用來解決什麼問題?
2.給我說說事件分發的流程 & 你項目解決事件衝突的一些案例。
3.多點觸摸事件平時接觸過嗎?如何監聽用戶第二個手指,第三個...?
4.OnTouchListener & OnTouchEvent & onClickListener三者之間的關係?
5.談談你對MotionEvent的認識?Cancel事件是什麼狀況下觸發的?
6.能給我談談Android中座標體系嗎?
1.說說View繪製流程。
2.說說Activity View樹結構。
3.自定義View的方式有哪些?給我說說你以前項目中的案例。
4.invalidate和postvalidate的區別?
5.說說你在自定義View時經常重寫的一些方法?
6.說說自定義View中如何自定義屬性?
7.requestLayout(),onLayout(),onDraw(),drawChild()區別和聯繫?
8.如何計算出一個View的嵌套層級?
9.自定義View如何考慮機型適配?
1.說說Android中有哪些佈局 & 特色。
2.你知道佈局文件到控件對象的過程嗎?
3.有這麼一個佈局需求,一個文本控件放在屏幕一半的一半的中間位置,你如何進行佈局?
4.LinearLayout,FrameLayout,RelativeLayout性能對比,爲何?
1.什麼是Binder?用來幹什麼?
2.給我具體講講Binder機制。
1.Android中的動畫分爲哪些種類 & 特色 & 缺點。
2.知道SVG & 矢量動畫嗎?
3.給我說說轉場動畫。
4.給我談談插值器 & 估值器 的做用。
5.說說Android動畫框架實現的原理。
1.什麼是JNI?它主要用來幹什麼。
2.Java Native方法如何和Native函數進行綁定的?
3.JNI如何實現數據傳遞?
4.如何全局捕獲Native發生的異常?
5.只有C/C++能編寫Native庫嗎?
1.說說你對Android中Window的理解。
2.說說你對Application的理解 & 生命週期。
3.Android中有哪些上下文 & 區別 & 做用。
4.談談你對Android中Context的理解。
1.Android 8.0如何適配通知?
2.自定義通知流程?
1.說說Android中對話框能夠用哪些方式完成?
1.說說最新的藍牙版本?新版本的特性是什麼?
1.什麼是冷啓動 & 什麼是熱啓動 & 它們的流程?
2.如何優化冷啓動?
3.啓動頁白屏,黑屏,太慢如何解決?
1.在作懸浮窗的時候你遇到了什麼困難(主要指懸浮窗權限適配)?
2.如何製做一個懸浮窗?
1.最新的Android版本多少知道嗎?有哪些特性
2.說說更新較大的Android版本。
1.你如今比較經常使用Android Studio那個版本 & 用的Gradle版本是多少?
2.如何理解gradle?
3.說說Android Studio中大體項目結構?
4.混淆是什麼 & 爲何須要進行混淆 & 混淆的原理 & 爲何Java反射經常會和混淆衝突?
1.ANR是什麼?致使緣由有哪些?
2.談談你項目中避免ANR的一些經驗。
3.分別說說Activity & BroadcastReceiver & Serice最長可耗時時間爲多少?
1.什麼是OOM & 什麼是內存泄漏 & 什麼是內存抖動?
2.談談你項目中內存優化的一些經驗。
1.說說Android中一些屏幕單位。
2.談談你項目中的一些屏幕適配的經驗。
3.今日頭條的輕量級適配方案瞭解嗎 & 給我說說原理。
1.apk爲何須要簽名?
2.多渠道打包是什麼 & 有相似經驗嗎?
3.簡述多渠道打包及原理和經常使用操做?
1.說說你用過的項目架構?
2.分別給我說說MVC,MVP,MVVM特色和區別。
3.以登錄界面爲例子,設計MVP架構。
4.談談AndroidManifest.xml文件的理解。
1.谷歌新出的Flutter知道嗎?
2.谷歌新出的官方開發語言Kotlin瞭解嗎 & 和Java相比它有哪些特色。
3.談談Kotlin中協程的認識?
1.以前有過音視頻開發經驗嗎 & 說說用哪些開源架子開發的。
2.FFmpeng瞭解過嗎?
3.Android中播放視頻音頻的方式有哪些?
4.Android中播放網絡地址視頻有哪些出色的開源庫?
5.流媒體服務器瞭解嗎?
6.談談你對編碼格式的理解。
7.MediaPlayer和SoundPool的區別?
8.視頻硬解碼和軟解碼的區別?
1.說說一個app的啓動流程(從源碼角度講解)。
2.你知道不管是Kotlin或者是Java,程序運行的主要入口都是main()方法,那麼Android的main方法在哪裏?
3.Android Hock技術瞭解嗎?
4.簡述Android中的加固和使用平臺?
5.談談你對Apk瘦身的經驗?
6.爲何子線程不能更新UI?
7.你知道如何定位內存泄漏嗎?
8.說說System.exit(0),onDestory(),Activity.finish()的區別?
9.在OnResume或者以前獲取View的寬高爲多少 & 爲何?
10.Art & Dvm 區別,特別是談談GC的區別。
11.說說你用的二維碼框架 & 有過優化經驗嗎?
12.談談App多進程的好處 & 缺點。
13.說說AMS是怎麼找到啓動指定的Activity?
14.View的getWidth和getMeasureWidth有啥區別?
15.有插件化或者熱修復經驗嗎?說說它的原理。
16.斷點續傳瞭解嗎?談談你是如何經過多線程實現斷點續傳的。
17.給我談談你對SurfaceView的認識。
18.什麼狀況下你會使用到ScrollView。
19.低版本SDK如何使用高版本API?
20.AlertDialog,PopWindow,Activity之間的區別?
21.Application和Activity,Context的區別?
22.談談Android中多線程通訊方式?
23.說說Android大致的架構圖,試着畫出來。
24.知道SpareArray嗎?
25.Activity除了setContentView能夠設置佈局,還有其它方式嗎?
26.Android爲每一個應用程序分配的內存大小爲多少?
27.Android進程保活方案?
28.談談Android系統安裝apk的過程?
29.Activity,Window,View三者的關係?
30.ActivityThread,ActivityManagerService,WindowManagerService的工做原理?
31.PackageManagerService的工做原理?
32.PowerManagerService的工做原理?
33.在桌面點擊一個未啓動的App的流程 & 點擊一個已啓動的App的流程?
34.Android中進程分爲哪些種類?
35.什麼是埋點,懂點它的原理嗎?
36.進程和Application生命週期之間的關係?
37.App相互喚醒的有哪些方式?
38.Android中如何開啓多進程?應用是否能夠開啓N個進程?
39.談談消息推送的方式有哪些?
40.談談你對Root權限的理解。
41.談談項目如何進行國際化?
42.談談你對Intent和IntentFilter的理解。
43.一條最長的短信息約佔多少byte?
1.什麼是時間複雜度 & 什麼是空間複雜度?
2.時間複雜度和空間複雜度之間存在什麼聯繫?
1.談談你對數組的理解。
1.什麼是單鏈表 & 雙向鏈表 & 循環鏈表 & 雙向循環鏈表 & 靜態鏈表。
2.反轉一個鏈表有哪些方式?
3.如何判斷鏈表有環?
4.用Java語言設計一個LinkedList。
1.如何理解堆?
1.什麼是棧 & 棧的特色是什麼?
2.什麼是順序棧 & 鏈式棧?
3.你有沒有基於棧封裝的業務類?
4.你能用棧實現隊列嗎?
5.如何實現瀏覽器前進和後退功能?
1.什麼是隊列 & 隊列的特色是什麼?
2.什麼是優先隊列?
3.什麼是雙端隊列 & 阻塞隊列?
4.你能用隊列實現棧嗎?
1.什麼是散列函數?
2.什麼是散列衝突?解決的方式有哪些?Java中的HashMap解決方式採用的哪種?
3.什麼是散列表的動態擴容?
4.什麼是位圖?
1.什麼是二叉樹?
2.什麼是先序遍歷 & 中序遍歷 & 後序遍歷。
3.什麼是多路查找樹?
4.什麼是紅黑樹?
1.給我說說你會的排序 & 複雜度如何?
2.如今有10萬條數據須要進行排序,你會選擇什麼排序?
1.說說你知道的查找算法 & 複雜度如何?
1.什麼是遞歸 & 什麼是回溯?
1.什麼是貪心算法?
1.什麼是圖?能夠解決一些什麼問題?
2.時針走一圈,時針分針重合幾回?
3.有一個不均勻的繩子燒完要1個小時,如何算出1小時15分鐘?
4.求1000之內的水仙花數以及40億之內的水仙花數?
5.數據怎麼壓縮,數據的安全。
6.談談你對對稱加密 & 非對稱加密的理解。
1.RxJava用法 & RxJava2用法 & 原理 &用到的設計模式?
2.EventBus用法 & 原理。
1.OkHttp用法 & 源碼分析。
2.Retrofit用法 & 源碼分析。
3.Volley用法 & 缺點。
1.ButterKnife用法 & 原理。
2.Dagger2用法 & 原理。
1.Glide用法 & 原理。
2.Picasso用法 & 原理。
3.Fresco用法 & 原理。
1.GreenDao。
2.LitePal。
3.OrmLite。
4.DBFlow。
5.Realm。
1.分享你以爲比較好用的開源庫。
2.本身有封裝庫嗎?給我說說你是如何設計的?
3.你是如何設計一個網絡請求框架的?
1.給我介紹5層網絡模型。
2.Http/Https協議工做在哪一層?
3.TCP/UDP協議工做在哪一層?
4.給我說說三次握手和四次揮手。
5.什麼是請求頭 & 響應頭 ? 說說請求頭中一些重要的字段。
6.什麼是Cookie & Session。
7.知道什麼是心跳檢測嗎?
8.Http和Https的區別?
9.加密協議TLS/SSL加密過程是怎樣的?
10.什麼是DNS & 做用是什麼 &工做機制?
11.瀏覽器訪問一個url網址所經歷的過程是什麼?
12.Socket是協議嗎?WebSocket是協議嗎?它們的區別是什麼?
13.Json解析方式有哪些?比較它們的優劣勢。
14.XML解析方式有哪些?比較它們的優劣勢。
15.http1.x & http 2.0區別是什麼?
16.說說HTTP緩存的原理。
17.若是有個100M大的文件,須要上傳至服務器中,而服務器form表單最大隻能上傳2M,可使用什麼方法?
18.說說你項目中即時通信的方案有哪些?