面試問答
大部分是OS或是C++問題
OS / 記憶體管理...
從自我介紹切入專案細節,隨即進入長達一小時以上的白板題。面試官針對專案中提到的 POSIX thread 進行深度追問,
要求現場畫出底層記憶體配置並解釋運作機制。整體節奏非常緊湊,面試官會不斷 challenge 邏輯,但在卡關時會給予適度引導。全部結束後會出一題 LeetCode Medium實作
題外話這家是真的會看你的Github repo, 是我面到現在覺得最有高手樣子的一家
面試結束之後收到next step邀請, 下一面是線上面試大主管, 主要針對我過去的經驗做問答, 有一些system design的成分在,因為會一直問過去的專案為什麼這樣設計之類的問題,但這邊我就答的不是很好
面試問答
大部分是OS或是C++問題
OS / 記憶體管理:
問題: Thread 的記憶體共享區段有哪些?畫出記憶體配置圖(Text/Data/BSS/Stack/Heap)。
回答: 解釋 Stack/PC 為 thread 獨立,其餘共享。具體說明 Race condition 發生時的底層記憶體交錯操作。
問題: Mutex 與 Atomic 的差異與 Overhead?
回答: Mutex 鎖整個 Critical Section 適合複雜操作;Atomic 僅保證單一變數原子性,開銷較小。
C++ 物件導向與特性:
問題: 虛擬函式表(V-table)的實現機制與 Overhead?
回答: 一個 Class 一張表,開銷來自 V-ptr 空間與 Runtime 的 Dynamic binding 查表效能耗損。
問題: Static/Global 變數存在哪?與 Extern 的關係?
回答: 存於 Data 區(已初始化)或 BSS。現場推導函數內 Static 變數的生命週期。
問題: Auto 與 Template 的區別?
回答: 皆為 Compile-time 決定(強型別)。Template 可做 Meta-programming 提高效能。
面試建議
底層觀念要紮實: 不要只會寫 API,面試官會問的非常非常細,建議對 Stack/Heap還有記憶體位置配置有深刻理解。
白板溝通: 習慣邊寫 code 邊講解,抗壓性跟邏輯推導過程比最終答案更重要。
面試官會現場稽查 GitHub 的 Coding Style,並針對 Repo 裡的 Design Pattern進行討論,這部分是加分關鍵。