金九銀十,各大互聯網公司Java面試題合集

金九銀十又到了面試求職高峯期,最近有不少網友都在求大廠面試題。正好我以前電腦裏面有這方面的整理,因而就發上來分享給你們。 
這些題目是網友去百度、小米、樂視、美團、5八、獵豹、360、新浪、搜狐等一線互聯網公司面試被問到的題目,熟悉本文中列出的知識點會大大增長經過前兩輪技術面試的概率。 
網上的都是按照公司劃分的,想找具體某一方面的知識點有點很差找,我這裏就根據知識點分門別類的整理了一下,想看哪一塊能夠快速找到,但願能夠幫助你們,祝你們求職順利。 java

主要分爲如下幾部分:c++

(1)Java基礎、架構面試題面試

(2)非技術性問題&HR問題彙總算法

1、Java面試題 編程

熟練掌握Java是很關鍵的,大公司不只僅要求你會使用幾個api,更多的是要你熟悉源碼實現原理,甚至要你知道有哪些不足,怎麼改進,還有一些Java有關的一些算法,設計模式等等。 設計模式

一、Java基礎面試知識點api

Java中==和equals和hashCode的區別 
int、char、long各佔多少字節數 
int與integer的區別 
探探對Java多態的理解 
String、StringBuffer、StringBuilder區別 
什麼是內部類?內部類的做用 
抽象類和接口區別 
抽象類的意義 
抽象類與接口的應用場景 
抽象類是否能夠沒有方法和屬性? 
接口的意義 
泛型中extends和super的區別 
父類的靜態方法可否被子類重寫 
進程和線程的區別 
final,finally,finalize的區別 
序列化的方式 
Serializable 和Parcelable 的區別 
靜態屬性和靜態方法是否能夠被繼承?是否能夠被重寫?以及緣由? 
靜態內部類的設計意圖 
成員內部類、靜態內部類、局部內部類和匿名內部類的理解,以及項目中的應用 
談談對kotlin的理解 
閉包和局部內部類的區別 數組

二、 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容器類) 
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的併發、多線程、線程模型 
談談對多線程的理解 
多線程有什麼要注意的問題? 
談談你對併發編程的理解並舉例說明 
談談你對多線程同步機制的理解? 
如何保證多線程讀寫文件的安全? 
多線程斷點續傳原理 
斷點續傳的實現

五、併發編程有關知識點

學習的參考資料以下:

Java 內存模型

Java線程安全總結 
深刻理解java內存模型系列文章

線程狀態:

一張圖讓你看懂JAVA線程間的狀態轉換

鎖機制:synchronized、Lock、Condition 

Java 中的鎖

併發編程:

Java併發編程:Thread類的使用 
Java多線程編程總結 
Java併發編程的總結與思考 
Java併發編程實戰—–synchronized 
深刻分析ConcurrentHashMap

六、架構設計和設計模式

談談你對Android設計模式的理解 
MVC MVP MVVM原理和區別 
你所知道的設計模式有哪些? 
項目中經常使用的設計模式 
手寫生產者/消費者模式 
寫出觀察者模式的代碼 
適配器模式,裝飾者模式,外觀模式的異同? 
用到的一些開源框架,介紹一個看過源碼的,內部實現過程。 
談談對RxJava的理解 
RxJava的功能與原理實現 
RxJava的做用,與平時使用的異步操做來比的優缺點 
說說EventBus做用,實現方式,代替EventBus的方式 
從0設計一款App總體架構,如何去作? 
說一款你認爲當前比較火的應用並設計(好比:直播APP,P2P金融,小視頻等) 
談談對java狀態機理解 
Fragment若是在Adapter中使用應該如何解耦? 
Binder機制及底層實現 
對於應用更新這塊是如何作的?(解答:灰度,強制更新,分區域更新)? 
實現一個Json解析器(能夠經過正則提升速度) 
統計啓動時長,標準

七、性能優化

如何對Android 應用進行性能分析以及優化? 
ddms 和 traceView 
性能優化如何分析systrace? 
用IDE如何分析內存泄漏? 
Java多線程引起的性能問題,怎麼解決? 
啓動頁白屏及黑屏解決? 
啓動太慢怎麼解決? 
怎麼保證應用啓動不卡頓? 
App啓動崩潰異常捕捉 
自定義View注意事項 
如今下載速度很慢,試從網絡協議的角度分析緣由,並優化(提示:網絡的5層均可以涉及)。 
Https請求慢的解決辦法(提示:DNS,攜帶數據,直接訪問IP) 
如何保持應用的穩定性 
RecyclerView和ListView的性能對比 
ListView的優化 
RecycleView優化 
View渲染 
Bitmap如何處理大圖,如一張30M的大圖,如何預防OOM 
java中的四種引用的區別以及使用場景 
強引用置爲null,會不會被回收?

八、NDK、jni、Binder、AIDL、進程通訊有關

