面試題目搜集

網(wǎng)上的都是按照公司劃分的,想找具體某一方面的知識點有點不好找,我這里就根據(jù)知識點分門別類的整理了一下,想看哪一塊可以快速找到,希望可以幫助大家,祝大家求職順利。

主要分為以下幾部分:

(1)java面試題
(2)高端技術(shù)面試題
(3)非技術(shù)性問題&HR問題匯總

1
java面試題

熟練掌握java是很關(guān)鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉源碼實現(xiàn)原理,甚至要你知道有哪些不足,怎么改進,還有一些java有關(guān)的一些算法,設(shè)計模式等等。

(一) java基礎(chǔ)面試知識點
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)方法能否被子類重寫
進程和線程的區(qū)別
final,finally,finalize的區(qū)別
序列化的方式
Serializable 和Parcelable 的區(qū)別
靜態(tài)屬性和靜態(tài)方法是否可以被繼承?是否可以被重寫?以及原因?
靜態(tài)內(nèi)部類的設(shè)計意圖
成員內(nèi)部類、靜態(tài)內(nèi)部類、局部內(nèi)部類和匿名內(nèi)部類的理解,以及項目中的應(yīng)用
談?wù)剬otlin的理解
閉包和局部內(nèi)部類的區(qū)別
string 轉(zhuǎn)換成 integer的方式及原理

(二) java深入源碼級的面試題(有難度)
哪些情況下的對象會被垃圾回收機制處理掉?
講一下常見編碼方式?
utf-8編碼中的中文占幾個字節(jié);int型幾個字節(jié)?
靜態(tài)代理和動態(tài)代理的區(qū)別,什么場景使用?
Java的異常體系
談?wù)勀銓馕雠c分派的認(rèn)識。
修改對象A的equals方法的簽名,那么使用HashMap存放這個對象實例的時候,會調(diào)用哪個equals方法?
Java中實現(xiàn)多態(tài)的機制是什么?
如何將一個Java對象序列化到文件里?
說說你對Java反射的理解
說說你對Java注解的理解
說說你對依賴注入的理解
說一下泛型原理,并舉例說明
Java中String的了解
String為什么要設(shè)計成不可變的?
Object類的equal和hashCode方法重寫,為什么?

(三) 數(shù)據(jù)結(jié)構(gòu)
常用數(shù)據(jù)結(jié)構(gòu)簡介
并發(fā)集合了解哪些?
列舉java的集合以及集合之間的繼承關(guān)系
集合類以及集合框架
容器類介紹以及之間的區(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怎么判斷集合元素重復(fù)?
集合Set實現(xiàn)Hash怎么防止碰撞
ArrayList和LinkedList的區(qū)別,以及應(yīng)用場景
數(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)一個單項鏈表)
合并多個單有序鏈表(假設(shè)都是遞增的)

(四) 線程、多線程和線程池
開啟線程的三種方式?
線程和進程的區(qū)別?
為什么要有線程,而不是僅僅用進程?
run()和start()方法區(qū)別
如何控制某個方法允許并發(fā)訪問線程的個數(shù)?
在Java中wait和seelp方法的不同;
談?wù)剋ait/notify關(guān)鍵字的理解
什么導(dǎo)致線程阻塞?
線程如何關(guān)閉?
講一下java中的同步的方法
數(shù)據(jù)一致性如何保證?
如何保證線程安全?
如何實現(xiàn)線程同步?
兩個進程同時要求寫或者讀,能不能實現(xiàn)?如何防止進程的同步?
線程間操作List
Java中對象的生命周期
Synchronized用法
synchronize的原理
談?wù)剬ynchronized關(guān)鍵字,類鎖,方法鎖,重入鎖的理解
static synchronized 方法的多線程訪問和作用
同一個類里面兩個synchronized方法,兩個線程同時訪問的問題
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)部實現(xiàn)
lock原理
死鎖的四個必要條件?
怎么避免死鎖?
對象鎖和類鎖是否會互相影響?
什么是線程池,如何使用?
Java的并發(fā)、多線程、線程模型
談?wù)剬Χ嗑€程的理解
多線程有什么要注意的問題?
談?wù)勀銓Σl(fā)編程的理解并舉例說明
談?wù)勀銓Χ嗑€程同步機制的理解?
如何保證多線程讀寫文件的安全?
多線程斷點續(xù)傳原理
斷點續(xù)傳的實現(xiàn)

(五)并發(fā)編程有關(guān)知識點
這個是一般Android開發(fā)用的少的,所以建議多去看看。
平時Android開發(fā)中對并發(fā)編程可以做得比較少,Thread這個類經(jīng)常會用到,但是我們想提升自己的話,一定不能停留在表面,,我們也應(yīng)該去了解一下java的關(guān)于線程相關(guān)的源碼級別的東西。

