最近有很多網(wǎng)友都在求大廠面試題识藤。正好我之前電腦里面有這方面的整理,于是就發(fā)上來分享給大家照弥。
這些題目是網(wǎng)友去百度、小米、樂視颈走、美團(tuán)、58咱士、獵豹立由、360轧钓、新浪、搜狐等一線互聯(lián)網(wǎng)公司面試被問到的題目锐膜。熟悉本文中列出的知識點(diǎn)會大大增加通過前兩輪技術(shù)面試的幾率毕箍。
網(wǎng)上的都是按照公司劃分的,想找具體某一方面的知識點(diǎn)有點(diǎn)不好找道盏,我這里就根據(jù)知識點(diǎn)分門別類的整理了一下而柑,想看哪一塊可以快速找到,希望可以幫助大家荷逞,祝大家求職順利媒咳。
本文同步發(fā)布在github上,想要md文件的种远,有興趣的可以去github下載下來研究涩澡,同時(shí)也歡迎網(wǎng)友提交面試題庫,歡迎點(diǎn)贊和留言坠敷。
github.com/AweiLoveAnd…
主要分為以下幾部分:
(1)java面試題
(2)Android面試題
(3)高端技術(shù)面試題
(4)非技術(shù)性問題&HR問題匯總
一筏养、java面試題
熟練掌握java是很關(guān)鍵的,大公司不僅僅要求你會使用幾個(gè)api常拓,更多的是要你熟悉源碼實(shí)現(xiàn)原理渐溶,甚至要你知道有哪些不足,怎么改進(jìn)弄抬,還有一些java有關(guān)的一些算法茎辐,設(shè)計(jì)模式等等。
(一) java基礎(chǔ)面試知識點(diǎn)
java中==和equals和hashCode的區(qū)別
int掂恕、char拖陆、long各占多少字節(jié)數(shù)
int與integer的區(qū)別
探探對java多態(tài)的理解
String、StringBuffer懊亡、StringBuilder區(qū)別
什么是內(nèi)部類依啰?內(nèi)部類的作用
抽象類和接口區(qū)別
抽象類的意義
抽象類與接口的應(yīng)用場景
抽象類是否可以沒有方法和屬性?
接口的意義
泛型中extends和super的區(qū)別
父類的靜態(tài)方法能否被子類重寫
進(jìn)程和線程的區(qū)別
final店枣,finally速警,finalize的區(qū)別
序列化的方式
Serializable 和Parcelable 的區(qū)別
靜態(tài)屬性和靜態(tài)方法是否可以被繼承?是否可以被重寫鸯两?以及原因闷旧?
靜態(tài)內(nèi)部類的設(shè)計(jì)意圖
成員內(nèi)部類、靜態(tài)內(nèi)部類钧唐、局部內(nèi)部類和匿名內(nèi)部類的理解忙灼,以及項(xiàng)目中的應(yīng)用
談?wù)剬otlin的理解
閉包和局部內(nèi)部類的區(qū)別
string 轉(zhuǎn)換成 integer的方式及原理
(二) java深入源碼級的面試題(有難度)
哪些情況下的對象會被垃圾回收機(jī)制處理掉?
講一下常見編碼方式?
utf-8編碼中的中文占幾個(gè)字節(jié)该园;int型幾個(gè)字節(jié)酸舍?
靜態(tài)代理和動(dòng)態(tài)代理的區(qū)別,什么場景使用里初?
Java的異常體系
談?wù)勀銓馕雠c分派的認(rèn)識父腕。
修改對象A的equals方法的簽名,那么使用HashMap存放這個(gè)對象實(shí)例的時(shí)候青瀑,會調(diào)用哪個(gè)equals方法璧亮?
Java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?
如何將一個(gè)Java對象序列化到文件里斥难?
說說你對Java反射的理解
說說你對Java注解的理解
說說你對依賴注入的理解
說一下泛型原理枝嘶,并舉例說明
Java中String的了解
String為什么要設(shè)計(jì)成不可變的?
Object類的equal和hashCode方法重寫哑诊,為什么群扶?
(三) 數(shù)據(jù)結(jié)構(gòu)
常用數(shù)據(jù)結(jié)構(gòu)簡介
并發(fā)集合了解哪些?
列舉java的集合以及集合之間的繼承關(guān)系
集合類以及集合框架
容器類介紹以及之間的區(qū)別(容器類估計(jì)很多人沒聽這個(gè)詞镀裤,Java容器主要可以劃分為4個(gè)部分:List列表竞阐、Set集合、Map映射暑劝、工具類(Iterator迭代器骆莹、Enumeration枚舉類、Arrays和Collections)担猛,具體的可以看看這篇博文 Java容器類)
List,Set,Map的區(qū)別
List和Map的實(shí)現(xiàn)方式以及存儲方式
HashMap的實(shí)現(xiàn)原理
HashMap數(shù)據(jù)結(jié)構(gòu)幕垦?
HashMap源碼理解
HashMap如何put數(shù)據(jù)(從HashMap源碼角度講解)?
HashMap怎么手寫實(shí)現(xiàn)傅联?
ConcurrentHashMap的實(shí)現(xiàn)原理
ArrayMap和HashMap的對比
HashTable實(shí)現(xiàn)原理
TreeMap具體實(shí)現(xiàn)
HashMap和HashTable的區(qū)別
HashMap與HashSet的區(qū)別
HashSet與HashMap怎么判斷集合元素重復(fù)先改?
集合Set實(shí)現(xiàn)Hash怎么防止碰撞
ArrayList和LinkedList的區(qū)別,以及應(yīng)用場景
數(shù)組和鏈表的區(qū)別
二叉樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷的具體實(shí)現(xiàn)
堆的結(jié)構(gòu)
堆和樹的區(qū)別
堆和棧在內(nèi)存中的區(qū)別是什么(解答提示:可以從數(shù)據(jù)結(jié)構(gòu)方面以及實(shí)際實(shí)現(xiàn)方面兩個(gè)方面去回答)蒸走?
什么是深拷貝和淺拷貝
手寫鏈表逆序代碼
講一下對樹仇奶,B+樹的理解
講一下對圖的理解
判斷單鏈表成環(huán)與否?
鏈表翻轉(zhuǎn)(即:翻轉(zhuǎn)一個(gè)單項(xiàng)鏈表)
合并多個(gè)單有序鏈表(假設(shè)都是遞增的)
(四) 線程比驻、多線程和線程池
開啟線程的三種方式该溯?
線程和進(jìn)程的區(qū)別?
為什么要有線程嫁艇,而不是僅僅用進(jìn)程朗伶?
run()和start()方法區(qū)別
如何控制某個(gè)方法允許并發(fā)訪問線程的個(gè)數(shù)?
在Java中wait和seelp方法的不同步咪;
談?wù)剋ait/notify關(guān)鍵字的理解
什么導(dǎo)致線程阻塞?
線程如何關(guān)閉益楼?
講一下java中的同步的方法
數(shù)據(jù)一致性如何保證猾漫?
如何保證線程安全点晴?
如何實(shí)現(xiàn)線程同步?
兩個(gè)進(jìn)程同時(shí)要求寫或者讀悯周,能不能實(shí)現(xiàn)粒督?如何防止進(jìn)程的同步?
線程間操作List
Java中對象的生命周期
Synchronized用法
synchronize的原理
談?wù)剬ynchronized關(guān)鍵字禽翼,類鎖屠橄,方法鎖,重入鎖的理解
static synchronized 方法的多線程訪問和作用
同一個(gè)類里面兩個(gè)synchronized方法闰挡,兩個(gè)線程同時(shí)訪問的問題
volatile的原理
談?wù)剉olatile關(guān)鍵字的用法
談?wù)剉olatile關(guān)鍵字的作用
談?wù)凬IO的理解
synchronized 和volatile 關(guān)鍵字的區(qū)別
synchronized與Lock的區(qū)別
ReentrantLock 锐墙、synchronized和volatile比較
ReentrantLock的內(nèi)部實(shí)現(xiàn)
lock原理
死鎖的四個(gè)必要條件?
怎么避免死鎖长酗?
對象鎖和類鎖是否會互相影響溪北?
什么是線程池,如何使用?
Java的并發(fā)夺脾、多線程之拨、線程模型
談?wù)剬Χ嗑€程的理解
多線程有什么要注意的問題?
談?wù)勀銓Σl(fā)編程的理解并舉例說明
談?wù)勀銓Χ嗑€程同步機(jī)制的理解咧叭?
如何保證多線程讀寫文件的安全蚀乔?
多線程斷點(diǎn)續(xù)傳原理
斷點(diǎn)續(xù)傳的實(shí)現(xiàn)
(五)并發(fā)編程有關(guān)知識點(diǎn)(這個(gè)是一般Android開發(fā)用的少的,所以建議多去看看):
平時(shí)Android開發(fā)中對并發(fā)編程可以做得比較少菲茬,Thread這個(gè)類經(jīng)常會用到乙墙,但是我們想提升自己的話,一定不能停留在表面生均,,我們也應(yīng)該去了解一下java的關(guān)于線程相關(guān)的源碼級別的東西听想。
學(xué)習(xí)的參考資料如下:
Java 內(nèi)存模型
java線程安全總結(jié)
深入理解java內(nèi)存模型系列文章
線程狀態(tài):
一張圖讓你看懂JAVA線程間的狀態(tài)轉(zhuǎn)換
鎖:
鎖機(jī)制:synchronized、Lock马胧、Condition
Java 中的鎖
并發(fā)編程:
Java并發(fā)編程:Thread類的使用
Java多線程編程總結(jié)
Java并發(fā)編程的總結(jié)與思考
Java并發(fā)編程實(shí)戰(zhàn)-----synchronized
深入分析ConcurrentHashMap
二汉买、Android面試題
Android面試題包括Android基礎(chǔ),還有一些源碼級別的佩脊、原理這些等蛙粘。所以想去大公司面試,一定要多看看源碼和實(shí)現(xiàn)方式威彰,常用框架可以試試自己能不能手寫實(shí)現(xiàn)一下,鍛煉一下自己歇盼。
(一)Android基礎(chǔ)知識點(diǎn)
四大組件是什么
四大組件的生命周期和簡單用法
Activity之間的通信方式
Activity各種情況下的生命周期
橫豎屏切換的時(shí)候舔痕,Activity 各種情況下的生命周期
Activity與Fragment之間生命周期比較
Activity上有Dialog的時(shí)候按Home鍵時(shí)的生命周期
兩個(gè)Activity 之間跳轉(zhuǎn)時(shí)必然會執(zhí)行的是哪幾個(gè)方法?
前臺切換到后臺,然后再回到前臺伯复,Activity生命周期回調(diào)方法慨代。彈出Dialog,生命值周期回調(diào)方法啸如。
Activity的四種啟動(dòng)模式對比
Activity狀態(tài)保存于恢復(fù)
fragment各種情況下的生命周期
Fragment狀態(tài)保存startActivityForResult是哪個(gè)類的方法侍匙,在什么情況下使用?
如何實(shí)現(xiàn)Fragment的滑動(dòng)叮雳?
fragment之間傳遞數(shù)據(jù)的方式想暗?
Activity 怎么和Service 綁定?
怎么在Activity 中啟動(dòng)自己對應(yīng)的Service帘不?
service和activity怎么進(jìn)行數(shù)據(jù)交互说莫?
Service的開啟方式
請描述一下Service 的生命周期
談?wù)勀銓ontentProvider的理解
說說ContentProvider、ContentResolver厌均、ContentObserver 之間的關(guān)系
請描述一下廣播BroadcastReceiver的理解
廣播的分類
廣播使用的方式和場景
在manifest 和代碼中如何注冊和使用BroadcastReceiver?
本地廣播和全局廣播有什么差別唬滑?
BroadcastReceiver,LocalBroadcastReceiver 區(qū)別
AlertDialog,popupWindow,Activity區(qū)別
Application 和 Activity 的 Context 對象的區(qū)別
Android屬性動(dòng)畫特性
如何導(dǎo)入外部數(shù)據(jù)庫?
LinearLayout棺弊、RelativeLayout晶密、FrameLayout的特性及對比,并介紹使用場景模她。
談?wù)剬涌谂c回調(diào)的理解
回調(diào)的原理
寫一個(gè)回調(diào)demo
介紹下SurfView
RecycleView的使用
序列化的作用稻艰,以及Android兩種序列化的區(qū)別
差值器
估值器
Android中數(shù)據(jù)存儲方式
(二)Android源碼相關(guān)分析
Android動(dòng)畫框架實(shí)現(xiàn)原理
Android各個(gè)版本API的區(qū)別
Requestlayout,onlayout侈净,onDraw尊勿,DrawChild區(qū)別與聯(lián)系
invalidate和postInvalidate的區(qū)別及使用
Activity-Window-View三者的差別
談?wù)剬olley的理解
如何優(yōu)化自定義View
低版本SDK如何實(shí)現(xiàn)高版本api?
描述一次網(wǎng)絡(luò)請求的流程
HttpUrlConnection 和 okhttp關(guān)系
Bitmap對象的理解
looper架構(gòu)
ActivityThread畜侦,AMS元扔,WMS的工作原理
自定義View如何考慮機(jī)型適配
自定義View的事件
AstncTask+HttpClient 與 AsyncHttpClient有什么區(qū)別?
LaunchMode應(yīng)用場景
AsyncTask 如何使用?
SpareArray原理
請介紹下ContentProvider 是如何實(shí)現(xiàn)數(shù)據(jù)共享的旋膳?
AndroidService與Activity之間通信的幾種方式
IntentService原理及作用是什么澎语?
說說Activity、Intent验懊、Service 是什么關(guān)系
ApplicationContext和ActivityContext的區(qū)別
SP是進(jìn)程同步的嗎?有什么方法做到同步擅羞?
談?wù)劧嗑€程在Android中的使用
進(jìn)程和 Application 的生命周期
封裝View的時(shí)候怎么知道view的大小
RecycleView原理
AndroidManifest的作用與理解
(三)常見的一些原理性問題
Handler機(jī)制和底層實(shí)現(xiàn)
Handler、Thread和HandlerThread的差別
handler發(fā)消息給子線程义图,looper怎么啟動(dòng)减俏?
關(guān)于Handler,在任何地方new Handler 都是什么線程下?
ThreadLocal原理碱工,實(shí)現(xiàn)及如何保證Local屬性娃承?
請解釋下在單線程模型中Message奏夫、Handler、Message Queue草慧、Looper之間的關(guān)系
請描述一下View事件傳遞分發(fā)機(jī)制
Touch事件傳遞流程
事件分發(fā)中的onTouch 和onTouchEvent 有什么區(qū)別桶蛔,又該如何使用匙头?
View和ViewGroup分別有哪些事件分發(fā)相關(guān)的回調(diào)方法
View刷新機(jī)制
View繪制流程
自定義控件原理
自定義View如何提供獲取View屬性的接口漫谷?
Android代碼中實(shí)現(xiàn)WAP方式聯(lián)網(wǎng)
AsyncTask機(jī)制
AsyncTask原理及不足
如何取消AsyncTask?
為什么不能在子線程更新UI蹂析?
ANR產(chǎn)生的原因是什么舔示?
ANR定位和修正
oom是什么?
什么情況導(dǎo)致oom电抚?
有什么解決方法可以避免OOM惕稻?
Oom 是否可以try catch?為什么蝙叛?
內(nèi)存泄漏是什么俺祠?
什么情況導(dǎo)致內(nèi)存泄漏?
如何防止線程的內(nèi)存泄漏借帘?
內(nèi)存泄露場的解決方法
內(nèi)存泄漏和內(nèi)存溢出區(qū)別蜘渣?
LruCache默認(rèn)緩存大小
ContentProvider的權(quán)限管理(解答:讀寫分離,權(quán)限控制-精確到表級肺然,URL控制)
如何通過廣播攔截和abort一條短信蔫缸?
廣播是否可以請求網(wǎng)絡(luò)?
廣播引起anr的時(shí)間限制是多少际起?
計(jì)算一個(gè)view的嵌套層級
Activity棧
Android線程有沒有上限拾碌?
線程池有沒有上限?
ListView重用的是什么街望?
Android為什么引入Parcelable校翔?
有沒有嘗試簡化Parcelable的使用?
(四)開發(fā)中常見的一些問題
ListView 中圖片錯(cuò)位的問題是如何產(chǎn)生的?
混合開發(fā)有了解嗎灾前?
知道哪些混合開發(fā)的方式防症?說出它們的優(yōu)缺點(diǎn)和各自使用場景?(解答:比如:RN豫柬,weex告希,H5,小程序烧给,WPA等燕偶。做Android的了解一些前端js等還是很有好處的);
屏幕適配的處理技巧都有哪些?
服務(wù)器只提供數(shù)據(jù)接收接口础嫡,在多線程或多進(jìn)程條件下指么,如何保證數(shù)據(jù)的有序到達(dá)酝惧?
動(dòng)態(tài)布局的理解
怎么去除重復(fù)代碼?
畫出 Android 的大體架構(gòu)圖
Recycleview和ListView的區(qū)別
ListView圖片加載錯(cuò)亂的原理和解決方案
動(dòng)態(tài)權(quán)限適配方案伯诬,權(quán)限組的概念
Android系統(tǒng)為什么會設(shè)計(jì)ContentProvider晚唇?
下拉狀態(tài)欄是不是影響activity的生命周期
如果在onStop的時(shí)候做了網(wǎng)絡(luò)請求,onResume的時(shí)候怎么恢復(fù)盗似?
Bitmap 使用時(shí)候注意什么哩陕?
Bitmap的recycler()
Android中開啟攝像頭的主要步驟
ViewPager使用細(xì)節(jié),如何設(shè)置成每次只初始化當(dāng)前的Fragment赫舒,其他的不初始化悍及?
點(diǎn)擊事件被攔截,但是想傳到下面的View接癌,如何操作心赶?
微信主頁面的實(shí)現(xiàn)方式
微信上消息小紅點(diǎn)的原理
CAS介紹(這是阿里巴巴的面試題,我不是很了解缺猛,可以參考博客: CAS簡介)
三缨叫、高端技術(shù)面試題
這里講的是大公司需要用到的一些高端Android技術(shù),這里專門整理了一個(gè)文檔荔燎,希望大家都可以看看耻姥。這些題目有點(diǎn)技術(shù)含量,需要好點(diǎn)時(shí)間去研究一下的湖雹。
(一)圖片
圖片庫對比
圖片庫的源碼分析
圖片框架緩存實(shí)現(xiàn)
LRUCache原理
圖片加載原理
自己去實(shí)現(xiàn)圖片庫咏闪,怎么做?
Glide源碼解析
Glide使用什么緩存摔吏?
Glide內(nèi)存緩存如何控制大懈肷?
(二)網(wǎng)絡(luò)和安全機(jī)制
網(wǎng)絡(luò)框架對比和源碼分析
自己去設(shè)計(jì)網(wǎng)絡(luò)請求框架征讲,怎么做据某?
okhttp源碼
網(wǎng)絡(luò)請求緩存處理,okhttp如何處理網(wǎng)絡(luò)緩存的
從網(wǎng)絡(luò)加載一個(gè)10M的圖片诗箍,說下注意事項(xiàng)
TCP的3次握手和四次揮手
TCP與UDP的區(qū)別
TCP與UDP的應(yīng)用
HTTP協(xié)議
HTTP1.0與2.0的區(qū)別
HTTP報(bào)文結(jié)構(gòu)
HTTP與HTTPS的區(qū)別以及如何實(shí)現(xiàn)安全性
如何驗(yàn)證證書的合法性?
https中哪里用了對稱加密癣籽,哪里用了非對稱加密,對加密算法(如RSA)等是否有了解?
client如何確定自己發(fā)送的消息被server收到?
談?wù)勀銓ebSocket的理解
WebSocket與socket的區(qū)別
談?wù)勀銓Π沧亢灻睦斫狻?/p>
請解釋安卓為啥要加簽名機(jī)制?
視頻加密傳輸
App 是如何沙箱化滤祖,為什么要這么做筷狼?
權(quán)限管理系統(tǒng)(底層的權(quán)限是如何進(jìn)行 grant 的)?
(三)數(shù)據(jù)庫
sqlite升級匠童,增加字段的語句
數(shù)據(jù)庫框架對比和源碼分析
數(shù)據(jù)庫的優(yōu)化
數(shù)據(jù)庫數(shù)據(jù)遷移問題
(四)算法
排序算法有哪些埂材?
最快的排序算法是哪個(gè)?
手寫一個(gè)冒泡排序
手寫快速排序代碼
快速排序的過程汤求、時(shí)間復(fù)雜度俏险、空間復(fù)雜度
手寫堆排序
堆排序過程严拒、時(shí)間復(fù)雜度及空間復(fù)雜度
寫出你所知道的排序算法及時(shí)空復(fù)雜度,穩(wěn)定性
二叉樹給出根節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)竖独,找出從根節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的路徑
給阿里2萬多名員工按年齡排序應(yīng)該選擇哪個(gè)算法裤唠?
GC算法(各種算法的優(yōu)缺點(diǎn)以及應(yīng)用場景)
蟻群算法與蒙特卡洛算法
子串包含問題(KMP 算法)寫代碼實(shí)現(xiàn)
一個(gè)無序,不重復(fù)數(shù)組莹痢,輸出N個(gè)元素种蘸,使得N個(gè)元素的和相加為M,給出時(shí)間復(fù)雜度格二、空間復(fù)雜度劈彪。手寫算法
萬億級別的兩個(gè)URL文件A和B竣蹦,如何求出A和B的差集C(提示:Bit映射->hash分組->多文件讀寫效率->磁盤尋址以及應(yīng)用層面對尋址的優(yōu)化)
百度POI中如何試下查找最近的商家功能(提示:坐標(biāo)鏡像+R樹)顶猜。
兩個(gè)不重復(fù)的數(shù)組集合中,求共同的元素痘括。
兩個(gè)不重復(fù)的數(shù)組集合中长窄,這兩個(gè)集合都是海量數(shù)據(jù),內(nèi)存中放不下纲菌,怎么求共同的元素挠日?
一個(gè)文件中有100萬個(gè)整數(shù),由空格分開翰舌,在程序中判斷用戶輸入的整數(shù)是否在此文件中嚣潜。說出最優(yōu)的方法
一張Bitmap所占內(nèi)存以及內(nèi)存占用的計(jì)算
2000萬個(gè)整數(shù),找出第五十大的數(shù)字椅贱?
燒一根不均勻的繩懂算,從頭燒到尾總共需要1個(gè)小時(shí)。現(xiàn)在有若干條材質(zhì)相同的繩子庇麦,問如何用燒繩的方法來計(jì)時(shí)一個(gè)小時(shí)十五分鐘呢计技?
求1000以內(nèi)的水仙花數(shù)以及40億以內(nèi)的水仙花數(shù)
5枚硬幣,2正3反如何劃分為兩堆然后通過翻轉(zhuǎn)讓兩堆中正面向上的硬8幣和反面向上的硬幣個(gè)數(shù)相同
時(shí)針走一圈山橄,時(shí)針分針重合幾次
N*N的方格紙,里面有多少個(gè)正方形
x個(gè)蘋果垮媒,一天只能吃一個(gè)、兩個(gè)航棱、或者三個(gè)睡雇,問多少天可以吃完?
(五)插件化饮醇、模塊化它抱、組件化、熱修復(fù)驳阎、增量更新抗愁、Gradle
對熱修復(fù)和插件化的理解
插件化原理分析
模塊化實(shí)現(xiàn)(好處馁蒂,原因)
熱修復(fù),插件化
項(xiàng)目組件化的理解
描述清點(diǎn)擊 Android Studio 的 build 按鈕后發(fā)生了什么
(六)架構(gòu)設(shè)計(jì)和設(shè)計(jì)模式
談?wù)勀銓ndroid設(shè)計(jì)模式的理解
MVC MVP MVVM原理和區(qū)別
你所知道的設(shè)計(jì)模式有哪些?
項(xiàng)目中常用的設(shè)計(jì)模式
手寫生產(chǎn)者/消費(fèi)者模式
寫出觀察者模式的代碼
適配器模式蜘腌,裝飾者模式沫屡,外觀模式的異同?
用到的一些開源框架撮珠,介紹一個(gè)看過源碼的沮脖,內(nèi)部實(shí)現(xiàn)過程。
談?wù)剬xJava的理解
RxJava的功能與原理實(shí)現(xiàn)
RxJava的作用芯急,與平時(shí)使用的異步操作來比的優(yōu)缺點(diǎn)
說說EventBus作用勺届,實(shí)現(xiàn)方式,代替EventBus的方式
從0設(shè)計(jì)一款A(yù)pp整體架構(gòu)娶耍,如何去做免姿?
說一款你認(rèn)為當(dāng)前比較火的應(yīng)用并設(shè)計(jì)(比如:直播APP,P2P金融榕酒,小視頻等)
談?wù)剬ava狀態(tài)機(jī)理解
Fragment如果在Adapter中使用應(yīng)該如何解耦胚膊?
Binder機(jī)制及底層實(shí)現(xiàn)
對于應(yīng)用更新這塊是如何做的?(解答:灰度想鹰,強(qiáng)制更新紊婉,分區(qū)域更新)?
實(shí)現(xiàn)一個(gè)Json解析器(可以通過正則提高速度)
統(tǒng)計(jì)啟動(dòng)時(shí)長,標(biāo)準(zhǔn)
(七)性能優(yōu)化
如何對Android 應(yīng)用進(jìn)行性能分析以及優(yōu)化?
ddms 和 traceView
性能優(yōu)化如何分析systrace辑舷?
用IDE如何分析內(nèi)存泄漏喻犁?
Java多線程引發(fā)的性能問題,怎么解決何缓?
啟動(dòng)頁白屏及黑屏解決肢础?
啟動(dòng)太慢怎么解決?
怎么保證應(yīng)用啟動(dòng)不卡頓歌殃?
App啟動(dòng)崩潰異常捕捉
自定義View注意事項(xiàng)
現(xiàn)在下載速度很慢,試從網(wǎng)絡(luò)協(xié)議的角度分析原因,并優(yōu)化(提示:網(wǎng)絡(luò)的5層都可以涉及)乔妈。
Https請求慢的解決辦法(提示:DNS,攜帶數(shù)據(jù)氓皱,直接訪問IP)
如何保持應(yīng)用的穩(wěn)定性
RecyclerView和ListView的性能對比
ListView的優(yōu)化
RecycleView優(yōu)化
View渲染
Bitmap如何處理大圖路召,如一張30M的大圖,如何預(yù)防OOM
java中的四種引用的區(qū)別以及使用場景
強(qiáng)引用置為null波材,會不會被回收股淡?
(八)NDK、jni廷区、Binder唯灵、AIDL、進(jìn)程通信有關(guān)
請介紹一下NDK
什么是NDK庫?
jni用過嗎隙轻?
如何在jni中注冊native函數(shù)埠帕,有幾種注冊方式?
Java如何調(diào)用c垢揩、c++語言?
jni如何調(diào)用java層代碼敛瓷?
進(jìn)程間通信的方式叁巨?
Binder機(jī)制
簡述IPC?
什么是AIDL呐籽?
AIDL解決了什么問題锋勺?
AIDL如何使用?
Android 上的 Inter-Process-Communication 跨進(jìn)程通信時(shí)如何工作的狡蝶?
多進(jìn)程場景遇見過么庶橱?
Android進(jìn)程分類?
進(jìn)程和 Application 的生命周期贪惹?
進(jìn)程調(diào)度
談?wù)剬M(jìn)程共享和線程安全的認(rèn)識
談?wù)剬Χ噙M(jìn)程開發(fā)的理解以及多進(jìn)程應(yīng)用場景
什么是協(xié)程苏章?
(九)framework層、ROM定制馍乙、Ubuntu布近、Linux之類的問題
java虛擬機(jī)的特性
談?wù)剬vm的理解
JVM內(nèi)存區(qū)域,開線程影響哪塊內(nèi)存
對Dalvik丝格、ART虛擬機(jī)有什么了解?
Art和Dalvik對比
虛擬機(jī)原理棵譬,如何自己設(shè)計(jì)一個(gè)虛擬機(jī)(內(nèi)存管理显蝌,類加載,雙親委派)
談?wù)勀銓﹄p親委派模型理解
JVM內(nèi)存模型订咸,內(nèi)存區(qū)域
類加載機(jī)制
談?wù)剬lassLoader(類加載器)的理解
談?wù)剬?dòng)態(tài)加載(OSGI)的理解
內(nèi)存對象的循環(huán)引用及避免
內(nèi)存回收機(jī)制曼尊、GC回收策略、GC原理時(shí)機(jī)以及GC對象
垃圾回收機(jī)制與調(diào)用System.gc()區(qū)別
Ubuntu編譯安卓系統(tǒng)
系統(tǒng)啟動(dòng)流程是什么脏嚷?(提示:Zygote進(jìn)程 –> SystemServer進(jìn)程 –> 各種系統(tǒng)服務(wù) –> 應(yīng)用進(jìn)程)
大體說清一個(gè)應(yīng)用程序安裝到手機(jī)上時(shí)發(fā)生了什么
簡述Activity啟動(dòng)全部過程
App啟動(dòng)流程骆撇,從點(diǎn)擊桌面開始
邏輯地址與物理地址,為什么使用邏輯地址父叙?
Android為每個(gè)應(yīng)用程序分配的內(nèi)存大小是多少神郊?
Android中進(jìn)程內(nèi)存的分配,能不能自己分配定額內(nèi)存趾唱?
進(jìn)程庇咳椋活的方式
如何保證一個(gè)后臺服務(wù)不被殺死?(相同問題:如何保證service在后臺不被kill甜癞?)比較省電的方式是什么夕晓?
App中喚醒其他進(jìn)程的實(shí)現(xiàn)方式
四、非技術(shù)性問題&HR問題匯總
這里整理的是一些與技術(shù)沒有直接關(guān)系的面試題悠咱,但是能夠考察你的綜合水平蒸辆,所以不要以為不是技術(shù)問題征炼,就不看,往往有時(shí)候就是這樣一些細(xì)節(jié)的題目被忽視躬贡,而錯(cuò)過了一次次面試機(jī)會柒室。
(一)非技術(shù)問題
介紹你做過的哪些項(xiàng)目
都使用過哪些框架、平臺逗宜?
都使用過哪些自定義控件雄右?
研究比較深入的領(lǐng)域有哪些?
對業(yè)內(nèi)信息的關(guān)注渠道有哪些纺讲?
最近都讀哪些書擂仍?
有沒有什么開源項(xiàng)目?
自己最擅長的技術(shù)點(diǎn)熬甚,最感興趣的技術(shù)領(lǐng)域和技術(shù)點(diǎn)
項(xiàng)目中用了哪些開源庫逢渔,如何避免因?yàn)橐腴_源庫而導(dǎo)致的安全性和穩(wěn)定性問題
實(shí)習(xí)過程中做了什么,有什么產(chǎn)出乡括?
(二)HR提出的面試問題
您在前一家公司的離職原因是什么肃廓?
講一件你印象最深的一件事情
介紹一個(gè)你影響最深的項(xiàng)目
介紹你最熱愛最擅長的專業(yè)領(lǐng)域
公司實(shí)習(xí)最大的收獲是什么?
與上級意見不一致時(shí)诲泌,你將怎么辦盲赊?
自己的優(yōu)點(diǎn)和缺點(diǎn)是什么?并舉例說明敷扫?
你的學(xué)習(xí)方法是什么樣的哀蘑?實(shí)習(xí)過程中如何學(xué)習(xí)?實(shí)習(xí)項(xiàng)目中遇到的最大困難是什么以及如何解決的葵第?
說一件最能證明你能力的事情
針對你你申請的這個(gè)職位绘迁,你認(rèn)為你還欠缺什么
如果通過這次面試我們單位錄用了你,但工作一段時(shí)間卻發(fā)現(xiàn)你根本不適合這個(gè)職位卒密,你怎么辦缀台?
項(xiàng)目中遇到最大的困難是什么?如何解決的哮奇?
你的職業(yè)規(guī)劃以及個(gè)人目標(biāo)膛腐、未來發(fā)展路線及求職定位
如果你在這次面試中沒有被錄用,你怎么打算屏镊?
評價(jià)下自己依疼,評價(jià)下自己的技術(shù)水平,個(gè)人代碼量如何而芥?
通過哪些渠道了解的招聘信息律罢,其他同學(xué)都投了哪些公司?
業(yè)余都有哪些愛好?
你做過的哪件事最令自己感到驕傲误辑?
假如你晚上要去送一個(gè)出國的同學(xué)去機(jī)場沧踏,可單位臨時(shí)有事非你辦不可,你怎么辦巾钉?
就你申請的這個(gè)職位翘狱,你認(rèn)為你還欠缺什么?
當(dāng)前的offer狀況砰苍;如果BATH都給了offer該如何選潦匈?
你對一份工作更看重哪些方面?平臺赚导,技術(shù)茬缩,氛圍,城市吼旧,還是money凰锡?
理想薪資范圍;杭州崗和北京崗選哪個(gè)圈暗?
理想中的工作環(huán)境是什么掂为?
談?wù)勀銓μ鄣目捶?/p>
說說你對行業(yè)、技術(shù)發(fā)展趨勢的看法
實(shí)習(xí)過程中周圍同事/同學(xué)有哪些值得學(xué)習(xí)的地方员串?
家人對你的工作期望及自己的工作期望
如果你的工作出現(xiàn)失誤勇哗,給本公司造成經(jīng)濟(jì)損失,你認(rèn)為該怎么辦昵济?
若上司在公開會議上誤會你了智绸,該如何解決?
是否可以實(shí)習(xí)访忿,可以實(shí)習(xí)多久?
在五年的時(shí)間內(nèi)斯稳,你的職業(yè)規(guī)劃
你看中公司的什么海铆?或者公司的那些方面最吸引你?
以上就是我的分享挣惰,看完的朋友們記得點(diǎn)個(gè)贊哦卧斟,想要獲得更多各大BAT的面試真題的朋友們可以進(jìn)我的Java高級架構(gòu)師交流群(qun號:680075317),進(jìn)群小窗口群主即可免費(fèi)領(lǐng)取憎茂,絕無套路珍语,助你一臂之力,想進(jìn)行Java技術(shù)交流的也可以竖幔,大家一起交流一起進(jìn)步板乙!