眼看著 3月就已經過去了,現在就 4月份了毒涧,想著面試大軍可能也過不了幾天就要來了贮预,所以這兩天整理了一些面經,今天給大家看的是“美團+字節(jié)跳動+騰訊”這三家的契讲,每家一二三面仿吞,我想大家可以自己測試一下能堅持到哪里。
先來看美團
美團的話捡偏,三面下來唤冈,設計的內容知識也是挺廣的吧,有 MySQL银伟、Redis你虹、Kafka绘搞、線程、算法傅物、+夯辖、volatile、線程董饰、并發(fā)蒿褂、設計模式等等...
一面問題:MySQL+Redis+Kafka+線程+算法
mysql 知道哪些存儲引擎,它們的區(qū)別
mysql 索引在什么情況下會失效
mysql 在項目中的優(yōu)化場景卒暂,慢查詢解決等
mysql 有什么索引啄栓,索引模型是什么
B-樹與 B+樹的區(qū)別?為什么不用紅黑樹
mysql 主從同步怎么做
樂觀鎖與悲觀鎖的區(qū)別介却?
binlog 日志
redis 持久化有哪幾種方式谴供,怎么選?
redis 主從同步是怎樣的過程齿坷?
redis 的 zset 怎么實現的桂肌?
redis key 的過期策略
hashmap 是怎樣實現的?為什么要用紅黑樹永淌,而不用平衡二叉樹崎场?為什么在 1.8 中鏈表大于 8 時會轉紅黑樹?HashMap 為什么線程不安全的遂蛀?
如何實現線程安全的 hashmap谭跨?
select 和 epoll 的區(qū)別
http 與 https 的區(qū)別,加密怎么加的李滴?
raft 算法詳細講解
Kafka 選主怎么做的螃宙?
kafka 如何保證生產與消費都是同步的?
kafka 怎么保證不丟消息的
redis 如何保證高可用
算法:剪繩子(貪心或遞歸解決)
算法:給前序和中序遍歷所坯,重建二叉樹
二面(volatile+線程+并發(fā)+算法+設計模式)
自我介紹
講講項目(項目沒啥亮點谆扎,直接問基礎)
volatile 作用?底層實現芹助?禁止重排序的場景堂湖?單例模式中 volatile 的作用?
如何構造線程池状土,它的參數无蜂,飽和策略?
公平鎖和非公平鎖區(qū)別蒙谓?為什么公平鎖效率低斥季?
線程都有哪些狀態(tài)?
線程累驮、進程泻肯、協(xié)程的區(qū)別渊迁?
同步隊列器 AQS 思想,以及基于 AQS 實現的 lock,灶挟。
并發(fā)工具類 CountDownLatch琉朽、CyclicBarrier、Semaphore 介紹
Execuors 類實現的幾種線程池類型稚铣,最后如何返回箱叁?
手寫單例模式
手寫消費者生產者模式
算法:反轉單鏈表
算法:給定一個只包含 '(' 和 ')' 的字符串,找出最長的包含有效括號的子串的長度惕医。
三面
這一面耕漱,沒問啥東西,主要聊人生抬伺,和未來 3 年的規(guī)劃螟够。。峡钓。妓笙。。能岩。
第二個是字節(jié)跳動
一面:算法+數據庫+事務+網絡
自我介紹
項目介紹(沒亮點寞宫,還是問基礎)
堆排序的原理及時間復雜度,是否穩(wěn)定拉鹃,最壞及最壞場景辈赋。
Object 類都有哪些方法?
DNS 解析的過程/瀏覽器輸入一個 url膏燕,敲下回車后網絡的全過程
HTTP 和 HTTPS 的區(qū)別
UDP 怎么實現可靠傳輸
介紹下 https钥屈,是如何加密的,加密算法
數據庫索引的優(yōu)缺點坝辫,以及什么時候數據庫索引失效
事務的隔離級別篷就?
數據庫的臟讀,不可重復讀阀溶,幻讀
算法:接雨水:給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子鸦泳,下雨之后能接多少雨水银锻。
算法:N 皇后
二面:Kafka+redis+算法
Kafka 的特性?
Kafka 中的分區(qū)器做鹰、序列化器击纬、攔截器是否了解?它們之間的處理順序是什么钾麸?
消費者重平衡(高可用性更振、伸縮性)
哪些情景下會造成消息漏消費炕桨?
如何保證消息不被重復消費(冪等性)
KafkaConsumer 是非線程安全的,那么怎么樣實現多線程消費肯腕?
Kafka 生產者客戶端中使用了幾個線程來處理献宫?分別是什么?
消費者與生產者的工作流程:
topic 的分區(qū)數可不可以增加实撒?
算法:二叉樹中的最大路徑和
算法:給定單向鏈表的頭指針和一個要刪除的節(jié)點的值姊途,定義一個函數刪除該節(jié)點。
三面:Redis+Spring+Dubbo+算法
redis 的 Zset 怎么實現的知态?
sentinel 和 cluster 區(qū)別和各自適用場景
redis cluster 集群同步過程
redis 單線程為什么快捷兰?
mybatis 一級緩存和二級緩存
spring 如何解決循環(huán)依賴?
spring AOP 的原理负敏。
spring 的生命周期贡茅。
Dubbo 服務暴露和引用過程,負載均衡策略其做,容錯機制在哪里實現的源碼
項目中遇到了哪些問題顶考。(抱歉,我的工作就是增刪改查庶柿,沒接觸過相關問題)
算法:二叉樹的鏡像
算法:從上到下打印二叉樹
最后瞄一眼騰訊
騰訊這三面下來問的也不少村怪,自求多福吧。
一面
如何設計一個秒殺系統(tǒng)浮庐?
一天爬一千萬條文章甚负,怎么做設計?怎么并行協(xié)調审残?100 臺服務器怎么盡可能負載均衡梭域?
有用過短域名服務嗎,能說一下嗎搅轿?
微服務的特點病涨,如何實現服務發(fā)現和負載均衡
如何排查線上問題?(背過璧坟,沒排過)
貝葉斯的概率學原理
負載均衡的加權輪詢算法怎么實現
如果用戶量大幅度上漲既穆,如何優(yōu)化?
paxos 算法(這個算法太難雀鹃,學的時候就沒太理解)
平時都看什么博客幻工,最近看什么書了
二面
自我介紹
項目介紹
redis 的 5 種類型,及其實現原理
如何使用 redis 的 Zset 實現延時隊列黎茎?
redis 如何實現高可用囊颅?
redis 緩存穿透、緩存擊穿、緩存雪崩
布隆過濾器的實現
如何保證 mysql 與 redis 的雙寫一致性踢代?
負載均衡算法有哪些盲憎?
服務發(fā)現是怎么實現的?
熔斷是怎么實現的胳挎?
算法:連續(xù)子數組的最大和
講講分布式 CAP 和 BASE饼疙?
什么是強一致性?
分布式事務的解決方案串远?
TCC(兩階段型宏多、補償型)
id 生成器如何實現?
如何判斷一個圖是否有環(huán)澡罚?
一致性 Hash 算法伸但,及其應用
背包問題
三面
自我介紹
項目介紹
redis 的 zSet 如何實現?
redis 持久化機制留搔。
redis 的 Hash 類型講解更胖,漸進式 rehash。
HashMap 原理隔显,一個 put 操作却妨,都有什么流程?
nginx 有自己配置過嗎(這個是我唯一手動操作過的括眠,這個不是背的)
nginx 的使用場景彪标。
什么是分布式,什么是集群掷豺,區(qū)別是什么捞烟?
在基于 dubbo 的分布式環(huán)境中,一般將超時 timeout 設置在 provider 還是 consumer?
dubbo 中負載均衡的策略有哪些当船?
接口的異步調用题画?如何設置?運行效果德频?
談談基于 dubbo 的系統(tǒng)中 consumer 集群的解決方案苍息?
mysql 是集群還是單節(jié)點?最大連接數壹置,最大的表中數據量大約是多少竞思?
mysql 主從復制主要有哪幾種模式?
mysql 索引钞护,B+樹盖喷,為什么不用紅黑樹?
數據庫垂直與水平拆分怎么做患亿。
分布式 session 設置
IO传蹈、BIO、NIO步藕,阻塞與非阻塞的區(qū)別?
分布式接口的冪等性設計(不能重復扣付款)
算法:二叉搜索數與雙向鏈表(這個懵了)
算法:最長不含重復字符的子字符串
算法:手寫快速排序惦界、插入排序、冒泡排序咙冗,并分析時間復雜度和空間復雜度沾歪,它們的穩(wěn)定性
結局
看完美團、字節(jié)雾消、騰訊這三家的一二三面試問題灾搏,是不是感覺問的特別多,可能咱們又得開啟面試造火箭立润、工作擰螺絲的模式去準備下一次的面試了狂窑。
我看了下,上面這些問題大部分都能從我背的題里找到的桑腮,所以今天給大家看一下互聯網工程師必備的面試 1000 題泉哈。
而且從上面三家來看,算法與數據結構是必備不可少的呀破讨,因此我建議大家可以去刷刷這本左程云大佬著作的《程序員代碼面試指南 IT 名企算法與數據結構題目最優(yōu)解》丛晦,里面近 **200 道真實出現過的經典代碼面試題
其余像設計模式,建議可以看看下面這 4 份 PDF(小編我已經整理)
設計模式
更多的 Java 面試學習筆記如下提陶,關于面試這一塊烫沙,我額外細分出 Java 基礎-中級-高級開發(fā)的面試+解析,以及調優(yōu)筆記等等等隙笆。锌蓄。。
限于平臺篇幅原因仲器,更多內容展示不了煤率,覺得不錯的需要的可以三連支持一下