阿里天貓團隊5面Java面經:索引+高併發+分庫分表+線程池

阿里天貓團隊5面Java面經:索引+高併發+分庫分表+線程池

一面

一面都是聊項目,聊了半個小時,主要包括這幾個問題:

  • 項目介紹
  • 項目中如何對數據庫進行優化
  • 項目中的難點
  • 你在項目中充當的角色

和麵試官聊了35分鐘,大部分時間是我在介紹,我把項目中自己負責的部分很詳細地說了出來。面試官很友好,對我給予了肯定,直接和我說通過了一面。兩個小時後就約二面面試時間了......

二面

  • 自我介紹
  • 分別介紹一下你的幾個項目
  • 你覺得哪個項目讓你印象最深刻?
  • 項目中一些關於 geohash 的問題
  • 分庫分表的依據是什麼?有用什麼工具嗎?
  • 線程的幾種狀態?
  • wait和sleep分別屬於哪個類的方法
  • lock和synchronized的區別是什麼
  • 什麼情況下適合用偏向鎖?
  • BIO和NIO的區別是什麼?分別適合於什麼場景?
  • select 和 epoll的區別
  • 說一下你知道的Http的請求頭和返回碼
  • String s = new String("abc") 產生了幾個對象?分別放在哪裡?
  • 上面那行代碼在JDK1.8前後存放的區域有什麼不同?
  • 平時有用什麼工具觀察過虛擬機的內存情況嗎?
  • 平時怎麼學習的?有沒有關注什麼博客和論壇?
  • 有什麼問題?

二面感覺自己表現一般般,聊了63分鐘,也不知道自己有沒有過,不過全程和麵試官的討論很多,有些問題回答的不夠好面試官會給我提出建議。很幸運,兩天後的晚上接到了電話,因為那天是星期天所以很意外。那個時候剛好在路邊散步,突然接到電話一臉懵逼,腦子一熱就直接在路邊找個地方開幹了......

三面

  • 自我介紹
  • 項目中你對數據庫做了什麼優化?
  • 對數據分庫分表了嗎?用什麼算法進行分庫分表。。。
  • 項目問題......
  • 項目中你是根據什麼來進行索引的設計的?
  • 項目中把數據放到HBase上面,你rowkey是如何設計讓數據均勻分佈在RegionServer上的?
  • 一次請求的速度大概是多少?有考慮到做其它的優化嗎?(緩存)
  • 說一下索引的原理
  • 知道MySQL插入和查詢分別用的是什麼鎖嗎?
  • 知道悲觀鎖嗎?瞭解多少?
  • 對併發的知識瞭解多少?
  • 說一下synchronized的優點和缺點,與lock進行比較
  • 說一下ReetrantLock的內部實現
  • 對多線程這一塊瞭解多嗎?(我說了解一點,不是很多)他說:那好那問點別的
  • 說一下ArrayList和LinkedList的區別
  • 為什麼ArrayList的查詢時間複雜度為O(1)?為什麼數組查詢可以到O(1)?
  • 說一下你對HashMap的理解?說完......put操作的流程大概是怎樣的呢?
  • 現在有一億條數據,要求你利用HashMap對數據進行去重並排序,你會怎麼做?
  • 多線程這一塊你真的不瞭解嗎?(???他想幹嘛,然後我把我知道的說了出來,包括實現的幾種方式,線程池這些)
  • 線程池當隊列中的任務都執行完畢之後會對線程進行怎樣的操作?
  • 多線程是不是肯定比單線程好?
  • 什麼樣的任務適合用多線程什麼適合單線程?
  • 單CPU的情況下適合用多線程嗎?
  • 我看你裡面很多獎項,挑一個跟我講一講吧
  • 有什麼問題嗎?

結果在路邊站了78分鐘,面完喉嚨都啞了,心臟跳得賊快,剛開始因為緊張講話支支吾吾,後面就好一些了。整個過程感覺這個面試官問的很仔細,對項目的細節問的很深,自己感覺也是一般般,就是那種好像可以過又好像不可以過的感覺......

