淦!“忍一時越想越氣,退一步越想越虧‘’ 三面阿里,被面試官懟得體無完膚

耗時三個半小時,考的是Java核心的基礎。

大概說一下幾個考點:Java并發的知識點、集合類、線程池、多線程之間的通信等

一面:(技術) 50分鐘

1、自我介紹,直接技術棧。自我介紹很重要,圍繞四個點去說。(自報家門,項目經驗,技術棧,求職愿望)

2、分布式:問的還是挺多的。SpringCloud 的框架都問了點,還有Nacos,Sentinel做服務熔斷限流降級持久化到數據庫,分布式事務(TC二階段提交)。分布式事務的其他解決方案也沒有問。

3、JVM:類加載機制,沙箱安全。

4、然后問運行時數據區,我答漏了一個程序計數器。他就接著提問程序計數器。

然后問可達性分析,什么樣的對象可以作為GcRoot、加載的時候把這些對象提前找好用的OopMap。

5、OOM,StackOverFlow,垃圾收集算法,垃圾收集器(G1),記憶集。

6、新生代幾次對象幾次到老年代?

7、有沒有可能直接把剛new出來的對象放在老年代?(第一次遇到這個問題,我就說覺得有可能,畢竟有些垃圾回收器會有一個空間分配擔保策略。)

8、多線程:volatile,CAS,總線嗅探,CPU緩存一致性協議

9、ReentrantLock、ThreadLocal、Lock和Synchronized的區別。

10、CountDownLatch,ABC三個線程怎么去保證順序執行?

11、數據庫優化:B+樹,Hash索引,最左前綴,索引優化分析,一條龍服務,都問了一下。

12、Redis:一來就是分布式鎖,然后別的就沒問了,可能也是覺得我回答的還行就跳過了。

13、HashMap:我直接答錯了,他問擴容的觸發條件是什么,我說只是一個達到負載就擴容了。他告訴我是:負載和Hash沖突同時發生。這個我真不知道。

14、final 修飾一個變量String 怎么去改,我說改不了,他說用反射。我也不知道。

15、final 修飾一個對象Person,能不能去改對象的屬性?

16、死鎖怎么排查?

17、JVM調優什么做?

18、explain + sql 后面的列表都表示什么含義?

二面:(技術) 30分鐘

1、自我介紹

2、HashMap & ConcurrentHashMap

3、數據庫連接池

4、Spring和SpringBoot的區別

5、輸入一個網址之后發生了什么?(我只知道域名要去DNS解析,找到ip,然后才進到后臺端口服務。但是這個過程肯定要經歷各種代理和負載均衡的調度。之后就是查數據庫返回。)

6、數據庫查詢慢你怎么分析?(常規,把知道的說出來就行。慢查詢日志,找到sql,用explain分析,對照索引看看建的怎么樣。如果急用的話那就強制走一個,不急的話那就慢慢優化索引結構唄。)

7、問了幾個索引題。字符串要寫單引號,字符串查詢怎么增加查詢效率,字符串索引太大了那就截取幾個做索引,叫前綴索引。怎么判斷一個索引字段選的好不好,看不重復的和總數的比值,越大越好。

8、假如現在系統里面就是要模糊匹配怎么辦?

9、大數據了解嗎?(只看過一點Handoop,把HDFS文件系統做存儲,MapReduce做計算說了一下。)

三面:(技術)120分鐘

1、自我介紹

2、List 和 Set 的區別

3、HashSet 是如何保證不重復的

4、HashMap 是線程安全的嗎,為什么不是線程安全的(最好畫圖說明多線程環境下不安全)?

5、HashMap 的擴容過程

6、HashMap 1.7 與 1.8 的 區別,說明 1.8 做了哪些優化,如何優化的?

7、final finally finalize

8、強引用 、軟引用、 弱引用、虛引用

9、synchronized 的實現原理以及鎖優化?

10、volatile 的實現原理?

11、Java 的信號燈?

12、synchronized 在靜態方法和普通方法的區別?

13、怎么實現所有線程在等待某個事件的發生才會去執行?

14、CAS?CAS 有什么缺陷,如何解決?

15、synchronized 和 lock 有什么區別?

16、Hashtable 是怎么加鎖的 ?

17、HashMap 的并發問題?

18、ConcurrenHashMap 介紹?1.8 中為什么要用紅黑樹?

19、AQS

20、如何檢測死鎖?怎么預防死鎖?

21、BeanFactory 和 FactoryBean?

22、Spring IOC 的理解,其初始化過程?

23、BeanFactory 和 ApplicationContext?

24、Spring Bean 的生命周期,如何被管理的?

25、Spring Bean 的加載過程是怎樣的?

26、如果要你實現Spring AOP,請問怎么實現?

27、如果要你實現Spring IOC,你會注意哪些問題?

28、BIO、NIO和AIO

29、Netty 的各大組件

30、Netty的線程模型

31、TCP 粘包/拆包的原因及解決方法

32、Dubbo的底層實現原理和機制

33、描述一個服務從發布到被消費的詳細過程

34、分布式系統怎么做服務治理

35、接口的冪等性的概念

36、消息中間件如何解決消息丟失問題

37、Dubbo的服務請求失敗怎么處理

38、重連機制會不會造成錯誤

39、對分布式事務的理解

40、如何實現負載均衡,有哪些算法可以實現?

41、Zookeeper的用途,選舉的原理是什么?

42、mysql分頁有什么優化

43、悲觀鎖、樂觀鎖

44、組合索引,最左原則

45、mysql 的表鎖、行鎖

46、Redis用過哪些數據數據,以及Redis底層怎么實現

47、Redis緩存穿透,緩存雪崩

48、如何使用Redis來實現分布式鎖

49、Redis的并發競爭問題如何解決

50、詳細jvm內存模型

51、講講什么情況下回出現內存溢出,內存泄漏?

52、說說Java線程棧

53、JVM 年輕代到年老代的晉升過程的判斷條件是什么呢?

54、JVM 出現 fullGC 很頻繁,怎么去線上排查問題?

55、類加載為什么要使用雙親委派模式,有沒有什么場景是打破了這個模式?

總結:

下面總結了一些問題,要注意自己一定要在自己的邏輯里面自洽,不能前后矛盾,前因后果要想清楚。也可以自己不要把所有問題都說滿,可以故意漏下問題,等面試官提問(面試套路,自己主導問題方向)。總之,不然可能一個不是這個范圍的問題把你問到了,你不知道如何回答,會給面試官一個不好的印象(為啥你自己的項目你都沒有吃透?)

面試一定要自信。本來應聘就是雙向選擇的過程,面試的公司也不是非你不進,不要因為你是面試者就姿態很低,一種乞求面試官給你一份工作的姿態,這樣是不對的。好的面試應該是你自信表達你自己的理解,即使不會也不要為難,不需要支支吾吾或者瞎說,這是大忌。不會就是不會,可以瀟灑的回答,沒有關系的,好的公司也不會就你不會的問題一直追問,這也沒有意義。

需要以上面試題答案以及面試題里面講解到的技術知識點的小伙伴,關注作者,后臺簡信【面試題】即可獲取面試題答案。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容