【秋招復盤】覆盤我的美團,阿里,騰訊等面試經驗,其實進BAT上班真沒那麼難!

曉曉的架構路發表於2020-12-27

前言

首先,本人是一個留學生,所以我有著和大多數留學生一樣通病:對國內招聘環境/時間的不熟悉,整體知識體系不瞭解,海外院校不怎麼流行實踐性/工業性知識(也缺乏比較多的實操課,很多人不瞭解比如流行框架等,所以很多國內面試官會覺得留學生基礎弱),當然也可能只是我的問題,而非留學生通病。總而言之,因為這些原因我剛開始的面試路可以說是完全磕磕絆絆,屢屢碰壁到自信心匱乏,而甚至不願意再去面試,到後面通過女友的鼓勵、重新振作,總結知識點,查漏補缺,不斷面試,最終斬獲上述offer。

另外我這裡為大家準備了一線大廠面試資料和我原創的超硬核PDF技術文件,以及我為大家精心準備的多套大廠面試題(不斷更新中),有需要的朋友點選這裡備註csdn,自行下載!希望大家都能找到心儀的工作!

美團一面面經

  • 說一下資料庫事務,事務的ACID

  • 資料庫的事務是怎麼實現的

  • redo記錄

  • 說一下代理模式

  • 說一下動態代理

  • 說一下CAS

  • 用過undo redo嘛

  • 資料庫的索引結構,給你一張表你怎麼去設計索引

  • 資料庫慢查詢怎麼排查和解決問題

  • 常用的設計模式知道哪些

  • 說一下JVM的記憶體模型

  • 一個物件從最開始建立到使用到銷燬,有哪幾個過程,分別是在哪裡執行的這些過程

  • 演算法題:連結串列相加

美團二面面經

  • 資料庫隔離級別

  • 怎麼解決幻讀的?間隙鎖和MVCC的實現原理

  • 當前讀和快照讀的區別

  • TCP和UDP的區別

  • 知道TCP的粘包問題嘛?怎麼解決

  • LRU快取設計,你會怎麼設計資料結構

  • LFU實現,你會怎麼做

  • map有哪些,除了linkedHashMap

  • TreeMap和HashMap的區別,TreeMap插入的時間複雜度

  • 演算法題:迴文子串的個數 LeetCode 647

美團三面面經

  • HTTP請求頭裡面有什麼內容

  • HTTP1.1和HTTP1.0 HTTP2.0有什麼區別

  • Unicode和UTF-8的區別

  • 說一下類載入器,為什麼需要這麼多類載入器,為了保證類的唯一性的話直接定義一個final型別的類載入器不好嘛?

  • 三次握手

  • 對中介軟體的理解

  • 公平鎖和非公平鎖

  • 事務隔離級別

  • 通俗易懂的用兩分鐘給我講一下你最近學的最好的知識點

  • 演算法題:數字轉換 12345

  • 轉換成"一萬二千三百四十五"

  • 還有很多記不清楚了,面試官一直在探測知識的廣度。。不會就馬上下一個

騰訊面經

  • 問專案,專案中解決了什麼問題

  • 怎麼設計資料庫表,怎麼去設計索引,加索引的時候需要注意些什麼

  • 會Linux命令嘛(不會),我們現在的地方都是一鍵部署,那你怎麼看服務有沒有啟動起來?

  • 看日誌,看服務是否能調通

  • 如果沒有日誌呢?怎麼去排查問題。。應該就是要進入到Linux系統裡面去看執行緒之類的?堡壘機

  • 你說一下spring的啟動過程,說一下它處理服務的過程

  • 說了SpringMVC 從dispatcherServlet到HandlerMapping到HandlerAdapter,那你說一下HandlerAdapter的實現過程(不會)

  • 什麼時候Mysql會有慢查詢?你寫的sql有過慢查詢嘛?

  • 演算法題,說思路:

  • 計算兩個64位長整形的漢明距離,先轉換成二進位制,然後求異或,最後用n&(n-1)求出不為0的個數

  • 1-10億的數,少一個求少的那個數字

  • 最後的答案是,求和,然後用等差數列求和公式去計算結果,減去求和之後的結果得到的數字就是缺少的數字

