天天看點

我的百度研發面經整合版(智能雲,核心搜尋) | 掘金技術征文

百度研發面經 百度智能雲 軟體研發工程師 百度今年的提前批有點奇怪,好像都不走流程,牛客上好幾個百度内推的文章,我投了幾個,基本上都是百度智能雲的。 然後這些部門都安排了面試,沒有沖突,是以沒有動靜的小夥伴可以投投别的部門試試。 下面是我的兩篇面經,後續會繼續更新,每個部門側重點不太一樣。

百度智能雲研發崗

好像是做控制台方面的組

一面:

1自我介紹,項目

2 static關鍵字有什麼用,static修飾不同東西時有什麼作用,内部類用static修飾和不用static修飾有何差別。

3 hashmap,hashtable,concurrenthashmap差別和場景

4 volatile關鍵字有什麼用

5 jvm分區講下,作用講下,gc算法講一下,gc是否會有停頓或者延遲。

6 講一下OOM和記憶體洩漏的例子,為什麼有GC還會出現記憶體洩漏和記憶體溢出呢

7 線程和程序的差別,通信方式的差別。

8 悲觀鎖和樂觀鎖,說一下Java和資料庫分别怎麼實作的。

9 資料庫索引說一下,除了B+樹索引還有什麼索引。

10反向索引說一下,如果關鍵字很多,怎麼優化。使用字首樹和hashmap優化。

11 字首樹的結構和原理說一下。

12 浏覽器發起http請求過程,越詳細越好。

13 緩存和資料庫的一緻性怎麼保證

14 網上寫代碼,寫了一個快排

15 沒了。

二面:

1 自我介紹

2 項目中難點,用到的技術

3 多線程,說一下線程的狀态和狀态轉換,詳細問

4 多線程的sleep方法和wait方法為什麼來源不同,一個是object方法,一個是Thread的方法。

5 為什麼object的wait和notify必須在同步塊中使用,不在同步塊使用會報錯麼,編譯報錯還是運作報錯。

6 jvm講一下gc吧,兩個對象的引用循環依賴,會不會被垃圾回收,什麼情況下會什麼情況下不會呢

7 GC root是哪些位置呢,我說記不起來,他說你不用記,其實就是運作時的一些對象和變量,比如局部變量表,方法區的中繼資料比如fianl,static變量,本地方法棧執行的方法。

8 資料庫了解哪個。Redis說一下為什麼是單線程的,不會很慢麼,有什麼好處。

9 Redis的IO請求模型,是不是IO多路複用呢。

10 Spring的interceptor和filter有什麼差別。我說沒差別,錯!

11 網絡這塊,說一下dns請求的過程吧,dns是否會通路緩存呢,緩存在本地和浏覽器,還有dns伺服器上是不是都有。

12 get和post的差別講一下,底層的實作有差別麼,都是基于TCP,那麼如何限制get的url長度,在哪一層限制的。

13 資料結構熟麼,講一下樹和圖吧,樹的層次周遊使用什麼結構,相應的圖的周遊呢。講講最小生成算法,還有迪傑斯特拉。

14 數組,找到唯一一個出現兩次的數。

剛開始聽錯,說了位運算。

a 然後講了數組計數,hash計數,排序比較。

b 然後面試官說條件給的是1到N-1的N個數字,重新想一下。

c 說了根據數組位置和數字比較進行判斷。面試官最後說可以用相加求內插補點來判斷。

15 一個10000以下的數組,記憶體夠。裡面隻有1,2,3。排下序。

a 普通排序O(nlogn)

b 荷蘭旗問題,雙指針解決。O(N)

c 統計數量,重放數組O(2N)

d 另外搞一個數組,把1放頭,3放尾,也是雙指針。O(N)。空間複雜度O(N)

16 沒了。

全程50分鐘

三面HR

巴拉巴拉巴拉。基本上問題都大同小異。

百度智能雲 資料庫部門 一面:

