半個月6次面試,終於進百度HR面了

王中阳Go1發表於2024-07-04

今天和大家分享一下來自粉絲的面經投稿,他在最近半個月內瘋狂的面試,光百度就約面了兩個崗位,一共進行了6場面試,並且其中一個進到了 HR 面。

他的基本情況是這樣的:統招本科,計算機相關專業,擁有八年的工作經驗,目前處於離職狀態,之前的薪資 20K+ ,期望薪資 25K+ 。

大家可以看一下他下面分享的面經的難度:

第一家:百度地圖後端研發工程師

職位要求

工作職責

  • 負責百度地圖POI資料中臺的研發和資料體系建設,支撐千萬級資料處理壓力的高可靠系統研發工作
  • 負責POI資料建設與情報/特徵/模型等層面的架構設計和工程實現,場景為大規模分散式儲存、計算、資料探勘應用
  • 探索研究大資料解決方案在POI資料處理和情報分析方面的應用,分析與改進現有系統
  • 負責地圖部分使用者端產品的研發和資料系統後臺服務架構研發

職責要求

  • 計算機相關專業本科及以上,1年以上相關工作經驗
  • 熟悉Linux及常見資料結構和演算法,至少熟悉一種主流開發語言(Python/Golang/C++)
  • 對大資料處理和資料工程與分析有濃厚的興趣,良好的團隊合作精神和主動的溝通意識

一面

  1. 自我介紹
  2. 說一下IoT雲平臺的搭建,遇到的困難,怎麼解決的

高併發,訊息佇列,分庫分表,redis叢集,將來支撐千萬級上億級(dns負載均衡,反向代理負載均衡)

對比了無服務和微服務的優勢和劣勢

半夜伺服器告警,解決問題

主要對接國外第三方,遇到的困難

  1. 程式設計題
Go兩個goroutine交替列印1-10 
//G1 1 
//G2 2 
//G1 3 
//G2 4 
//… 
//G1 9 
//G2 10

用兩個channel讀寫資料就好了

長度10初始化都為0的陣列,順序填入1-10,因為中間一個數值漏掉了,填到最後發現陣列沒有填滿,找出漏掉了哪個數字?
例如輸入[1,2,3,4,5,7,8,9,10,0] 返回 6 

寫出了O(n)的,說用二分查詢可以寫出O(logn),這個不是很明白怎麼寫

  1. 反問

公司的業務,工作時間,福利等

  1. 什麼時候能來上班

看offer進度

二面(沒後續了)

  1. 自我介紹
  2. 為什麼離職

團隊解散了,協議離職

  1. 說一下IoT雲平臺構建的實現以及技術難點

訊息佇列:資料傾斜問題,資料不丟,重複消費

redis:使用hash以及Pipline

資料庫:增加索引,分庫分表

這裡聊了很多細節問題,根據業務來說這個東西

  1. 作業系統處理死鎖的方法

訊號量,共享記憶體(這塊感覺還有別的可以說)

  1. 作業系統記憶體管理的方法

分頁,分塊,FIFO,LRU(這塊感覺還有別的可以說)

  1. 會不會寫python指令碼

說寫了爬蟲,爬了百度,彈出了驗證碼

  1. Redis持久化

AOF,RDB還有混合持久化

  1. Memcache知道嗎

多執行緒,不支援持久化(具體不瞭解)

  1. Redis分散式鎖

加鎖,解鎖

  1. 登入linux終端,輸命令很卡

top檢查cpu使用,網路問題(在國內訪問國外),記憶體,磁碟使用是否在臨界區

  1. 使用shell統計檔案中top3的ip地址

沒搞定,就說了grep,awk的一些命令

  1. 磁碟滿了寫不進去,排查命令

df,du檢視磁碟

  1. 找出資料夾中最大的幾個檔案,命令是什麼

這塊說有什麼命令可以列出來,但是具體忘了

  1. 說一下ES和Redis的區別

ES是搜尋引擎,redis是資料結構資料庫,可以做很多事情比如訊息佇列,geo啥的

  1. 寫程式碼
建立連結串列
1->2->3->4->5
輸入2,讓連結串列偏移
4->5->1->2->3

寫出來了,但是有bug,說是看一下程式碼風格,說一下寫題目的思路

  1. 有沒有offer

暫時還沒有

  1. 職業規劃

深耕服務端,瞭解架構,有機會也可以走向管理

  1. 反問
  1. 介紹了一下業務
  2. 培訓,晉升
  3. 福利

第二家:百度文庫研發部_服務端研發工程師

職位要求

