被面試人是我的一位粉絲近期剛剛結束了螞蟻金服的三輪技術面試,面完之後他跟我說很累,直言不想再體驗了。
他的面試經歷我仔細看了看,一面重點在基礎知識的考查,二面重點在項目以及對框架的使用與理解上,三面壓力面,是很熟悉的套路,考察的知識點也是經常問到的,具有一定的參考價值,接下來我們就來看看他的這幾輪面試經歷吧。
一面
1.你覺得項目中用了MQ給你帶了什麼好處,設計初衷是什麼?會帶來什麼缺點嘛? (項目針對性比較強,不細說)
2.在網頁鍵入taobao.com,到返回一個頁面,這期間都發生了什麼?
3.你說到了session和cookie,這兩者有什麼區別,應用場景是啥?
4.返回界面的文字,圖片,鏈接,你覺得是從哪裏來的,或者說儲存在哪裏?
5.描述一下TCP三次握手,這期間可以攜帶數據嗎?攜帶了數據會造成什麼後果?
6.描述一下四次分手,第二次和第三次中間處於何種狀態?
7.說一下object類的所有方法以及他們的功能(真的是所有: clone, notify/all,finalize,wait, hashcode, equals, tostring, getclass )
8.抽象類和接口有什麼區別?說一下你的個人理解。
9.詳細說一下final關鍵字,修飾變量,方法,類都有什麼不同?能想到什麼具體應用場
景嗎?
10.說一下equals方法,hashmap的底層,跟hashtable,concurrentHashMap都什麼 區別
11.靜態分派和動態分派的區別?具體應用場景?
12.1 .8concurrentHashMap有什麼變化,優化的意義在哪?
13. hashmap除 了結點數大於8,還有什麼情況會樹化(這個我沒想出來,也可能是我沒聽清楚)
14. hashcode方 法有什麼特點? hashset的底層是如何實現的?爲什麼用hashmap?
15.說說JVM內存結構(這裏要問清楚是JMM還是運行時常量池)
16.你剛說1.8後方法區移動到內存中變成元空間,爲什麼要移過去呢?
17.那爲什麼常量池沒有移動到內存,而是轉移到堆了呢?
18.最後一個問題,說一下線程池的飽和策略
因爲項目中使用到了MQ,所以就順便問了下,好在並沒有提問太過深入的東西,隨後問題幾乎每個都是高頻考點,2、4、5主要考察計算機網絡中的通信過程,例如三次握手/四次揮手,7-14考察Java基礎,隨後就是和JVM以及多線程有關的問題了。有需要的小夥伴可以參考這個進行鍼對性的複習。
二面
1.從項目啓動到現在,介紹一下你的工作以及遇到的難點,怎麼解訣的?
2.講一下微服務架構都有哪些模塊?他們是怎麼一起工作的?
3.讓你實現一個eureka,你會怎麼實現?
4.用戶認證,爲什麼要用JWT,而沒用session-cookie, 應用場景?優劣?加密用的是什麼算法?
5.爲什麼使用rabbitMQ,沒用別的mq?
6.說一說你項目應用了什麼設計模式?適配器模式什麼應用場景?
7.讓你實現AOP,你怎麼實現?
8.spring事務有了解嗎?是如何傳播的?在你項目裏的實際業務中是如何傳播的?
9.例如有ABC三個事務,分別原子性,整體也原子性,A事務出錯回滾,整體事務也會回滾,你會怎麼設計呢?
10. ZooKeeper有 瞭解嗎? redis和Mencache的選型問題?
11.你之前的webServer項目介紹一下整個流程?你是如何做的多線程? socket相關?
12.你怎麼使用線程池?參數怎麼選擇?
13.你寫線程的時候會給他們起個可愛的名字嗎?爲什麼要起?線程錯誤排查工具用過哪些?
14. spring framework都有哪些模塊?你使用到了哪些模塊?怎麼使用的?
15.使用的時候有沒有對某模塊功能進行擴展?
16.說一下集合類(線程安全角度)
到了二面,就會發現提問的重點發生了明顯的變化,從之前的基礎知識變成了項目架構方面的,這一輪考察的是平常學習過程中對於架構的使用與理解,現在都偏愛微服務架構,那是否思考過背後的原理?天天在用Spring,你對他到底又有多少認知呢?都知道消息隊列好,那好在哪?這些東西都是實際的項目中能接觸到,但是又經常會被忽略的東西,就看你是不是一個有心人了。
三面
1.詳細介紹一下點雲擴增工具項目
2.你對分佈式架構有什麼理解?
3.你的項目中或在學習過程中有沒有遇到過很難的點?然後專心研究去解決掉他的
4.周圍有沒有優秀的人?有沒有值得你學習的點,並且你現在跟着做的?
5.平時看什麼書?
6.有沒有根據興趣學習過一些額外的計算機知識,Al領域7 ,
7.在github研究過哪些開源項目?
8.你的職業規劃是什麼樣的?
三面是壓力面,所謂壓力面是指面試官有意製造緊張氣氛,以瞭解求職者將如何面對工作壓力。面試人通過提出生硬的、不禮貌的問題故意使候選人感到不舒服,針對某一事項或問題做一連串的發問,打破沙鍋問到底,直至無法回答。其目的是確定求職者對壓力的承受能力、在壓力前的應變能力和人際關係能力。
這一輪的重點不在於對技術的考察,而在於對人的考察。我一直認爲,面試最重要的是將你的核心競爭力擺上檯面。之所以會問你基礎知識,是因爲技術能力是你的核心競爭力之一,但並不只是技術。如果面對壓力,如何與人相處,是否有探索精神,這些都是很重要的,畢竟每個老闆都喜歡越有壓力就越有動力的員工吧。
總結
總的來說,這三次面試是很經典的套路,一面基礎,二面架構,三面個人。我看完後覺得很有參考價值,便徵求了原作者的同意分享給大家了。雖然他只面了這一家,但事後他說,如果可以,寧願再也沒有面試。