我是如何進入阿里巴巴的-面向春招應屆生Java面試指南(五)

1、Java相關

樂觀悲觀鎖的設計,如何保證原子性,解決的問題;java

char和double的字節,以及在內存的分佈是怎樣;mysql

對象內存佈局,而後講下對象的死亡過程?面試

對象頭,詳細講下;算法

sync原理詳細,sync內拋異常會怎樣,死鎖嗎?仍是釋放掉?怎麼排查死鎖?死鎖會怎樣?有沒有什麼更好的替代方案?sql

詳細講一下集合,HashSet源碼,HashMap源碼,若是要線程安全須要怎麼作?數據庫

多線程是解決什麼問題的?線程池解決什麼問題?編程

線程池,如何設計的,裏面的參數有多少種,裏面的工做隊列和線程隊列是怎樣的結構,若是給你,怎樣設計線程池?後端

AQS原理,ReentranLock源碼,設計原理,總體過程。數組

繼續聊多線程源碼,sync原理,而後一個場景設計題;緩存

float f = 1.4f;double d = 1.4d; 與 float f = 1.5f;double d = 1.5d; 是否爲true,內存是怎樣的;

split的源碼,split("a|b|c");得出多少個數組;

把全部認識熟用的JUC( java.util.concurrent(簡稱JUC)包)下的類寫出來,講下使用,而後講下原生的線程操做;

開閉原則,解析工廠方法模式,建造者模式,區別。手擼出來。

講下JVM的大頁模式,JVM內存模型;

什麼是敏捷開發,防護性編程,並行編程。Team Leader的思考;

逃逸分析是什麼,做用是什麼,用途是什麼;

怎麼認爲一個類是線程安全?線程安全的定義是什麼?Java有多少個關鍵字進行同步?爲何這樣設計?(聊了一大堆,一堆爲何);

兩個線程設計題。記得一個是:t1,t2,t3,讓t1,t2執行完才執行t3,原生實現。

寫個後綴表達式,爲何要設計後綴表達式,有什麼好處?而後寫下中綴。

我看你作過性能優化,好比你怎麼分析項目裏面的OOM的,內存泄露呢?詳細說思路;

說下多線程,咱們何時須要分析線程數,怎麼分析,分析什麼因素;

抽象方法和類方法的區別,static的抽象方法能夠嗎?

說下Java的克隆體系;

涉及OOM、JVM優化、源碼問題、數據庫優化、多線程等問題;

CPU高?什麼狀況CPU高?解決什麼問題?

你有遇到過臨界區問題嗎?有遇到過嗎?你在項目遇到這個問題是怎樣解決的?

volatile關鍵字做用;

Java的多態怎麼實現;

解釋一下自旋;

解釋一下信號量;

什麼狀況下會觸發類加載;

Java內存抖動嚴重,優化的思路;

2、數據庫相關

SQL優化思路,聯合索引與底層樹結構的映像關係,索引結構(B+、B-),爲何用這樣的結構;

講下MySQL的集羣?集羣遇到過什麼問題?sql的優化?

你目前爲止遇到的最大數據量是多少?知道100萬時候怎麼設計嗎?1000萬呢?過幾十億呢?

MySQL有多少個參數可調,除了最大鏈接數。所有列出來,一個個分析。

聊下優化過的索引,怎麼優化;

紅黑樹和平衡樹的區別,爲何數據庫不用紅黑樹;

mysql有哪些鎖,意向鎖有什麼用;

數據庫高併發下的優化思路;

數據庫什麼狀況下索引會失效;

3、數據結構和操做系統相關

數據結構學過吧,聊一下?學過什麼結構?講下樹和隊列?B樹呢?

操做系統學過吧,聊一下?講一下系統內存是怎樣的?分段分頁虛擬內存?

頁面置換算法呢?多少種?有最優的置換算法嗎?

你學過什麼課程?而後聊下操做系統,內核、用戶之類。

反轉鏈表手擼;

快排,給一串數組,把具體每次patition寫下,最終結果也寫45, 32, 41, 35, 38, 20, 50;

一個整數status, 判斷第K個比特位是否爲比特1;

把遞歸實現的快排改爲非遞歸,你知道非遞歸有什麼好處嗎;

舉例使用分治思想的算法;

4、網絡相關

講下請求頭細節?

Http和Https?Http1.0,1.1,2.0,講下長鏈接和短鏈接?Https是怎樣的?若是我篡改了公鑰呢?怎麼防止?

Get和Post,講下區別,要我模擬出抓包來。

詳細講下Cookie和Session,Token,OAuth2.0協議;

擁塞算法知道嗎?哪些,分別怎樣?

學過計算機網絡是吧?socket熟悉嗎?對它的讀寫緩衝區有理解嗎?怎麼的?那滑動窗口是怎樣的?爲何這樣設計?

再聊下Http的Http basic authentication;

Https的過程;

5、框架相關

聊下Spring源碼,知道多少,都聊一下;

聊下Spring註解,@Autowire,@Resource,以及他們的解析過程;

聊一下架構,接入層架構,服務層架構。聊下技術棧,Spring Boot,Spring Cloud、Docker;

Spring ioc的具體優點,和直接New一個對象有什麼區別;

Servlet生命週期,是否單例,爲何是單例;

Spring Mvc初始化過程;

6、分佈式相關

多少種RPC框架?

一致性哈希是幹嗎的?

搭建高併發高可用系統須要怎樣設計?考慮哪些東西,有多少說多少。

你對緩存有什麼理解?緩存是解決什麼問題?後端緩存有哪些,分別解決什麼問題?

聊一下分佈式鎖;

你是怎麼設計系統緩存的,爲何,什麼場景;

也來講下,削峯的多種實現,Redis?MQ?

爲何用mq就能削峯?解決什麼問題?

7、設計題

有幾臺機器存儲着幾億淘寶搜索日誌,你只有一臺2g的電腦,怎麼選出搜索熱度最高的十個搜索關鍵詞;

如何設計算法壓縮一段URL;

有一個頁面能同時展現兩個廣告,如今有五個廣告,設計算法使五個廣告展現機率爲1:2:3:4:5;

有25匹馬,五個賽道,用最少比賽次數將25匹馬排序;

8、其餘相關

Tomcat緩存,聊下緩存的總體理解,知道多少種緩存;

解釋下Mucene原理,倒排索引,怎樣進行中文分詞,基於什麼進行分詞;

TopN的大數據量題;

你對接入層要思考什麼東西?遇到過哪些問題?搭建系統要考量哪些因素?

而後項目問題,優化問題;

熟悉maven是吧?咱們來聊下Maven的源碼原理,Maven衝突的時候,怎麼選擇依賴包,咱們怎麼查,咱們遇到兩個不同的版本,咱們應該如何去選擇,爲何?

項目如何分組,性能優化小組應該作哪些;

咱們來講下接入層的搭建,認知分析;

問下項目的系統構建,思考,爲何這樣構建?

如何判斷一段代碼的好壞;

公衆號推薦

  • 全網惟一一個從0開始幫助Java開發者轉作大數據領域的公衆號~

  • 大數據技術與架構或者搜索import_bigdata關注~

  • 海量【java和大數據的面試題+視頻資料】整理在公衆號,關注後能夠下載~

相關文章
相關標籤/搜索