阿里、騰訊、百度、華為、京東、搜狗和滴滴最新面試題彙集!
前言:
前一段時間和大牛們交流了一下,據反饋現在Android崗位也沒有以前那麼多了,沒這麼好找了,面臨2016年寒冬季節,大量公司模仿O2O模式導致死掉企業的很多,在加之培訓機構大量的培訓人,導致供大於求,當然這不意味著飽和,只是市場更趨於合理一些(只要技術好不用怕的)。最近結合一些面試的同學的反饋,順便整理了下一些面試題目。希望對大家有所幫助,後期會不斷更新新增新的面試題。可以幫大家查漏不缺。以下是(2016、2017 、阿里、騰訊、百度、華為、京東、搜狗和滴滴面試題彙集)
就算寫出答案也沒必要(我寫了部分面試答案),因為開發與實際答案會有所不同,再者怕誤導大家,所以這些面試題答案還是自己去理解吧!切記:不要背答案,多理解。
最新整理
1.簡述synchronized?Object;Monitor機制;
2.簡述happen-before規則;
3.JUC和Object;Monitor機制區別是什麼;簡述AQS原理;
4.簡述DCL失效原因,解決方法;
5.簡述nio原理;
6.jvm執行時資料區域有哪幾部分組成,各自作用;
7.gc演算法有哪些;gc收集器有哪些;
8.簡述class載入各階段過程;class;loader有哪些模型;
9.簡述常用的JDK命令列工具;
10.簡述位元組碼檔案組成;
11.講講你平常是如何針對具體的SQL做優化;
12.mysql的儲存引擎有哪些,區別;
13.gc:記憶體模型;
14.gc:垃圾回收;
15.多執行緒:如何實現一個定時排程和迴圈排程的工具類。但提交任務處理不過來的時候,拒絕機制應該如何處理;執行緒池預設有哪幾種拒絕機制;
16.多執行緒:如何實現一個ThreadLocal;
17.說說你瞭解的一個執行緒安全佇列;
18.Atomic包的實現原理是什麼;
19.CAS又是怎麼保證原子性的;
20.string分析1000次迴圈subString用了多少記憶體;
Java基礎
1.集合類以及集合框架;HashMap與HashTable實現原理,執行緒安全性,hash衝突及處理演算法;ConcurrentHashMap;
2.程序和執行緒的區別;
3.Java的併發、多執行緒、執行緒模型;
4. 什麼是執行緒池,如何使用? 答:執行緒池就是事先將多個執行緒物件放到一個容器中,當使用的時候就不用new 執行緒而是直接去池中拿執行緒即可,節
5.省了開闢子執行緒的時間,提高的程式碼執行效率。
6.資料一致性如何保證;Synchronized關鍵字,類鎖,方法鎖,重入鎖;
7.Java中實現多型的機制是什麼;
8.如何將一個Java物件序列化到檔案裡;
說說你對Java反射的理解; 答:Java 中的反射首先是能夠獲取到Java 中要反射類的位元組碼, 獲取位元組碼有三種方法,
1.Class.forName(className) 2.類名.class 3.this.getClass()。然後將位元組碼中的方法,變數,建構函式等對映成相應的Method、Filed、Constructor 等類,這些類提供了豐富的方法可以被我們所使用。
9.同步的方法;多程序開發以及多程序應用場景;
10.在Java中wait和seelp方法的不同;答:最大的不同是在等待時wait 會釋放鎖,而sleep 一直持有鎖。wait 通常被用於執行緒間互動,sleep 通常被用於暫停執行。
11.synchronized 和volatile 關鍵字的作用;答:1)保證了不同執行緒對這個變數進行操作時的可見性,即一個執行緒修改了某個變數的值,這新值對其他執行緒來說是立即可見的。2)禁止進行指令重排序。
12.volatile 本質是在告訴jvm 當前變數在暫存器(工作記憶體)中的值是不確定的,需要從主存中讀取;synchronized 則是鎖定當前變數,只有當前執行緒可以訪問該變數,其他執行緒被阻塞住。
1.volatile 僅能使用在變數級別;synchronized 則可以使用在變數、方法、和類級別的
2.volatile 僅能實現變數的修改可見性,並不能保證原子性;synchronized 則可以保證變數的修改可見性和原子性
3.volatile 不會造成執行緒的阻塞;synchronized 可能會造成執行緒的阻塞。
4.volatile 標記的變數不會被編譯器優化;synchronized 標記的變數可以被編譯器優化
13.伺服器只提供資料接收介面,在多執行緒或多程序條件下,如何保證資料的有序到達;
14.ThreadLocal原理,實現及如何保證Local屬性;
15.String StringBuilder StringBuffer對比;
16.你所知道的設計模式有哪些; 答:Java 中一般認為有23 種設計模式,我們不需要所有的都會,但是其中常用的幾種設計模式應該去掌握。下面列出了所有的設計模式。需要掌握的設計模式我單獨列出來了,當然能掌握的越多越好。
總體來說設計模式分為三大類:
建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結構型模式,共七種:介面卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。
17.Java如何呼叫c、c++語言;
18.介面與回撥;回撥的原理;寫一個回撥demo;
19.泛型原理,舉例說明;解析與分派;
20.抽象類與介面的區別;應用場景;抽象類是否可以沒有方法和屬性;
21.靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?
22.修改物件A的equals方法的簽名,那麼使用HashMap存放這個物件例項的時候,會呼叫哪個equals方法;
23.說說你對泛型的瞭解;
24.Java的異常體系;
25.如何控制某個方法允許併發訪問執行緒的個數;
26.動態代理的區別,什麼場景使用;
資料結構與演算法
1.堆和棧在記憶體中的區別是什麼(資料結構方面以及實際實現方面);
2.最快的排序演算法是哪個?給阿里2萬多名員工按年齡排序應該選擇哪個演算法?堆和樹的區別;寫出快排程式碼;連結串列逆序程式碼;
3.求1000以內的水仙花數以及40億以內的水仙花數;
4.子串包含問題(KMP 演算法)寫程式碼實現;
5.萬億級別的兩個URL檔案A和B,如何求出A和B的差集C,(Bit對映->hash分組->多檔案讀寫效率->磁碟定址以及應用層面對定址的優化)
6.蟻群演算法與蒙特卡洛演算法;
7.寫出你所知道的排序演算法及時空複雜度,穩定性;
8.百度POI中如何試下查詢最近的商家功能(座標映象+R樹)。
其他
1.死鎖的四個必要條件;
2.常見編碼方式;utf-8編碼中的中文佔幾個位元組;int型幾個位元組;
3.實現一個Json解析器(可以通過正則提高速度);
4.MVC MVP MVVM; 常見的設計模式;寫出觀察者模式的程式碼;
5.TCP的3次握手和四次揮手;TCP與UDP的區別;
6.HTTP協議;HTTP1.0與2.0的區別;HTTP報文結構;
7.HTTP與HTTPS的區別以及如何實現安全性;
8.都使用過哪些框架、平臺;
9.都使用過哪些自定義控制元件;
10.介紹你做過的哪些專案;
非技術問題彙總
1.研究比較深入的領域有哪些;
2.對業內資訊的關注渠道有哪些;
3.最近都讀哪些書;
4.自己最擅長的技術點,最感興趣的技術領域和技術點;
5.專案中用了哪些開源庫,如何避免因為引入開源庫而導致的安全性和穩定性問題;
6.實習過程中做了什麼,有什麼產出;
7. 5枚硬幣,2正3反如何劃分為兩堆然後通過翻轉讓兩堆中正面向上的硬幣和反面向上的硬幣個數相同;
8.時針走一圈,時針分針重合幾次;
9.N * N的方格紙,裡面有多少個正方形;
10.現在下載速度很慢,試從網路協議的角度分析原因,並優化(網路的5層都可以涉及)。
HR問題彙總
1.您在前一家公司的離職原因是什麼?
2.講一件你印象最深的一件事情;
3.介紹一個你影響最深的專案;
4.介紹你最熱愛最擅長的專業領域;
5.公司實習最大的收穫是什麼;
6.與上級意見不一致時,你將怎麼辦;
7.自己的優點和缺點是什麼?並舉例說明?
8.你的學習方法是什麼樣的?實習過程中如何學習?實習專案中遇到的最大困難是什麼以及如何解決的;
9.說一件最能證明你能力的事情;
10.針對你你申請的這個職位,你認為你還欠缺什麼;
11.如果通過這次面試我們單位錄用了你,但工作一段時間卻發現你根本不適合這個職位,你怎麼辦;
12.專案中遇到最大的困難是什麼?如何解決的;
13.你的職業規劃以及個人目標;未來發展路線及求職定位;
14.如果你在這次面試中沒有被錄用,你怎麼打算;
15.評價下自己,評價下自己的技術水平,個人程式碼量如何;
16.通過哪些渠道瞭解的招聘資訊,其他同學都投了哪些公司;
17.業餘都有哪些愛好;
18.你做過的哪件事最令自己感到驕傲;
19.假如你晚上要去送一個出國的同學去機場,可單位臨時有事非你辦不可,你怎麼辦;
20.就你申請的這個職位,你認為你還欠缺什麼;
21.當前的offer狀況;如果BATH都給了offer該如何選;
22.你對一份工作更看重哪些方面?平臺,技術,氛圍,城市,money;
23.理想薪資範圍;杭州崗和北京崗選哪個;
24.理想中的工作環境是什麼;
25.談談你對跳槽的看法;
26.說說你對行業、技術發展趨勢的看法;
27.實習過程中周圍同事/同學有哪些值得學習的地方;
28.家人對你的工作期望及自己的工作期望;
29.如果你的工作出現失誤,給本公司造成經濟損失,你認為該怎麼辦;
30.若上司在公開會議上誤會你了,該如何解決;
31.是否可以實習,可以實習多久;
32.在五年的時間內,你的職業規劃;
33.你看中公司的什麼?或者公司的那些方面最吸引你。
以面試題為基礎分享一份今年最新的Java技術知識體系 (全面的架構思維導圖)
工作一到五年的java 開發工程師朋友可以加入我們Java架構交流群:760940986”進群即可免費領取 高併發,分散式,Spring,MyBatis,Netty原始碼分析和大資料等多個知識點 的架構視訊資料,以及架構體系圖!(Java面試寶典電子書籍以及其他學習的電子書籍分享)
(1)常用原始碼框架

(2)網際網路分散式架構

(3)團隊協作開發

(4)架構基礎

(5)微服務專題

(6)效能調優專題

(7)併發程式設計

工作一到五年的java 開發工程師朋友可以加入我們Java架構交流群:760940986”進群即可免費領取 高併發,分散式,Spring,MyBatis,Netty原始碼分析和大資料等多個知識點 的架構視訊資料,以及架構體系圖!(Java面試寶典電子書籍以及其他學習的電子書籍分享)