2
高端技術(shù)面試題

這里講的是大公司需要用到的一些高端技術(shù),這里專門整理了一個文檔,希望大家都可以看看。這些題目有點技術(shù)含量,需要好點時間去研究一下的。

(一)圖片
圖片庫對比
圖片庫的源碼分析
圖片框架緩存實現(xiàn)
LRUCache原理
圖片加載原理
自己去實現(xiàn)圖片庫,怎么做?
Glide源碼解析
Glide使用什么緩存?
Glide內(nèi)存緩存如何控制大小?

(二)網(wǎng)絡(luò)和安全機制
網(wǎng)絡(luò)框架對比和源碼分析
自己去設(shè)計網(wǎng)絡(luò)請求框架,怎么做?
okhttp源碼
網(wǎng)絡(luò)請求緩存處理,okhttp如何處理網(wǎng)絡(luò)緩存的
從網(wǎng)絡(luò)加載一個10M的圖片,說下注意事項
TCP的3次握手和四次揮手
TCP與UDP的區(qū)別
TCP與UDP的應(yīng)用
HTTP協(xié)議
HTTP1.0與2.0的區(qū)別
HTTP報文結(jié)構(gòu)
HTTP與HTTPS的區(qū)別以及如何實現(xiàn)安全性
如何驗證證書的合法性?
https中哪里用了對稱加密,哪里用了非對稱加密,對加密算法(如RSA)等是否有了解?
client如何確定自己發(fā)送的消息被server收到?
談?wù)勀銓ebSocket的理解
WebSocket與socket的區(qū)別
談?wù)勀銓Π沧亢灻睦斫狻?br> 請解釋安卓為啥要加簽名機制?
視頻加密傳輸
App 是如何沙箱化,為什么要這么做?
權(quán)限管理系統(tǒng)(底層的權(quán)限是如何進行 grant 的)?

(三)數(shù)據(jù)庫
sqlite升級,增加字段的語句
數(shù)據(jù)庫框架對比和源碼分析
數(shù)據(jù)庫的優(yōu)化
數(shù)據(jù)庫數(shù)據(jù)遷移問題

(四)算法
排序算法有哪些?
最快的排序算法是哪個?
手寫一個冒泡排序
手寫快速排序代碼
快速排序的過程、時間復(fù)雜度、空間復(fù)雜度
手寫堆排序
堆排序過程、時間復(fù)雜度及空間復(fù)雜度
寫出你所知道的排序算法及時空復(fù)雜度,穩(wěn)定性
二叉樹給出根節(jié)點和目標(biāo)節(jié)點,找出從根節(jié)點到目標(biāo)節(jié)點的路徑
給阿里2萬多名員工按年齡排序應(yīng)該選擇哪個算法?
GC算法(各種算法的優(yōu)缺點以及應(yīng)用場景)
蟻群算法與蒙特卡洛算法
子串包含問題(KMP 算法)寫代碼實現(xiàn)
一個無序,不重復(fù)數(shù)組,輸出N個元素,使得N個元素的和相加為M,給出時間復(fù)雜度、空間復(fù)雜度。手寫算法
萬億級別的兩個URL文件A和B,如何求出A和B的差集C(提示:Bit映射->hash分組->多文件讀寫效率->磁盤尋址以及應(yīng)用層面對尋址的優(yōu)化)
百度POI中如何試下查找最近的商家功能(提示:坐標(biāo)鏡像+R樹)。
兩個不重復(fù)的數(shù)組集合中,求共同的元素。
兩個不重復(fù)的數(shù)組集合中,這兩個集合都是海量數(shù)據(jù),內(nèi)存中放不下,怎么求共同的元素?
一個文件中有100萬個整數(shù),由空格分開,在程序中判斷用戶輸入的整數(shù)是否在此文件中。說出最優(yōu)的方法
一張Bitmap所占內(nèi)存以及內(nèi)存占用的計算
2000萬個整數(shù),找出第五十大的數(shù)字?
燒一根不均勻的繩,從頭燒到尾總共需要1個小時?,F(xiàn)在有若干條材質(zhì)相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?
求1000以內(nèi)的水仙花數(shù)以及40億以內(nèi)的水仙花數(shù)
5枚硬幣,2正3反如何劃分為兩堆然后通過翻轉(zhuǎn)讓兩堆中正面向上的硬8幣和反面向上的硬幣個數(shù)相同
時針走一圈,時針分針重合幾次
N*N的方格紙,里面有多少個正方形
x個蘋果,一天只能吃一個、兩個、或者三個,問多少天可以吃完?

