1、Java部分
1.1 操作系統相關
-
1.什么是操作系統?
-
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.給我談談你對分派的理解。
2、Android 部分
答案鏈接 https://www.cnblogs.com/hustcser/p/11176151.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、算法與數據結構部分
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、常用的開源庫部分
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.你是如何設計一個網絡請求框架的?
5、計算機網絡部分
-
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.說說你項目中即時通訊的方案有哪些?