1 資料庫的事務,四個性質說一下,分别有什麼用,怎麼實作的。一緻性沒講好。

2 講到了redo和undo日志,問我分别有什麼用,說redo日志說錯了。

3 資料庫的隔離性如何保證,使用悲觀鎖和樂觀鎖有何差別。MVCC的設計目的是什麼,怎麼使用版本号判斷資料的可見性。

4 問了一道算法,1到N的所有數字,按照字典序列印,怎麼做。

說了用數組排序,問複雜度,扯了半天。

怎麼優化,按照數字特征順序列印,問這個東西和什麼結構比較像。提示是樹,然後說了個多叉樹,問我怎麼實作,最後其實使用dfs周遊樹的每個分支。

5 多線程并發的同步實作,有兩個方法,每個方法裡有a部分代碼和b部分代碼,我要讓兩個線程分别執行兩個方法,并且讓他們運作完a部分代碼再一起向下執行,如何實作。

6 我說了用cyclicbarrier實作,互相等待await。

然後他問我怎麼用信号量實作,并且提示可以再用一個線程。

然後我說了個方案。

7 問了項目

8 如何把優化遞歸的代碼

改成尾遞歸或者循環。

面試官說不是,引導說用棧實作遞歸。

問我棧中需要壓入哪些資料。他說應該是方法參數,傳回值,以及傳回位址。

二面:

1 自我介紹,項目 10分鐘過去

2 伺服器如何負載均衡,有哪些算法,哪個比較好,一緻性哈希原理,怎麼避免DDOS攻擊請求打到少數機器。

3 TCP連接配接中的三次握手和四次揮手,四次揮手的最後一個ack的作用是什麼,為什麼要time wait,為什麼是2msl。

4 資料庫的備份和恢複怎麼實作的,主從複制怎麼做的,什麼時候會出現資料不一緻,如何解決。

5 今天面試太多了,記不清了。。。

6 開源的技術看過用過麼,分布式存儲的了解麼。

7 想做什麼方向的開發。

8 Linux檢視cpu占用率高的程序

9 檢視占用某端口的程序和某程序監聽的端口

10 如何查詢日志檔案中的所有ip,正規表達式

三面(8.3号更新):

資料庫部門真的很嚴格,問題都挺難的。

1 講一下項目

2 平時了解什麼作業系統

Linux,說一下Linux排查問題常用的指令,ps,top,netstat,free,du等等

3 Linux的記憶體管理算法,問了一下是不是頁面置換算法,他說是。

說了lru和fifo,問我lru有什麼缺點,沒答上來。

4 Linux的檔案系統了解麼,講了一下inode節點,檔案和目錄的原理。他問我了不了解具體的檔案系統ext2,ext3,答不會。。

5 程序通信方式有哪些,問我分别怎麼使用,管道有哪些類型,各有什麼優缺點。

6 問我伺服器硬體了解麼。。一臉懵逼,問了我懂不懂Raid,瞎扯了幾句就說不懂了。

7 shell了解麼,沒怎麼寫過。

8 聽說你會Java,說一下JVM記憶體模型把,有哪些區,分别幹什麼的

9 說一下gc算法,分代回收說下。

10 設計模式了解麼,說了7種,問我分别怎麼用,實際應用過嗎,稍微扯了一下。

11 MySQL的引擎講一下,有什麼差別,使用場景呢。

12 查詢最新的10條資料,想了好一會,order by id desc limit 10

13 MySQL的union all和union有什麼差別,我瞎掰了一下,應該不對。

14 MySQL有哪幾種join方式,底層原理是什麼,答不會,隻知道表現形式。

15 Redis了解哪些啊,資料結構和基本原理把。

問我Redis怎麼做叢集,答了主從哨兵和cluster。

Redis的持久化怎麼做,aof和rdb,有什麼差別,有什麼優缺點。

16 Redis使用哨兵部署會有什麼問題,我說需要擴容的話還是得叢集部署。