(五)插件化、模塊化、組件化、熱修復(fù)、增量更新、Gradle
對熱修復(fù)和插件化的理解
插件化原理分析
模塊化實現(xiàn)(好處,原因)
熱修復(fù),插件化
項目組件化的理解
描述清點擊 Android Studio 的 build 按鈕后發(fā)生了什么

(六)架構(gòu)設(shè)計和設(shè)計模式
談?wù)勀銓ndroid設(shè)計模式的理解
MVC MVP MVVM原理和區(qū)別
你所知道的設(shè)計模式有哪些?
項目中常用的設(shè)計模式
手寫生產(chǎn)者/消費者模式
寫出觀察者模式的代碼
適配器模式,裝飾者模式,外觀模式的異同?
用到的一些開源框架,介紹一個看過源碼的,內(nèi)部實現(xiàn)過程。
談?wù)剬xJava的理解
RxJava的功能與原理實現(xiàn)
RxJava的作用,與平時使用的異步操作來比的優(yōu)缺點
說說EventBus作用,實現(xiàn)方式,代替EventBus的方式
從0設(shè)計一款A(yù)pp整體架構(gòu),如何去做?
說一款你認(rèn)為當(dāng)前比較火的應(yīng)用并設(shè)計(比如:直播APP,P2P金融,小視頻等)
談?wù)剬ava狀態(tài)機理解
Fragment如果在Adapter中使用應(yīng)該如何解耦?
Binder機制及底層實現(xiàn)
對于應(yīng)用更新這塊是如何做的?(解答:灰度,強制更新,分區(qū)域更新)?
實現(xiàn)一個Json解析器(可以通過正則提高速度)
統(tǒng)計啟動時長,標(biāo)準(zhǔn)

(七)性能優(yōu)化
如何對Android 應(yīng)用進行性能分析以及優(yōu)化?
ddms 和 traceView
性能優(yōu)化如何分析systrace?
用IDE如何分析內(nèi)存泄漏?
Java多線程引發(fā)的性能問題,怎么解決?
啟動頁白屏及黑屏解決?
啟動太慢怎么解決?
怎么保證應(yīng)用啟動不卡頓?
App啟動崩潰異常捕捉
自定義View注意事項
現(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ū)別以及使用場景
強引用置為null,會不會被回收?

(八)NDK、jni、Binder、AIDL、進程通信有關(guān)
請介紹一下NDK
什么是NDK庫?
jni用過嗎?
如何在jni中注冊native函數(shù),有幾種注冊方式?
Java如何調(diào)用c、c++語言?
jni如何調(diào)用java層代碼?
進程間通信的方式?
Binder機制
簡述IPC?
什么是AIDL?
AIDL解決了什么問題?
AIDL如何使用?
Android 上的 Inter-Process-Communication 跨進程通信時如何工作的?
多進程場景遇見過么?
Android進程分類?
進程和 Application 的生命周期?
進程調(diào)度
談?wù)剬M程共享和線程安全的認(rèn)識
談?wù)剬Χ噙M程開發(fā)的理解以及多進程應(yīng)用場景
什么是協(xié)程?

(九)framework層、ROM定制、Ubuntu、Linux之類的問題
java虛擬機的特性
談?wù)剬vm的理解
JVM內(nèi)存區(qū)域,開線程影響哪塊內(nèi)存
對Dalvik、ART虛擬機有什么了解?
Art和Dalvik對比
虛擬機原理,如何自己設(shè)計一個虛擬機(內(nèi)存管理,類加載,雙親委派)
談?wù)勀銓﹄p親委派模型理解
JVM內(nèi)存模型,內(nèi)存區(qū)域
類加載機制
談?wù)剬lassLoader(類加載器)的理解
談?wù)剬討B(tài)加載(OSGI)的理解
內(nèi)存對象的循環(huán)引用及避免
內(nèi)存回收機制、GC回收策略、GC原理時機以及GC對象
垃圾回收機制與調(diào)用System.gc()區(qū)別
Ubuntu編譯安卓系統(tǒng)
系統(tǒng)啟動流程是什么?(提示:Zygote進程 –> SystemServer進程 –> 各種系統(tǒng)服務(wù) –> 應(yīng)用進程)
大體說清一個應(yīng)用程序安裝到手機上時發(fā)生了什么
簡述Activity啟動全部過程
App啟動流程,從點擊桌面開始
邏輯地址與物理地址,為什么使用邏輯地址?
Android為每個應(yīng)用程序分配的內(nèi)存大小是多少?
Android中進程內(nèi)存的分配,能不能自己分配定額內(nèi)存?
進程?;畹姆绞?br> 如何保證一個后臺服務(wù)不被殺死?(相同問題:如何保證service在后臺不被kill?)比較省電的方式是什么?
App中喚醒其他進程的實現(xiàn)方式

