我的百度研发面经整合版(智能云,核心搜索) | 掘金技术征文
百度研發(fā)面經(jīng)
百度智能云
軟件研發(fā)工程師
百度今年的提前批有點(diǎn)奇怪,好像都不走流程,牛客上好幾個(gè)百度內(nèi)推的帖子,我投了幾個(gè),基本上都是百度智能云的。
然后這些部門都安排了面試,沒有沖突,所以沒有動(dòng)靜的小伙伴可以投投別的部門試試。
下面是我的兩篇面經(jīng),后續(xù)會(huì)繼續(xù)更新,每個(gè)部門側(cè)重點(diǎn)不太一樣。
百度智能云研發(fā)崗
好像是做控制臺(tái)方面的組
一面:
1自我介紹,項(xiàng)目
2 static關(guān)鍵字有什么用,static修飾不同東西時(shí)有什么作用,內(nèi)部類用static修飾和不用static修飾有何區(qū)別。
3 hashmap,hashtable,concurrenthashmap區(qū)別和場景
4 volatile關(guān)鍵字有什么用
5 jvm分區(qū)講下,作用講下,gc算法講一下,gc是否會(huì)有停頓或者延遲。
6 講一下OOM和內(nèi)存泄漏的例子,為什么有GC還會(huì)出現(xiàn)內(nèi)存泄漏和內(nèi)存溢出呢
7 線程和進(jìn)程的區(qū)別,通信方式的區(qū)別。
8 悲觀鎖和樂觀鎖,說一下Java和數(shù)據(jù)庫分別怎么實(shí)現(xiàn)的。
9 數(shù)據(jù)庫索引說一下,除了B+樹索引還有什么索引。
10倒排索引說一下,如果關(guān)鍵字很多,怎么優(yōu)化。使用前綴樹和hashmap優(yōu)化。
11 前綴樹的結(jié)構(gòu)和原理說一下。
12 瀏覽器發(fā)起http請求過程,越詳細(xì)越好。
13 緩存和數(shù)據(jù)庫的一致性怎么保證
14 網(wǎng)上寫代碼,寫了一個(gè)快排
15 沒了。
二面:
1 自我介紹
2 項(xiàng)目中難點(diǎn),用到的技術(shù)
3 多線程,說一下線程的狀態(tài)和狀態(tài)轉(zhuǎn)換,詳細(xì)問
4 多線程的sleep方法和wait方法為什么來源不同,一個(gè)是object方法,一個(gè)是Thread的方法。
5 為什么object的wait和notify必須在同步塊中使用,不在同步塊使用會(huì)報(bào)錯(cuò)么,編譯報(bào)錯(cuò)還是運(yùn)行報(bào)錯(cuò)。
6 jvm講一下gc吧,兩個(gè)對象的引用循環(huán)依賴,會(huì)不會(huì)被垃圾回收,什么情況下會(huì)什么情況下不會(huì)呢
7 GC root是哪些位置呢,我說記不起來,他說你不用記,其實(shí)就是運(yùn)行時(shí)的一些對象和變量,比如局部變量表,方法區(qū)的元數(shù)據(jù)比如fianl,static變量,本地方法棧執(zhí)行的方法。
8 數(shù)據(jù)庫了解哪個(gè)。Redis說一下為什么是單線程的,不會(huì)很慢么,有什么好處。
9 Redis的IO請求模型,是不是IO多路復(fù)用呢。
10 Spring的interceptor和filter有什么區(qū)別。我說沒區(qū)別,錯(cuò)!
11 網(wǎng)絡(luò)這塊,說一下dns請求的過程吧,dns是否會(huì)訪問緩存呢,緩存在本地和瀏覽器,還有dns服務(wù)器上是不是都有。
12 get和post的區(qū)別講一下,底層的實(shí)現(xiàn)有區(qū)別么,都是基于TCP,那么如何限制get的url長度,在哪一層限制的。
13 數(shù)據(jù)結(jié)構(gòu)熟么,講一下樹和圖吧,樹的層次遍歷使用什么結(jié)構(gòu),相應(yīng)的圖的遍歷呢。講講最小生成算法,還有迪杰斯特拉。
14 數(shù)組,找到唯一一個(gè)出現(xiàn)兩次的數(shù)。
剛開始聽錯(cuò),說了位運(yùn)算。
a 然后講了數(shù)組計(jì)數(shù),hash計(jì)數(shù),排序比較。
b 然后面試官說條件給的是1到N-1的N個(gè)數(shù)字,重新想一下。
c 說了根據(jù)數(shù)組位置和數(shù)字比較進(jìn)行判斷。面試官最后說可以用相加求差值來判斷。
15 一個(gè)10000以下的數(shù)組,內(nèi)存夠。里面只有1,2,3。排下序。
a 普通排序O(nlogn)
b 荷蘭旗問題,雙指針解決。O(N)
c 統(tǒng)計(jì)數(shù)量,重放數(shù)組O(2N)
d 另外搞一個(gè)數(shù)組,把1放頭,3放尾,也是雙指針。O(N)。空間復(fù)雜度O(N)
16 沒了。
全程50分鐘
三面HR
巴拉巴拉巴拉。基本上問題都大同小異。
百度智能云 數(shù)據(jù)庫部門
一面:
1 數(shù)據(jù)庫的事務(wù),四個(gè)性質(zhì)說一下,分別有什么用,怎么實(shí)現(xiàn)的。一致性沒講好。
2 講到了redo和undo日志,問我分別有什么用,說redo日志說錯(cuò)了。
3 數(shù)據(jù)庫的隔離性如何保證,使用悲觀鎖和樂觀鎖有何區(qū)別。MVCC的設(shè)計(jì)目的是什么,怎么使用版本號(hào)判斷數(shù)據(jù)的可見性。
4 問了一道算法,1到N的所有數(shù)字,按照字典序打印,怎么做。
說了用數(shù)組排序,問復(fù)雜度,扯了半天。
怎么優(yōu)化,按照數(shù)字特征順序打印,問這個(gè)東西和什么結(jié)構(gòu)比較像。提示是樹,然后說了個(gè)多叉樹,問我怎么實(shí)現(xiàn),最后其實(shí)使用dfs遍歷樹的每個(gè)分支。
5 多線程并發(fā)的同步實(shí)現(xiàn),有兩個(gè)方法,每個(gè)方法里有a部分代碼和b部分代碼,我要讓兩個(gè)線程分別執(zhí)行兩個(gè)方法,并且讓他們運(yùn)行完a部分代碼再一起向下執(zhí)行,如何實(shí)現(xiàn)。
6 我說了用cyclicbarrier實(shí)現(xiàn),互相等待await。
然后他問我怎么用信號(hào)量實(shí)現(xiàn),并且提示可以再用一個(gè)線程。
然后我說了個(gè)方案。
7 問了項(xiàng)目
8 如何把優(yōu)化遞歸的代碼
改成尾遞歸或者循環(huán)。
面試官說不是,引導(dǎo)說用棧實(shí)現(xiàn)遞歸。
問我棧中需要壓入哪些數(shù)據(jù)。他說應(yīng)該是方法參數(shù),返回值,以及返回地址。
二面:
1 自我介紹,項(xiàng)目 10分鐘過去
2 服務(wù)器如何負(fù)載均衡,有哪些算法,哪個(gè)比較好,一致性哈希原理,怎么避免DDOS攻擊請求打到少數(shù)機(jī)器。
3 TCP連接中的三次握手和四次揮手,四次揮手的最后一個(gè)ack的作用是什么,為什么要time wait,為什么是2msl。
4 數(shù)據(jù)庫的備份和恢復(fù)怎么實(shí)現(xiàn)的,主從復(fù)制怎么做的,什么時(shí)候會(huì)出現(xiàn)數(shù)據(jù)不一致,如何解決。
5 今天面試太多了,記不清了。。。
6 開源的技術(shù)看過用過么,分布式存儲(chǔ)的了解么。
7 想做什么方向的開發(fā)。
8 Linux查看cpu占用率高的進(jìn)程
9 查看占用某端口的進(jìn)程和某進(jìn)程監(jiān)聽的端口
10 如何查詢?nèi)罩疚募械乃衖p,正則表達(dá)式
三面(8.3號(hào)更新):
數(shù)據(jù)庫部門真的很嚴(yán)格,問題都挺難的。
1 講一下項(xiàng)目
2 平時(shí)了解什么操作系統(tǒng)
Linux,說一下Linux排查問題常用的命令,ps,top,netstat,free,du等等
3 Linux的內(nèi)存管理算法,問了一下是不是頁面置換算法,他說是。
說了lru和fifo,問我lru有什么缺點(diǎn),沒答上來。
4 Linux的文件系統(tǒng)了解么,講了一下inode節(jié)點(diǎn),文件和目錄的原理。他問我了不了解具體的文件系統(tǒng)ext2,ext3,答不會(huì)。。
5 進(jìn)程通信方式有哪些,問我分別怎么使用,管道有哪些類型,各有什么優(yōu)缺點(diǎn)。
6 問我服務(wù)器硬件了解么。。一臉懵逼,問了我懂不懂Raid,瞎扯了幾句就說不懂了。
7 shell了解么,沒怎么寫過。
8 聽說你會(huì)Java,說一下JVM內(nèi)存模型把,有哪些區(qū),分別干什么的
9 說一下gc算法,分代回收說下。
10 設(shè)計(jì)模式了解么,說了7種,問我分別怎么用,實(shí)際應(yīng)用過嗎,稍微扯了一下。
11 MySQL的引擎講一下,有什么區(qū)別,使用場景呢。
12 查詢最新的10條數(shù)據(jù),想了好一會(huì),order by id desc limit 10
13 MySQL的union all和union有什么區(qū)別,我瞎掰了一下,應(yīng)該不對。
14 MySQL有哪幾種join方式,底層原理是什么,答不會(huì),只知道表現(xiàn)形式。
15 Redis了解哪些啊,數(shù)據(jù)結(jié)構(gòu)和基本原理把。
問我Redis怎么做集群,答了主從哨兵和cluster。
Redis的持久化怎么做,aof和rdb,有什么區(qū)別,有什么優(yōu)缺點(diǎn)。
16 Redis使用哨兵部署會(huì)有什么問題,我說需要擴(kuò)容的話還是得集群部署。
17 分布式系統(tǒng)了解么,說一下Hadoop了解啥。
我說基本組件稍微了解過,簡單搭過環(huán)境。
18 MapReduce的combiner干啥的,我說是合并結(jié)果的,問我啥時(shí)候會(huì)用到,答不知道。
19 Hadoop分發(fā)任務(wù)時(shí),有個(gè)job失敗了,hadoop會(huì)怎么處理,我答不知道,猜是會(huì)繼續(xù)執(zhí)行。。
20 hadoop分發(fā)任務(wù),如果有一個(gè)節(jié)點(diǎn)特別慢拉慢了整體速度怎么辦。我猜測是通過yarn分配相同的資源給每個(gè)任務(wù),可以避免這種情況,他好像不太滿意。
21 hadoop答得很爛。問了我兩個(gè)10g文件比較,2g內(nèi)存,重復(fù)率很高,篩選出不同的內(nèi)容。我說拆成十份hash,每份兩兩比較hash的結(jié)果集,貌似他說OK。
22 排序算法了解哪些,巴拉巴拉。
23 用隊(duì)列計(jì)算一個(gè)樹的高度,我說用層次遍歷記錄節(jié)點(diǎn)高度。
24 一個(gè)黑名單集合,數(shù)據(jù)量很大,快速查詢一個(gè)值是否在集合里,怎么設(shè)計(jì),我說布隆過濾器。
25 還是上一題,說這個(gè)黑名單可能需要?jiǎng)討B(tài)地增刪改,如何設(shè)計(jì)才能避免訪問響應(yīng)太慢。我沒思路,瞎扯了一下加硬件,用內(nèi)存存,都被駁回了。然后他說算了。
26 上一題的黑名單做成分布式,怎么做。說了分片的方案,根據(jù)地址的hash值確定分片所在節(jié)點(diǎn)。
27 分布式數(shù)據(jù)庫了解么,我不太明白他問的是啥,說不了解,感覺應(yīng)該是問數(shù)據(jù)庫的分布式方案。
28 有什么想問的,據(jù)他所說還有2-3輪面試,驚了。
全程50分鐘,可以說是迄今為止難度最大的一個(gè)?
百度研發(fā)面經(jīng)整合版
本文首發(fā)于微信公眾號(hào):程序員江湖
軟件研發(fā)工程師
基礎(chǔ)研發(fā)工程師
百度智能云
百度核心搜索部
百度今年的提前批有點(diǎn)奇怪,好像都不走流程,牛客上好幾個(gè)百度內(nèi)推的帖子,我投了幾個(gè),基本上都是百度智能云的,當(dāng)然也有其他部門。
下面是我的面經(jīng),包括三個(gè)部門的面試,每個(gè)部門側(cè)重點(diǎn)不太一樣。
百度智能云 賬號(hào)和消息部門
一面:
1 項(xiàng)目
2 講一下AOP吧
3 動(dòng)態(tài)代理和靜態(tài)代理有什么區(qū)別
4 TCP和IP報(bào)文是否會(huì)分片,分別在什么情況下會(huì)分片。
TCP分包之后是否還會(huì)進(jìn)行ip分片
5 做個(gè)題
無限長軌道。兩輛車同方向開,車會(huì)滴水,怎么讓他們相遇。這題簡直像腦筋急轉(zhuǎn)彎。
6 寫一個(gè)斐波那契數(shù)列
遞歸式,要求改進(jìn)
dp方式,要求優(yōu)化空間
用三個(gè)變量代替數(shù)組進(jìn)行dp,要求改進(jìn)
我說數(shù)學(xué)公式,OK。
7 講一下Linux的內(nèi)存結(jié)構(gòu),我說只會(huì)JVM的,他讓我說一下。
兩者的內(nèi)存如何映射,是什么關(guān)系,不會(huì)。
8 沒了
二面:
1 項(xiàng)目講一下,10多分鐘去了。
2 排序算法,復(fù)雜度,比較。快排的空間復(fù)雜度是logn
3 講一下OSI七層模型,我說了5層模型,然后他讓我再補(bǔ)充一下,問了每層的作用,問了wifi屬于哪一層。
4 線程間的同步用什么方式,說了object方法。
問我使用hashmap時(shí)重寫哪兩個(gè)方法,為什么要重寫,巴拉巴拉,什么場景下重寫。
5 平時(shí)用過什么數(shù)據(jù)結(jié)構(gòu),list用哪些有啥區(qū)別。
6 Spring中的ioc和aop。ioc的注解有哪些。
autowired和resource有什么區(qū)別,作用域有哪些。
autowired如何配置兩個(gè)類中的一個(gè)嗎
7 寫一個(gè)單例模式,有點(diǎn)忘卻了,巴拉巴拉搞出一個(gè)雙重檢測的,中間改了多次。
8 Java會(huì)有內(nèi)存泄漏嗎,三個(gè)區(qū)分別什么情況下會(huì)產(chǎn)生內(nèi)存泄漏
三面:
1 主要了解哪些技術(shù)
2 分布式系統(tǒng)怎么設(shè)計(jì),說了CAP和BASE,最終一致性
3 問我最終一致性是什么,舉一下強(qiáng)一致性和最終一致性的例子。分布式事務(wù)和消息隊(duì)列
4 分布式事務(wù)的消息id怎么確認(rèn)順序,我說使用zk
5 zk的性能瓶頸怎么克服,我說使用redis和redis集群。
6 跨機(jī)房的網(wǎng)絡(luò)延遲怎么解決,我說不懂,他讓我猜一俠華北到華南的延遲時(shí)間大概是多久,我說大概十秒內(nèi)。
7 網(wǎng)絡(luò)這塊熟么,說一下socket編程吧。說了一下java的socket
8 網(wǎng)絡(luò)編程的NIO和BIO區(qū)別,阻塞指的是什么意思呢。
9 socket客戶端和服務(wù)端的連接過程和通信過程說一下。
10 操作系統(tǒng)熟么,一般版,shell和命令熟么,不熟。
11 算法熟么,答不熟。
12 系統(tǒng)怎么設(shè)計(jì),設(shè)計(jì)模式怎么用
13 系統(tǒng)優(yōu)化怎么做,cpu,IO,內(nèi)存分別怎么排查問題和調(diào)優(yōu)
14 家鄉(xiāng),女朋友,巴拉巴拉
百度核心搜索
一面:
1 自我介紹
2 docker和k8s了解多少
3 研究生學(xué)了哪些課程
4 操作系統(tǒng)了解么,講一下進(jìn)程和線程
5 死鎖和處理方式
6 內(nèi)存,虛擬內(nèi)存和頁面置換
7 網(wǎng)絡(luò)了解么,講一下三次握手和四次揮手
8 數(shù)據(jù)庫了解多少,mysql索引,事務(wù),鎖講了一些
9 Redis呢,講了一下數(shù)據(jù)結(jié)構(gòu),持久化方式,使用場景
10 分布式了解哪些,負(fù)載均衡有哪些方式,說了dns,nginx,lvs和硬件,一致性問題怎么解決,說了2pc,3pc,raft和paxos,zab
10 mysql大表數(shù)據(jù)查詢,怎么優(yōu)化,分表,分庫。
11單鏈表判環(huán)
使用快慢指針解決
12 完全二叉樹判斷:
二面:
1 項(xiàng)目
2 docker和kubenetes的原理和了解程度
3 docker的cgroup了解么
4 kubenetes的架構(gòu),擴(kuò)容是怎么完成的。
5 Java的四種引用
6 Java的線程通信方式
7 Linux的進(jìn)程通信方式
8 Java的線程池
9 算法
1 - N + 1這些數(shù)中取出N個(gè),問剩下的是哪個(gè)。。
我說加起來相減,面試官說取巧了,不能這樣。
我說比較數(shù)組下標(biāo),他還是說取巧。
于是我讓他提示我一下,他說了排序再找。。額
然后想了兩個(gè)空間換時(shí)間的辦法,一個(gè)是用hashmap遍歷兩個(gè)數(shù)組。一個(gè)是合并數(shù)組后統(tǒng)計(jì)數(shù)字出現(xiàn)次數(shù),也是hashmap
給定一串?dāng)?shù)字,找出所有可能的IP地址組合,比如192168111,組合是192.168.1.11,192.168.11.1。
應(yīng)該LeetCode的題。之前自己沒寫完整,現(xiàn)場憋出來了。
這個(gè)代碼應(yīng)該沒錯(cuò)。面試官看了二十分鐘才說ok。
然后我們就這樣沉默了20分鐘,中間他就說了幾句話。
三面:
1項(xiàng)目
2家庭情況
3學(xué)習(xí)生活的挑戰(zhàn)
4學(xué)新技術(shù)的方式
5解釋一下docker
6意向城市和崗位方向
百度智能云
基礎(chǔ)研發(fā)工程師
一面
1 項(xiàng)目
2 隊(duì)列和棧區(qū)別
3 兩個(gè)棧實(shí)現(xiàn)隊(duì)列,兩個(gè)棧實(shí)現(xiàn)最小值棧
4 數(shù)據(jù)庫的事務(wù)性質(zhì),如何實(shí)現(xiàn)這些性質(zhì)
5 事務(wù)隔離級(jí)別有哪些,默認(rèn)是什么級(jí)別。
6 已提交讀有什么問題,用于什么場景
7 二叉樹了解么,平衡二叉樹呢,有什么場景會(huì)用到呢。
8 僵尸進(jìn)程和孤兒進(jìn)程是什么,分別有什么危害。
9 主從復(fù)制怎么實(shí)現(xiàn)。
10 Redis你用來做什么,為什么不用mq做異步隊(duì)列
11 分布式文件系統(tǒng)了解么,HDFS講一下原理
12 Java中一般用什么類型表示價(jià)格。
13 Java如何把byte類型轉(zhuǎn)換成字符串
14 Java的string類型為什么是不可變的
15 有什么問題
▼更多精彩內(nèi)容
騰訊研發(fā)面經(jīng)
阿里中間件研發(fā)面經(jīng)
百度研發(fā)面經(jīng)
螞蟻金服研發(fā)面經(jīng)
更多校招干貨請關(guān)注公眾號(hào):程序員江湖。
文末附上征文鏈接:https://juejin.im/post/5b923adb5188255c6666c77b
總結(jié)
以上是生活随笔為你收集整理的我的百度研发面经整合版(智能云,核心搜索) | 掘金技术征文的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker rancher搭建
- 下一篇: select,InnoDB为啥会阻塞in