阿里巴巴面經

我晚上剛健完身,而後去外面吃了一頓豬腳飯。正準備吃呢,忽然來了一個浙江杭州的電話。面試

而後就開始了我慘無人睹的電話一面(人生中第一次面試居然是阿里巴巴)redis

1. 項目:Java高併發秒殺系統

如何優化:
用了redis緩存,spring的聲明式事物算法

2. Java基礎知識

ConcurrentHashMap你知道多少
Java基本數據類型(byte, short, int, long, float, double, boolean, char)
接口實現接口用extends
Java垃圾回收機制(標記清除算法, 標記複製算法, 標記整理算法)
類加載機制:「經過一個類的全限定名來獲取描述此類的二進制字節流」,雙親委派模型
啓動類加載器 -> 擴展類加載器 -> 應用類加載器
線程如何同步(volatile + JMM模型,鎖也行)
Java是靜態語言spring

3. 數據結構

圖遍歷(dfs + bfs)
二叉樹特性:
性質1:在二叉樹的第i層上至多有2i-1個結點(i≥1)。(數學概括法可證)
性質2:深度爲k的二叉樹最多有2k-1個結點(k≥1)。(由性質1,經過等比數列求和可證)
B樹和B+樹的區別:
因爲B+樹的數據都存儲在葉子結點中,分支結點均爲索引,方便掃庫,只須要掃一遍葉子結點便可,
可是B樹由於其分支結點一樣存儲着數據,咱們要找到具體的數據,須要進行一次中序遍歷按序來掃
,因此B+樹更加適合在區間查詢的狀況,因此一般B+樹用於數據庫索引,而B樹則經常使用於文件索引。數據庫

4.計算機網絡

osi七層模型:物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層
三次握手四次分手
http協議(HTTP是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫)
HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端服務器模型。
HTTP是一個無狀態的協議。
HTTP 5xx狀態碼(服務器內部錯誤)設計模式

5.算法

鏈表反轉用O(n)複雜度 劍指Offer原題,用三個指針(left, mid, right三個指針)緩存

6.總結

       其實說實話問的都很基礎。但因爲我複習尚未到位,並且不少東西都忘了。安全

  並且當時我在吃豬腳飯,外面的車和人呼呼的過,太吵了,不少都沒有聽清。服務器

  答是答出來了,但不少沒有答全,並且細節也沒有答好,感受要GG網絡

 

第二次流程:

一面(2018年4月17日):

1: 項目:redis放到MySQL這中間一段時間,若是有大量用戶涌進怎麼辦

2: TCP三次握手過程

3: 第二次握手出現問題怎麼解決?

  ans: 超時重傳機制。大概5次就認爲失敗了。

4: 第三次握手出現問題怎麼解決?

  ans: 此時客戶端認爲鏈接已經創建了,但因爲第三次失敗,那麼服務器端就沒有創建鏈接。服務器端就會屢次催促客戶端,我還須要一個ack。若是屢次請求收不到,那麼就認爲這次三次握手失敗了。

5: 滑動窗口

6: arraylist多線程擴容。

  ans: 能夠直接拋出一個異常給客戶端 (儘早的拋出錯誤,這是面試官一直想要的答案,但我一直沒get他的點,很傷神。)

7: arraylist for循環的時候刪除元素

8: HashMap for循環刪除元素

9: redis持久化

  ans: RDB,fork子線程定時執行。AOF,相似於添加日誌,添加一條執行一條

10: MySQL底層索引用的什麼結構

11: 設計模式

12: jvm內存怎麼管理的。

  ans: 棧 + 堆。堆又分爲新生代和老年代。新生代又分爲Eden + from survivor+ to survivor

13: 線程池 (newFixedThreadPool, newCachedThreadPool, newSingleThreadExecutor, newScheduledThreadPool)

14: 線程池拒絕策略。(拋異常,不拋異常,LRU拋棄最先的,阻塞主線程,用主線程來執行)

 

二面(2018年4月20日)

1: MySQL存儲引擎 (InnoDB)

2: 索引結構 (B+樹) 是否爲平衡樹?

3: 樹的遍歷

4: explain命令

5: 談一下對Spring框架的理解 (IoC, AOP)

6: AOP底層如何實現 (HandlerInvole, MethodIntercepter)

7: Spring的單例 是否爲線程安全? 看bean的具體類

8: HashMap是否爲線程安全

9: JVM模型

10: volitile有沒有了解過?

11: 代碼如何編譯打包部署?maven用過沒有?

12: 沒有eclipse如何編譯Java代碼?

13: ant有用過麼?

14: rpc遠程調用有沒有用過?

15: Java中的鎖

16: 死鎖產生有沒有了解?

17: 如何避免死鎖?

18: 最近在看什麼計算機的書?

19: 本科沒有想到去讀碩士嘛?

20: 何時能夠實習?

 

hr面(2018年4月24日)

1: 內部推薦?誰推薦?

2: 大三沒有考研的打算?

3: 成績如何?

4: 你以前有過什麼實踐的經歷?

5: 除了在公司,有沒有跟着老師作一些項目?

6: 本身找了什麼項目來作

7: 項目作了多久

8: 大學學習計劃如何

9: 之後想往什麼的方向,爲何?

10: 怎麼達成這個目標

11: 周圍有沒有特別崇拜的技術牛人

12: 參加acm成績不理想的緣由?

13: 周圍人怎麼評價你,你本身怎麼評價你

14: 你在校最要提高的是什麼

15: 實習計劃

16: 你有什麼問題

相關文章
相關標籤/搜索