離職美團加酵,面試了阿里拳喻、百度多家互聯(lián)網(wǎng)公司哭当,熬夜為大家肝出這些

前言

由于個人發(fā)展的原因和工作上的變動,產(chǎn)生了想出來看看機會的想法冗澈。經(jīng)過了一段時間的準(zhǔn)備钦勘,3月下旬開始出來面試,面到了 5月下旬亚亲,如愿拿到了自己心儀公司的 offer彻采。按照自己的習(xí)慣,將這次面試過程中的一些經(jīng)驗總結(jié)捌归、心得體會記錄下來肛响,自己留個記錄,也希望可以幫助到一些同學(xué)惜索。

個人情況

坐標(biāo)北京特笋,15 年本科畢業(yè)于普通一本,畢業(yè)后就職于一家傳統(tǒng)電信公司巾兆,17 年后就職于美團點評猎物。

4 年經(jīng)驗應(yīng)該具備哪些技能

首先,簡單的聊一下我認(rèn)為的 4 年經(jīng)驗左右角塑、優(yōu)秀的 Java 程序員應(yīng)該具備的技能有哪些蔫磨,按“專業(yè)技能”和“項目”兩塊,包括但不限于以下內(nèi)容圃伶。

專業(yè)技能方面

  • 基礎(chǔ):JDK 常用類的原理质帅、源碼、使用場景留攒。
  • 設(shè)計模式:常用幾種的原理煤惩、使用場景,單例炼邀、動態(tài)代理魄揉、模板、責(zé)任鏈等拭宁。
  • 數(shù)據(jù)結(jié)構(gòu):數(shù)組洛退、鏈表、棧杰标、隊列兵怯、樹。
  • 網(wǎng)絡(luò):TCP腔剂、HTTP媒区、HTTPS、負(fù)載均衡算法。
  • 框架:Spring IoC 原理袜漩、Spring AOP 原理和使用绪爸、Spring 常用的擴展點、MyBatis 的核心流程宙攻。
  • 中間件:常用中間件的核心原理與最佳實踐奠货,并對其中的 1 到 2 個有深入的學(xué)習(xí),Redis座掘、Kafka(RocketMQ递惋、RabbitMQ)、Dubbo溢陪、Zookeeper丹墨。
  • 數(shù)據(jù)庫(MySQL):索引原理、隔離級別嬉愧、鎖機制贩挣、分庫分表、慢 SQL 定位及優(yōu)化没酣、線上問題解決王财。
  • Netty:NIO 原理、核心組件裕便、I/O 多路復(fù)用(epoll)绒净、零拷貝。
  • JVM:運行時數(shù)據(jù)區(qū)偿衰、垃圾回收算法挂疆、垃圾回收器(CMS、G1)下翎、常用配置參數(shù)缤言、線上問題定位及解決。
  • 穩(wěn)定性保障:隔離视事、限流胆萧、熔斷、降級等俐东。
  • Linux:基本命令的使用跌穗、快速定位和排查問題。
  • 分布式理論:CAP虏辫、BASE蚌吸、2PC、3PC砌庄、TCC羹唠。

項目方面

  • 能獨立完成一個復(fù)雜模塊的需求分析奕枢、方案設(shè)計和最終落地實現(xiàn)。
  • 能不斷思考肉迫,尋找更優(yōu)的設(shè)計和解決方案验辞,積極優(yōu)化慢 SQL稿黄、慢服務(wù)喊衫。
  • 具備排查問題的能力,遇到線上問題能及時定位和修復(fù)上線杆怕,例如:數(shù)據(jù)庫死鎖族购、服務(wù)器宕機、服務(wù)器 Full GC 頻繁等陵珍。
  • 具備難題攻關(guān)的能力寝杖,能不斷解決項目遇到的挑戰(zhàn),能給予初級工程師技術(shù)上的指導(dǎo)互纯。
  • 初步具備帶領(lǐng)團隊(1-3人左右)的能力瑟幕,能合理分配需求,做好進度把控留潦、風(fēng)險評估只盹、Code Review。

嚴(yán)格來說兔院,要完全做到上面這些有點難殖卑,我自己也并不具備,但是坊萝,我們可以將其視為目標(biāo)孵稽,不斷去努力。

面試常見形式

大廠面試通常是“連環(huán)炮”的形式十偶,舉個栗子:

面試官:用過哪些 Map

我:LinkedHashMap菩鲜、ConcurrentHashMap、HashMap惦积、TreeMap

面試官:這四種 Map 的區(qū)別

我:ConcurrentHashMap 線程安全睦袖,LinkedHashMap 可以記錄插入順序和訪問順序,TreeMap 可以自定義排序荣刑,除了這幾個場景馅笙,其他場景基本都可以使用 HashMap

面試官:ConcurrentHashMap 怎么保證線程安全