阿里面經:

  • 專案,在實習過程中做了什麼工作

  • Spring怎麼解決迴圈依賴

  • 利用三級快取實現的

  • 覆蓋索引是什麼

  • 最左匹配原則

  • 說一下NIO

  • select、poll、epoll的區別

  • 1000萬個資料的B+樹有多高

  • 分析:首先每個innoDB的頁的大小為16KB,如果主鍵為int型別就是4位元組,同時指向下一節點的指標也會佔用6位元組;如果主鍵為bigInt型,佔用的長度為8位元組 16k/14 = 1170,則一層的節點個數為1170.

  • 同時可以計算葉子結點存放的資料的個數:如果一條資料為1kb,則可以存放16條資料

  • 一顆高度為2的B+樹可以存放 1170*16條資料

  • 一顆高度為3的B+樹可以存放 1170117016 =2000w條資料

  • 所以b+樹的高度一般為1~3層

  • redis的資料結構

  • 說一下跳錶的資料結構

  • hashmap1.7和1.8的區別,紅黑樹的插入的時間複雜度

  • 問專案。。。記不太清了

  • 全程電話面,而且都是突擊面試,感覺就很多問題記不太清

滴滴 一面

  • 演算法題

  • 10個大檔案,每個檔案1000萬行整型資料,排序,排序後第一個檔案為1-1000萬大的數字,第二個檔案為1000萬-2000萬大的數字,依次類推,記憶體限制為32M,檔案中的數字不重複(口述)

  • 方法,採用歸併,32M可以存放的數字為800w,所以要把檔案拆分為小檔案,可以考慮拆分成500w大小的檔案,分別在記憶體中進行排序,可以考慮快排。然後對20個小檔案直接進行歸併,找到前1000w大的數字放入第一個檔案。以此類推

  • 問專案:專案裡面的限流是怎麼做的?

  • 寫的註解,針對於介面進行限流

  • 如果要針對於每一個業務針對性的進行限流應該怎麼做

  • 問基礎:

  • 三次握手四次揮手

  • 如果四次揮手中的第三次揮手時,客戶端的程式被殺死了怎麼辦?

  • 資料庫隔離級別

  • 執行緒程式

  • 執行緒通訊

  • 程式通訊

滴滴二面

  • 演算法題:大資料裡面有很多個字串(有重複),怎麼判斷字串中是否包含某一個給定的字串(口述)

  • 可以對字串進行hash,將hash值模10,分成10個小部分,如果還是太大,可以再進行此次操作。直到每個小部分能夠存進hashmap中,這裡可以去重,因為hashmap查詢key的時間複雜度為o(1),所以可以對給定字串進行上述操作之後看hashmap是否包含上面的字串

  • Spring 的特性?IOC AOP

  • AOP的執行過程?

  • 註解的分類?

  • 註解是編譯時起作用還是執行時起作用?

  • mysql瞭解哪些?

  • myisam和innodb的區別

  • 說一下聚簇索引和非聚簇索引(沒答好)

  • 在實習中學到了什麼?

  • 怎麼去測試自己寫的介面,從哪些方面去考慮?

  • 先進行順序測試,就是把流程跑通

  • 然後再進行逆向流程,測試一些可能出錯的地方

  • 從專案中學到了什麼

  • SpringMVC中controller層是幹嘛的?(不知道)

滴滴三面

  • 全程專案,在專案中負責什麼部分,從專案中學到了什麼。

總結

最後我為大家準備了Java架構學習資料,學習技術內容包含有:Spring,Dubbo,MyBatis, RPC, 原始碼分析,高併發、高效能、分散式,效能優化,微服務 高階架構開發等等。有需要的朋友點選這裡備註csdn,自行下載!任何時候都需要你能夠主動地去學習,面試也要提前做準備。如果你的職業發展有更長遠的打算和規劃,那就更應該沉穩下來,腳踏實地,一步一步。


還有Java核心知識點+全套架構師學習資料和視訊+一線大廠面試寶典+面試簡歷模板+阿里美團網易騰訊小米愛奇藝快手嗶哩嗶哩面試題+Spring原始碼合集+Java架構實戰電子書一起免費分享給大家!

相關文章