80萬+次曝光

面試心得文分享(Amazon/Microsoft/Google/Dell/Canonical)

去年年底開始找工作 有一些問題我已經忘記了 盡量回想起來被問了什麼 希望可以回饋給科技板的板友們 Background: 清大 IE 碩士 , 大學頭上這間 工作經驗: 10年 support engineer Amazon AWS Solution Architect 問題: 如果做Disaster Recovery (DR)時, On-Prem機房被燒毀的時候, 假設DR到AWS上 (比方說 VMware Cloud on AWS) 整個流程是什麼? 假設封包是從Office route到On-Prem, 發現不通, 改Route到AWS上, failover機制是怎麼運作的? [這個主要在考BGP Router的機制, 但我這邊沒回答好] Layer2 / Layer3 VPN的優缺點, 什麼時候要用哪個會比較好? [這題我也爆掉] SQL 跟 No-SQL的差異,trade-off是什麼? 聊一聊資料庫選型 [我覺得這邊我講得太精簡了, 應該要多聊一些OLAP/OLTP] 結果: (下午面試完,當天晚上6點準時感謝函) Google Technical Solution Consultant 第一關 - 系統設計 問題: 如果客戶要把地端Java monolith 遷移到雲端, 使用k8s是好的做法嗎? [我好像回答了k8s需要客戶有k8s團隊技術 才能夠降低TCO之類的, 然後因為涉及refactor, 會比較難, 因為k8s維運其實是需要技術的, 如果客戶團隊的工程師沒有那樣的技術, 就會不適合] 反正類似的答案, 面試官聽起來很滿意 一個high concurrency的情境, 如何實現decouple? [這邊應該是要講出來Google Pub/Sub, Apigee Gateway之類的] 地端資料庫如何遷移到雲端,才能minimize downtime? [至少要講出CDC] (因為該講的我都有講出來, 就進二面了) 第二關 - Coding & Conecpt 問題: PaaS/FaaS/CaaS 各自的使用情境, 優缺點, trade-off [我明明已經講很多了 但一直被面試官要求講更多, 最後講到講不出來了, 轉下一題] K8S上如何實現security [要講到rbac之類的, 但我覺得回答得太精簡] Code Review 給你一段code, 問你這段程式碼有沒有錯, 要怎麼優化 for (const auto& log : logData) { if (log.find("ERROR") != std::string::npos) { errorCount++; errorLogs.push_back(log); } } 這個迴圈應該是有可以優化的空間 但我當下想不到, npos突然忘記意思 結果: 感謝函 Microsoft - Azure Technical Support Technical Round 如果今天有一個Pod有Connection issue, 你會如何在AKS上debug? 什麼是Memory Leak? C++如果使用智慧指標, 管理記憶體的底層邏輯是什麼? [應該要講得出來RAII(Resource Acquisition Is Initialization,資源獲取得即初始化), 但我當下沒講出來] HTTP Method Post和Put差別是什麼? [要講出idempotency] 在瀏覽器輸入比方說www.google.com的時候, 從輸入網址按下enter到返回數據, 中間會發生什麼是? [我認為這邊至少要回答出來 URL的DNS Resolution + TCP handshake + TLS security handshake + 瀏覽器產生一個HTTP Request + Server端 HTTP Response + browser rendering + 解析 HTML 構建 DOM 樹] Storage Account是幹嘛的? 請介紹一下 有根據我的背景, 問了一下過去的IoT Edge to cloud 是怎麼實作的 有一個以前在公司其實有幫客戶做過的東西, 但是當下腦筋不清楚, 就說得很含糊 面試結束的時候 其中一個面試官直接說: xx不好意思, 這個職位我們要找學習能力和工作能力比較強的人 Behavior Round: How do you proiritize your task? Could you share an experience of conflict? How did you handle it? How do you troubleshooting on a vague issue? 基本上都是考一些常見的 但技術關面試完我就知道涼了, 直接被面試官這樣嗆 結果: 隔天早上9點準時感謝函 Dell - Senior Software Engineer 筆試輪直接掛掉 我記得筆試輪考 8題選擇 13題填空 4題coding 選擇好像有考HTTP Error Code, 然後HTTP Method哪個有idempotency? 其它都忘了 Coding題很多題都是LeetCode #3 的變體 對Longest substring和Longest subsequence 要有很高的掌握度 好像還有一題考HTTP Method GET如何在Python實作 我寫完以為我會進二輪 結果: 感謝函 Microsoft - Cloud Solution Architect - Azure Infra 問題: Zero Trust是什麼? 如何觀測K8S Cluster? [這邊至少要講出Prometheus + Grafana] 如果客戶出現網路延遲的情境,你會如何在Azure上診斷? [這邊要講出Azure Monitoring的一些操作] 用哪些指標來衡量Latency? 監控客戶系統? [如果可以講出3 Pillars + 4 Golden Sign, 應該就可以了] 結果: Offer Canonical - Software Support Engineer 這是我人生最瘋狂的一個面試體驗 總體流程大概長這樣 Initial application review Written interview Psychometric assessment Technical, management and Talent interviews Executive / Leadership interviews Written Interview就是書審資料, 應該類似以前高中考大學要繳交的備審資料 以下是題目 我總共寫了4300個字, 17頁 Context Outline your thoughts on the mission of Canonical. What is it about the company's purpose and goals which is most appealing to you? Are there any elements of the company goals that you are unsure about? Do you see any risks in Canonical's mission? Which other companies are building the sort of products you would like to work on? This role in the Sustaining Engineering Group is critical for resolving complex issues and bugs for our customers and the wider community. Please explain your interest in this position compared to a role in a product development or engineering team. Why do you most want to work for Canonical? Engineering Experience We are interested in complex technical challenges you have had to resolve. Walk us through your thought process on choosing the tooling, programming language or colleagues to solve those challenges. We are particularly interested in any challenges you had with OpenStack, Kubernetes, Linux kernel or Ceph. In absence of experience with any of these, pick some other technology you found most fascinating. Please make sure to call out experience with various programming languages (C, C++, Python, Golang, Rust...). What kinds of software projects have you worked on before? Which operating systems, development environments, languages, databases do you have the most experience in? Which project or piece of software are you most proud of, and why? Outline your thoughts on quality in software development. What practices are most effective to drive improvements in quality? Outline your thoughts on documentation in software projects. What practices should teams follow? What are great examples of open source docs? Career development In this section we’d like to hear more about your career aspirations and long term goals. We’d like to understand what are your passions at work, what inspires you to come back to your workstation every day. Tell us what is your preferred programming language and why? We are also interested to know how and why did you start using Linux professionally? In your most recent role, what did you enjoy most, and what did you achieve that you consider exceptional? And, in the end, walk us through some of the proudest moments in your career and some of the downfalls. Education We consider academic results in high school and university for all roles, regardless of seniority or department. To enjoy a long and varied career at Canonical, one would need to tackle problems that cannot be defined today! From engineering to marketing to operations and sales, we intensely value colleagues who are able to puzzle through difficult problems and find the optimal path forward.   How did you rank in your high school, in your final year in maths and hard sciences? Which was your strongest? How did you rank in your high school, in your final year in languages and the arts? Which was your strongest? Please state your high school graduation results or university entrance results, along with the system used, and how to understand those. For example, in the US, you might give your SAT or ACT scores. In Germany, you might give your scores 1-5. What sort of high school student were you? Outside of class, what were your interests and hobbies?  Which university and degree did you choose? What other universities did you consider, and why did you select that one? At university, did you do particularly well in any area of your degree? At high school or university, can you outline some of your achievements which were considered exceptional by your peers and staff members? Overall, what was your degree result and how did that reflect on your ability? In high school and university, what did you achieve that you think was exceptional? What leadership roles did you take on during your education? 因為我對Ubuntu印象很好, 所以還是硬著頭皮寫完了, 原本其實還在猶豫要不要寫, 但是因為我考高中 & 考大學都失常, 我覺得他問高中大學成績, 反而對我是好事 (國中模擬考PR98, 最後基測94, 考大學北模最後PR98, 學測PR93) 尤其是我高中因為基測失常, 當時在班上反而常常考第一名 [但題外話, 我覺得這種問題對台灣很多第一志願的人來申請反而不利, 因為如果能夠擠進比方說建中/ 北一女, 還要考全班前幾%是很困難的] 書審資料通過以後, 再來要做智力測驗, 就是Thomas GIA, 稍微練個幾天就上了 然後過了之後再來就進Early Stage
megapx
一面: Programming Skills 考Python method overloading virtual memory /paging / vm和container的 trade-off 問vm和container哪一個隔離性比較強 二面: Linux OS Skills 考假設有一個環境壞掉, HTTP GET Server GET不到, 你會如何排查 主要是考Troubleshooting的心智模型 其他幾乎面試官都在抓著我的履歷問我過去做什麼 問你有沒有Open Source開發經驗等等 [我就很誠實地說我沒有] 三面: Production Engineering 考假設你要設計一個software, 如何讓這個software或系統很好debug? [這個主要是在考Observability, 我認為pure software會很難答好, 要當過support才會知道哪些software很難debug, 痛點在哪裡] LXC / LXD 差別? Container / VM 差異? (這個第一關考過, 但這個面試官又再考了一遍) 四面: Behavior Round 你的主管會怎麼評論你的優點/缺點? Difficult Co-worker的處理經驗 Conflict Handle經驗 四面結束以後被要求做一個性向測驗
megapx
五面 Sustianing Engineering Leadership: 考kernel debugging, filesystem repair, problem solving approach 也會抓著你written interview寫不好的地方來問 比方說我裡面有寫到 "Ubuntu is the best Linux" 然後就被抓著問說 "為什麼你說是best" 行為題問你如何mentor junior engineer [這邊要好好回答 展現leadership] 六面 Hiring manager interview (Sustaining Team) 問你過去在幹嘛? 你為什麼喜歡software support engineer? 過去develop過哪些project 印象中這一關都是聊天 沒考什麼技術 七面: 大主管 被通知認為我不適合這個team, 問我要不要到別的team去team match 我說OK 八面: Support Team Manager (Team match) 考Linux開機流程 考ssh -vvv, Linux開機流程, i-node相關問題, container和vm的trade-off K8S如何實現隔離的 [至少要能講出cgroup跟namespace] 九面: SRE Team Manager (Team match) 請簡單介紹一下CI/CD是什麼? 什麼是Linting? [這邊爆了, 這個東西我是真的沒聽過, 我就誠實說我不會, 因為我過去沒有參與太多CI/CD的開發流程] 你有多熟Ubuntu? CVE Handling, sudo tee如何用, shared & static library, unit file裡面是什麼樣子 > 和 >> 的差別 ?  2>&1的用途? Python和C++哪個跑得比較快, 為什麼? 十面: Executive Interview: 最後的大主管 主要問說為什麼你想來Canonical, 誰帶你來這裡的? [要準備對這間公司和對這個職務的動機] 在想要換工作, 準備面試的時候, 你都做了一些什麼? [我就說自己刷100+ LeetCode, Hands-on k8s, 考k8s CKA證照, Hands-on AWS/Azure, 考AWS/Azure證照等等] 你有多熟Linux? [這題我也不知道要怎麼回答, 我就只說, 我有Linux 10年的操作經驗, 不敢說自己是專家, 但基本的指令都會] Linux開機流程? [八面問過, 十面又問一次, 看來代表這題真的很重要, 要好好準備] 問一下你最想要進哪個Team? 職涯規劃? 你最想要加入Canonical做什麼? 對自己職涯的終點及願景等等 結果: SRE team offer Canonical 真的是非常精實的一段面試, 但最後我也拿到了符合個人期望的package 最後祝科技板所有想換工作/找新工作的板友們都能夠順利早日上岸! -- 補充一下學習資源 練面試的平台 (一年3000多, 花下去就對了, 這個平台可以每天讓你找不同的人配對來練習英文口說/聽力/BQ)
Linux免費學習資源 (SWE可能不適合, 但TSE/SRE/DevOps類的職務, 應該看了會有更扎實的基礎)
k8s中文課程
愛心
跪
驚訝
890
97
全部留言