我晚上剛健完身,然后去外面吃了一頓豬腳飯。正准備吃呢,突然來了一個浙江杭州的電話。
然后就開始了我慘無人睹的電話一面(人生中第一次面試竟然是阿里巴巴)
1. 項目:Java高並發秒殺系統
如何優化:
用了redis緩存,spring的聲明式事物
2. Java基礎知識
ConcurrentHashMap你知道多少
Java基本數據類型(byte, short, int, long, float, double, boolean, char)
接口實現接口用extends
Java垃圾回收機制(標記清除算法, 標記復制算法, 標記整理算法)
類加載機制:“通過一個類的全限定名來獲取描述此類的二進制字節流”,雙親委派模型
啟動類加載器 -> 擴展類加載器 -> 應用類加載器
線程如何同步(volatile + JMM模型,鎖也行)
Java是靜態語言
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: 你有什么問題