Android - Android 面試題集

一、Java部分

1.1 操做系統相關

  • 1.什麼是操做系統?html

  • 2.什麼是線程,什麼是進程?面試

 

1.2 JDK&JVM&JRE

  • 1.JDK & JVM & JRE分別是什麼以及它們的區別?正則表達式

  • 2.解釋一下爲何Java能夠跨平臺?算法

 

1.3 面向過程 & 面向對象

  • 1.什麼是面向過程 & 什麼是面向對象 & 區別?數據庫

  • 2.給我說說Java面向對象的特徵以及講講你代碼中凸顯這些特徵的經驗。編程

  • 3.什麼是重載 & 什麼是重寫 & 區別。設計模式

  • 4.談談你對this和super的認識。數組

  • 5.接口和抽象類的區別。瀏覽器

  • 6.靜態屬性和靜態方法能被繼承嗎?靜態方法又是否能被重寫呢?緩存

  • 7.給我說說權限修飾符特性。

  • 8.給我談談Java中的內部類。

  • 9.閉包和內部類的區別?

  • 10.Java多態的實現機制是什麼?

  • 11.談談你對對象生命週期的認識?

  • 12.static關鍵字的做用?

  • 13.final關鍵字的做用。

 

1.4 八大基本數據類型&引用類型

 

  • 1.說說Java中的8大基本類型 & 內存中佔有的字節 & 什麼是引用類型?

  • 2.什麼是拆箱 & 裝箱,能給我舉栗子嗎?

 

1.5 數組

 

  • 1.能說說多維數組在內存上是怎麼存儲的嗎?

  • 2.你對數組二次封裝過嗎?說說封裝了什麼

 

1.6 Java異常

  • 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.7 NIO/BIO/AIO

  • 1.NIO是什麼 & BIO是什麼 & AIO是什麼 & 它們之間的區別?

  • 2.IO按照方向和數據類型劃分能劃分爲哪些數據流?

  • 3.能給我說說NIO有什麼特色?日常開發中使用過嗎?

 

1.8 集合(容器)

  • 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.9 線程

  • 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.10 泛型

  • 1.什麼是泛型?能解決什麼問題?

  • 2.說說Java中泛型的工做機制?

  • 3.在泛型種extends和super關鍵字的區別是什麼?

 

1.11 反射

 

  • 1.什麼是反射?

  • 2.如何獲取一個類的成員變量 & 成員方法 & 註解信息 & ...。

  • 3.一般在項目當中用到反射多嗎?都是用來幹嗎?

 

1.12 註解

  • 1.什麼是註解 & 它和註釋的區別?

  • 2.註解的工做機制是什麼?

 

1.13 Socket編程

  • 1.什麼是Socket編程?

  • 2.什麼是TCP,什麼是UDP,兩者之間區別如何?

 

1.14 設計模式

  • 1.說說設計模式的六大原則。

  • 2.請講講你會使用的一些設計模式?

  • 3.請說說單例模式 & 你項目中經常使用的單例模式。

  • 4.懶漢單例模式爲何要加volaitle?

  • 5.可否給我說說Android中至少3個用到設計模式的栗子?

 

1.15 JVM相關

  • 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.16 其它Java部分有關面試題

  • 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.給我談談你對分派的理解。

二、Android 部分

答案連接 http://www.javashuo.com/article/p-ofxuuqzq-cn.html

  • 四大組件是哪四個?ABCS(Activity,Braodcast,ContentProvider,Service)

 

2.1 Activity

  • 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傳遞數據是否有限制 & 若是傳遞一個複雜的對象,例如一個複雜的控件對象應該怎麼作?

 

2.2 BroadcastReceiver

  • 1.廣播是什麼?

  • 2.廣播的註冊方式有哪些?

  • 3.廣播的分類 & 特性 & 使用場景?

  • 4.說說系統廣播和本地廣播的原理 & 區別 & 使用場景。

  • 5.有兩個應用註冊了同樣的廣播,一個是靜態,一個是動態,連優先級也同樣,那麼當廣播從系統發出來後,哪一個應用先接收到廣播?

 

2.3 ContentProvider

  • 1.什麼是內容提供者?

  • 2.說說如何建立本身應用的內容提供者 & 使用場景。

  • 3.說說ContentProvider的原理。

  • 4.ContentProvider,ContentResolver,ContentObserver之間的關係?

  • 5.說說ContentProvider的權限管理。

 