3
非技術(shù)性問題&HR問題匯總

這里整理的是一些與技術(shù)沒有直接關(guān)系的面試題,但是能夠考察你的綜合水平,所以不要以為不是技術(shù)問題,就不看,往往有時候就是這樣一些細節(jié)的題目被忽視,而錯過了一次次面試機會。

(一)非技術(shù)問題
介紹你做過的哪些項目
都使用過哪些框架、平臺?
都使用過哪些自定義控件?
研究比較深入的領(lǐng)域有哪些?
對業(yè)內(nèi)信息的關(guān)注渠道有哪些?
最近都讀哪些書?
有沒有什么開源項目?
自己最擅長的技術(shù)點,最感興趣的技術(shù)領(lǐng)域和技術(shù)點
項目中用了哪些開源庫,如何避免因為引入開源庫而導(dǎo)致的安全性和穩(wěn)定性問題
實習(xí)過程中做了什么,有什么產(chǎn)出?

(二)HR提出的面試問題
您在前一家公司的離職原因是什么?
講一件你印象最深的一件事情
介紹一個你影響最深的項目
介紹你最熱愛最擅長的專業(yè)領(lǐng)域
公司實習(xí)最大的收獲是什么?
與上級意見不一致時,你將怎么辦?
自己的優(yōu)點和缺點是什么?并舉例說明?
你的學(xué)習(xí)方法是什么樣的?實習(xí)過程中如何學(xué)習(xí)?實習(xí)項目中遇到的最大困難是什么以及如何解決的?
說一件最能證明你能力的事情
針對你你申請的這個職位,你認(rèn)為你還欠缺什么
如果通過這次面試我們單位錄用了你,但工作一段時間卻發(fā)現(xiàn)你根本不適合這個職位,你怎么辦?
項目中遇到最大的困難是什么?如何解決的?
你的職業(yè)規(guī)劃以及個人目標(biāo)、未來發(fā)展路線及求職定位
如果你在這次面試中沒有被錄用,你怎么打算?
評價下自己,評價下自己的技術(shù)水平,個人代碼量如何?
通過哪些渠道了解的招聘信息,其他同學(xué)都投了哪些公司?
業(yè)余都有哪些愛好?
你做過的哪件事最令自己感到驕傲?
假如你晚上要去送一個出國的同學(xué)去機場,可單位臨時有事非你辦不可,你怎么辦?
就你申請的這個職位,你認(rèn)為你還欠缺什么?
當(dāng)前的offer狀況;如果BATH都給了offer該如何選?
你對一份工作更看重哪些方面?平臺,技術(shù),氛圍,城市,還是money?
理想薪資范圍;杭州崗和北京崗選哪個?
理想中的工作環(huán)境是什么?
談?wù)勀銓μ鄣目捶?br> 說說你對行業(yè)、技術(shù)發(fā)展趨勢的看法
實習(xí)過程中周圍同事/同學(xué)有哪些值得學(xué)習(xí)的地方?
家人對你的工作期望及自己的工作期望
如果你的工作出現(xiàn)失誤,給本公司造成經(jīng)濟損失,你認(rèn)為該怎么辦?
若上司在公開會議上誤會你了,該如何解決?
是否可以實習(xí),可以實習(xí)多久?
在五年的時間內(nèi),你的職業(yè)規(guī)劃
你看中公司的什么?或者公司的那些方面最吸引你?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 所有知識點已整理成app app下載地址 J2EE 部分: 1.Switch能否用string做參數(shù)? 在 Jav...
    侯蛋蛋_閱讀 2,713評論 1 4
  • 不足的地方請大家多多指正,如有其它沒有想到的常問面試題請大家多多評論,一起成長,感謝!~ String可以被繼承嗎...
    啟示錄是真的閱讀 3,079評論 3 3
  • 本系列出于AWeiLoveAndroid的分享,在此感謝,再結(jié)合自身經(jīng)驗查漏補缺,完善答案。以成系統(tǒng)。 Java基...
    濟公大將閱讀 1,627評論 1 6
  • Java SE 基礎(chǔ): 封裝、繼承、多態(tài) 封裝: 概念:就是把對象的屬性和操作(或服務(wù))結(jié)合為一個獨立的整體,并盡...
    Jayden_Cao閱讀 2,259評論 0 8
  • 請讓我自己的那個小我死去 我愿意把手交給背后的那個你 請我讓我在這一刻 全然的活在當(dāng)下 感受呼吸 感受空氣 感受生...
    楊一心瑪雅解讀閱讀 395評論 0 0

友情鏈接更多精彩內(nèi)容