總結
06.20我從北京xxxx有限公司離職,結束了一年的見習生涯。07.05-08.04在幫我姐夫做翻譯;畢竟這段時間比較空閑,在空閑的時候我都是在准備面試,不管是Java基礎、JVM、數據庫、數據結構、分布式、集群還是項目都准備的差不多,期間我看過《數據結構與算法分析》和《Java編程思想》等書籍。08.03我回到深圳,08.04開始的阿里一面到08.22的四面,今天得知四面掛了感覺很可惜,畢竟差Offer僅一步之遙,但又在意料之中;你選擇公司,公司同樣也選擇你,如果你沒有足夠優秀,那么對不起-你只是一個過客,而我就是那么一個過客而已。我也留了退路,畢竟阿里沒有十足的把握;在這段時間我也去面過三家公司都是自身產品研發,很巧很幸運也都拿到了Offer;公司沒有好壞之分,你選擇公司的原因無非看在該公司是否能夠給予我們期望的salary、行業的前景和對自身的成長空間,這些之中阿里無非是首選。從阿里的這趟面試經歷中,給我最大的領悟就是:只有自己足夠優秀,才有選擇的余地。
一面(30分鍾)
你最近在干嗎?(********)、你能說下服裝外貿的流程嗎?、集合底層原理、介紹項目、介紹下buddo、如果我發了兩筆相同的轉賬你是怎么處理的?(項目上,采用redis:單線程)、redis掛了怎么辦?(采取集群模式,能夠持久化:命令行log和持久化到本地或者是遠程服務器存儲)、你能講下對賬嗎?、你有什么要問我的嗎?
二面(45分鍾)
介紹一下自己、介紹一下項目、問了個交易場景是怎么處理的、你做過jvm的優化嗎(答:沒有,因為在項目上有專門的架構團隊,他們負責這些工作,但我有簡單了解過)?那你在項目上優化過什么沒有?(答:將數據庫數據放入緩存、因為這些數據是不常改的)你除了學習java還有學習其他語言嗎?(答:有了解過python偶爾會去看一些視頻,畢竟現在我還處在學習階段,我覺得我現在應該先把java基礎先打牢,然后再去把其他語言作為第二或者第三語言)、你看過redis、dubbo的源碼嗎?(答:沒有,但我簡單了解過;看源碼就是看別人寫的好的代碼思想,因為看源碼需要有足夠的能力才有看得懂,我覺得java的基礎得先掌握牢固,比如:設計模式啊、jdk源碼啊等)你除了在項目上學的東西還有哪些途徑獲取知識(公眾號、書)、你關注的公眾號有哪些?(Hollis、Java后端技術、Java思維導圖、Java技術棧、Java面試筆試)、在最近的一篇文章你學到了什么(JVM,開始巴拉巴拉)、你參加過世界知名的大賽嗎?(如:ACM,答:我參加過藍橋杯、創新大賽,ACM沒能力去啊)、你的成績怎樣?(開始巴拉巴拉)
三面(49分鍾,交叉面)
- 前戲
A:你面的是ICBU(國際技術事業部)是嗎?
B:是的,之前填的是這個部門
A:來我們部門(業務平台事業部)吧?現在阿里的重心在我們部門,ICBU的話不是公司的業務核心(面試官在憨笑)
B:可以啊,可以轉部門嗎?可以的話我就轉過來(在憨笑)
A:可以轉,不過一般是要在正式兩年之后才可以
A:你之前面試過嗎?你是第輪面試了啊?
B:這是第三面了
A:你現在人在哪里呢?
B:我現在在深圳這邊
A:來杭州吧,深圳那邊的話是一個研發基地,杭州是總部基本核心業務部門都在這里
B:可以的,聽從安排,畢竟阿里牛人多,哪里需要去哪里(在笑着)
A:好吧,現在開始我們的面試吧
- 面試
A:自我介紹下......
B:巴拉巴拉
A:你做過哪些項目
B:開始敘述......(先講做過的項目,然后挑一個熟悉的項目精講:包括項目背景、項目系統架構、用到的技術、模塊的各個功能)
A:為什么要用分布式?我集成模式也可以啊?
B:分布式系統的話有這些優點:qps、運行可靠性、可擴展性、可維護性、解耦等(還好多,多巴拉巴拉)
A:那分布式的數據一致性問題怎么解決?
B:在我們項目的話,內部通訊主要采用的是MQ,MQ在一定程度上市可以保證書屋的一致性的
A:MQ如何保證一致性的?
B:比如A模塊發了一個消息到Topic1,B模塊監聽Topic1;如果B獲取了消息就會往下執行,如果沒有獲取則消息還在
A:如果此時我B系統奔潰了怎么辦?這個怎么處理?(這個問題主要問的是分布式、集群的特點了)
B:因為分布式系統在集群模式下,每一個服務實例都有運行數據的拷貝;比如B奔潰了導致線程中斷,因為分布式有容災的特性在每個B系統的集群實例都有相關數據的備份,即使B掛了也沒事,還有B1、B2、B3......
A:xxxxx模塊是干什么的?
B:巴拉巴拉
A:為什么網關要用restful接口方式?
B:為了兼容之前的系統,客戶化的時候去掉了網關模塊;現在統一采用的是dubbo接口,因為dubbo也有錯誤重試、軟負載、服務自動發現等優點(建議在回答的時候盡量要回答為什么,自己主動說而不是別人問)
A:緩存你們一般用來干嘛?
B:在我們項目的話,主要用於兩個方面;一是:基礎配置數據,二是:異步緩存
A:基礎配置數據的話是你們服務起來的時候一個一個啟動嗎?
B:是的,我們用的@PostConstruct注解,當服務一啟動的時候就將數據庫的配置加載到本地緩存;如果在應用程序中,某個請求拿不到緩存的話就去數據庫查詢(適當改編,因為之前是沒有去數據庫拿數據這一步,畢竟有可能緩存你拿不到消息)
A:項目問完了,現在問下java基礎
A:StringBuffer、StringBuilder的區別
B:巴拉巴拉
A:ArrayList、LinkedList的區別以及使用場景
B:巴拉巴拉
A:泛型用過嗎?
B:用過,比如List、Set、Map這些都有用到過泛型
A:泛型的優點是什么?
B:避免了CastClassException的異常;在沒有泛型之前是用Object,但這有一個問題是會有類轉換異常;泛型有類型擦除,在編譯期間這行類型是不會保留的
A:再來講講集合吧,HashMap是線程安全的嗎?
B:非線程安全,線程安全的有HashTable、ConCurrentHashMap
A:設計模式用過嗎?
B:具體沒用過,但了解過;比如IO的適配器模式和裝飾器模式
A:使用單例模式的時候需要注意什么?
B:側重雙重校驗鎖(再巴拉巴拉其他的)
A:web開發了解嗎?
B:了解過一些
A:問個簡單的,post與get的區別?
B:巴拉巴拉
A:cookie與session的區別?
B:巴拉巴拉
A:好的差不了了解了,你還有什么想問的嗎?
B:我問下的,阿里校招難嗎?容不容易進啊?
A:挺難的,現在我們部門一個都還沒過,一個Offer都還沒發。你這邊我覺得沒什么問題
B:阿里對待校招生有怎樣的培養計划?
A:進去之后都是有師兄帶着的,也有全部的新人做一個項目............
B:轉正難不難啊?
A:也不算難,轉正的時候會參考以往的工作外加考核
B:好的,我差不多了解了
A:好的,謝謝,再見
B:謝謝啊,拜拜
四面(57分鍾,交叉面)
A:清算與結算有什么區別?
A:你覺得Java跟其他高級語言有什么區別?
A:Java的最新版本是什么?有什么特性?
A:StringBuffer、StringBuilder的區別
A:線程安全的概念
A:代理模式
A:異常分為哪些,運行時異常與非運行時異常的區別,自定義異常屬於什么異常
A:final與finally的區別
A:B_IO、N_IO、A_IO的區別
A:JVM
A:JMM
A:如果一個應用隔三天就會發生OutOfMemory,這個問題你會怎么排查?(jmap工具)
A:MySQL怎么備份(mysqldump -h127.0.0.1 -uroot -ppass myweb > d:/backupfile.sql)
A:復合索引的問題
A:MySQL的存儲引擎有哪些,他們有哪些不一樣
A:MySQL事務的四個特性
A:xxxxx項目分為哪幾個模塊?
A:適配器用來干嘛的?
A:你們項目的冪等校驗
A:我大概了解了;結果的話這個星期會出,你注意下手機或者郵件。先這樣了,再見
A:謝謝,拜拜
......(還有其他的,記不起來了)