2.4 Service

 

  • 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的區別?

 

2.5 Handler

 

  • 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對象建立的方式有哪些 & 區別?

 

2.6 AsyncTask

 

  • 1.AsyncTask是什麼?能解決什麼問題

  • 2.給我談談AsyncTask的三個泛型參數做用 & 它的一些方法做用。

  • 3.給我說說AsyncTask的原理。

  • 4.你以爲AsyncTask有不足之處嗎?

 

2.7 Fragment

 

  • 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棧的壓棧和出棧效果的?

 

2.8 序列化

 

  • 1.什麼是序列化 & 能用來幹什麼?

  • 2.Android中序列化方式有幾種?說說它們的區別。

  • 3.若是想要序列化的類中某些字段不序列化,那麼應該怎麼作?

 

2.9 IPC

 

  • 1.說說你對Android多進程開發的認識?

  • 2.Android中進程間通訊的方式有哪些?

  • 3.什麼是AIDL?如何建立一個AIDL。

 

2.10 文件存儲

 

  • 1.說說Android中數據持久化的方式 & 使用場景。

  • 2.接觸過MMKV嗎?說說SharedPreference和它的區別。

  • 3.第三方數據庫框架用過哪些?有沒有本身封裝過一個SQLite的庫?

  • 4.SQLite是線程安全的嗎 & SharedPreference是線程安全的嗎?

  • 5.請簡單的給我說說什麼是三級緩存?

  • 6.SharedPreference的apply和commit的區別。

  • 7.談談你對SQLite事務的認識。

  • 8.千奇百怪的SQL語句考察。

  • 9.SharePreference跨進程使用會怎麼樣?如何保證跨進程使用安全?

  • 10.談談SQLite升級要注意哪些地方?

 

2.11 ListView & RecyclerView

 

  • 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在顯示新聞數據的時候,出現圖片錯位,可能的緣由有哪些 & 如何解決?

 

2.12 圖片編程

 

  • 1.你對Bitmap瞭解嗎?它在內存中如何存在?

  • 2.有關Bitmap致使OOM的緣由知道嗎?如何優化?

  • 3.給我談談圖片壓縮。

  • 4.LruCache & DiskLruCache原理。

  • 5.說說你日常會使用的一些第三方圖片加載庫,最好給我談談它的原理。

  • 6.若是讓你設計一個圖片加載庫,你會如何設計?

  • 7.有一張很是大的圖片,你如何去加載這張大圖片?

  • 8.你知道Android中處理圖片的一些庫嗎(OpenCv & GPUImage ...)?

  • 9.如何計算一張圖片在內存中佔用的大小?

 

2.13 WebView

 

  • 1.WebView是什麼?

  • 2.WebView會致使內存泄露嗎?緣由是什麼?解決方式有哪些?

  • 3.你知道Hybrid開發嗎?說說你的相關經驗。

  • 4.說說WebSettings & WebViewClient & WebChromeClient這三個類的做用 & 用法。

  • 5.說說你瞭解的Hybrid框架。

 

2.14 ViewPager

 

  • 1.什麼是ViewPager?說說它的那些適配器。

  • 2.你瞭解ViewPager2嗎?和ViewPager 1有哪些區別?

  • 3.ViewPager + Fragment結合使用存在的內存泄漏的緣由是什麼?如何解決?

 

2.15 View事件分發機制

 

  • 1.什麼是事件分發機制?主要用來解決什麼問題?

  • 2.給我說說事件分發的流程 & 你項目解決事件衝突的一些案例。

  • 3.多點觸摸事件平時接觸過嗎?如何監聽用戶第二個手指,第三個...?

  • 4.OnTouchListener & OnTouchEvent & onClickListener三者之間的關係?

  • 5.談談你對MotionEvent的認識?Cancel事件是什麼狀況下觸發的?

  • 6.能給我談談Android中座標體系嗎?

 

2.16 View繪製機制

 

  • 1.說說View繪製流程。

  • 2.說說Activity View樹結構。

  • 3.自定義View的方式有哪些?給我說說你以前項目中的案例。

  • 4.invalidate和postvalidate的區別?

  • 5.說說你在自定義View時經常重寫的一些方法?

  • 6.說說自定義View中如何自定義屬性?

  • 7.requestLayout(),onLayout(),onDraw(),drawChild()區別和聯繫?

  • 8.如何計算出一個View的嵌套層級?

  • 9.自定義View如何考慮機型適配?

 

