百度研發面經
java
百度智能雲node
軟件研發工程師mysql
百度今年的提早批有點奇怪,好像都不走流程,牛客上好幾個百度內推的帖子,我投了幾個,基本上都是百度智能雲的。nginx
而後這些部門都安排了面試,沒有衝突,因此沒有動靜的小夥伴能夠投投別的部門試試。程序員
下面是個人兩篇面經,後續會繼續更新,每一個部門側重點不太同樣。面試
好像是作控制檯方面的組正則表達式
1自我介紹,項目redis
2 static關鍵字有什麼用,static修飾不一樣東西時有什麼做用,內部類用static修飾和不用static修飾有何區別。算法
3 hashmap,hashtable,concurrenthashmap區別和場景sql
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,正則表達式
數據庫部門真的很嚴格,問題都挺難的。
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