我:JDK 1.8 以前通過分段鎖,JDK 1.8 以后通過 CAS + Synchronized

面試官:ConcurrentHashMap 在 JDK 1.8 前后的鎖有什么區(qū)別

我:JDK 1.8 以前鎖分段厉亏,JDK 1.8 以后鎖單個節(jié)點董习,鎖粒度降低,并發(fā)度變高

這種模式的問法爱只,其實就是想了解候選人對一個知識點的理解是僅僅停留在表面皿淋,還是真的去深入研究過。

面試內(nèi)容

下面介紹下一些常見的面試內(nèi)容,其中的面試題不一定是我真實遇到的窝趣,有可能是從別人的面試題中收集的疯暑,也有可能是我自己覺得重要的知識點,僅供參考哑舒。

我已經(jīng)把這些面試內(nèi)容整理成了一份pdf文檔妇拯,還有Java的學(xué)習(xí)文檔,需要的朋友點擊:https://docs.qq.com/doc/DU1d3emZCQ0dxdWhM即可收獲洗鸵!

1越锈、項目

項目對于一個 3 - 5 年經(jīng)驗的開發(fā)來說是非常重要的,面試官也非潮毂酰看重這一塊甘凭。這個經(jīng)驗的開發(fā)基本是各大公司的編碼主力,因此面試這個年限的候選人火邓,通常項目是很重要的一塊丹弱。面試官通常會讓你先自己介紹下自己參與度最高(或者最牛逼)的項目,然后從中進行提問铲咨。常見的如以下:

  • 介紹下你參與度最高的項目
  • 畫下項目的架構(gòu)圖
  • 如果核心流程處理到一半躲胳,服務(wù)器崩潰了,會怎么處理
  • 項目中遇到過哪些挑戰(zhàn)或問題鸣驱,怎么解決的
  • 項目的穩(wěn)定性和可用性怎么保障
  • 數(shù)據(jù)安全這塊怎么設(shè)計
  • 項目的技術(shù)選型泛鸟,為什么選這些
  • ...

2、場景題

越到后面的面試官踊东,越喜歡問場景題北滥,場景題比較考驗候選人平時的積累和解決問題能力。這個環(huán)節(jié)很容易掛掉一批人闸翅,特別是容易緊張的同學(xué)再芋,很容易腦子會一片空白。場景題的核心一般是處理大數(shù)據(jù)量的問題坚冀、解決性能方面的問題济赎。

場景題本質(zhì)上是比較開放的,沒有什么標(biāo)準(zhǔn)答案记某,只要自己的方案能夠解決問題司训,能夠“自圓其說”就行。

這個環(huán)節(jié)面試官可能會將線上真實的場景拿出來提問液南,我自己就遇到過壳猜。

3、專業(yè)技能

集合

  • 經(jīng)常用到哪些 Map
  • 這幾種 Map 的區(qū)別
  • CocurrentHashMap 怎么保證線程安全
  • CocurrentHashMap 在 JDK 1.8 前后的鎖有什么區(qū)別
  • 聊下 HashMap 的原理
  • HashMap 在 Put 時滑凉,新鏈表節(jié)點是放在頭部還是尾部
  • HashMap 擴容時的流程
  • HashMap 在 JDK 1.8 有什么改變
  • CocurrentHashMap 在 JDK 1.8 有什么改變
  • TreeMap 的原理
  • Map统扳、List喘帚、Set 分別說下你知道的線程安全類和線程不安全的類

多線程、鎖

  • 線程池使用的是哪種
  • 線程池參數(shù)怎么配置
  • 線程池各個參數(shù)的作用
  • 線程池的參數(shù)配置要注意什么
  • 線程池的工作流程
  • JDK 中的并發(fā)類知道哪些
  • AQS 的底層原理
  • 介紹下悲觀鎖和樂觀鎖
  • 使用過哪些鎖
  • synchronized 和 Lock 的區(qū)別咒钟、使用場景
  • synchronized 原理
  • synchronized 作用于靜態(tài)方法吹由、普通方法、this朱嘴、Lock.class 的區(qū)別
  • 為什么引入偏向鎖倾鲫、輕量級鎖,介紹下升級流程
  • 死鎖的必要條件腕够,如何預(yù)防死鎖
  • 介紹下 CountDownLatch 和 CyclicBarrier
  • 介紹下 CAS级乍,存在什么問題
  • 介紹下 ThreadLocal舌劳,存在什么問題

網(wǎng)絡(luò)

  • HTTPS 是怎么加密的
  • 普通 Hash 和一致性 Hash 原理
  • 一致性 Hash 的缺點
  • TCP 三次握手過程帚湘,為什么需要三次握手
  • 為什么 TIME_WAIT 狀態(tài)需要經(jīng)過 2MSL 才能返回到 CLOSE 狀態(tài)
  • TCP 的擁塞控制
  • TCP 如何解決流控、亂序甚淡、丟包問題
  • 為什么會出現(xiàn)粘包和拆包大诸,如何解決