工作職責

  • 負責百度文庫的服務端研發工作
  • 編寫核心程式碼,承擔關鍵技術攻關任務
  • 參與服務架構設計,獨立完成業務需求分析和設計
  • 對現有服務框架的升級、效能最佳化和穩定性建設
  • 推動技術與產品創新,建設良好的技術文件,幫助團隊理解需求和技術架構,提高開發效率

任職資格

  • 計算機或相關專業,本科及以上學歷
  • 兩年以上 Golang/PHP/Java/Python/C++ 專案開發經驗,有良好的程式設計習慣
  • 熟悉 Linux 作業系統和開發環境,有良好的資料結構、演算法基礎和系統設計能力,熟悉技術領域的通用元件如Mysql、Redis,Kafka,ElasticSearch等,有較深的理論研究和實踐經驗,並能落地到業務中
  • 熟悉web service相關技術,如高併發處理、儲存與快取,RPC、訊息佇列等技術
  • 有支付、會員、文件智慧化等系統相關研發設計經驗者優先
  • 有較好的團隊合作精神,較強的溝通能力,主動性強,有很強的自我驅動力
  • 有較好的產品意識,主動關注產品效果並積極推進產品方案的落實與完善

一面

  1. 自我介紹
  2. 還會別的啥語言嗎

會的啊,python後端,java寫android,C/C++配合Lua開發韌體

  1. go的競爭問題

比如說map,多個協程訪問,可以加鎖。

atomic包的CompareAndSwapInt32

編譯器使用 race 發現競爭問題

  1. map解決競爭還有什麼辦法

加讀寫鎖,使用sync map

  1. sync 包還有哪些東西?

mutex,RWmutex,waitGroup,Once

  1. 看一段程式碼,說下輸出。
package main

import (
    "fmt"
    "sync"
    "time"
)

type Person struct {
    name string

    age int
}

var p Person

func update(name string, age int) {

    p.name = name

    time.Sleep(time.Millisecond * 200)
    p.age = age
}

func main() {

    wg := sync.WaitGroup{}
    wg.Add(10)
    for i := 0; i < 10; i++ {

       name, age := fmt.Sprintf("nobody:%v", i), i

       go func() {

          defer wg.Done()

          update(name, age)

       }()

    }

    wg.Wait()
    fmt.Printf("p.name= %s\np.age=%v", p.name, p.age)
}

輸出結果不一定,go的協程執行順序不好說

name和age不一定相等,因為有sleep

加鎖可以解決

  1. chmod 644什麼意思?

給許可權,4讀,2寫,1執行

檔案所有者,檔案所屬的組,其他的使用者

  1. Linux 常用命令有哪些

cd,ls,ps,top,
lscpu,cat,touch,mkdir,
grep,awk,
df,du,
ifconfig,netstat,ip addr

  1. docker的Cgroup有哪些作用?

限制cpu和記憶體資源用的

  1. docker compose是用來做啥的?

使用yaml檔案,管理啟動和停止多個容器用的

  1. 寫sql平均年齡大於35的部門id,dpid是部門id,cid是員工id,age是員工的年齡

SELECT dpid

FROM employees

GROUP BY dpid

HAVING AVG(age) > 35;

  1. 說一下mysql的慢查詢,怎麼排查?

開啟慢查詢的日誌,設定慢查詢的超時時間,用explain顯示執行計劃

將type如果是all或者是index最佳化到range會比較好

索引最佳化

  1. 索引是什麼樣子的時候type會是range

不是回答的很好,應該是索引的範圍掃描

  1. type還有哪些取值

ref,system,這塊沒答全

  1. 說一下最左匹配

老問題,(a,b,c)順序問題

  1. 聯合索引a,b,c 查詢語句 WHERE c = 1 AND b IN (1, 3) AND a = 3;用的索引長度

這塊a肯定是能有的,b是in不知道能不能用,得拿sql試試

  1. redis排名怎麼用,取前10的命令

Zset

  1. 說一下布隆過濾器,原理,問題,最佳化

bitmap實現,多個函式落在裡面,如果說在,不一定在,如果說不在則一定不在,最佳化的話,增加bitmap的長度,設定函式的個數

  1. 快取穿透,怎麼解決

既不在redis,也不在資料庫。使用布隆過濾器過濾,載入空的key,業務層增加引數校驗,使用分散式鎖減少訪問資料庫

  1. redis分散式鎖如何實現,zoomkeeper怎麼實現

redis知道,zoomkeeper不太懂

  1. redis哪個版本加入了setnx帶過期時間的

誰記這東西啊(2.6.12)

  1. 常用設計模式有哪些,都是幹啥用的?

工廠,抽象工廠,單例,建立物件用的

責任鏈,gin和goframe的中介軟體調next用的

裝飾器,python中用來包裝函式,然後可以用來計時