2.17 佈局

 

  • 1.說說Android中有哪些佈局 & 特色。

  • 2.你知道佈局文件到控件對象的過程嗎?

  • 3.有這麼一個佈局需求,一個文本控件放在屏幕一半的一半的中間位置,你如何進行佈局?

  • 4.LinearLayout,FrameLayout,RelativeLayout性能對比,爲何?

 

2.18 Binder

 

  • 1.什麼是Binder?用來幹什麼?

  • 2.給我具體講講Binder機制。

 

2.19 動畫機制

 

  • 1.Android中的動畫分爲哪些種類 & 特色 & 缺點。

  • 2.知道SVG & 矢量動畫嗎?

  • 3.給我說說轉場動畫。

  • 4.給我談談插值器 & 估值器 的做用。

  • 5.說說Android動畫框架實現的原理。

 

2.20 JNI

 

  • 1.什麼是JNI?它主要用來幹什麼。

  • 2.Java Native方法如何和Native函數進行綁定的?

  • 3.JNI如何實現數據傳遞?

  • 4.如何全局捕獲Native發生的異常?

  • 5.只有C/C++能編寫Native庫嗎?

 

2.21 Window & Appliction & Context

 

  • 1.說說你對Android中Window的理解。

  • 2.說說你對Application的理解 & 生命週期。

  • 3.Android中有哪些上下文 & 區別 & 做用。

  • 4.談談你對Android中Context的理解。

 

2.22 通知

 

  • 1.Android 8.0如何適配通知?

  • 2.自定義通知流程?

 

2.23 對話框(Dialog & DialogFragment & PopWindow)

 

  • 1.說說Android中對話框能夠用哪些方式完成?

 

2.24 藍牙

  • 1.說說最新的藍牙版本?新版本的特性是什麼?

 

2.25 冷啓動&熱啓動

 

  • 1.什麼是冷啓動 & 什麼是熱啓動 & 它們的流程?

  • 2.如何優化冷啓動?

  • 3.啓動頁白屏,黑屏,太慢如何解決?

 

2.26 懸浮窗

 

  • 1.在作懸浮窗的時候你遇到了什麼困難(主要指懸浮窗權限適配)?

  • 2.如何製做一個懸浮窗?

 

2.27 Android版本

 

  • 1.最新的Android版本多少知道嗎?有哪些特性

  • 2.說說更新較大的Android版本。

 

2.28 Android Studio

 

  • 1.你如今比較經常使用Android Studio那個版本 & 用的Gradle版本是多少?

  • 2.如何理解gradle?

  • 3.說說Android Studio中大體項目結構?

  • 4.混淆是什麼 & 爲何須要進行混淆 & 混淆的原理 & 爲何Java反射經常會和混淆衝突?

 

2.29 UI卡頓優化

 

  • 1.ANR是什麼?致使緣由有哪些?

  • 2.談談你項目中避免ANR的一些經驗。

  • 3.分別說說Activity & BroadcastReceiver & Serice最長可耗時時間爲多少?

 

2.30 內存優化

 

  • 1.什麼是OOM & 什麼是內存泄漏 & 什麼是內存抖動?

  • 2.談談你項目中內存優化的一些經驗。

 

2.31 屏幕適配

 

  • 1.說說Android中一些屏幕單位。

  • 2.談談你項目中的一些屏幕適配的經驗。

  • 3.今日頭條的輕量級適配方案瞭解嗎 & 給我說說原理。

 

2.32 多渠道打包 & apk簽名

 

  • 1.apk爲何須要簽名?

  • 2.多渠道打包是什麼 & 有相似經驗嗎?

  • 3.簡述多渠道打包及原理和經常使用操做?

 

2.33 項目架構

 

  • 1.說說你用過的項目架構?

  • 2.分別給我說說MVC,MVP,MVVM特色和區別。

  • 3.以登錄界面爲例子,設計MVP架構。

  • 4.談談AndroidManifest.xml文件的理解。

 

2.34 Android前沿知識

 

  • 1.谷歌新出的Flutter知道嗎?

  • 2.谷歌新出的官方開發語言Kotlin瞭解嗎 & 和Java相比它有哪些特色。

  • 3.談談Kotlin中協程的認識?

 

