# 2023 c++面試紀錄 依面試順序排序 ## Bytedance - SG 職位: Time Series Data Warehouse 主要職責是實作內部會自己使用的資料庫 ### 一面 - 問要做效能優化時大概需要看什麼 - 答: 看perf, flame chart - 如果flame chart沒有特別突出的地方那還有哪些地方可以檢查? - 答: IO或網路 - 問hash collision有什麼解決方法? - 用seperate chain實作一個hash table? - 延伸: 再加上load factor, double hashing跟resize ### 結果 拒絕 ## QauntMatter - SG 職位: Software Engineer ### OA 兩題 一題限時20分鐘 一題stack,一題string,都Easy難度 ### 作業 實作一個API可以發送兩筆buy order到幣安的future contract ### 結果 無回應 ## AlphaLab - SG 職位: Software Engineer ### OA 2題設計與實作題 限時4小時 需要手刻IO跟設計 很難 題意大概是: - 設計一個股票搓合系統,有買單或賣單,限價單或市價單,價格與數量,輸出每筆的交易量與最後還在留在搓合系統中的單 - 延續上題,定義maker score和taker score(代表下單者提供或取走了流動性),輸出每個下單者的score ### 結果 拒絕 ## Virtu Financial - SG 職位: Strategy Developer 主要職責也聽不太懂,要碰JAVA C++ Python甚至還有一些JS 工時偏長,7:30 - 18:00 ### OA 5題Easy ~ Medium 限時75分鐘 其中4題Leetcode原題,查Virtu標籤就有 ### HR - 自介,問得很詳細 - 為什麼想加入Virtu - behavior question: 最有成就感的事 - 問論文大概在做什麼 - 介紹面試流程 ### Phone - 自介 - 一樣有問為什麼想加入Virtu - TCP vs UDP - 延伸: 如果想用UDP設計一個低延遲的傳輸系統且必須保證client端收到的封包順序要怎麼做? - 其實他的問題有點奇怪,最後討論出來不是讓client或server去保證收到的順序,而是client端必須要按照順序處理封包,所以其實用個counter計算client端現在處理的封包index就可以,如果一收到亂序封包直接暫停並要求server端重傳 - [33. Search in Rotated Sorted Array ](https://leetcode.com/problems/search-in-rotated-sorted-array/) - [81. Search in Rotated Sorted Array II](https://leetcode.com/problems/search-in-rotated-sorted-array-ii/) ### 結果 拒絕 ## Barclays - HK 職位: Quantitative Prime Service (QPS) Software Engineer 負責低延遲交易系統開發 這家面試的設備超鳥,用聲音超不穩的Teams就算了 連個Hackerrank之類的東西都沒有,還要面試者分享自己的螢幕來寫code... ### 一面 只問c++問題,基本到深入都有 列出幾個比較需要準備的: - 解釋`std::atomic`中的memory order - 在low latency環境下需要考慮什麼 - 在low latency環境下要怎麼做error handling - 為什麼需要virtual destructor - 解釋`std::forward` ### 二面 - 問怎麼實作`std::find` (可不用考慮template) - [128. Longest Consecutive Sequence](https://leetcode.com/problems/longest-consecutive-sequence/) - 什麼是`std::atomic`? 什麼是false sharing? ### 結果 ?? ## Squarepoint Capital - SG 職位: Trading Service Software Engineer 負責開發內部會用到的infra framework 這間去年有面過但是被拒絕,HR說這次只需要兩輪tech面試(去年面了四輪) ### 一面 - 自介,針對履歷問問題 - 一題leetcode medium,在2D array中找最短路徑的題目,array中有不同數字代表不同的種類,0代表空格可以經過,1代表障礙物不能經過,2代表起點(只會有一個),3代表終點(可能會有多個)。 - 這題的演算法非常簡單,稍微有刷過題的人應該看標題就知道要用BFS,所以這關的重點其實是放在把程式寫得很好維護,過程中面試官會不斷給你建議看哪邊可以改得更好,主要有討論到的包含以下幾點: - 對用到的資料結構用`using`重新命名,例如`using Grid = vector<vector<int>>;` - 把function獨立拆出來,例如檢查是否在邊界內拆成: `bool is_inbound(const Grid& grid, const Position& pos);` - 一些基本c++技巧,例如: range base for loop,operator overloading等等 - 自覺表現沒有很好但學到不少 ### 二面 什麼都沒問,整場聊天 ### 結果 offered
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up