Spring、Mybatis

  • Mybatis 中 # 和 $ 的區(qū)別
  • 怎么防止 SQL 注入
  • 使用 Mybatis 時贯卦,調(diào)用 DAO(Mapper)接口時是怎么調(diào)用到 SQL 的
  • 介紹下 Spring IoC 的流程
  • BeanFactory 和 FactoryBean 的區(qū)別
  • Spring 的 AOP 是怎么實現(xiàn)的
  • Spring 的事務(wù)傳播行為有哪些资柔,講下嵌套事務(wù)
  • 什么情況下對象不能被代理
  • Spring 怎么解決循環(huán)依賴的問題
  • 要在 Spring IoC 容器構(gòu)建完畢之后執(zhí)行一些邏輯,怎么實現(xiàn)
  • @Resource 和 @Autowire 的區(qū)別
  • @Autowire 怎么使用名稱來注入
  • bean 的 init-method 屬性指定的方法里用到了其他 bean 實例撵割,會有問題嗎
  • @PostConstruct 修飾的方法里用到了其他 bean 實例贿堰,會有問題嗎
  • Spring 中,有兩個 id 相同的 bean啡彬,會報錯嗎羹与,如果會報錯,在哪個階段報錯
  • Spring 中庶灿,bean 的 class 屬性指定了一個不存在的 class纵搁,會報錯嗎,如果會報錯往踢,在哪個階段
  • Spring 中的常見擴展點有哪些

MySQL

  • MySQL 索引的數(shù)據(jù)結(jié)構(gòu)
  • 為什么使用 B+ 樹腾誉,與其他索引相比有什么優(yōu)點
  • 各種索引之間的區(qū)別
  • B+ 樹在進行范圍查找時怎么處理
  • MySQL 索引葉子節(jié)點存放的是什么
  • 聯(lián)合索引(復(fù)合索引)的底層實現(xiàn)
  • MySQL 如何鎖住一行數(shù)據(jù)
  • SELECT 語句能加互斥鎖嗎
  • 多個事務(wù)同時對一行數(shù)據(jù)進行 SELECT FOR UPDATE 會阻塞還是異常
  • MySQL 使用的版本和執(zhí)行引擎
  • MySQL 不同執(zhí)行引擎的區(qū)別
  • MySQL 的事務(wù)隔離級別
  • MySQL 的可重復(fù)讀是怎么實現(xiàn)的
  • MySQL 是否會出現(xiàn)幻讀
  • MySQL 的 gap 鎖
  • MySQL 的主從同步原理
  • 分庫分表的實現(xiàn)方案
  • 分布式唯一 ID 方案
  • 如何優(yōu)化慢查詢
  • explain 中每個字段的意思
  • explain 中的 type 字段有哪些常見的值
  • explain 中你通常關(guān)注哪些字段,為什么

JVM

  • 運行時數(shù)據(jù)區(qū)
  • 服務(wù)器使用的什么垃圾收集器
  • CMS 垃圾收集的原理
  • G1 垃圾收集的特點峻呕,為什么低延遲
  • 有哪些垃圾回收算法利职,優(yōu)缺點
  • 哪些對象可以作為 GC Roots
  • 有哪些類加載器
  • 雙親委派模式,哪些場景是打破雙親委派模式
  • 線上服務(wù)器出現(xiàn)頻繁 Full GC瘦癌,怎么排查
  • 定位問題常用哪些命令
  • 介紹下 JVM 調(diào)優(yōu)的過程

Kafka

  • 為什么使用 Kafka
  • 介紹下 Kafka 的各個組件
  • 如何保證寫入 Kafka 的數(shù)據(jù)不丟失
  • 如何保證從 Kafka 消費的數(shù)據(jù)不丟失
  • Kafka 為什么性能這么高
  • 零拷貝技術(shù)使用哪個方法實現(xiàn)
  • Java 中也有類似的零拷貝技術(shù)猪贪,是哪個方法
  • Kafka 怎么保證消息的順序消費
  • Kafka 怎么避免重復(fù)消費
  • 什么是 HighWatermark 和 LEO
  • 什么是 ISR,為什么需要引入 ISR

