最全的BAT大廠面試題整理(小結(jié))

臨近年關,又到了面試求職高峰期,最近有很多網(wǎng)友都在求大廠面試題。正好我之前電腦里面有這方面的整理,于是就發(fā)上來分享給大家。
這些題目是網(wǎng)友去百度、小米、樂視、美團、58、獵豹、360、新浪、搜狐等一線互聯(lián)網(wǎng)公司面試被問到的題目。熟悉本文中列出的知識點會大大增加通過前兩輪技術(shù)面試的幾率。
網(wǎng)上的都是按照公司劃分的,想找具體某一方面的知識點有點不好找,我這里就根據(jù)知識點分門別類的整理了一下,想看哪一塊可以快速找到,希望可以幫助大家,祝大家求職順利。
主要分為以下幾部分:
(1)java面試題
(2)Android面試題
(3)混合開發(fā)面試題
(4)高端技術(shù)面試題
(5)非技術(shù)性問題&HR問題匯總
一、java面試題
熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉源碼實現(xiàn)原理,甚至要你知道有哪些不足,怎么改進,還有一些java有關的一些算法,設計模式等等。
(一) java基礎面試知識點
java中==和equals和hashCode的區(qū)別
int、char、long各占多少字節(jié)數(shù)
int與integer的區(qū)別
談談對java多態(tài)的理解
String、StringBuffer、StringBuilder區(qū)別
什么是內(nèi)部類?內(nèi)部類的作用
抽象類和接口區(qū)別
抽象類的意義
抽象類與接口的應用場景
抽象類是否可以沒有方法和屬性?
接口的意義
泛型中extends和super的區(qū)別
父類的靜態(tài)方法能否被子類重寫
進程和線程的區(qū)別
final,finally,finalize的區(qū)別
序列化的方式
Serializable 和Parcelable 的區(qū)別
靜態(tài)屬性和靜態(tài)方法是否可以被繼承?是否可以被重寫?以及原因?
靜態(tài)內(nèi)部類的設計意圖
成員內(nèi)部類、靜態(tài)內(nèi)部類、局部內(nèi)部類和匿名內(nèi)部類的理解,以及項目中的應用
談談對kotlin的理解
閉包和局部內(nèi)部類的區(qū)別
string 轉(zhuǎn)換成 integer的方式及原理
(二) java深入源碼級的面試題(有難度)
哪些情況下的對象會被垃圾回收機制處理掉?
講一下常見編碼方式?
utf-8編碼中的中文占幾個字節(jié);int型幾個字節(jié)?
靜態(tài)代理和動態(tài)代理的區(qū)別,什么場景使用?
Java的異常體系
談談你對解析與分派的認識。
修改對象A的equals方法的簽名,那么使用HashMap存放這個對象實例的時候,會調(diào)用哪個equals方法?
Java中實現(xiàn)多態(tài)的機制是什么?
如何將一個Java對象序列化到文件里?
說說你對Java反射的理解
說說你對Java注解的理解
說說你對依賴注入的理解
說一下泛型原理,并舉例說明
Java中String的了解
String為什么要設計成不可變的?
Object類的equal和hashCode方法重寫,為什么?
(三) 數(shù)據(jù)結(jié)構(gòu)
常用數(shù)據(jù)結(jié)構(gòu)簡介
并發(fā)集合了解哪些?
列舉java的集合以及集合之間的繼承關系
集合類以及集合框架
容器類介紹以及之間的區(qū)別(容器類估計很多人沒聽這個詞,Java容器主要可以劃分為4個部分:List列表、Set集合、Map映射、工具類(Iterator迭代器、Enumeration枚舉類、Arrays和Collections)
List,Set,Map的區(qū)別
List和Map的實現(xiàn)方式以及存儲方式
HashMap的實現(xiàn)原理
HashMap數(shù)據(jù)結(jié)構(gòu)?
HashMap源碼理解
HashMap如何put數(shù)據(jù)(從HashMap源碼角度講解)?
HashMap怎么手寫實現(xiàn)?
ConcurrentHashMap的實現(xiàn)原理
ArrayMap和HashMap的對比
HashTable實現(xiàn)原理
TreeMap具體實現(xiàn)
HashMap和HashTable的區(qū)別
HashMap與HashSet的區(qū)別
HashSet與HashMap怎么判斷集合元素重復?
集合Set實現(xiàn)Hash怎么防止碰撞
ArrayList和LinkedList的區(qū)別,以及應用場景
數(shù)組和鏈表的區(qū)別
二叉樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷的具體實現(xiàn)
堆的結(jié)構(gòu)
堆和樹的區(qū)別
堆和棧在內(nèi)存中的區(qū)別是什么(解答提示:可以從數(shù)據(jù)結(jié)構(gòu)方面以及實際實現(xiàn)方面兩個方面去回答)?
什么是深拷貝和淺拷貝
手寫鏈表逆序代碼
講一下對樹,B+樹的理解
講一下對圖的理解
判斷單鏈表成環(huán)與否?
鏈表翻轉(zhuǎn)(即:翻轉(zhuǎn)一個單項鏈表)
合并多個單有序鏈表(假設都是遞增的)
(四) 線程、多線程和線程池
開啟線程的三種方式?
線程和進程的區(qū)別?
為什么要有線程,而不是僅僅用進程?
run()和start()方法區(qū)別
如何控制某個方法允許并發(fā)訪問線程的個數(shù)?
在Java中wait和seelp方法的不同;
談談wait/notify關鍵字的理解
什么導致線程阻塞?
線程如何關閉?
講一下java中的同步的方法
數(shù)據(jù)一致性如何保證?
如何保證線程安全?
如何實現(xiàn)線程同步?
兩個進程同時要求寫或者讀,能不能實現(xiàn)?如何防止進程的同步?
線程間操作List
Java中對象的生命周期
Synchronized用法
synchronize的原理
談談對Synchronized關鍵字,類鎖,方法鎖,重入鎖的理解
static synchronized 方法的多線程訪問和作用
同一個類里面兩個synchronized方法,兩個線程同時訪問的問題
volatile的原理
談談volatile關鍵字的用法
談談volatile關鍵字的作用
談談NIO的理解
synchronized 和volatile 關鍵字的區(qū)別
synchronized與Lock的區(qū)別
ReentrantLock 、synchronized和volatile比較
ReentrantLock的內(nèi)部實現(xiàn)
lock原理
死鎖的四個必要條件?
怎么避免死鎖?
對象鎖和類鎖是否會互相影響?
什么是線程池,如何使用?
Java的并發(fā)、多線程、線程模型
談談對多線程的理解
多線程有什么要注意的問題?
談談你對并發(fā)編程的理解并舉例說明
談談你對多線程同步機制的理解?
如何保證多線程讀寫文件的安全?
多線程斷點續(xù)傳原理
斷點續(xù)傳的實現(xiàn)
(五)并發(fā)編程有關知識點(這個是一般Android開發(fā)用的少的,所以建議多去看看):
平時Android開發(fā)中對并發(fā)編程可以做得比較少,Thread這個類經(jīng)常會用到,但是我們想提升自己的話,一定不能停留在表面,,我們也應該去了解一下java的關于線程相關的源碼級別的東西。
二、Android面試題
Android面試題包括Android基礎,還有一些源碼級別的、原理這些等。所以想去大公司面試,一定要多看看源碼和實現(xiàn)方式,常用框架可以試試自己能不能手寫實現(xiàn)一下,鍛煉一下自己。
(一)Android基礎知識點
四大組件是什么
四大組件的生命周期和簡單用法
Activity之間的通信方式
Activity各種情況下的生命周期
橫豎屏切換的時候,Activity 各種情況下的生命周期
Activity與Fragment之間生命周期比較
Activity上有Dialog的時候按Home鍵時的生命周期
兩個Activity 之間跳轉(zhuǎn)時必然會執(zhí)行的是哪幾個方法?
前臺切換到后臺,然后再回到前臺,Activity生命周期回調(diào)方法。彈出Dialog,生命值周期回調(diào)方法。
Activity的四種啟動模式對比
Activity狀態(tài)保存于恢復
fragment各種情況下的生命周期
Fragment狀態(tài)保存startActivityForResult是哪個類的方法,在什么情況下使用?
如何實現(xiàn)Fragment的滑動?
fragment之間傳遞數(shù)據(jù)的方式?
Activity 怎么和Service 綁定?
怎么在Activity 中啟動自己對應的Service?
service和activity怎么進行數(shù)據(jù)交互?
Service的開啟方式
請描述一下Service 的生命周期
談談你對ContentProvider的理解
說說ContentProvider、ContentResolver、ContentObserver 之間的關系
請描述一下廣播BroadcastReceiver的理解
廣播的分類
廣播使用的方式和場景
在manifest 和代碼中如何注冊和使用BroadcastReceiver?
本地廣播和全局廣播有什么差別?
BroadcastReceiver,LocalBroadcastReceiver 區(qū)別
AlertDialog,popupWindow,Activity區(qū)別
Application 和 Activity 的 Context 對象的區(qū)別
Android屬性動畫特性
如何導入外部數(shù)據(jù)庫?
LinearLayout、RelativeLayout、FrameLayout的特性及對比,并介紹使用場景。
談談對接口與回調(diào)的理解
回調(diào)的原理
寫一個回調(diào)demo
介紹下SurfView
RecycleView的使用
序列化的作用,以及Android兩種序列化的區(qū)別
差值器
估值器
Android中數(shù)據(jù)存儲方式
(二)Android源碼相關分析
Android動畫框架實現(xiàn)原理
Android各個版本API的區(qū)別
Requestlayout,onlayout,onDraw,DrawChild區(qū)別與聯(lián)系
invalidate和postInvalidate的區(qū)別及使用
Activity-Window-View三者的差別
談談對Volley的理解
如何優(yōu)化自定義View
低版本SDK如何實現(xiàn)高版本api?
描述一次網(wǎng)絡請求的流程
HttpUrlConnection 和 okhttp關系
Bitmap對象的理解
looper架構(gòu)
ActivityThread,AMS,WMS的工作原理
自定義View如何考慮機型適配
自定義View的事件
AstncTask+HttpClient 與 AsyncHttpClient有什么區(qū)別?
LaunchMode應用場景
AsyncTask 如何使用?
SpareArray原理
請介紹下ContentProvider 是如何實現(xiàn)數(shù)據(jù)共享的?
AndroidService與Activity之間通信的幾種方式
IntentService原理及作用是什么?
說說Activity、Intent、Service 是什么關系
ApplicationContext和ActivityContext的區(qū)別
SP是進程同步的嗎?有什么方法做到同步?
談談多線程在Android中的使用
進程和 Application 的生命周期
封裝View的時候怎么知道view的大小
RecycleView原理
AndroidManifest的作用與理解
(三)常見的一些原理性問題
Handler機制和底層實現(xiàn)
Handler、Thread和HandlerThread的差別
handler發(fā)消息給子線程,looper怎么啟動?
關于Handler,在任何地方new Handler 都是什么線程下?
ThreadLocal原理,實現(xiàn)及如何保證Local屬性?
請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關系
請描述一下View事件傳遞分發(fā)機制
Touch事件傳遞流程
事件分發(fā)中的onTouch 和onTouchEvent 有什么區(qū)別,又該如何使用?
View和ViewGroup分別有哪些事件分發(fā)相關的回調(diào)方法
View刷新機制
View繪制流程
自定義控件原理
自定義View如何提供獲取View屬性的接口?
Android代碼中實現(xiàn)WAP方式聯(lián)網(wǎng)
AsyncTask機制
AsyncTask原理及不足
如何取消AsyncTask?
為什么不能在子線程更新UI?
ANR產(chǎn)生的原因是什么?
ANR定位和修正
oom是什么?
什么情況導致oom?
有什么解決方法可以避免OOM?
Oom 是否可以try catch?為什么?
內(nèi)存泄漏是什么?
什么情況導致內(nèi)存泄漏?
如何防止線程的內(nèi)存泄漏?
內(nèi)存泄露場的解決方法
內(nèi)存泄漏和內(nèi)存溢出區(qū)別?
LruCache默認緩存大小
ContentProvider的權(quán)限管理(解答:讀寫分離,權(quán)限控制-精確到表級,URL控制)
如何通過廣播攔截和abort一條短信?
廣播是否可以請求網(wǎng)絡?
廣播引起anr的時間限制是多少?
計算一個view的嵌套層級
Activity棧
Android線程有沒有上限?
線程池有沒有上限?
ListView重用的是什么?
Android為什么引入Parcelable?
有沒有嘗試簡化Parcelable的使用?
(四)開發(fā)中常見的一些問題
ListView 中圖片錯位的問題是如何產(chǎn)生的?
混合開發(fā)有了解嗎?
知道哪些混合開發(fā)的方式?說出它們的優(yōu)缺點和各自使用場景?(解答:比如:RN,weex,H5,小程序,WPA等。做Android的了解一些前端js等還是很有好處的);
屏幕適配的處理技巧都有哪些?
服務器只提供數(shù)據(jù)接收接口,在多線程或多進程條件下,如何保證數(shù)據(jù)的有序到達?
動態(tài)布局的理解
怎么去除重復代碼?
畫出 Android 的大體架構(gòu)圖
Recycleview和ListView的區(qū)別
ListView圖片加載錯亂的原理和解決方案
動態(tài)權(quán)限適配方案,權(quán)限組的概念
Android系統(tǒng)為什么會設計ContentProvider?
下拉狀態(tài)欄是不是影響activity的生命周期
如果在onStop的時候做了網(wǎng)絡請求,onResume的時候怎么恢復?
Bitmap 使用時候注意什么?
Bitmap的recycler()
Android中開啟攝像頭的主要步驟
ViewPager使用細節(jié),如何設置成每次只初始化當前的Fragment,其他的不初始化?
點擊事件被攔截,但是想傳到下面的View,如何操作?
微信主頁面的實現(xiàn)方式
微信上消息小紅點的原理
CAS介紹
三、混合開發(fā)面試題
大廠除了技術(shù)深度之外,還要求你具備一些廣度的知識,比如你要會前端知識,會混合開發(fā),至少會一種腳本語言,C c++更不用說了,也是必會的。
Hybrid做過嗎?
Hybrid通信原理是什么,有做研究嗎?
react native有多少了解?講一下原理。
weex了解嗎?如何自己實現(xiàn)類似技術(shù)?
flutter了解嗎?內(nèi)部是如何實現(xiàn)跨平臺的?
Dart語言有研究貴嗎?
快應用了解嗎?跟其她方式相比有什么優(yōu)缺點?
說說你用過的混合開發(fā)技術(shù)有哪些?各有什么優(yōu)缺點?
Python會嗎?
會不會PHP?
Gradle了解多少?groovy語法會嗎?
相關文章
- 這篇文章主要介紹了去BAT面試完的Mysql面試題總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-12-19
19年BAT大廠面試總結(jié),這些面試題你都掌握好可以備戰(zhàn) 2020年了嗎?
這篇文章主要介紹了19年BAT大廠面試總結(jié),這些面試題你都掌握好可以備戰(zhàn) 2020年了嗎?小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-12-06- 這篇文章主要介紹了十道常見的MyBatis 面試題(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-12-05
BAT大數(shù)據(jù)面試題與參考答案小結(jié)
這篇文章主要介紹了BAT大數(shù)據(jù)面試題與參考答案,總結(jié)分析了大數(shù)據(jù)常見的各種知識點、疑難問題與參考答案,需要的朋友可以參考下2019-08-16