2.35 音視頻開發(高薪)

 

  • 1.以前有過音視頻開發經驗嗎 & 說說用哪些開源架子開發的。

  • 2.FFmpeng瞭解過嗎?

  • 3.Android中播放視頻音頻的方式有哪些?

  • 4.Android中播放網絡地址視頻有哪些出色的開源庫?

  • 5.流媒體服務器瞭解嗎?

  • 6.談談你對編碼格式的理解。

  • 7.MediaPlayer和SoundPool的區別?

  • 8.視頻硬解碼和軟解碼的區別?

 

2.36 其它Android部分有關面試題

 

  • 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?

三、算法與數據結構部分

3.1 複雜度分析

 

  • 1.什麼是時間複雜度 & 什麼是空間複雜度?

  • 2.時間複雜度和空間複雜度之間存在什麼聯繫?

 

3.2 數組

 

  • 1.談談你對數組的理解。

 

3.3 鏈表

 

  • 1.什麼是單鏈表 & 雙向鏈表 & 循環鏈表 & 雙向循環鏈表 & 靜態鏈表。

  • 2.反轉一個鏈表有哪些方式?

  • 3.如何判斷鏈表有環?

  • 4.用Java語言設計一個LinkedList。

 

3.4 堆

 

  • 1.如何理解堆?

 

3.5 棧

 

  • 1.什麼是棧 & 棧的特色是什麼?

  • 2.什麼是順序棧 & 鏈式棧?

  • 3.你有沒有基於棧封裝的業務類?

  • 4.你能用棧實現隊列嗎?

  • 5.如何實現瀏覽器前進和後退功能?

 

3.6 隊列

 

  • 1.什麼是隊列 & 隊列的特色是什麼?

  • 2.什麼是優先隊列?

  • 3.什麼是雙端隊列 & 阻塞隊列?

  • 4.你能用隊列實現棧嗎?

 

3.7 散列表

 

  • 1.什麼是散列函數?

  • 2.什麼是散列衝突?解決的方式有哪些?Java中的HashMap解決方式採用的哪種?

  • 3.什麼是散列表的動態擴容?

  • 4.什麼是位圖?

 

3.8 樹

 

  • 1.什麼是二叉樹?

  • 2.什麼是先序遍歷 & 中序遍歷 & 後序遍歷。

  • 3.什麼是多路查找樹?

  • 4.什麼是紅黑樹?

 

3.9 排序

 

  • 1.給我說說你會的排序 & 複雜度如何?

  • 2.如今有10萬條數據須要進行排序,你會選擇什麼排序?

 

3.10 查找

 

  • 1.說說你知道的查找算法 & 複雜度如何?

 

3.11 遞歸&回溯算法

 

  • 1.什麼是遞歸 & 什麼是回溯?

 

3.12 貪心算法

 

 

  • 1.什麼是貪心算法?

 

3.13 其它有關算法與數據結構的面試題

 

  • 1.什麼是圖?能夠解決一些什麼問題?

  • 2.時針走一圈,時針分針重合幾回?

  • 3.有一個不均勻的繩子燒完要1個小時,如何算出1小時15分鐘?

  • 4.求1000之內的水仙花數以及40億之內的水仙花數?

  • 5.數據怎麼壓縮,數據的安全。

  • 6.談談你對對稱加密 & 非對稱加密的理解。

四、經常使用的開源庫部分

4.1 異步通訊

 

  • 1.RxJava用法 & RxJava2用法 & 原理 &用到的設計模式?

  • 2.EventBus用法 & 原理。

 

4.2 網絡

  • 1.OkHttp用法 & 源碼分析。

  • 2.Retrofit用法 & 源碼分析。

  • 3.Volley用法 & 缺點。

 

4.3 依賴注入

 

  • 1.ButterKnife用法 & 原理。

  • 2.Dagger2用法 & 原理。

 

4.4 圖片加載

 

  • 1.Glide用法 & 原理。

  • 2.Picasso用法 & 原理。

  • 3.Fresco用法 & 原理。

 

4.5 數據庫

 

  • 1.GreenDao。

  • 2.LitePal。

  • 3.OrmLite。

  • 4.DBFlow。

  • 5.Realm。

 

4.6 其它

 

  • 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.說說你項目中即時通信的方案有哪些?

相關文章
相關標籤/搜索