17 分布式系統了解麼,說一下Hadoop了解啥。

我說基本元件稍微了解過,簡單搭過環境。

18 MapReduce的combiner幹啥的,我說是合并結果的,問我啥時候會用到,答不知道。

19 Hadoop分發任務時,有個job失敗了,hadoop會怎麼處理,我答不知道,猜是會繼續執行。。

20 hadoop分發任務,如果有一個節點特别慢拉慢了整體速度怎麼辦。我猜測是通過yarn配置設定相同的資源給每個任務,可以避免這種情況,他好像不太滿意。

21 hadoop答得很爛。問了我兩個10g檔案比較,2g記憶體,重複率很高,篩選出不同的内容。我說拆成十份hash,每份兩兩比較hash的結果集,貌似他說OK。

22 排序算法了解哪些,巴拉巴拉。

23 用隊列計算一個樹的高度,我說用層次周遊記錄節點高度。

24 一個黑名單集合,資料量很大,快速查詢一個值是否在集合裡,怎麼設計,我說布隆過濾器。

25 還是上一題,說這個黑名單可能需要動态地增删改,如何設計才能避免通路響應太慢。我沒思路,瞎扯了一下加硬體,用記憶體存,都被駁回了。然後他說算了。

26 上一題的黑名單做成分布式,怎麼做。說了分片的方案,根據位址的hash值确定分片所在節點。

27 分布式資料庫了解麼,我不太明白他問的是啥,說不了解,感覺應該是問資料庫的分布式方案。

28 有什麼想問的,據他所說還有2-3輪面試,驚了。

全程50分鐘,可以說是迄今為止難度最大的一個?

百度研發面經整合版

本文首發于微信公衆号:程式員江湖 軟體研發工程師 基礎研發工程師 百度智能雲 百度核心搜尋部 百度今年的提前批有點奇怪,好像都不走流程,牛客上好幾個百度内推的文章,我投了幾個,基本上都是百度智能雲的,當然也有其他部門。 下面是我的面經,包括三個部門的面試,每個部門側重點不太一樣。

度智能雲 賬号和消息部門 一面:

1 項目

2 講一下AOP吧

3 動态代理和靜态代理有什麼差別

4 TCP和IP封包是否會分片,分别在什麼情況下會分片。

TCP分包之後是否還會進行ip分片

5 做個題

無限長軌道。兩輛車同方向開,車會滴水,怎麼讓他們相遇。這題簡直像腦筋急轉彎。

6 寫一個斐波那契數列

遞歸式,要求改進

dp方式,要求優化空間

用三個變量代替數組進行dp,要求改進

我說數學公式,OK。

7 講一下Linux的記憶體結構,我說隻會JVM的,他讓我說一下。

兩者的記憶體如何映射,是什麼關系,不會。

8 沒了

二面:

1 項目講一下,10多分鐘去了。

2 排序算法,複雜度,比較。快排的空間複雜度是logn

3 講一下OSI七層模型,我說了5層模型,然後他讓我再補充一下,問了每層的作用,問了wifi屬于哪一層。

4 線程間的同步用什麼方式,說了object方法。

問我使用hashmap時重寫哪兩個方法,為什麼要重寫,巴拉巴拉,什麼場景下重寫。

5 平時用過什麼資料結構,list用哪些有啥差別。

6 Spring中的ioc和aop。ioc的注解有哪些。

autowired和resource有什麼差別,作用域有哪些。

autowired如何配置兩個類中的一個嗎

7 寫一個單例模式,有點忘卻了,巴拉巴拉搞出一個雙重檢測的,中間改了多次。

8 Java會有記憶體洩漏嗎,三個區分别什麼情況下會産生記憶體洩漏

三面:

1 主要了解哪些技術

2 分布式系統怎麼設計,說了CAP和BASE,最終一緻性

3 問我最終一緻性是什麼,舉一下強一緻性和最終一緻性的例子。分布式事務和消息隊列