兩天後,hr打電話來了......約視頻面試

本以為技術面已經結束了,結果是自己想多了。視頻面是技術專家大佬和hr小姐姐兩個人一起面試

技術專家面

主要是針對項目然後提出一些開放性的問題讓你提出解決思路

技術專家:

  • 你在工作室項目中的主要工作?
  • 項目的架構是怎樣的?
  • 如果現在讓你在廣州市投放出租車,你覺得出租車的數量會由什麼因素來決定?
  • 設計一個打車算法
  • 講一下數據庫索引的原理
  • 數據分表你是按照什麼來劃分的?有用到什麼中間件嗎?
  • 快排的實現原理是什麼?
  • 瞭解堆排序嗎,為什麼堆排序的空間複雜度是O(1)?

hr面

  • 剛才的交流過程中有些東西可能你沒有完全給我們展示出來,現在給你一點時間再讓我們多瞭解你一點
  • 你平時有什麼愛好嗎?
  • 你平時的生活情況是怎樣的?你和團隊中的人是如何相處的?
  • 你平時是通過什麼方式學習的?
  • 你覺得自己遇到最有挑戰性的事情是什麼?
  • 你希望你未來想要加入的團隊是怎樣的?
  • 有什麼問題要問的?

加起來一共面試了45分鐘吧,看到專家大佬超級緊張。面完之後心裡鬆了一口氣,終於熬到最後了~ 可是,還沒結束T-T,hr小姐姐和我說,如果你這次通過了,後面會有另一個部門的成員來面試你(也就是交叉面),我表面笑嘻嘻說好,心裡咯噔一下。

那天下午接到了電話,約我交叉面的時間

交叉面

  • 自我介紹
  • 解釋一下並行和併發的區別
  • 如果我要讓10個線程併發同時開始運行,你要怎麼做?
  • 你認為數據庫索引的設計需要考慮什麼因素?
  • 知道索引的最左原則嗎?解釋一下
  • 現在有a b 作為聯合索引,有一條sql語句 where b > 0 and a = 7 和 where a>0 and b = 7分別會用到索引嗎?
  • 線程池使用時核心線程數和最大線程數的設計要考慮什麼因素?
  • 另一個項目)你主要負責哪個部分,難點是什麼?
  • 併發下單的併發是在哪個部分?你通過什麼來防止超賣這種情況?
  • 如果是分佈式情況下你如何防止超賣的情況?
  • 出租車項目的分庫分表是按照什麼條件進行的?
  • 如果讓你設計一個叫車算法,你會考慮什麼?如何設計?
  • geohash是什麼,你能說一下嗎?
  • 如何計算兩個geohash塊之間的距離?
  • 有什麼問題要問的?

交叉面感覺比較難,面到後面有點自閉,覺得自己答得不好超級害怕。面了45分鐘也結束了。感覺不好

不過還好上天眷顧了我,三天後,我很幸運收到了錄用意向書。


分享一波我在複習過程中刷的題(含詳細答案解析)和一些學習資料,都已整理成PDF文檔或者Word文檔,有需要的朋友可以轉發+私信關鍵詞【面試】免費領取~

(1)最新java架構專題系列面試真題+解析(包含Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis、Netty、Spring cloud、分佈式、高併發、性能調優、微服務...)

阿里天貓團隊5面Java面經:索引+高併發+分庫分表+線程池

評論留言+轉發文章+關注我後私信回覆【面試】即可免費獲取我這樣一份文檔資料!

阿里天貓團隊5面Java面經:索引+高併發+分庫分表+線程池

阿里天貓團隊5面Java面經:索引+高併發+分庫分表+線程池

評論留言+轉發文章+關注我後私信回覆【面試】即可免費獲取我這樣一份文檔資料!


分享到:


相關文章: