2019江行智能 後端開發工程師Go 面試題

深圳面試,來了之後給了一張試卷,時間半小時。包括一道算法題及擴展以及一頁基礎題。看題型,應該是多種崗位共享的試題,適合後臺開發、驅動開發等崗位,Linux知識居多,也包括一些操作系統,計算機網絡和編程語言相關的知識。難度因人而異,有些僅僅知道,有些知識瞭解背後原理、實現。

題型如下,不分先後:

算法題,要求給出最優解,計算時間複雜度和空間複雜度:

1.   3個有序數組排列

2.   K個有序數組排列,(此題解法是堆排序)

基礎題:

1. 操作系統上電啓動到運行init進程執行前做了什麼?

   (1)開機BIOS自檢,加載硬盤。
   (2)讀取MBR,進行MBR引導。
   (3)grub引導菜單(Boot Loader)。
   (4)加載內核kernel。
     (5)啓動init進程,依據inittab文件設定運行級別)

 

2. 系統中斷機制以及運用

這個簡單說下軟中斷、硬中斷、寄存器保存、替換等等。例子包括常見的系統調用socket、read。

 

3. 進程、線程、協程區別以及常見進程IPC方式及其實現原理

進程:操作系統分配資源的基本單位。

線程:操作系統調度的基本單位。

協程:有應用層自己負責調度器實現。優點:調度開銷小。

常見IPC:共享內存、套接字、信號量、管道、消息隊列。

 

4. c++ 11智能指針內存管理方式和Golang的GC

這個說了引用計數,然後聊到內存分配的兩級配置器。GC不瞭解。

 

5. c++11 智能指針的循環引用怎麼解決。

兩種方式。1,調用reset主動釋放。2. 使用弱引用weak_ptr

 

6. docker和虛擬機區別?

輕量級。docker提供虛擬容器,虛擬機提供整個操作系統。

 

7. TCP的可靠機制?

停止等待、滑動窗口、擁塞控制。接着談談擁塞控制四個算法。

 

8. 網頁上訪問HTTP發生了什麼?

DNS、創建網絡連接、ARP、三次握手;HTTP協議封裝等等順着順序說就行了。

 

9. 描述競態以及死鎖並舉例

指多個任務單元同時訪問同一個資源,就會出現併發,競態的現象。

 

10. c/c++ 未定義行爲是什麼樣子?舉例

此題沒搞懂,未定義的行爲怎麼去定義,不應該是隨機的嗎?

 

11. 講講bootloader和image

知道不多,沒有說。

 

12. 講講Linux分區和掛載

崗位不同,沒說。

 

13. 談談Linux文件系統

知道不多,沒說。

 

14. 翻譯一段英文文章,看了下,內容涉及多線程這一塊。

pass。

15. 動態規劃的三個必要條件。

  • 最優子結構性質。如果問題的最優解所包含的子問題的解也是最優的,我們就稱該問題具有最優子結構性質(即滿足最優化原理)。最優子結構性質爲動態規劃算法解決問題提供了重要線索。
  • 無後效性。即子問題的解一旦確定,就不再改變,不受在這之後、包含它的更大的問題的求解決策影響。
  • 子問題重疊性質。子問題重疊性質是指在用遞歸算法自頂向下對問題進行求解時,每次產生的子問題並不總是新問題,有些子問題會被重複計算多次。動態規劃算法正是利用了這種子問題的重疊性質,對每一個子問題只計算一次,然後將其計算結果保存在一個表格中,當再次需要計算已經計算過的子問題時,只是在表格中簡單地查看一下結果,從而獲得較高的效率。

 

整體上偏向底層技術,難度中等,有深度,不要求全會,但是會的部分能夠搞懂原理最好。

算法題給了個雙指針算法,擴展題沒想到堆排序。

基礎題回答了大部分,涉及驅動部分知識沒有講,也不會。之前準備的redis、mongodb、kafka倒是一點沒問,整個面試給人感覺良好,有所得,沒有浪費時間。


=============================================================================================

Linux應用程序、內核、驅動、後臺開發交流討論羣(745510310),感興趣的同學可以加羣討論、交流、資料查找等,前進的道路上,你不是一個人奧^_^。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章