眼看著 3月就已經(jīng)過(guò)去了,現(xiàn)在就 4月份了,想著面試大軍可能也過(guò)不了幾天就要來(lái)了,所以這兩天整理了一些面經(jīng),今天給大家看的是“美團(tuán)+字節(jié)跳動(dòng)+騰訊”這三家的,每家一二三面,我想大家可以自己測(cè)試一下能堅(jiān)持到哪里。
先來(lái)看美團(tuán)
美團(tuán)的話(huà),三面下來(lái),設(shè)計(jì)的內(nèi)容知識(shí)也是挺廣的吧,有 MySQL、Redis、Kafka、線(xiàn)程、算法、+、volatile、線(xiàn)程、并發(fā)、設(shè)計(jì)模式等等...
一面問(wèn)題:MySQL+Redis+Kafka+線(xiàn)程+算法
mysql 知道哪些存儲(chǔ)引擎,它們的區(qū)別
mysql 索引在什么情況下會(huì)失效
mysql 在項(xiàng)目中的優(yōu)化場(chǎng)景,慢查詢(xún)解決等
mysql 有什么索引,索引模型是什么
B-樹(shù)與 B+樹(shù)的區(qū)別?為什么不用紅黑樹(shù)
mysql 主從同步怎么做
樂(lè)觀鎖與悲觀鎖的區(qū)別?
binlog 日志
redis 持久化有哪幾種方式,怎么選?
redis 主從同步是怎樣的過(guò)程?
redis 的 zset 怎么實(shí)現(xiàn)的?
redis key 的過(guò)期策略
hashmap 是怎樣實(shí)現(xiàn)的?為什么要用紅黑樹(shù),而不用平衡二叉樹(shù)?為什么在 1.8 中鏈表大于 8 時(shí)會(huì)轉(zhuǎn)紅黑樹(shù)?HashMap 為什么線(xiàn)程不安全的?
如何實(shí)現(xiàn)線(xiàn)程安全的 hashmap?
select 和 epoll 的區(qū)別
http 與 https 的區(qū)別,加密怎么加的?
raft 算法詳細(xì)講解
Kafka 選主怎么做的?
kafka 如何保證生產(chǎn)與消費(fèi)都是同步的?
kafka 怎么保證不丟消息的
redis 如何保證高可用
算法:剪繩子(貪心或遞歸解決)
算法:給前序和中序遍歷,重建二叉樹(shù)
二面(volatile+線(xiàn)程+并發(fā)+算法+設(shè)計(jì)模式)
自我介紹
講講項(xiàng)目(項(xiàng)目沒(méi)啥亮點(diǎn),直接問(wèn)基礎(chǔ))
volatile 作用?底層實(shí)現(xiàn)?禁止重排序的場(chǎng)景?單例模式中 volatile 的作用?
如何構(gòu)造線(xiàn)程池,它的參數(shù),飽和策略?
公平鎖和非公平鎖區(qū)別?為什么公平鎖效率低?
線(xiàn)程都有哪些狀態(tài)?
線(xiàn)程、進(jìn)程、協(xié)程的區(qū)別?
同步隊(duì)列器 AQS 思想,以及基于 AQS 實(shí)現(xiàn)的 lock,。
并發(fā)工具類(lèi) CountDownLatch、CyclicBarrier、Semaphore 介紹
Execuors 類(lèi)實(shí)現(xiàn)的幾種線(xiàn)程池類(lèi)型,最后如何返回?
手寫(xiě)單例模式
手寫(xiě)消費(fèi)者生產(chǎn)者模式
算法:反轉(zhuǎn)單鏈表
算法:給定一個(gè)只包含 '(' 和 ')' 的字符串,找出最長(zhǎng)的包含有效括號(hào)的子串的長(zhǎng)度。
三面
這一面,沒(méi)問(wèn)啥東西,主要聊人生,和未來(lái) 3 年的規(guī)劃。。。。。。
第二個(gè)是字節(jié)跳動(dòng)
一面:算法+數(shù)據(jù)庫(kù)+事務(wù)+網(wǎng)絡(luò)
自我介紹
項(xiàng)目介紹(沒(méi)亮點(diǎn),還是問(wèn)基礎(chǔ))
堆排序的原理及時(shí)間復(fù)雜度,是否穩(wěn)定,最壞及最壞場(chǎng)景。
Object 類(lèi)都有哪些方法?
DNS 解析的過(guò)程/瀏覽器輸入一個(gè) url,敲下回車(chē)后網(wǎng)絡(luò)的全過(guò)程
HTTP 和 HTTPS 的區(qū)別
UDP 怎么實(shí)現(xiàn)可靠傳輸
介紹下 https,是如何加密的,加密算法
數(shù)據(jù)庫(kù)索引的優(yōu)缺點(diǎn),以及什么時(shí)候數(shù)據(jù)庫(kù)索引失效
事務(wù)的隔離級(jí)別?
數(shù)據(jù)庫(kù)的臟讀,不可重復(fù)讀,幻讀
算法:接雨水:給定 n 個(gè)非負(fù)整數(shù)表示每個(gè)寬度為 1 的柱子的高度圖,計(jì)算按此排列的柱子,下雨之后能接多少雨水。
算法:N 皇后
二面:Kafka+redis+算法
Kafka 的特性?
Kafka 中的分區(qū)器、序列化器、攔截器是否了解?它們之間的處理順序是什么?
消費(fèi)者重平衡(高可用性、伸縮性)
哪些情景下會(huì)造成消息漏消費(fèi)?
如何保證消息不被重復(fù)消費(fèi)(冪等性)
KafkaConsumer 是非線(xiàn)程安全的,那么怎么樣實(shí)現(xiàn)多線(xiàn)程消費(fèi)?
Kafka 生產(chǎn)者客戶(hù)端中使用了幾個(gè)線(xiàn)程來(lái)處理?分別是什么?
消費(fèi)者與生產(chǎn)者的工作流程:
topic 的分區(qū)數(shù)可不可以增加?
算法:二叉樹(shù)中的最大路徑和
算法:給定單向鏈表的頭指針和一個(gè)要?jiǎng)h除的節(jié)點(diǎn)的值,定義一個(gè)函數(shù)刪除該節(jié)點(diǎn)。
三面:Redis+Spring+Dubbo+算法
redis 的 Zset 怎么實(shí)現(xiàn)的?
sentinel 和 cluster 區(qū)別和各自適用場(chǎng)景
redis cluster 集群同步過(guò)程
redis 單線(xiàn)程為什么快?
mybatis 一級(jí)緩存和二級(jí)緩存
spring 如何解決循環(huán)依賴(lài)?
spring AOP 的原理。
spring 的生命周期。
Dubbo 服務(wù)暴露和引用過(guò)程,負(fù)載均衡策略,容錯(cuò)機(jī)制在哪里實(shí)現(xiàn)的源碼
項(xiàng)目中遇到了哪些問(wèn)題。(抱歉,我的工作就是增刪改查,沒(méi)接觸過(guò)相關(guān)問(wèn)題)
算法:二叉樹(shù)的鏡像
算法:從上到下打印二叉樹(shù)
最后瞄一眼騰訊
騰訊這三面下來(lái)問(wèn)的也不少,自求多福吧。
一面
如何設(shè)計(jì)一個(gè)秒殺系統(tǒng)?
一天爬一千萬(wàn)條文章,怎么做設(shè)計(jì)?怎么并行協(xié)調(diào)?100 臺(tái)服務(wù)器怎么盡可能負(fù)載均衡?
有用過(guò)短域名服務(wù)嗎,能說(shuō)一下嗎?
微服務(wù)的特點(diǎn),如何實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡
如何排查線(xiàn)上問(wèn)題?(背過(guò),沒(méi)排過(guò))
貝葉斯的概率學(xué)原理
負(fù)載均衡的加權(quán)輪詢(xún)算法怎么實(shí)現(xiàn)
如果用戶(hù)量大幅度上漲,如何優(yōu)化?
paxos 算法(這個(gè)算法太難,學(xué)的時(shí)候就沒(méi)太理解)
平時(shí)都看什么博客,最近看什么書(shū)了
二面
自我介紹
項(xiàng)目介紹
redis 的 5 種類(lèi)型,及其實(shí)現(xiàn)原理
如何使用 redis 的 Zset 實(shí)現(xiàn)延時(shí)隊(duì)列?
redis 如何實(shí)現(xiàn)高可用?
redis 緩存穿透、緩存擊穿、緩存雪崩
布隆過(guò)濾器的實(shí)現(xiàn)
如何保證 mysql 與 redis 的雙寫(xiě)一致性?
負(fù)載均衡算法有哪些?
服務(wù)發(fā)現(xiàn)是怎么實(shí)現(xiàn)的?
熔斷是怎么實(shí)現(xiàn)的?
算法:連續(xù)子數(shù)組的最大和
講講分布式 CAP 和 BASE?
什么是強(qiáng)一致性?
分布式事務(wù)的解決方案?
TCC(兩階段型、補(bǔ)償型)
id 生成器如何實(shí)現(xiàn)?
如何判斷一個(gè)圖是否有環(huán)?
一致性 Hash 算法,及其應(yīng)用
背包問(wèn)題
三面
自我介紹
項(xiàng)目介紹
redis 的 zSet 如何實(shí)現(xiàn)?
redis 持久化機(jī)制。
redis 的 Hash 類(lèi)型講解,漸進(jìn)式 rehash。
HashMap 原理,一個(gè) put 操作,都有什么流程?
nginx 有自己配置過(guò)嗎(這個(gè)是我唯一手動(dòng)操作過(guò)的,這個(gè)不是背的)
nginx 的使用場(chǎng)景。
什么是分布式,什么是集群,區(qū)別是什么?
在基于 dubbo 的分布式環(huán)境中,一般將超時(shí) timeout 設(shè)置在 provider 還是 consumer?
dubbo 中負(fù)載均衡的策略有哪些?
接口的異步調(diào)用?如何設(shè)置?運(yùn)行效果?
談?wù)劵?dubbo 的系統(tǒng)中 consumer 集群的解決方案?
mysql 是集群還是單節(jié)點(diǎn)?最大連接數(shù),最大的表中數(shù)據(jù)量大約是多少?
mysql 主從復(fù)制主要有哪幾種模式?
mysql 索引,B+樹(shù),為什么不用紅黑樹(shù)?
數(shù)據(jù)庫(kù)垂直與水平拆分怎么做。
分布式 session 設(shè)置
IO、BIO、NIO,阻塞與非阻塞的區(qū)別?
分布式接口的冪等性設(shè)計(jì)(不能重復(fù)扣付款)
算法:二叉搜索數(shù)與雙向鏈表(這個(gè)懵了)
算法:最長(zhǎng)不含重復(fù)字符的子字符串
算法:手寫(xiě)快速排序、插入排序、冒泡排序,并分析時(shí)間復(fù)雜度和空間復(fù)雜度,它們的穩(wěn)定性
結(jié)局
看完美團(tuán)、字節(jié)、騰訊這三家的一二三面試問(wèn)題,是不是感覺(jué)問(wèn)的特別多,可能咱們又得開(kāi)啟面試造火箭、工作擰螺絲的模式去準(zhǔn)備下一次的面試了。
我看了下,上面這些問(wèn)題大部分都能從我背的題里找到的,所以今天給大家看一下互聯(lián)網(wǎng)工程師必備的面試 1000 題。
而且從上面三家來(lái)看,算法與數(shù)據(jù)結(jié)構(gòu)是必備不可少的呀,因此我建議大家可以去刷刷這本左程云大佬著作的《程序員代碼面試指南 IT 名企算法與數(shù)據(jù)結(jié)構(gòu)題目最優(yōu)解》,里面近 **200 道真實(shí)出現(xiàn)過(guò)的經(jīng)典代碼面試題
其余像設(shè)計(jì)模式,建議可以看看下面這 4 份 PDF(小編我已經(jīng)整理)
設(shè)計(jì)模式
更多的 Java 面試學(xué)習(xí)筆記如下,關(guān)于面試這一塊,我額外細(xì)分出 Java 基礎(chǔ)-中級(jí)-高級(jí)開(kāi)發(fā)的面試+解析,以及調(diào)優(yōu)筆記等等等。。。
限于平臺(tái)篇幅原因,更多內(nèi)容展示不了,覺(jué)得不錯(cuò)的需要的可以三連支持一下