4 分布式事務的消息id怎麼确認順序,我說使用zk

5 zk的性能瓶頸怎麼克服,我說使用redis和redis叢集。

6 跨機房的網絡延遲怎麼解決,我說不懂,他讓我猜一俠華北到華南的延遲時間大概是多久,我說大概十秒内。

7 網絡這塊熟麼,說一下socket程式設計吧。說了一下java的socket

8 網絡程式設計的NIO和BIO差別,阻塞指的是什麼意思呢。

9 socket用戶端和服務端的連接配接過程和通信過程說一下。

10 作業系統熟麼,一般版,shell和指令熟麼,不熟。

11 算法熟麼,答不熟。

12 系統怎麼設計,設計模式怎麼用

13 系統優化怎麼做,cpu,IO,記憶體分别怎麼排查問題和調優

14 家鄉,女朋友,巴拉巴拉

百度核心搜尋 一面:

1 自我介紹

2 docker和k8s了解多少

3 研究所學生學了哪些課程

4 作業系統了解麼,講一下程序和線程

5 死鎖和處理方式

6 記憶體,虛拟記憶體和頁面置換

7 網絡了解麼,講一下三次握手和四次揮手

8 資料庫了解多少,mysql索引,事務,鎖講了一些

9 Redis呢,講了一下資料結構,持久化方式,使用場景

10 分布式了解哪些,負載均衡有哪些方式,說了dns,nginx,lvs和硬體,一緻性問題怎麼解決,說了2pc,3pc,raft和paxos,zab

10 mysql大表資料查詢,怎麼優化,分表,分庫。

11單連結清單判環

使用快慢指針解決

12 完全二叉樹判斷:

二面:

1 項目

2 docker和kubenetes的原理和了解程度

3 docker的cgroup了解麼

4 kubenetes的架構,擴容是怎麼完成的。

5 Java的四種引用

6 Java的線程通信方式

7 Linux的程序通信方式

8 Java的線程池

9 算法

1 - N + 1這些數中取出N個,問剩下的是哪個。。

我說加起來相減,面試官說取巧了,不能這樣。

我說比較數組下标,他還是說取巧。

于是我讓他提示我一下,他說了排序再找。。額

然後想了兩個空間換時間的辦法,一個是用hashmap周遊兩個數組。一個是合并數組後統計數字出現次數,也是hashmap

給定一串數字,找出所有可能的IP位址組合,比如192168111,組合是192.168.1.11,192.168.11.1。

應該LeetCode的題。之前自己沒寫完整,現場憋出來了。

這個代碼應該沒錯。面試官看了二十分鐘才說ok。

然後我們就這樣沉默了20分鐘,中間他就說了幾句話。

三面:

1項目

2家庭情況

3學習生活的挑戰

4學新技術的方式

5解釋一下docker

6意向城市和崗位方向

百度智能雲 基礎研發工程師 一面

1 項目

2 隊列和棧差別

3 兩個棧實作隊列,兩個棧實作最小值棧

4 資料庫的事務性質,如何實作這些性質

5 事務隔離級别有哪些,預設是什麼級别。

6 已送出讀有什麼問題,用于什麼場景

7 二叉樹了解麼,平衡二叉樹呢,有什麼場景會用到呢。

8 僵屍程序和孤兒程序是什麼,分别有什麼危害。

9 主從複制怎麼實作。

10 Redis你用來做什麼,為什麼不用mq做異步隊列

11 分布式檔案系統了解麼,HDFS講一下原理

12 Java中一般用什麼類型表示價格。

13 Java如何把byte類型轉換成字元串

14 Java的string類型為什麼是不可變的

15 有什麼問題

▼更多精彩内容

騰訊研發面經

阿裡中間件研發面經

百度研發面經

螞蟻金服研發面經

更多校招幹貨請關注公衆号:程式員江湖。

文末附上征文連結:https://juejin.im/post/5b923adb5188255c6666c77b