介面卡,統一外部介面

觀察者,回撥函式實現非同步

  1. 哪裡人?目前薪資多少?
  2. 用兩個go協程交替列印1,2,3,4一直到100

這種型別的題目都沒啥好玩的,不過用的是他們的編輯器,沒啥提示,有bug但是最後解決了

  1. 反問
  1. zoomkeeper如何實現分散式鎖,剛剛沒答出來:他說自己去搜
  2. 業務有啥:說文庫,ai生成內容圖表,腦圖啥的,等過來就知道了
  3. 上班時間:10點到晚上9點(這麼卷!!!)

二面

  1. 自我介紹
  2. 其他的語言會不會

會的啊,python後端,java寫android,C/C++配合Lua開發韌體

  1. go逃逸分析

變數型別不確定,有全域性變數引用,給slice分配的長度太大,給slice分配的長度不定

使用gcflags case by case 分析

  1. gin的http方法怎麼實現的

這快沒看,然後就說了下gin中介軟體的實現

  1. gin框架的tag

說了有json,然後說gin的不太熟,但是goframe的有 method方法,v引數校驗,dc描述。

gin應該和goframe差不多

  1. channel瞭解嗎

說了資料結構裡面有哪些欄位用來幹啥的,說了一下channel的一些用法以及注意事項

  1. sync包有哪些東西

mutex,rwmutex,sync.map,sync.once,sycn.pool
說了一下他們是幹啥的

  1. http狀態碼

1XX,2XX,3XX,4XX,5XX

  1. http狀態碼499

這個沒碰到過(查了一下是Nginx定義的)

  1. redis的使用,資料一致問題

原子操作,多個操作可以用lua指令碼,也可以用事務,事務用起來比較坑,回滾啥的

  1. Mysql innodb為什麼主鍵推薦用自增

底層B+樹,不自增的話插入資料容易導致節點分裂和合並,影響效率

  1. mysql刪除資料,容量會不會變

不會變,刪除只是標記為刪除,要把表刪了才全刪了,因此刪除不會釋放磁碟的空間

  1. mysql表設計最佳化

先說了表的欄位數量最佳化,再說表的欄位型別最佳化,儘量選容量少的

然後引申到mysql的最佳化,語句最佳化走索引,引數最佳化buffer_pool_size,鎖超時最佳化,連線數最佳化

根據業務最佳化,讀多寫少加快取等

  1. 微服務優缺點

優點:服務拆分,職責分明,語言不限,部署有工具docker,k8s,多雲端部署

缺點:需要運維關注,不熟悉業務排查問題慢

  1. 微服務排查問題的方法

根據請求id,鏈路追蹤,log記錄,普羅米修斯監控,grafana告警,架構文件梳理

  1. 迭代升級頻繁方案

灰度,內測使用者,實時監控狀態,漸進式的開放,出問題回滾還是修復,看業務影響

  1. 說做的挑戰的專案

訊息佇列:資料傾斜問題,資料不丟,重複消費

redis:使用hash以及Pipline,bigkey拆解

資料庫:效能最佳化,分庫分表

  1. 寫程式碼
  a:="baissbaidubbbaidu"
  b:="baidu"
  c:="baissbb"
  將a中出現的b去掉,輸出的就是c了

用了兩個for迴圈就搞定

  1. 反問
  1. 業務有啥:文庫ai gc相關的
  2. 上班的時間:10點到晚上9點(看來是真的忙,這接近12小時了啊)
  1. 有後續的話,3天內就有結果了,感覺我挺不錯的

三面

  1. 自我介紹
  2. 離職的原因
  3. 為什麼想來北京發展
  4. 為什麼畢業了想去深圳
  5. 做專案的時候合作的比較愉快的經歷
  6. 有挑戰的專案是哪個,如何克服挑戰的
  7. 說一下有挑戰的專案的一個業務的邏輯
  8. 第一份工作的離職原因
  9. 說一下python和go的一個使用上的區別
  10. 說一下團隊的大小,以及在團隊中承擔的角色
  11. 說一下如何學習go的
  12. 寫go的時候遇到了哪些問題,怎麼解決的
  13. 如果出現和同事有爭議的事情,該如何解決,如果同事一直堅持怎麼辦
  14. 領導做出了錯誤的決策怎麼辦
  15. 反問
  1. 工作內容,業務
  2. 工作時間
  3. 團隊的人數,入職培訓

HR面!

期待他的好訊息。

歡迎關注 ❤

我的文章都首發在同名公眾號:王中陽

需要簡歷最佳化或者就業輔導,可以直接加我微信:wangzhongyang1993 , 備註:XXX平臺名稱

相關文章