史上最全 BAT 大廠面試題整理
主要分為以下幾部分:
(1)java面試題
(2)Android面試題
(3)高階技術面試題
(4)非技術性問題&HR問題彙總
熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉原始碼實現原理,甚至要你知道有哪些不足,怎麼改進,還有一些java有關的一些演算法,設計模式等等。
(一) java基礎面試知識點
java中==和equals和hashCode的區別
int、char、long各佔多少位元組數
int與integer的區別
探探對java多型的理解
String、StringBuffer、StringBuilder區別
什麼是內部類?內部類的作用
抽象類和介面區別
抽象類的意義
抽象類與介面的應用場景
抽象類是否可以沒有方法和屬性?
介面的意義
泛型中extends和super的區別
父類的靜態方法能否被子類重寫
程序和執行緒的區別
final,finally,finalize的區別
序列化的方式
Serializable 和Parcelable 的區別
靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?
靜態內部類的設計意圖
成員內部類、靜態內部類、區域性內部類和匿名內部類的理解,以及專案中的應用
談談對kotlin的理解
閉包和區域性內部類的區別
string 轉換成 integer的方式及原理
(二) java深入原始碼級的面試題(有難度)
哪些情況下的物件會被垃圾回收機制處理掉?
講一下常見編碼方式?
utf-8編碼中的中文佔幾個位元組;int型幾個位元組?
靜態代理和動態代理的區別,什麼場景使用?
Java的異常體系
談談你對解析與分派的認識。
修改物件A的equals方法的簽名,那麼使用HashMap存放這個物件例項的時候,會呼叫哪個equals方法?
Java中實現多型的機制是什麼?
如何將一個Java物件序列化到檔案裡?
說說你對Java反射的理解
說說你對Java註解的理解
說說你對依賴注入的理解
說一下泛型原理,並舉例說明
Java中String的瞭解
String為什麼要設計成不可變的?
Object類的equal和hashCode方法重寫,為什麼?
(三) 資料結構
常用資料結構簡介
併發集合瞭解哪些?
列舉java的集合以及集合之間的繼承關係
集合類以及集合框架
容器類介紹以及之間的區別(容器類估計很多人沒聽這個詞,Java容器主要可以劃分為4個部分:List列表、Set集合、Map對映、工具類(Iterator迭代器、Enumeration列舉類、Arrays和Collections),具體的可以看看這篇博文 Java容器類 http://alexyyek.github.io/2015/04/06/Collection/)
List,Set,Map的區別
List和Map的實現方式以及儲存方式
HashMap的實現原理
HashMap資料結構?
HashMap原始碼理解
HashMap如何put資料(從HashMap原始碼角度講解)?
HashMap怎麼手寫實現?
ConcurrentHashMap的實現原理
ArrayMap和HashMap的對比
HashTable實現原理
TreeMap具體實現
HashMap和HashTable的區別
HashMap與HashSet的區別
HashSet與HashMap怎麼判斷集合元素重複?
集合Set實現Hash怎麼防止碰撞
ArrayList和LinkedList的區別,以及應用場景
陣列和連結串列的區別
二叉樹的深度優先遍歷和廣度優先遍歷的具體實現
堆的結構
堆和樹的區別
堆和棧在記憶體中的區別是什麼(解答提示:可以從資料結構方面以及實際實現方面兩個方面去回答)?
什麼是深拷貝和淺拷貝
手寫連結串列逆序程式碼
講一下對樹,B+樹的理解
講一下對圖的理解
判斷單鏈表成環與否?
連結串列翻轉(即:翻轉一個單項鍊表)
合併多個單有序連結串列(假設都是遞增的)
(四) 執行緒、多執行緒和執行緒池
開啟執行緒的三種方式?
執行緒和程序的區別?
為什麼要有執行緒,而不是僅僅用程序?
run()和start()方法區別
如何控制某個方法允許併發訪問執行緒的個數?
在Java中wait和seelp方法的不同;
談談wait/notify關鍵字的理解
什麼導致執行緒阻塞?
執行緒如何關閉?
講一下java中的同步的方法
資料一致性如何保證?
如何保證執行緒安全?
如何實現執行緒同步?
兩個程序同時要求寫或者讀,能不能實現?如何防止程序的同步?
執行緒間操作List
Java中物件的生命週期
Synchronized用法
synchronize的原理
談談對Synchronized關鍵字,類鎖,方法鎖,重入鎖的理解
static synchronized 方法的多執行緒訪問和作用
同一個類裡面兩個synchronized方法,兩個執行緒同時訪問的問題
volatile的原理
談談volatile關鍵字的用法
談談volatile關鍵字的作用
談談NIO的理解
synchronized 和volatile 關鍵字的區別
synchronized與Lock的區別
ReentrantLock 、synchronized和volatile比較
ReentrantLock的內部實現
lock原理
死鎖的四個必要條件?
怎麼避免死鎖?
物件鎖和類鎖是否會互相影響?
什麼是執行緒池,如何使用?
Java的併發、多執行緒、執行緒模型
談談對多執行緒的理解
多執行緒有什麼要注意的問題?
談談你對併發程式設計的理解並舉例說明
談談你對多執行緒同步機制的理解?
如何保證多執行緒讀寫檔案的安全?
多執行緒斷點續傳原理
斷點續傳的實現
(五)併發程式設計有關知識點
這個是一般Android開發用的少的,所以建議多去看看。
平時Android開發中對併發程式設計可以做得比較少,Thread這個類經常會用到,但是我們想提升自己的話,一定不能停留在表面,,我們也應該去了解一下java的關於執行緒相關的原始碼級別的東西。
2Android面試題Android面試題包括Android基礎,還有一些原始碼級別的、原理這些等。所以想去大公司面試,一定要多看看原始碼和實現方式,常用框架可以試試自己能不能手寫實現一下,鍛鍊一下自己。
(一)Android基礎知識點
四大元件是什麼
四大元件的生命週期和簡單用法
Activity之間的通訊方式
Activity各種情況下的生命週期
橫豎屏切換的時候,Activity 各種情況下的生命週期
Activity與Fragment之間生命週期比較
Activity上有Dialog的時候按Home鍵時的生命週期
兩個Activity 之間跳轉時必然會執行的是哪幾個方法?
前臺切換到後臺,然後再回到前臺,Activity生命週期回撥方法。彈出Dialog,生命值週期回撥方法。
Activity的四種啟動模式對比
Activity狀態保存於恢復
fragment各種情況下的生命週期
Fragment狀態儲存startActivityForResult是哪個類的方法,在什麼情況下使用?
如何實現Fragment的滑動?
fragment之間傳遞資料的方式?
Activity 怎麼和Service 繫結?
怎麼在Activity 中啟動自己對應的Service?
service和activity怎麼進行資料互動?
Service的開啟方式
請描述一下Service 的生命週期
談談你對ContentProvider的理解
說說ContentProvider、ContentResolver、ContentObserver 之間的關係
請描述一下廣播BroadcastReceiver的理解
廣播的分類
廣播使用的方式和場景
在manifest 和程式碼中如何註冊和使用BroadcastReceiver?
本地廣播和全域性廣播有什麼差別?
BroadcastReceiver,LocalBroadcastReceiver 區別
AlertDialog,popupWindow,Activity區別
Application 和 Activity 的 Context 物件的區別
Android屬性動畫特性
如何匯入外部資料庫?
LinearLayout、RelativeLayout、FrameLayout的特性及對比,並介紹使用場景。
談談對介面與回撥的理解
回撥的原理
寫一個回撥demo
介紹下SurfView
RecycleView的使用
序列化的作用,以及Android兩種序列化的區別
差值器
估值器
Android中資料儲存方式
(二)Android原始碼相關分析
Android動畫框架實現原理
Android各個版本API的區別
Requestlayout,onlayout,onDraw,DrawChild區別與聯絡
invalidate和postInvalidate的區別及使用
Activity-Window-View三者的差別
談談對Volley的理解
如何優化自定義View
低版本SDK如何實現高版本api?
描述一次網路請求的流程
HttpUrlConnection 和 okhttp關係
Bitmap物件的理解
looper架構
ActivityThread,AMS,WMS的工作原理
自定義View如何考慮機型適配
自定義View的事件
AstncTask+HttpClient 與 AsyncHttpClient有什麼區別?
LaunchMode應用場景
AsyncTask 如何使用?
SpareArray原理
請介紹下ContentProvider 是如何實現資料共享的?
AndroidService與Activity之間通訊的幾種方式
IntentService原理及作用是什麼?
說說Activity、Intent、Service 是什麼關係
ApplicationContext和ActivityContext的區別
SP是程序同步的嗎?有什麼方法做到同步?
談談多執行緒在Android中的使用
程序和 Application 的生命週期
封裝View的時候怎麼知道view的大小
RecycleView原理
AndroidManifest的作用與理解
(三)常見的一些原理性問題
Handler機制和底層實現
Handler、Thread和HandlerThread的差別
handler發訊息給子執行緒,looper怎麼啟動?
關於Handler,在任何地方new Handler 都是什麼執行緒下?
ThreadLocal原理,實現及如何保證Local屬性?
請解釋下在單執行緒模型中Message、Handler、Message Queue、Looper之間的關係
請描述一下View事件傳遞分發機制
Touch事件傳遞流程
事件分發中的onTouch 和onTouchEvent 有什麼區別,又該如何使用?
View和ViewGroup分別有哪些事件分發相關的回撥方法
View重新整理機制
View繪製流程
自定義控制元件原理
自定義View如何提供獲取View屬性的介面?
Android程式碼中實現WAP方式聯網
AsyncTask機制
AsyncTask原理及不足
如何取消AsyncTask?
為什麼不能在子執行緒更新UI?
ANR產生的原因是什麼?
ANR定位和修正
oom是什麼?
什麼情況導致oom?
相關推薦
史上最全 BAT 大廠面試題整理
主要分為以下幾部分:(1)java面試題(2)Android面試題(3)高階技術面試題(4)非技術性問題&HR問題彙總1java面試題熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉原始碼實現原理,甚至要你知道有哪些不足,怎麼改進,還有
史上最全阿里 Java 面試題總結
以下為大家整理了阿里巴巴史上最全的 Java 面試題,涉及大量 Java 面試知識點和相關試題。 JAVA基礎 JAVA中的幾種基本資料型別是什麼,各自佔用多少位元組。 String類能被繼承嗎,為什麼。 String,Stringbuffer
史上最全的iOS面試題及答案
最近在做iOS面試,總結一些實用的面試題以及參考答案,供博友們交流溝通。 可用一些不明確的技術要點引起話題,如: Multithreading:什麼時候處理多執行緒,幾種方式,優缺點。 Delegate, Notification,KVO, other 優
史上最全的Unity面試題(含答案)
一.什麼是渲染管道? 是指在顯示器上為了顯示出影象而經過的一系列必要操作。 渲染管道中的很多步驟,都要將幾何物體從一個座標系中變換到另一個座標系中去。 主要步驟有: 本地座標->檢視座標->背面裁剪->光照->裁剪->投影->檢視變換->光柵化。
史上最全的 struts2 面試題
1 Struts2與Struts1的聯絡與區別 為什麼要用Struts2struts1與struts2都是mvc框架的經典實現模式。Struts2不是從Struts1升級而來,而是有WebWork改名而來,而WebWork只是Xwork加了很多WEB攔截器而已.區別: 1.
史上最全 | 前端工程師面試題彙總
A、B兩人分別在兩座島上。B生病了,A有B所需要的藥。C有一艘小船和一個可以上鎖的箱子。C願意在A和B之間運東西,但東西只能放在箱子裡。只要箱子沒被上鎖,C都會偷走箱子裡的東西,不管箱子裡有什麼。如果A和B各自有一把鎖和只能開自己那把鎖的鑰匙,A應該如何把東西安全遞交給B? 答案:A把藥放進箱子,用自
史上最全Spring Boot面試題(含答案)看完就是Spring Boot專家!
一.Spring Boot、Spring MVC 和 Spring 有什麼區別? SpringFrame
史上最全的資料庫面試題,不看絕對後悔
資料庫面試知識點彙總 一、基本概念 1.主鍵、外來鍵、超鍵、候選鍵 超鍵:在關係中能唯一標識元組的屬性集稱為關係模式的超鍵。一個屬性可以為作為一個超鍵,多個屬性組合在一起也可以作為一個超鍵。超鍵包含候選鍵和主鍵。 候選鍵:是最小超鍵,即沒有冗餘元素的超鍵。 主鍵:資料庫表中對儲存資料物件予以唯一和完
史上最全 python常見面試題
大資料的檔案讀取 ① 利用生成器generator ②迭代器進行迭代遍歷:for line in file 迭代器和生成器的區別 1)迭代器是一個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string、list、dic
如何修改int的列印內容——史上最難的JAVA面試題
序 今天看到了一個比較特別的面試題,考察的是如何改變int的System.out.print的結果。題目如下: 下面的一句話“這是初級java實習生面試題”非常挑釁的激起了大家做題的慾望。 解題思路 解題的思路無外乎是3種方法: 1.作弊大法,
乾貨 | 史上最全中文分詞工具整理
作者 | fendouai 一.中文分詞 分詞服務介面列表 二.準確率評測: THULAC:與代表性分詞軟體的效能對比 我們選擇LTP-3.2.0 、ICTCLAS(2015版) 、jieba(C++版)等國內具代表性的分詞軟體與THULAC做效能
史上最全的BAT大廠Mysql面試題在這裡!
1、MySQL的複製原理以及流程 基本原理流程,3個執行緒以及之間的關聯; 主:binlog執行緒——記錄下所有改變了資
史上最全Java多線程面試題及答案
blog 上下文 exec 線程 單例 通信 流轉 排查 創建 多線程有什麽用? 線程和進程的區別是什麽? Java實現線程有哪幾種方式? 啟動線程方法start()和run()有什麽區別? 怎麽終止一個線程?如何優雅地終止線程? 一個線程的生命周期
史上最全 69 道 Spring 面試題和答案
str 路徑 輕量 情況下 list 開發 erp throw 解決方案 史上最全 69 道 Spring 面試題和答案 目錄Spring 概述依賴註入Spring beansSpring註解Spring數據訪問Spring面向切面編程(AOP)Spring MVC S
史上最全 50 道 Redis 面試題及答案
1、什麼是Redis? Redis本質上是一個Key-Value型別的記憶體資料庫,很像memcached,整個資料庫統統載入在記憶體當中進行操作,定期通過非同步操作把資料庫資料flush到硬碟上進行儲存。因為是純記憶體操作,Redis的效能非常出色,每秒可以處理超過 10
史上最全 50 道 Redis 面試題
1、什麼是Redis? Redis本質上是一個Key-Value型別的記憶體資料庫,很像memcached,整個資料庫統統載入在記憶體當中進行操作,定期通過非同步操作把資料庫資料flush到硬碟上進行儲存。因為是純記憶體操作,Redis的效能非常出色,每秒可以處理超過
史上最全python面試題詳解 (二)(附帶詳細答案(關注、持續更新))
23、re的match和search區別? re.match()從開頭開始匹配string。 re.search()從anywhere 來匹配string。 # 多行模式>>> re.match('X', 'A\nB\nX', re.MULTILINE) # No ma
史上最全python面試題詳解(三)(附帶詳細答案(關注、持續更新))
38、面向物件深度優先和廣度優先是什麼? 39、面向物件中super的作用? 40、是否使用過functools中的函式?其作用是什麼? 1 Python自帶的 functools 模組提供了一些常用的高階函式,也就是用於處理其它函式的特殊函式。
史上最全 40 道 Dubbo 面試題及答案,看完碾壓面試官!
想往高處走,怎麼能不懂 Dubbo? Dubbo是國內最出名的分散式服務框架,也是 Java 程式設計師必備的必會的框架之一。Dubbo 更是中高階面試過程中經常會問的技術,無論你是否用過,你都必須熟悉。 下面我為大家準備了一些 Dubbo 常見的的面試題,一些是我經常問
Redis 面試題 50 問,史上最全
1、什麼是Redis? Redis本質上是一個Key-Value型別的記憶體資料庫,很像memcached,整個資料庫統統載入在記憶體當中進行操作,定期通過非同步操作把資料庫資料flush到硬碟上進行儲存。因為是純記憶體操作,Redis的效能非常出色,每秒可以處理超過