請介紹一下NDK 
什麼是NDK庫? 
jni用過嗎? 
如何在jni中註冊native函數,有幾種註冊方式? 
Java如何調用c、c++語言? 
jni如何調用Java層代碼? 
進程間通訊的方式? 
Binder機制 
簡述IPC? 
什麼是AIDL? 
AIDL解決了什麼問題? 
AIDL如何使用? 
Android 上的 Inter-Process-Communication 跨進程通訊時如何工做的? 
多進程場景碰見過麼? 
Android進程分類? 
進程和 Application 的生命週期? 
進程調度 
談談對進程共享和線程安全的認識 
談談對多進程開發的理解以及多進程應用場景 
什麼是協程?

九、framework層、ROM定製、Ubuntu、Linux之類的問題

java虛擬機的特性 
談談對jvm的理解 
JVM內存區域,開線程影響哪塊內存 
對Dalvik、ART虛擬機有什麼瞭解? 
Art和Dalvik對比 
虛擬機原理,如何本身設計一個虛擬機(內存管理,類加載,雙親委派) 
談談你對雙親委派模型理解 
JVM內存模型,內存區域 
類加載機制 
談談對ClassLoader(類加載器)的理解 
談談對動態加載(OSGI)的理解 
內存對象的循環引用及避免 
內存回收機制、GC回收策略、GC原理時機以及GC對象 
垃圾回收機制與調用System.gc()區別 
Ubuntu編譯安卓系統 
系統啓動流程是什麼?(提示:Zygote進程 –> SystemServer進程 –> 各類系統服務 –> 應用進程) 
大致說清一個應用程序安裝到手機上時發生了什麼 
簡述Activity啓動所有過程 
App啓動流程,從點擊桌面開始 
邏輯地址與物理地址,爲何使用邏輯地址? 
Android爲每一個應用程序分配的內存大小是多少? 
Android中進程內存的分配,能不能本身分配定額內存? 
進程保活的方式 
如何保證一個後臺服務不被殺死?(相同問題:如何保證service在後臺不被kill?)比較省電的方式是什麼? 
App中喚醒其餘進程的實現方式

2、非技術性問題&HR問題彙總 
這裏整理的是一些與技術沒有直接關係的面試題,可是可以考察你的綜合水平,因此不要覺得不是技術問題,就不看,每每有時候就是這樣一些細節的題目被忽視,而錯過了一次次面試機會。 
(一)非技術問題

介紹你作過的哪些項目 
都使用過哪些框架、平臺? 
都使用過哪些自定義控件? 
研究比較深刻的領域有哪些? 
對業內信息的關注渠道有哪些? 
最近都讀哪些書? 
有沒有什麼開源項目? 
本身最擅長的技術點,最感興趣的技術領域和技術點 
項目中用了哪些開源庫,如何避免由於引入開源庫而致使的安全性和穩定性問題 
實習過程當中作了什麼,有什麼產出?

(二)HR提出的面試問題

您在前一家公司的離職緣由是什麼?
講一件你印象最深的一件事情
介紹一個你影響最深的項目
介紹你最檔案熱愛最擅長的專業領域
公司實習最大的收穫的英文什麼?
與上級意見不一致時,你將怎麼辦?
本身的優勢和缺點是什麼?並舉例說明?
你的學習方法是什麼樣的?實習過程當中如何學習?實習項目中遇到的最大困難是什麼以及如何解決的?
說一最件能證實你能力的事情
針對你你申請的這個職位,認爲你還你什麼欠缺
若是經過此次面試咱們單位錄用了你,但工做一段時間卻發現你根本不適合這個職位,你怎麼辦?
項目中遇到最大的困難是什麼?如何解決的?
你的職業規劃以及我的目標,發展將來路線及求職定位
若是你在此次面試中沒有被錄用,你怎麼打算?
評價下本身,評價下本身的技術水平,我的代碼量如何?
經過哪些渠道瞭解的招聘信息,其餘同窗都 了哪些公司?
業餘都有哪些愛好?
你作過的哪件事最令本身感到驕傲?
假如你晚上要去送一個出國的同窗去機場,可單位臨時有事非你辦不可,你怎麼辦?
就你申請的這個職位,你認爲你還欠缺什麼?
當前的報價情況;若是BATH都給了報價該如何選
?你對一份工做更看重哪些方面平臺,技術,氛圍,城市,仍是錢
理想薪資範圍;杭州崗和北京崗選哪一個?
理想中的工做環境是什麼?
談談你對跳槽的見解
說說你對文教,發展技術趨勢的見解
實習過程當中周圍同事/同窗有哪些值得學習的地方?
家人對你的工做指望及本身的工做指望
若是你的工做出現失誤,給本公司形成經濟損失,你認爲該怎麼辦?
若上司在公開會議上誤會你了,該如何解決?
是否能夠實習,能夠實習多久?
在五年的時間內,的你職業規劃
你看中公司的什麼?或者公司的那些方面最吸引你?

看完這些面試題是否是感受面試很可怕,還有不少面試題沒有寫上來,面試不只僅決定了你的薪資,在大廠面試直接給你定級,級別越高薪資也就越高,在公司待遇也不同,因此面試仍是須要很認真的去對待,曾經有一位朋友被阿里面試官電話突擊面試,面試完之後簡直懷疑人生,因此想要進大廠在面試上也須要花很多功夫,金九銀十找工做的人仍是不少的,但願這些面試題能給你們一點幫助,喜歡的話能夠分享給更多的人哦。

相關文章
相關標籤/搜索