1. 程式人生 > >2018年終鉅獻:阿里、騰訊最新Java面試題,你準備好進BAT了嗎?

2018年終鉅獻:阿里、騰訊最新Java面試題,你準備好進BAT了嗎?

Java基礎

1.程序和執行緒的區別;

2.Java的併發、多執行緒、執行緒模型;

3.什麼是執行緒池,如何使用?

4.資料一致性如何保證;Synchronized關鍵字,類鎖,方法鎖,重入鎖;

5.Java中實現多型的機制是什麼;

6.如何將一個Java物件序列化到檔案裡;

7.說說你對Java反射的理解;

8.同步的方法;多程序開發以及多程序應用場景;

9.在Java中wait和seelp方法的不同;

10.synchronized 和volatile 關鍵字的作用;

11.伺服器只提供資料接收介面,在多執行緒或多程序條件下,如何保證資料的有序到達;

12.抽象類與介面的區別;應用場景;抽象類是否可以沒有方法和屬性;

13.靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?

14.修改物件A的equals方法的簽名,那麼使用HashMap存放這個物件例項的時候,會呼叫哪個equals方法;

15.說說你對泛型的瞭解;

16.Java的異常體系;

17.如何控制某個方法允許併發訪問執行緒的個數;

18.動態代理的區別,什麼場景使用;

19.Dex載入過程和優化方式;

20.Jvm和Gc機制;

21常用的設計模式。

22.資料結構與演算法

23.堆和棧在記憶體中的區別是什麼(資料結構方面以及實際實現方面);

24.最快的排序演算法是哪個?給阿里2萬多名員工按年齡排序應該選擇哪個演算法?堆和樹的區別;寫出快排程式碼;連結串列逆序程式碼;

25.求1000以內的水仙花數以及40億以內的水仙花數;

26.子串包含問題(KMP 演算法)寫程式碼實現;

27.萬億級別的兩個URL檔案A和B,如何求出A和B的差集C,(Bit對映->hash分組->多檔案讀寫效率->磁碟定址以及應用層面對定址的優化)

28.蟻群演算法與蒙特卡洛演算法;

29.寫出你所知道的排序演算法及時空複雜度,穩定性;

30.自己集合實現一個佇列

31.自己實現執行緒安全類

32.快速排序和冒泡的排序,怎麼轉換一下。

如果有正在學java的程式設計師,可來我們的java技術學習扣qun哦:72340,3928,小編花了近一個月整理了一份非常適合18年學習的java乾貨,加入就免費送java的視訊教程噢!而且我每天晚上都會在裡面直播講Java知識,從零基礎學習到有基礎進階,歡迎初學和進階中的小夥伴。

二、Spring mvc與Struts區別

Hibernate/Ibatis兩者的區別

Hibernate一級和二級快取

Hibernate實現叢集部署

Hibernate如何實現宣告式事務

簡述Hibernate常見優化策略

Spring bean的載入過程(推薦看Spring的原始碼)

Spring如何實現AOP和IOC

Spring bean注入方式

Spring的事務管理(推薦看Spring的原始碼)

Spring事務的傳播特性

springmvc原理

springmvc用過哪些註解

Restful有幾種請求

Restful好處

Tomcat,Apache,JBoss的區別

memcached和redis的區別

有沒有遇到中文亂碼問題,如何解決的

如何理解分散式鎖

你知道的開源協議有哪些

json和xml區別

 

 

三、設計模式:

設計模式的六大原則

常用的設計模式

用一個設計模式寫一段程式碼或畫出一個設計模式的UML

如何理解MVC

高內聚,低耦合方面的理解

 

四、資料結構:

佇列、棧、連結串列、樹、堆、圖

編碼實現佇列、棧

作業系統:

作業系統什麼情況下會死鎖

產生死鎖的必要條件

死鎖預防

資料庫:

正規化

資料庫事務隔離級別

資料庫連線池的原理

樂觀鎖和悲觀鎖

如何實現不同資料庫的資料查詢分頁

SQL注入的原理,如何預防

資料庫索引的實現(B+樹介紹、和B樹、R樹區別)

SQL效能優化

資料庫索引的優缺點以及什麼時候資料庫索引失效

10.Redis的儲存結構

網路:

OSI七層模型以及TCP/IP四層模型

HTTP和HTTPS區別

HTTP報文內容

get提交和post提交的區別

get提交是否有位元組限制,如果有是在哪限制的

TCP的三次握手和四次揮手

session和cookie的區別

HTTP請求中Session實現原理

redirect與forward區別

安全:

如果客戶端不斷的傳送請求連線會怎樣

DDos攻擊

DDos預防

那怎麼知道連線是惡意的呢?可能是正常連線

其它:

說一個你參與的專案、其中作為什麼角色

遇到最困的問題是什麼,怎麼解決的

你認為自己有那些方面不足

平常如何學習的

如何評價自己

智力題:

給你50個紅球和50個黑球,有兩個一模一樣的桶,往桶裡放球,讓朋友去隨機抽,採用什麼策略可以讓朋友抽到紅球的概率更高?

從100個硬幣中找出最輕的那個假幣?

總結:

以上這些考察的知識點,在強大的網際網路上都可以搜尋到答案,有些答案可能不是很全,所以需要自己去總結,但是對於一些需要知道原理的知識點,還是推薦看原始碼或者對於的書,然後總結得到自己的東西,這樣既學到真東西,還不會很容易忘。Java基礎的知識點推薦《Java程式設計思想》,JVM的推薦《深入理解Java虛擬機器》,Spring原理的推薦《Spring原始碼深度解析》,對於網站架構的推薦《大型網站技術架構核心原理與案例分析》。