## 前言 - 背景 - 台大文組學、電資碩,沒有實習經驗 - 農曆新年後開始投履歷,投了近百封履歷,面試了 22 家公司,職缺皆為 Firmware or Software Engineer,有幸拿到 8 個 offer - 在準備的過程中受惠於網路良多,不管是 Dcard or ptt,或是 blog,因此整理了相關資源,希望這篇文章對正在看這篇文章的你有所幫助 ## 面試前的準備與相關資源整理 - 刷題 - 策略 - leetcode 用 C & C++ 總共刷了 600 題,medium x 370、hard x 100,每題 2 ~ 3 遍,有用類似 Anki 的工具(Space Repetition)來定期複習之前做過的題目。 - weekly contest 通常都只解出三題,第四題 Hard 要看運氣 - 前 300 題左右都是不會直接看解答,然後把解答背起來以建立各個主題的常見 pattern,以及熟悉 C++ STL、Container 的使用,後 300 題則會自己想出解答(除了 Hard)。 - useful resources - [neetcode roadmap](https://neetcode.io/roadmap) - [Grind 169](https://www.techinterviewhandbook.org/grind75?weeks=28&hours=6) - [lee215 - good medium problems for interview and for practice](https://leetcode.com/discuss/feedback/4518909/(Replied)-Happy-New-Year-2024/) - [Tech Interview Handbook's algorithm study cheatsheets.](https://www.techinterviewhandbook.org/algorithms/study-cheatsheet/) - [wisdom peak](https://www.youtube.com/user/wisdompeak) - [Solved all dynamic programming (dp) problems in 7 months](https://leetcode.com/discuss/general-discussion/1000929/solved-all-dynamic-programming-dp-problems-in-7-months) - [Powerful Ultimate Binary Search Template. Solved many problems](https://leetcode.com/discuss/general-discussion/786126/Python-Powerful-Ultimate-Binary-Search-Template.-Solved-many-problems) - [Binary Search 101](https://leetcode.com/problems/binary-search/solutions/423162/Binary-Search-101-The-Ultimate-Binary-Search-Handbook/) - [Graph algorithms + problems to practice](https://leetcode.com/discuss/study-guide/1326900/graph-algorithms-problems-to-practice) - [A summary about how to solve Linked List problem, C++](https://leetcode.com/problems/add-two-numbers/solutions/1340/a-summary-about-how-to-solve-linked-list-problem-c/?orderBy=most_votes) - [POWER UP C++ WITH THE STANDARD TEMPLATE LIBRARY PART ONE](https://www.topcoder.com/thrive/articles/Power%20up%20C++%20with%20the%20Standard%20Template%20Library%20Part%20One) - [awesome-competitive-programming](https://github.com/lnishan/awesome-competitive-programming) - [演算法筆記](https://web.ntnu.edu.tw/~algo/) - [Algorithms for Competitive Programming](https://github.com/cp-algorithms/cp-algorithms) - Codeforces - leetcode 刷到後期發現 leetcode hard 還是常常解不出來,所以開始刷 Codeforces,可惜到面試前 hard 還是常常解不出來,看來是刷的還不夠多 - 照著 difficulty 刷,只要當前難度可以秒解後就提升 100,面試之前只刷到 1800 - Codeforces 除了提升解題能力之外,還會訓練到自己處理 input output 的能力(leetcode 只需要寫演算法相關的 code) - C - 策略 - Jserv 教的東西念好念滿 - useful resources - [「你所不知道的 C 語言」系列講座](https://hackmd.io/@sysprog/c-programming) - [Linux 核心設計/實作 (Linux Kernel Internals)](https://wiki.csie.ncku.edu.tw/linux/schedule) - [The Linux Kernel Module Programming Guide](https://sysprog21.github.io/lkmpg/) - [Linux Kernel Teaching](https://linux-kernel-labs.github.io/refs/heads/master/) - [「Linux 核心設計」系列講座](https://hackmd.io/@sysprog/linux-kernel-internal) - 準備面試的過程中自行整理的:[C 語言考古題](https://hackmd.io/@JJJJJJ/Sk4s24gIT) - C++ - 策略 - 先看完 C++ Primer,把 C++ 基本功打好,再利用 CppCon (尤其是 back to Basics 系列) 系列去熟悉 Modern C++ (C++11 以後)的相關知識 - useful resources - C++ Primer Plus, 6/e - [CppCon: Back to Basics](https://www.youtube.com/watch?v=Bt3zcJZIalk&list=PLHTh1InhhwT4TJaHBVWzvBOYhp27UO7mI&pp=iAQB) - [C++ Weekly With Jason Turner](https://www.youtube.com/@cppweekly) - Python - [The Python Tutorial](https://docs.python.org/3/tutorial/index.html) - Miscellaneous - [Pro Git](https://git-scm.com/book/zh-tw/v2) - [鳥哥](https://linux.vbird.org/) - [GNU Make](https://www.gnu.org/software/make/manual/make.html) - 程序員的自我修養:鏈接、裝載與庫 - Linux System Programming, 2nd Edition - Behavior Questions - [常見 Behavior questions 問題蒐集 - 面試官想知道什麼和如何回答的提示](https://hackmd.io/@6PPVul2mS7OX2GuGXlUCDA/behavior_questions) - 薪水參考 - [台灣純軟薪資統計 ](https://docs.google.com/spreadsheets/d/1IpY5nyMxoHMvTtumy1f7LELxn-KGrk4b_0ApcUtuJUM/edit#gid=622908817) - [矽谷輕鬆談薪水資訊](https://docs.google.com/spreadsheets/d/1woaGveprl4eS-UNUvbt8JD8mSSgqad2tq3JzM9TU_cw/edit#gid=1373227723) - [純軟](https://docs.google.com/spreadsheets/d/1GMYKVBxRlMv6oNVNzpXYoLUSyT8ZnLEjGcRbn0b4KsA/edit#gid=788239997) - [系統廠](https://docs.google.com/spreadsheets/d/1nTXqW-PyFl6AZUYbDDQwru_iAYVnpDWd_02WkRqigCg/edit#gid=1092767069) - [Design House](https://docs.google.com/spreadsheets/d/1nacH5Sq9_1MhPxJUxOjE-VqPJwxdGyrqk4DVhULuXmg/edit#gid=56632926) - [科技業 剛畢業新鮮人起薪 分享](https://tech-fresh-salary.netlify.app/) - [畢業薪資分享](https://docs.google.com/spreadsheets/d/1hjvg6Rcy2aI90jT11yuI3MYD6DVow0CuJLuqtz4-IeU/edit#gid=1044743989) - 談薪水 - [Ten Rules for Negotiating a Job Offer](https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/) - [求職如何跟公司討價還價](https://www.1point3acres.com/bbs/thread-286214-1-1.html) - [其他 疫情期間只有一個offer的畢業生如何討論談判工資](https://www.1point3acres.com/bbs/thread-681938-1-1.html) - [offer negotiation:求職如何跟公司討價還價](https://blog.1point3acres.com/how-to-negotiate-salary) ## 面試 - 職缺 - Product Developer - 狀態 - Offer Get - 一面(視訊) - 第一關 - 自我介紹 - 問 OS 相關的問題 - leetcode easy x 1 - 面試官介紹部門的工作內容 - 第二關 - 自我介紹 - 問 OS 相關的問題 - Modern C++ - leetcode medium x 1 - 面試官介紹部門的工作內容 - 二面(現場) - 第三關 - 自我介紹 - 問 OS 相關的問題 - Modern C++ - System Design x 1,會不斷地加上各種 constraint 作為 follow-up - 面試官介紹部門的工作內容 - 第四關 - 自我介紹 - HR 專業問題,常見 BQ - 第五關 - 自我介紹 - 問碩論細節 - 介紹部門工作內容 - 大主管當場發口頭 offer,然後閒聊 system design - 心得 - 在與每個面試官對談的過程中,感受到他們每個人實力都很強,也都很親切,會和面試者積極溝通,一起討論出問題的解方,而不是上對下的在考試。不愧是號稱亞東谷歌、資工系聖杯的公司。 - 在聽到大主管的口頭 offer 的當下,我腦中只有一個畫面(大主管就像是教父): - <iframe src="https://giphy.com/embed/l0Iy5Wa8fkAewhfW0" width="480" height="267" frameBorder="0" class="giphy-embed" allowFullScreen></iframe><p><a href="https://giphy.com/gifs/movie-the-godfather-francis-ford-coppola-l0Iy5Wa8fkAewhfW0">via GIPHY</a></p> ## 心得與總結 - Jserv 教的東西唸得滾瓜爛熟,作業好好寫準沒錯,不管面試官問你什麼 OS 相關的問題,Linux Kernel 裡一定都有對應的解答 - 以戰養戰,面試經驗(被拒絕的經驗)多了就不會緊張了 - 放在履歷上的東西很大機率就是會被面試官問的東西,所以要慎選 - 拿到 offer 努力和運氣缺一不可 - 要感謝的人太多了,就謝天吧