Redis

  • 項目中使用的 Redis 版本
  • Redis 在項目中的使用場景
  • Redis 怎么保證高可用
  • Redis 的選舉流程
  • Redis 和 Memcache 的區(qū)別
  • Redis 的集群模式
  • Redis 集群要增加分片佩憾,槽的遷移怎么保證無損
  • Redis 分布式鎖的實現(xiàn)
  • Redis 刪除過期鍵的策略
  • Redis 的內(nèi)存淘汰策略
  • Redis 的 Hash 對象底層結(jié)構(gòu)
  • Redis 中 Hash 對象的擴容流程
  • Redis 的 Hash 對象的擴容流程在數(shù)據(jù)量大的時候會有什么問題嗎
  • Redis 的持久化機制有哪幾種
  • RDB 和 AOF 的實現(xiàn)原理哮伟、優(yōu)缺點
  • AOF 重寫的過程
  • 哨兵模式的原理
  • 使用緩存時干花,先操作數(shù)據(jù)庫還是先操作緩存
  • 為什么是讓緩存失效,而不是更新緩存
  • 緩存穿透楞黄、緩存擊穿池凄、緩存雪崩
  • 更新緩存的幾種設(shè)計模式

Zookeeper

  • Zookeeper 的使用場景
  • Zookeeper 怎么實現(xiàn)分布式鎖
  • Zookeeper 怎么保證數(shù)據(jù)的一致性
  • ZAB 協(xié)議的原理
  • Zookeeper 遵循 CAP 中的哪些
  • Zookeeper 和 Eureka 的區(qū)別
  • Zookeeper 的 Leader 選舉
  • Observer 的作用
  • Leader 發(fā)送了 commit 消息,但是所有的 follower 都沒有收到這條消息鬼廓,Leader 就掛了肿仑,后續(xù)會怎么處理

分布式

  • CAP 理論
  • BASE 理論
  • 分布式事務(wù) 2PC 和 TCC 的原理
  • TCC 在 cancel 階段如果出現(xiàn)失敗怎么處理
  • Paxos 算法、Raft 算法

4碎税、Hr 面

如果你一路過五關(guān)斬六將尤慰,最終來到了 Hr 面,那么恭喜你雷蹂,你已經(jīng)離 offer 非常非常近了伟端。可以開始暢想自己升職加薪匪煌,當(dāng)上總經(jīng)理责蝠,出任 CEO,迎娶白富美萎庭,走上人生巔峰的場景了霜医。

Hr 面主要是了解候選人的一些通用素質(zhì),經(jīng)常會問的問題如下:

  • 介紹下自己投入最多的項目(當(dāng)時我就驚了驳规,Hr 也開始問項目了 )
  • 離職的原因
  • 當(dāng)前的薪資肴敛、績效
  • 當(dāng)前在面試的其他公司的情況
  • 平時有沒有學(xué)習(xí)的習(xí)慣,怎么學(xué)習(xí)的吗购,現(xiàn)在在學(xué)習(xí)什么
  • 未來的規(guī)劃

我已經(jīng)把這些面試內(nèi)容整理成了一份pdf文檔医男,還有Java的學(xué)習(xí)文檔,需要的朋友點擊:https://docs.qq.com/doc/DU1d3emZCQ0dxdWhM即可收獲巩搏!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昨登,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贯底,更是在濱河造成了極大的恐慌丰辣,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禽捆,死亡現(xiàn)場離奇詭異笙什,居然都是意外死亡,警方通過查閱死者的電腦和手機胚想,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門琐凭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浊服,你說我怎么就攤上這事统屈∨哂酰” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵愁憔,是天一觀的道長腕扶。 經(jīng)常有香客問我,道長吨掌,這世上最難降的妖魔是什么半抱? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮膜宋,結(jié)果婚禮上窿侈,老公的妹妹穿的比我還像新娘。我一直安慰自己秋茫,他們只是感情好史简,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著学辱,像睡著了一般乘瓤。 火紅的嫁衣襯著肌膚如雪环形。 梳的紋絲不亂的頭發(fā)上策泣,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音抬吟,去河邊找鬼萨咕。 笑死,一個胖子當(dāng)著我的面吹牛火本,可吹牛的內(nèi)容都是我干的危队。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼钙畔,長吁一口氣:“原來是場噩夢啊……” “哼茫陆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起擎析,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤簿盅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后揍魂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桨醋,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年现斋,在試婚紗的時候發(fā)現(xiàn)自己被綠了喜最。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡庄蹋,死狀恐怖瞬内,靈堂內(nèi)的尸體忽然破棺而出迷雪,到底是詐尸還是另有隱情,我是刑警寧澤虫蝶,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布振乏,位于F島的核電站,受9級特大地震影響秉扑,放射性物質(zhì)發(fā)生泄漏慧邮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一舟陆、第九天 我趴在偏房一處隱蔽的房頂上張望误澳。 院中可真熱鬧,春花似錦秦躯、人聲如沸忆谓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽倡缠。三九已至,卻和暖如春茎活,著一層夾襖步出監(jiān)牢的瞬間昙沦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工载荔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盾饮,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓懒熙,卻偏偏與公主長得像丘损,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子工扎,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容