首頁 後端開發 Golang 新鮮出爐的Go面試題(百度和米哈遊)

新鮮出爐的Go面試題(百度和米哈遊)

Sep 25, 2021 pm 04:38 PM
go語言

上對上兩家公司中go的技術崗位,一家百度,一家米哈遊,面試的情況下不太樂觀,現在分享一下面試中問的問題吧。

兩家都是採用線上面試的,當時沒有錄音,現在全靠自己的回憶來複盤一下了。

百度一面

百度的面試步驟分為電腦基礎、go相關、mysql相關、 redis相關、linux相關問題。還有一些發散性的問題。

基礎相關

  • 演算法,包括不限於紅黑樹、二元樹等等。
  • 資料結構,包括不限於鍊錶、陣列等。
  • tcpip相關的一些問題,像是三次握手、四次揮手、time_wait等等。
  • 瀏覽器輸入位址,中間發生的過程,仔細的描述一下。 (這個我感覺基本上都會被問到,哈哈哈)。

這一塊的話,我回答的是稀碎,演算法和資料結構我一個都沒答上來,後面兩個因為之前面試問到過,所以查過一些,回答的還算可以。

go相關

  • GC,(面GO必問題),GCstw時機,各階段是如何解決的。
  • gpm,(面GO必問題),這個必須要完全理解,搶佔式調度是如何搶佔的,怎麼調度goroutine#的,MP的數量問題。
  • 如何優雅的實現一個goroutine池(這個回答的稀碎)
  • #談談記憶體逃逸
  • 記憶體管理(這個也回答的稀碎)

mysql相關

  • mysql鎖,分鎖粒度和鎖演算法(間隙鎖、記錄鎖,臨鍵鎖),以及鎖演算法在什麼情況下會用到。大概意思是如果精準能匹配到的話,用的就是記錄鎖,否則退化為間隙鎖
  • mysql mvvc實作原理。
  • mysql 索引,索引建立時機,建立規則。
  • mysql 分庫分錶規則,有沒有實作過?
  • mysql 索引的類型以及索引的資料結構
  • mysql 事務特性,以及隔離等級。

redis

  • redis的資料型別有哪些,使用場景說說。
  • redis zset的編碼方式,應該有兩種,在設定檔中配置的,預設128個元素是ziplist(壓縮表),大於128則是skiplist
  • redis的記憶體淘汰策略
  • redis的持久化策略
  • redis分散式鎖定
  • redis分散式架構有哪些
  • 如果有一個排行榜,用zset,根據積分和時間來排序,積分高的,時間最近的拍前面,怎麼實現?

linux

  • 你熟悉的有哪些指令
  • 如果線上流量暴增,全都打到一個upstream上了,怎麼排查。
  • 如何在nginx的access log中查出請求前10的ip

#總結

我面試結束後,一般都會問面試官,根據這次面試,針對我的技術上面,有什麼好的建議或意見,這位面試官給我的回答是:電腦基礎比較薄弱,但是業務能力很強。這也是我目前的現狀,哈哈,所以最近我一直在看哈工大老師的電腦理論和作業系統。希望能勤能補拙。

米哈遊一面

米哈遊面試總體分為四個部分,go相關,mysql相關,redis相關,linux相關。

go相關

  • 第一題就給我幹懵逼了。程式碼如下:
...m := make(map[int]int, 10)for i := 1; i<= 10; i++ {
    m[i] = i}for k, v := range(m) {
    go func() {
        fmt.Println("k ->", k, "v ->", v)
    }()}...
登入後複製

問會出現什麼狀況,為什麼,怎麼解決。就是不要閉包直接使用外部變量,透過傳參就能解決了。

  • 記憶體洩露,什麼情況下記憶體會洩露。
  • channel的底層實作原理,(其實就是問buf是環形鍊錶的資料結構)
  • defer,這個一定要認真回答,defer在什麼時機會修改回傳值。多個defer的順序。
  • make和new的區別
  • channel關閉了接著send資料會發生什麼,關閉一個已經關閉的channel會發生什麼。
  • map是執行緒安全的嗎,map的擴容規則。
  • 陣列和切片的差異。
  • GC
  • GPM模型
  • 進程、執行緒、協程差異。 (這個很重要)

還有其他的我忘了。

redis

差不多就是百度那樣。

mysql

也差不多和百度那樣。

linux

大差不差,就問了一個怎麼根據進程名稱查該進程的id.

總結

根據面試回饋來看,米哈遊給的是go基礎較差,但是業務能力較強。可能這就是之前乾外包的特色吧。

米哈遊的二面

米哈遊二面主要問的是業務方面和演算法方面的問題,主要有三個部分。

  • 微服務相關,包括微服務的註冊與發現,微服務的監控,微服務的限流相關等等,還有微服務怎麼守護進程,我回答的是supervisor,也不知道對不對。
  • 具體業務的實現,兌換碼的實現,如何批量生成幾十萬或上百萬的兌換碼,(這個我回答的是用雪花演算法實現),高並發下,一個兌換碼如何保證只能被一個人兌換一次,以及一個兌換碼如何可以被多個人兌換的實現。 (這題前前後後回答了有半小時吧,因為之前做過相關的業務,所以心裡有點底)
  • 三個演算法問題。
    1. 寫一個方法,解決:輸入4個數字,透過加減乘除,輸出一個期望值。
    2. 廣度優先演算法:怎麼輸出各層的值。
    3. 台階問題,假如對於上台階,可以一次上一階,也可以一次上兩階,寫一個方法,實現輸入台階數,輸出可以有多少種上法。

推薦:《golang教學

#

以上是新鮮出爐的Go面試題(百度和米哈遊)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Go語言中用於浮點數運算的庫有哪些? Go語言中用於浮點數運算的庫有哪些? Apr 02, 2025 pm 02:06 PM

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

Go的爬蟲Colly中Queue線程的問題是什麼? Go的爬蟲Colly中Queue線程的問題是什麼? Apr 02, 2025 pm 02:09 PM

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

在 Go 語言中,為什麼使用 Println 和 string() 函數打印字符串會出現不同的效果? 在 Go 語言中,為什麼使用 Println 和 string() 函數打印字符串會出現不同的效果? Apr 02, 2025 pm 02:03 PM

Go語言中字符串打印的區別:使用Println與string()函數的效果差異在Go...

在Go語言中使用Redis Stream實現消息隊列時,如何解決user_id類型轉換問題? 在Go語言中使用Redis Stream實現消息隊列時,如何解決user_id類型轉換問題? Apr 02, 2025 pm 04:54 PM

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

Go語言中`var`和`type`關鍵字定義結構體的區別是什麼? Go語言中`var`和`type`關鍵字定義結構體的區別是什麼? Apr 02, 2025 pm 12:57 PM

Go語言中結構體定義的兩種方式:var與type關鍵字的差異Go語言在定義結構體時,經常會看到兩種不同的寫法:一�...

GoLand中自定義結構體標籤不顯示怎麼辦? GoLand中自定義結構體標籤不顯示怎麼辦? Apr 02, 2025 pm 05:09 PM

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中哪些庫是由大公司開發或知名的開源項目提供的? Go語言中哪些庫是由大公司開發或知名的開源項目提供的? Apr 02, 2025 pm 04:12 PM

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

使用 sql.Open 時,DSN 傳空為什麼不報錯? 使用 sql.Open 時,DSN 傳空為什麼不報錯? Apr 02, 2025 pm 12:54 PM

使用sql.Open時,DSN傳空為什麼不報錯?在Go語言中,sql.Open...

See all articles