[{"content":"最近有點時間來研究 AI agent，而且這些工具差不多進步到可以用在工作上了，來持續更新一下資源和筆記。\n【Vibe Coding 學習地圖】用實戰帶你搞懂 Gemini、Google AI Studio、Antigravity 的使用情境\n在 Threads 上看到有人推薦這部影片。\n如果要快速驗證某個商業邏輯的話， Google AI Studio + Antigravity 似乎是不錯的選擇。\n開 2.5 倍速差不多。\n上面頻道的其他影片也不錯。\n解剖小龍蝦 — 以 OpenClaw 為例介紹 AI Agent 的運作原理\n李宏毅級棒。\nClaude Code 從 0 到 1 全攻略 —— MCP / SubAgent / Agent Skill / Hook / 圖片 / 上下文處理/ 後台任務 / 權限\n","permalink":"https://bearomorphism.pages.dev/posts/blog/ai-agents-materials/","summary":"\u003cp\u003e最近有點時間來研究 AI agent，而且這些工具差不多進步到可以用在工作上了，來持續更新一下資源和筆記。\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/watch?v=2hbYCe_E5aU\"\u003e【Vibe Coding 學習地圖】用實戰帶你搞懂 Gemini、Google AI Studio、Antigravity 的使用情境\u003c/a\u003e\u003c/p\u003e","title":"AI Agents Materials (持續更新)"},{"content":"都是我看過的（但可能沒有看完）。\n生活 原子習慣 搞定 技術類 目录 – 设计数据密集型应用（第二版） System design interview by Alex Xu donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. Clean code 數學 An Infinitely Large Napkin 3blue1brown 黑筆紅筆 Dummit \u0026amp; Foote The Rising Sea Reverse mathematics proofs from the inside out Serge Lang Podcast Crucible moments 博音 股癌 劉軒 大人學 ","permalink":"https://bearomorphism.pages.dev/posts/blog/readings/","summary":"\u003cp\u003e都是我看過的（但可能沒有看完）。\u003c/p\u003e\n\u003ch2 id=\"生活\"\u003e生活\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e原子習慣\u003c/li\u003e\n\u003cli\u003e搞定\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"技術類\"\u003e技術類\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://ddia.vonng.com/toc/\"\u003e目录 – 设计数据密集型应用（第二版）\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSystem design interview by Alex Xu\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/donnemartin/system-design-primer\"\u003edonnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean code\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"數學\"\u003e數學\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://venhance.github.io/napkin/Napkin.pdf\"\u003eAn Infinitely Large Napkin\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e3blue1brown\u003c/li\u003e\n\u003cli\u003e黑筆紅筆\u003c/li\u003e\n\u003cli\u003eDummit \u0026amp; Foote\u003c/li\u003e\n\u003cli\u003eThe Rising Sea\u003c/li\u003e\n\u003cli\u003eReverse mathematics proofs from the inside out\u003c/li\u003e\n\u003cli\u003eSerge Lang\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"podcast\"\u003ePodcast\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCrucible moments\u003c/li\u003e\n\u003cli\u003e博音\u003c/li\u003e\n\u003cli\u003e股癌\u003c/li\u003e\n\u003cli\u003e劉軒\u003c/li\u003e\n\u003cli\u003e大人學\u003c/li\u003e\n\u003c/ul\u003e","title":"收集的學習資源列表（會持續更新）"},{"content":"前陣子在臉書討論區看到 Kuanling Huang 大大寫了一篇文章在講 \u0026ldquo;function order\u0026rdquo;。\n我一開始懷疑這位大大在亂寫（結論是這位大大沒寫錯），於是就稍微查了一些資料研究了一下所謂 function order 到底是什麼。\n相關的臉書討論區討論串在這裡。\n後來資料找一找就找到 Type Theory 去了。\n我除了讀書會時聽過同事講過幾次 lambda calculus 以外完全沒有碰過 Type Theory 相關的東西，我也不是專家，只是大學時多拿了一個數學學位而已。\n如果下面有講錯歡迎留言指正，請各位多加包涵。\n為了保持我這篇文章的完整性，我把 function order 的定義寫在這裡：\nWe denote \u0026ldquo;the order of a type $T$\u0026rdquo; as $ord(T)$.\nFor any primitive type $R$, $ord(R) := 0$. For any product type $(A_1, \u0026hellip;, A_n)$, $ord((A_1, \u0026hellip;, A_n)) := \\max(ord(A_1), \u0026hellip;, ord(A_n))$. For any types $A$, $B$, $ord(A \\to B) := \\max(ord(A) + 1, ord(B))$. 我其實不是很確定有沒有更通用的用語，每篇文獻或課本會用不太一樣的詞，總之名詞定義大家先看得懂就好。\n什麼是 primitive type 呢？例如 int, boolean, char 這些簡單的東西，都可以算是 primitive type。我其實不是很確定 void 或 NoneType 這種 initial and terminal objects 到底算不算 primitive type，感覺如果算進 primitive type 的話，上面的 function order 定義會有一些問題。另外維基百科也有 primitive type，一併附在這邊給大家參考。\n什麼是 product type 呢？很不精確地說，可以把 product type 想成 tuple\n比較熟 C++ 的人可以想想 std::tuple\u0026lt;int, bool, char\u0026gt; 之類的型別 比較熟 Python 的朋友們可以想想 Tuple[int, bool, str] 比較熟 TypeScript 就想想 [int, bool, string] 接著來講講同構，很不精確的來說，長得差不多一樣、可以互相換來換去的型別就是同構的\nstd::pair\u0026lt;int, char\u0026gt; 跟 std::pair\u0026lt;char, int\u0026gt; 同構 std::pair\u0026lt;int, pair\u0026lt;int, int\u0026gt;\u0026gt; 跟 std::pair\u0026lt;std::pair\u0026lt;int, int\u0026gt;, int\u0026gt; 跟 std::tuple\u0026lt;int, int, int\u0026gt; 同構 $(A, B) \\to C$ 跟 $A \\to (B \\to C)$ 同構 (currying) 而同構的 type 的 order 理想上要一樣，我們可以簡單檢查上面 function order 在同構的型別上算出來是一樣的。\n如果讀到這邊還是不懂 product 或同構定義也沒差，請容我草草帶過，細講大概會扯到抽象代數或範疇論。\n這邊的 takeaway 就是\n最簡單的那些 type 的 order 是 0 每多抽象一層（這個 type 作為某個 function 的參數型別）的話，order 就會加一。 Quiz\nWhat is ord(int)? What is ord(int -\u0026gt; int)? What is ord(type(array.map)), where array.map is the javascript function? What is ord(type(filter)) = ord((Any -\u0026gt; boolean) -\u0026gt; List), where filter is the built-in python function? 讀到這邊，你會算 function order 了嗎？\n其實我覺得不會算也沒差啦，只是一開始提到的文章內文給人一種「身為一個工程師卻不會算 function order 很糟糕」的感覺。\n比起會不會算 function order，我認為能了解每個變數或每個參數的型別以及其背後的意義是比較重要的。\n尤其是在了解一些 functional programming pattern 時，會看到諸如 (T, T) -\u0026gt; T 或 T -\u0026gt; boolean 等等型別，「不要被這些型別嚇得半死」我覺得就已經很好了。\n當然，當我們拿到一個 type 後，我們可以去算這個 type 的 order，但當我們只看 order 時就會失去太多原本的資訊，所以我覺得去算 order 其實沒什麼必要。\n各位工程師應該都有寫過或聽過 std::sort, array.map, array.reduce 或 filter 等等 function。\n你們在使用這些 function 前會去算他們的 order 嗎？不會吧？\n也難怪網路上很難直接查到 type order 的資料，實務上就很少會用到，甚至 type theory 相關的文獻也不會在 type order 上著墨太多。\n其實找資料花了我一段時間，因為直接查 function order 並不會查到上面的定義。如果大家直接查 function order 或 order of a function 的話，可能會查到\nComplexity theory 例如一個 function $f(n) = n(n + 1) / 2 = O(n^2)$，我們在這個上下文會說 $f$ 的 order 是 2 Group theory 意義下的 order，也就是一個 element 自乘幾次會變成 1 例如定義 $f(z) = iz$，因為 $f^4(z) = f(f(f(f(z)))) = i^4 z = z$ 且 4 是最小的正整數 $n$ 使得 $f^n(z) = z$，我們在 group theory 的上下文會說 $f$ 的 order 是 4 最後查一查就查到 type theory 了，裡面才有最接近一開始提到的文章講的 type order 的定義。\n","permalink":"https://bearomorphism.pages.dev/posts/function-order/","summary":"\u003cp\u003e前陣子在臉書討論區看到 Kuanling Huang 大大寫了\u003ca href=\"https://hackmd.io/@caasih/function-order\"\u003e一篇文章\u003c/a\u003e在講 \u0026ldquo;function order\u0026rdquo;。\u003c/p\u003e\n\u003cp\u003e我一開始懷疑這位大大在亂寫（結論是這位大大沒寫錯），於是就稍微查了一些資料研究了一下所謂 function order 到底是什麼。\u003c/p\u003e","title":"Function Order 是什麼？可以吃嗎？"},{"content":"最近想要做但一直沒時間做的事情：\n寫一篇文章分享從2022年到2024年準備面試的個人經驗 寫一篇文章去吐槽一篇文章把計算 order of a function 講得好像不會這件事情很糟糕一樣 寫一篇文章分享創業（失敗）的經驗以及我現在會怎麼做類似的事情避雷 玩完 Detroit: Become Human 玩完 GTA V 整理 blog 首頁 好容易把該做的事情忘記喔，有時甚至在記錄到 TODO List 以前就會忘記了。例如上面的列表寫一寫會忘記第三點原本要寫什麼。\n接下來一個禮拜基本上都放假，其中三天要去阿里山騎腳踏車，希望體力還夠\u0026hellip;\n尤其週二要搭最早一班的火車南下嘉義\n因為工作 Team 上開了一個新缺，幫忙看了蠻多履歷的，有點讓我想起三年前到處找職缺找人內推的日子。\n","permalink":"https://bearomorphism.pages.dev/posts/blog/report-20250622/","summary":"\u003cp\u003e最近想要做但一直沒時間做的事情：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e寫一篇文章分享從2022年到2024年準備面試的個人經驗\u003c/li\u003e\n\u003cli\u003e寫一篇文章去吐槽一篇文章把計算 order of a function 講得好像不會這件事情很糟糕一樣\u003c/li\u003e\n\u003cli\u003e寫一篇文章分享創業（失敗）的經驗以及我現在會怎麼做類似的事情避雷\u003c/li\u003e\n\u003cli\u003e玩完 Detroit: Become Human\u003c/li\u003e\n\u003cli\u003e玩完 GTA V\u003c/li\u003e\n\u003cli\u003e整理 blog 首頁\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e好容易把該做的事情忘記喔，有時甚至在記錄到 TODO List 以前就會忘記了。例如上面的列表寫一寫會忘記第三點原本要寫什麼。\u003c/p\u003e","title":"20250622 日報"},{"content":"日報想到啥就寫啥。\nGiscus 感覺可以取代 Disqus，聲稱無廣告，其實蠻容易設定的，到官網點點點然後複製一下 html 即可。\n以後要記得紀錄時間都花在哪裡，但我最近有時連花錢花在哪裡都會累積兩三天才記了 QQ\n看到了好書 為你自己學 Python，想要程式入門的朋友們適合參考，不過對於已經會寫 Python 的人來說也可以看一下有沒有什麼冷知識是自己漏掉不會的。\n另外最近有點想開個讀書會，但還不知道要開什麼主題或形式，主要是想回饋自己之所學給社會。因為前陣子聽朋友說他會免費教自己的文組學弟妹簡單的程式之類的，我也覺得這樣蠻酷的。如果要做的話，八成會採用線上會議雙向討論的形式。\n開源專案的狀況依然是想到什麼就推 PR，但最近 reviewers 都偏忙，目前卡了十幾支 PR。如果之後我權限高一點晉升 maintainer 就可以幫忙分擔 review 的工作了。\n工作方面： Windows 真的難用，但微軟工作還是用 Windows 比較方便，希望可以找到更好的工作流程。\n早睡早起依然失敗\n","permalink":"https://bearomorphism.pages.dev/posts/blog/report-20250602/","summary":"\u003cp\u003e日報想到啥就寫啥。\u003c/p\u003e\n\u003cp\u003eGiscus 感覺可以取代 Disqus，聲稱無廣告，其實蠻容易設定的，到官網點點點然後複製一下 html 即可。\u003c/p\u003e\n\u003cp\u003e以後要記得紀錄時間都花在哪裡，但我最近有時連花錢花在哪裡都會累積兩三天才記了 QQ\u003c/p\u003e","title":"20250602 日報"},{"content":"今年五月花了好多時間在弄一些跟工作無關的事情，然後從五月中開始不小心發了 50 多支 PR，然後還不小心晉升源來適你 Commitizen mentor，受寵若驚。\nCommitizen Tools documentation site\n比起改公司產品的 code，改 open source 還是比較好玩。\n另外我好久沒回來更新 blog 了，剛剛才發現留言插件的 Disqus 在評論區上下插了兩大片廣告，醜死，不知道是最近的更新造成的還是因為我現在沒裝 Ad block。如果各位大大有什麼推薦的留言區解方拜託告訴我。\nArc browser 好像要收了，最近是著改用 Zen 但是很多 Chrome extension 都不能用好痛苦，但最近一直踩到 Arc 的 bug 也好痛苦。\n另外最近發現如果有一些比較複雜的想法需要用白板畫來畫去卡片連來連去的話，還是 Heptabase 比較好用。\n訂了一年 cursor，真的好用，可惜不好用在公司 code base 開發，不然哪天我們的 code 被看光光也不知道。\n原本想說早睡的話可以早點起來去健身房，但是一直失敗，需繼續努力。\n最近的卡通只有看殺手與忍者。\nMerged PRs Mainly focus on commitizen. https://github.com/commitizen-tools/commitizen/pulls?q=is%3Aclosed+is%3Apr+author%3Abearomorphism+\ncommitizen#1403 commitizen#1404 commitizen#1407 commitizen#1408 commitizen#1412 commitizen#1416 commitizen#1417 commitizen#1421 commitizen#1422 commitizen#1423 commitizen#1426 commitizen#1427 commitizen#1428 commitizen#1429 commitizen#1430 commitizen#1436 commitizen#1437 commitizen#1438 commitizen#1442 commitizen#1443 commitizen#1444 commitizen#1447 commitizen#1448 commitizen#1449 commitizen#1450 commitizen#1451 commitizen#1452 commitizen#1453 commitizen#1461 commitizen#1462 commitizen#1463 commitizen#1464 commitizen#1465 commitizen#1486 commitizen#1487 decli#165 cz-github-jira-conventional#19 skeleton#3536 ","permalink":"https://bearomorphism.pages.dev/posts/blog/report-202505/","summary":"\u003cp\u003e今年五月花了好多時間在弄一些跟工作無關的事情，然後從五月中開始不小心發了 50 多支 PR，然後還不小心晉升源來適你 Commitizen mentor，受寵若驚。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://commitizen-tools.github.io/commitizen/\"\u003eCommitizen Tools documentation site\u003c/a\u003e\u003c/p\u003e","title":"202505 月報"},{"content":"自從開始工作以來，就有蠻多機會幫朋友或學弟妹看履歷，過程中就發現其實有蠻多人不知道一個正常的履歷應該要長什麼樣子，想說直接整理一篇。\nTL;DR 資源 影片：建議大家看完，我覺得小 Lin 講得蠻好的\n簡歷範本：MIT sample resumes 提供了在不同階段或不同職業的簡歷範本。\n以上內容也是當我看完某個人的履歷，覺得有不少進步空間時，會傳給對方的參考資料。\n簡單注意事項 申請工作用的簡歷以一頁為主，資歷真的很深的人可能才會到兩頁 每一份經驗的 bullet point 不要太多，可以挑三個最重要的 所謂「重要」是有 impact 或看起來很厲害的；不要只寫「做了什麼」，要寫「做了這件事情，帶來哪些 impact」 整齊排版 我不太會用 Word 排版所以大推 LaTeX，調行距等等的參數非常方便，比較不用擔心哪裡沒調整到的問題，懶一點的話跟朋友要簡歷 LaTeX 的 source code 就好 我使用的 resume LaTeX 模版 格式統一：例如 bullet points 最後統一有句號或統一不要有句號 日期月份格式： May 後面沒有點，是 May 不是 May. 履歷建議 大家可以想像一下，如果你今天是人資，每天要看上百份履歷，長什麼樣子的履歷會讓你覺得「挖這看起來好厲害可以抓來面一下」？\n我想至少要長得跟上面所提到的簡歷範本長得差不多吧？\n也可以反過來想想，長什麼樣子的履歷你連看都不會看就會丟進垃圾桶？\n照著這些思路想，通常履歷就不會長得太難看了。\n用英文寫 就算英文不好，現在用 AI 工具就可以把中文的內容順順翻成英文了，不會消耗太多額外的時間。而且通常條件比較好的公司都會要求英文履歷。\n只要求中文履歷的公司，我建議直接放棄，我實在沒辦法想像跟不懂英文的工程師共事的樣子\u0026hellip;\n使用 Summary (一兩句話介紹自己) 懶人包的概念。當然，如果能把自己寫得很厲害最好，比如說有哪些背景（做過哪些工作內容）、在 GitHub 上的專案拿了幾顆星星、有哪些頭銜如開源專案的 committer 等等。\n我自己是這樣寫：\nFull stack developer with a background in developing productivity tools at a startup. R\u0026amp;D engineer and quant at a crypto quantitative fund company.\n如果是開源專案的 committer 的話也許可以寫\n\u0026hellip; with 100+ stars. Committer of [some open source project]\u0026hellip;\n履歷 section 順序 比較重要的或看起來比較厲害的放在越上面。\n因此順序可能會是這樣\nHeader (姓名、聯絡資訊、有的沒的連結如 LinkedIn, GitHub) Summary 學歷 工作經驗 其他專案經驗 Skills (會哪些技術，這邊通常是給機器掃的) 但如果自認學歷沒那麼亮眼的話，可以把學歷往下放，順序就會變成\nHeader Summary 工作經驗 其他專案經驗 學歷 Skills 如果是還在學或剛畢業的話，可以再視情況加上 selected courses。\n把所有經歷列出來之後再精挑細選 把自己能想到的所有經歷列在 Word, Notion 或任何你習慣的筆記軟體上，再把重要的挑出來。這邊的經歷就如上面小 Lin 影片中講的，是廣義的經歷，例如\n工作經驗 專案經驗 學校社團經驗 學校助教經驗 社群經驗 把經歷列出來之後，再跟據申請的職缺需求，把相關的經歷挑出來即可。\n比如說，想要再強調 leadership 的話可以說在某某社團當過某某幹部、規劃了什麼。有些人會說不要寫學校社團，但我覺得不一定，要看情況。\nHighlight 重要的部分 把 bullet point 中重要的文字加粗，例如使用了哪些技術、增加多少效能、專案規模等等。不過也需要注意不要把太多文字加粗，不然看起來會很亂。\n使用 AI 工具精修 至少把 bullet points 丟進 ChatGPT 或 Gemini 等 AI 工具一次，列出來的點會有更多的動詞變化，也能順便把潛在的文法錯誤弄不見。\n我不知道還可以在履歷上寫什麼怎麼辦 多找朋友、同學或工作夥伴聊聊，也許你有什麼很厲害的事跡你自己忘記了，畢竟不是每個人都有紀錄生活的習慣。\n需要把 GPA 或排名寫上去嗎 如果那個數字厲害到你覺得會對你的經歷加分就寫上去，不會加分就不用寫。例如我的平均成績蠻爛的但我拿過一次書卷獎，我就寫我拿過一次書卷獎這樣。\nSide notes Résumé 是簡歷，通常一到兩頁。CV 是履歷，長的。但是在台灣大家通常會把履歷和簡歷兩詞混用。 有聽說過同事有收到履歷上面放 IG 的，這會被拿來當故事講（又不是要應徵模特或藝術工作者） 104 的履歷模版爛透了，不要用 = = 多找朋友幫忙做履歷健檢不虧，我的履歷最一開始也是爛爛的，請 Google 的朋友幫忙給建議，之後又給其他不同的朋友迭代了好幾次 ","permalink":"https://bearomorphism.pages.dev/posts/resume-tips/","summary":"\u003cp\u003e自從開始工作以來，就有蠻多機會幫朋友或學弟妹看履歷，過程中就發現其實有蠻多人不知道一個正常的履歷應該要長什麼樣子，想說直接整理一篇。\u003c/p\u003e\n\u003ch1 id=\"tldr\"\u003eTL;DR\u003c/h1\u003e\n\u003ch2 id=\"資源\"\u003e資源\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e影片\u003c/strong\u003e：建議大家看完，我覺得小 Lin 講得蠻好的\u003c/p\u003e","title":"2025 履歷簡歷撰寫技巧 常用資訊整理 乾貨"},{"content":"最一開始也是看到了有興趣的缺，然後請台灣微軟的朋友幫忙投內推。\n我從2024年一月到三月投了四個缺，因為那時我主要還是在等 Google 的機會，沒把注意力放在這裡。\n四月下旬有人來聯絡我了，不過寄信過來的不是人資，而是該部門的工程師直接寄信來跟我約面試時間，是蠻少見的情況。入職後跟同事（當時寄信來的工程師）聊到，才知道當時人資的人力不夠處理，慘\u0026hellip;\nTimeline 2024/04/26 收到面試邀請。我還是在週五的下班後跟當時同事吃壽司時回信的，笑死 2024/05/02 第一關面試 2024/05/17 跟人資通話，主要是跟確認我繼續面試的意願，以及講解接下來的面試流程 2024/05/27 第二關面試 2024/05/28 第三關面試 2024/06/01 第四關面試，這次因為是跟西雅圖的人面試，所以排到了星期六的早上七點（原本的時間好像我還是對方沒辦法，總之這個很怪的時間是我提議的） 2024/06/12 收到人資通知會安排 final interview 2024/06/19 Final interview，跟微軟台灣研發中心總經理 Michael Chang 聊天。人資在這次面試前的信中還提及 \u0026ldquo;No worries. He\u0026rsquo;s easy to talk to.\u0026rdquo; 2024/06/26 人資請我填一些有的沒的表格，包含基本資料、期望薪資，並提供薪資相關文件當作參考。後續通話中口頭接受 offer 2024/07/02 收到正式 offer 以及簽一些有的沒的文件 2024/07/03 填更多 background check 需要的有的沒的資料，聽人資說正常來說三週就可以結束了，但我有些資料填得不太好加上有些經歷可能比較難核實，所以拖到 8/5 才結束 2024/08/06 開始討論入職時間，2024/08/29 入職 大家在意的面試細節 前面四關的面試官都是 RD 或 Engineering Manager，每一關都是預計一個小時，包含 coding、問答和閒聊，但實際上每一關都跟面試官聊到有點超時。當然我們都有確認彼此超時沒關係才繼續聊，之前面試其他公司時有遇到已經明顯超過面試時間但面試官完全沒有要終止面試的意思，我也不好意思問面試是不是該結束了，結果搞得我要多請一個小時的事假，我覺得這樣就很不 ok。\n這四關 coding 的難度大約可以對應到 Leetcode Medium，不會太刁難人。使用 Microsoft Teams 和 Codility 平台進行面試。\n基本上，面試外商公司都可以先假設面試會是全英文進行，因為你不會知道面試官會不會講你的語言。我這次面試的狀況是，前三關在解題時是英文進行，後面的問答和閒聊就切換回中文了。第四關的面試官是在西雅圖的微軟總部的中國人 EM，我一開始有問面試官需不需要先用英文，但是對方表示我們用中文就行了，蠻妙的。\n第一關的程式題結束後，面試官就跟我聊到說：「其實我以前也待過群暉，聽說你們最近XX福利被砍掉齁」，笑死。後來就也聊到這個部門有一半都是群暉跳過去的，並聊了這個部門主要在做的事情和產品是什麼等等。我們一直聊到我上班要遲到了才結束，總之蠻愉快的。\n在第二關面試的前一週我剛好又確診新冠，但我又想要趕快把面試走完，所以沒有申請延後面試，想說反正不影響我的思考，頂多一直咳嗽。於是我在第二到第四關的面試一開始都先打預防針說「我剛確診完不久，等等大概會一直咳」。大家如果遇到面試前剛好生病，請記得可以跟人資談延後面試，甚至在面試時因為各種原因可能被評論為表現不好，不論是你的問題或面試官的問題，也要爭取自己的權益試著談復活賽。\n第二關細節忘得差不多了，只記得題目是什麼。\n到了第三關，我甚至在程式題時沒有寫多少 code。面試官講完題目後問我有沒有看過這個題目，我沒有想太多就很誠實地說有，並且很快地嘴砲一遍解法、解法正確性和此演算法的時間空間複雜度分析。結果後來面試官給題目變了形，解法就直接從優化過的線性區間搜尋算法變成動態規劃了，那時我已經一陣子沒有練習實作動態規劃了，雖然知道轉移式長什麼樣子，不過寫得有點心虛，但面試官看到轉移式出來之後就算我過了。我心裡最漂亮的寫法還是 top down 或 bottom up 遍歷的實作方式。\n第四關比較有印象的是程式題結束之後面試官有問我當前的工作內容、如何實現類似 JavaScript 中 setTimeout 和 setInterval 等功能、如何平行化做什麼事情等等。我被問到我想不通的問題如平行程式設計等，我也是直接說「這我不懂，我以前沒做過，我好像也沒在履歷上說我會這東西」，不過後面還是有討論到我會的東西啦。\n最後一關就如前面提到的，是跟微軟台灣研發中心的總經理 Michael 聊天。結論來說，這次跟 Michael 聊天的含金量相當高，很難有機會跟有27年經驗的大佬一對一聊天。一聽到我那時的工作有一大部分都是在翻新某個產品，Michael 馬上就問了為什麼要翻新，我才意識到這個問題我很少去思考到，大概是因為那時要做什麼都是大老闆說了算，印象中也沒有做什麼很嚴謹的商業分析或成本分析。後來 Michael 分享了他以前帶團隊時在決定翻新某個產品之前花了好幾個月去建模做分析，因為翻新一個產品是很重大的決定。我們也有聊以前我創業跟創辦人價值觀不合的事情、聊怎麼看人等等。最後他也跟我建議說如果遇到很屎的工作，就算是在微軟，也要趕快跑。Michael 真的是經驗老道、誠懇、聲音又很有磁性的大哥。\n如何談薪水 我不知道。我上網查一查微軟台灣的行情大概怎樣就把期望薪資交上去了。\nBackground check 這邊會需要填當前的工作和近四年的學經歷、工作經歷，然後負責 background check 的合作夥伴就會去聯絡這些當過你的主管的人或公司的人資去核對這些資料的真實性。\n在這個階段通常人資會建議先不要跟當前公司提離職，等到 background check 結束之後再提離職。雖然當前的工作也需要填寫，但可以選擇請他們不要聯絡現在的主管。\n根據人資所說的，正常來說三個禮拜會跑完流程，但可能因為我這四年有學校、創業、高頻交易和群暉四個工作經驗比較多，而且我一開始不知道在學時的工作經歷不需要寫，再加上我在學時的那段創業經歷又特別難處理，他們多花了一些時間去處理吧。\n最後 Operations Manager of Background Screening 寄信來要求解決一些我提供的資訊和他們得到的資訊的不一致性\n開始工作的時間不一致，我覺得是從 Oct. 2021 開始，但他們問到的是 June 2022，非常奇怪\u0026hellip;我找人一起來忙這個題目以及幫忙邀請人訪談是做假的嗎\u0026hellip; 離職原因我提供的和他們問到的不一致 總之這也沒什麼，回個信把細節講清楚就好了，後來這個背景調查就過了。\n結語 老樣子，有想到什麼大家會好奇且可以講的細節，我會再補上來。\n總之微軟是好公司，我覺得不會比 Google 差。各位能跳外商就跳外商啦，跟台商比起來，有更多有薪假、更多下午茶、更多社團和很多有的沒的活動，也不會被搞文字獄或勞資糾紛，我甚至入職近半年還沒聽過一句微軟的壞話（除了 Windows 很難用和各種使用者介面做得很爛以外）。另外，看得出來微軟真的會在乎員工的 work-life balance，而不是某些公司會說「我們更注重 \u0026ldquo;work-life integration\u0026rdquo;」。太可怕了，到底誰要工作生活整合，太卷了吧？\n如果有人需要內推、新鮮人需要找工作上的任何建議，或者聊八卦，都可以聯絡我。\n","permalink":"https://bearomorphism.pages.dev/posts/blog/2024-interview-microsoft/","summary":"\u003cp\u003e最一開始也是看到了有興趣的缺，然後請台灣微軟的朋友幫忙投內推。\u003c/p\u003e\n\u003cp\u003e我從2024年一月到三月投了四個缺，因為那時我主要還是在等 Google 的機會，沒把注意力放在這裡。\u003c/p\u003e","title":"2024 Microsoft Taiwan 台灣微軟 面試心得"},{"content":"群暉科技歷年來都會到台清交舉辦說明會，並提供快速面試的管道。\n2022年群暉科技來台大舉辦說明會後，我跟學弟要了快速面試的表單連結。\n我根本沒去說明會，笑死。\n那時只是想說報名一下當作練練手，結果不知道為什麼就拿到口頭 offer 了。\n在面試的當下群暉還有「170專案」，也就是在2022年底以前入職的新人都保證第一年可以拿到年薪170萬。\n#Synology_軟體人才強勢招募中\n🔹【招募職缺】\n🎯 #開發研究員：月薪8萬起 ，第一年保證年薪170萬起，最高上看220萬\n🎯 #資深開發研究員：月薪10萬起，第一年保證年薪260萬，最高上看350萬\n🔹【招募對象】就讀資訊工程／資訊管理／電子工程／電機工程相關科系畢業\n🔹【報到時間】2022.12.31前\n據說每個人快速面試的時間長短不一樣。\n以我的體驗來說，真的很「快速」，早上花一點時間走完面試，下午跟大主管聊聊就拿到口頭 offer。\n以下是大概的面試流程，都是透過 skype 面試，不過不同部門的面試問的重點問題會不太一樣，就當作參考就好。\n早上的面試一開始先問了一些基礎知識問題，涵蓋了 C, C++, Python, JavaScript 等等，例如會問什麼是 RAII 什麼是 Promise 以及物件導向的基礎概念等等。這邊我自認答得不夠好，但以我事後有通過面試來看，這一塊可能沒那麼看重。總之是新人嘛，再學就好了。\n基礎知識問題問完之後就接著 coding 題，不過我被問到的題目非常簡單，只是 Add 2 Numbers 而已。很快地確認條件和限制後花幾分鐘就寫完了。\n接下來就是跟 HR 的面談，這就沒什麼好講的，其實我現在也忘得差不多了。\n最後 HR 再幫我跟當時的部門大主管 Rex 約了下午的面談。詳細聊了什麼我也忘得差不多了，總之 Rex 人蠻好的，當然有問有沒有其他正在進行的面試、跟其他工作機會相比的志願序等等。由於當時我還有 Google 的面試在進行，Rex 很大方的承諾說我可以等到 Google 的面試結束後再做決定。\n後來大家應該也知道發生什麼事情了，2023年初 Google 大裁員，包含我的 Google Recruiter 也被裁掉了。因此，我預計2023年1月結束的面試也不知道要延到什麼時候，當然在這期間群暉的人資都會打來同步一下時程，我也只能跟他們說我的 Google 面試還沒結束。後來我自己也知道我這樣子卡他們的 headcount 也不太好，中間一度先拒絕了 offer。\n不過後來也因為 Google 整個面試過程實在是太拖了，加上我沒那麼喜歡當時的工作內容，於是我又再寄信去問那個職缺還有沒有缺人、我可以再重新走面試流程等等。之後部門主管表示不用重走面試流程，可以直接錄取，我就在2023年7月入職了。\n我在入職時一直以為我還是有第一年170萬，因為 HR 在中間跟我 sync 的期間和給我簽 offer 的時候都沒有跟我提及這個170萬只有那些2022年底入職的新人才有，我自己也不知道有這個時間限制，於是我第一年直接變成只剩每個月八萬的底薪，實在是虧\u0026hellip;\n大家在簽 offer 時也務必注意合約上有沒有提到你們心裡想的那些數字，我那時很天真地以為「這應該不會寫在合約上吧」。哀，那時真的又菜又蠢，不知道怎麼推論出這個結果的。只能說雖然我沒仔細問有絕大部分都是我自己的問題，但 HR 也是很賊，這樣可以同時幫公司招到人才又可以省下那170專案的支出。\n大概就是這樣，有想到什麼可以補充的會再編輯。\n","permalink":"https://bearomorphism.pages.dev/posts/blog/2022-interview-synology/","summary":"\u003cp\u003e群暉科技歷年來都會到台清交舉辦說明會，並提供快速面試的管道。\u003c/p\u003e\n\u003cp\u003e2022年群暉科技來台大舉辦說明會後，我跟學弟要了快速面試的表單連結。\u003c/p\u003e\n\u003cp\u003e我根本沒去說明會，笑死。\u003c/p\u003e","title":"2022 Synology 群暉科技 面試心得 校招快速面試"},{"content":"Google 雖然我過了前面的面試但是等了一年都沒有缺，而且現在我都已經在微軟工作了，短期內不會再考慮 Google，就寫出來分享一下面試經驗吧。\nGoogle 相信不用多作介紹了，直接上時間線：\n2022/10/19 收到 Google Recruiter 的邀請信 2022/10/25 跟 recruiter 聊完，收到了一些面試準備相關的文件 2022/11/22 一面 technical 關 2022/11/24 收到來自 recruiter 的正面 feedback，並且提到 January 2023 會再來聯絡我 後來我的 recruiter 就被裁掉了，哀 2023/04/03 另一個 recruiter 來聯絡我了 2023/05 在一天內走完了三關 technical 和一關 behavior question 印象中過了不久後拿到了正面的 feedback，不過因為在面試完的當下沒有更多缺，所以還是要等。\n之後在接下來的一年(2023/07~2024/05)繼續在 Google careers 上用朋友給的內推連結申請了十幾個缺（一個月只能申請三個缺），大部分都是在幾週後收到感謝信，連 match 的機會都沒有。在這期間有安排到四次 team match，不過其中兩次的面試官或 hiring manager 看起來不太妙且在迴避我的問題，一次是我沒碰過的 embedding system，剩下一次需要的 tech stack 跟我的技能蠻符合的，但可能也是因為競爭太過激烈的關係被刷掉。\n雜七雜八 要面試的請一定要找人內推，這不只適用於 Google，在其他公司基本上也一樣。有被內推的話一定比較容易被看到，而且可以順便請人幫忙看履歷？\n第二個跟我聯絡的人資是新加坡人，我幾乎聽不懂她的普通話，所以跟她通話有點痛苦。通話的難度大概是：她每講完一句話，我就要用我抓到的單字還原她剛剛說的話，接著複述一遍給她聽，問她是不是這個意思。\n還記得有一次我接到一通電話，一開口就說「你好，我是中國台灣的 XXX」。那時我一開始聽到還心想這哪來的詐騙，過了幾秒後才意識到她是說 Google 台灣。\n真是奇怪，我在台灣認識的新加坡人的普通話幾乎都沒什麼口音啊\u0026hellip;\n當然也不排除是我中文不好，畢竟我的學測國文只有拿均標。\n第一面 technical 關被問到一個 medium 偏 hard 的題目，一開始聽到題目的第一個想法是用 disjoint set 去解，講完想法和時間複雜度以後就直接開始寫程式碼了。\n快要寫完時多想了一下發現其實有線性於節點數量的解，直接在線對圖做深度搜尋之類的就好，但因為剩下沒多少時間，就只能很快速的跟面試官說這個算法大概長什麼樣子、為什麼時間是線性的等等。\n後來第一個 recruiter，也就是被裁掉的那個，給了我正面的 feedback。然而，第二位跟我說我的算法需要加強，恩\u0026hellip;\n後來的三關 technical 和一關 BQ 全部擠在同一天，據說只要是校招都是這樣排。\n三關的其中兩關是全英文的，題目有兩題體感是 medium 偏 hard，一題 medium 偏 easy。\n我現在還記得其中一關的面試官穿孤獨搖滾的衣服，我看了就問「你穿的是結束バンド嗎」，對方還回「對呀，而且你的頭貼是小孤獨」。我好像一直沒換我的 google 帳號頭貼。\n因為我在等 team match 的期間都在 Synology 工作，跟 Google 的辦公室只隔了一條馬路，我有一次就直接問 recruiter 能不能直接排實體的，不然找有網路、安靜且可以講話的地方有點麻煩。\n於是我直接賺到了一次在 TPKD 參觀的機會，那時還沒看過什麼外商辦公室，我覺得 Google 辦公室體驗起來真的是豪華舒服，儘管那次只有在會客區跟 hiring manager 聊天。不愧是 Google。\nGoogle 最惡名昭彰的大概就是讓人等待 offer 的時間了，我聽過等半年一年的都有，不過我想這也是因為他們不缺面試者吧，大家都搶著進去。\n總之，很感謝在這個過程遇到的所有 Google 員工，包含幫我內推的朋友、人資、面試官。\n","permalink":"https://bearomorphism.pages.dev/posts/blog/2022-2024-interview-google/","summary":"\u003cp\u003eGoogle 雖然我過了前面的面試但是等了一年都沒有缺，而且現在我都已經在微軟工作了，短期內不會再考慮 Google，就寫出來分享一下面試經驗吧。\u003c/p\u003e\n\u003cp\u003eGoogle 相信不用多作介紹了，直接上時間線：\u003c/p\u003e","title":"2022-2024 Google 面試過程紀錄"},{"content":"這是去年底公司內讀書會時，我準備的投影片，想說分享出來讓更多人可以參考。過年時我再花時間整理一個文字好讀版的。\nhttps://hackmd.io/@-TyNLpH6RM-50upth1_LeQ/rkWxlB6Lp\n","permalink":"https://bearomorphism.pages.dev/posts/blog/20240205-study-group/","summary":"\u003cp\u003e這是去年底公司內讀書會時，我準備的投影片，想說分享出來讓更多人可以參考。過年時我再花時間整理一個文字好讀版的。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://hackmd.io/@-TyNLpH6RM-50upth1_LeQ/rkWxlB6Lp\"\u003ehttps://hackmd.io/@-TyNLpH6RM-50upth1_LeQ/rkWxlB6Lp\u003c/a\u003e\u003c/p\u003e","title":"The Art of Readable Code 投影片分享"},{"content":"AICS 應該算是近期又紅起來的團隊，業務大概是在做「智慧醫療」，我面試時他們有在跟政府合作一些大案子。\n其實 AICS 在前陣子有一些不太好的消息，只要 google 一下 「AICS 面試 ptt」就可以查到了，大致上是在分享一些很糟糕的面試體驗，這邊就不再多說。另外我有不少系上強者朋友也有去面試，看了他們的心得文，有不少都是被無聲卡或者被刷掉。\n不過我在投履歷時也沒有想那麼多，AICS 是我最早期投的幾家公司之一，那時我甚至沒有請我的 googler 朋友幫忙修履歷，直到我面試的第二關前十分鐘左右才送一份更清楚明瞭的履歷給人資。\n這次面試的過程全線上，我不知道是不是我的運氣比較好，整個面試過程中完全沒有遇到網路上講到的那些負面狀況。\nOA 沒有很難，就不多寫了。不過我是在 OA deadline 前三個小時才看到信，而且那時候我在上課 QQ 根本來不及寫，於是就在寄信過去要求延長一天。\n一面 總共一個小時。\n一開始是從履歷問一些我的經歷，差不多前半小時都是這樣子。在後半小時是問 coding 題，用自己習慣的 IDE 寫就好，但我有點忘記問什麼了，大概是 leetcode medium 等級的題目。面試過程中其實聊得蠻開心的，面試官也有跟我說通常他會比較注重哪些細節，當然這些細節因面試官而異。\n二面 總共三個小時，有三關，每關一個小時。\n前兩關也是考 coding 題，大概也是 leetcode medium 的難度，跟第一關差不多。我那時已經至少刷了500題了，解那些問題基本上很順。\n特別拿出來提一下，第二關考的題目是 Jump Game II - LeetCode，我一開始是給出了很爛的 $O(N^2)$ 的 DP 解，面試官給出了很多 follow up 後我才想到一個 $O(N)$ 解。\n第三關是主管直接來面試，也是一樣簡介了公司最近的狀況，並且跟我聊一些我以前做過的事情。我覺得主管還蠻真誠的，雖然隔了一道螢幕，但感覺他會用心對待每一位員工和面試者。\n面試的最後，主管還問了我整個面試過程有沒有遇到什麼不好的狀況（我有點忘記他的原話是什麼了），我也誠實的回答如果滿分十分我可以給到十分，我跟每一位面試官的溝通都非常順暢。\n結果 面試完過了大概兩個小時，人資就發信過來說我通過面試了，並且我可以獲贈一本書（總共五本讓我挑一本）。隔天主管也發信來恭喜我通過面試。我覺得這一部分 AICS 做得蠻用心的，得知事後還有送書我也蠻驚喜的。\nAICS 給的 package 很好，說實話我聽到數字的當下有點驚訝（可能是我真的太菜了）。不過我同時得到另一份對我來說更好的機會，跟三位這個暑假在 AICS 實習的學弟妹，以及在那裡工作過的學姊討論過以後，我覺得每週要花超過六七個小時通勤真的太多了，而且我短期內還是想住在台大附近。因此，我想了兩個禮拜以後還是忍痛拒絕了這個 offer\u0026hellip;\n我真的覺得面試的主管對我很好，如果未來有機會的話還是會想去看看（不是客套話）。\n後記 我遇到的面試官都很平易近人，這點真的在我的面試過程中幫助很大。\n我覺得 AICS 要跟政府合作的案子真的是大工程，如果真的參與整個案子的話，寫在履歷上肯定會加不少分。\n然後我兩次拿到 offer 的面試早上都有去運動，是技擊散打的校隊晨訓。我現在是猜運動可以促進血液循環、幫助大腦思考啦，還是猜的，畢竟樣本不夠多。\n","permalink":"https://bearomorphism.pages.dev/posts/blog/interview-aics/","summary":"\u003cp\u003eAICS 應該算是近期又紅起來的團隊，業務大概是在做「智慧醫療」，我面試時他們有在跟政府合作一些大案子。\u003c/p\u003e\n\u003cp\u003e其實 AICS 在前陣子有一些不太好的消息，只要 google 一下 「AICS 面試 ptt」就可以查到了，大致上是在分享一些很糟糕的面試體驗，這邊就不再多說。另外我有不少系上強者朋友也有去面試，看了他們的心得文，有不少都是被無聲卡或者被刷掉。\u003c/p\u003e","title":"[面試心得] AICS"},{"content":"這裡會記錄一些我的面試心得，也分享給其他正在找工作的人和學弟妹。\nTL;DR 履歷要記得多給其他有經驗的朋友看過，差很多。 面試時如果可以的話記得要 feedback，即自己有沒有需要進步的地方，有問有差。 線上程式測驗 (OA) 只是入場門票，有刷過題一般來說就不會太難。 不要說自己很熟 C++ 。 不要怕找一些不認識的人問問題，以我的個人經驗來說，只要有一些基本禮儀、不要太伸手牌，通常大家都是願意幫忙的。這一點是跟面試模擬訓練好夥伴陳翰儒學的。 可以的話，練習一邊 coding 一邊講自己在做啥。可以看這一系列的影片了解面試流程。 Google Coding Interview With A Normal Software Engineer - YouTube 個人背景和經歷 112 CS 雙主修數學。 Leetcode 在2022年8月刷到500題。 大一上時拿過一次書卷獎。 GPA 3.67/4.3，並不算亮眼，雖然是被很多數學系的怪課平均下去的。 大學時當過三次資料結構與演算法助教，兩次演算法設計與分析助教。當了四年的資訊之芽講師，主要是講 Python。 從高中一年級開始寫程式。那時因為做數學科展時要找一個不定方程式的整數解的 pattern，找了一個會寫程式的朋友請他幫忙寫個程式爆搜一下。他很快就幫我寫好了，我覺得超屌，就開始學習寫程式。那時從 C++ 開始學，高一下時加入高雄中學程式設計社，並且開始打程式競賽。大學之後就打得比較少了。 2021年初請朋友幫忙內推實習，於是我到了樂居後端工程部實習，共在樂居經歷快半年的時間。感謝這位朋友和樂居的同仁給我這個機會。 2021年10月認識創業夥伴，開始投入創業計畫。從2022年3月左右開始近全職投入創業，直到2022年7月下旬退出。 2022年8月開始認真生履歷，直到9月中才生出一個像樣的履歷。 2022年9月初認識面試模擬好夥伴，開始真的練習面試。 面試心得文章連結 Kronos CMoney (全曜財經) AICS ","permalink":"https://bearomorphism.pages.dev/posts/blog/interview-summary/","summary":"\u003cp\u003e這裡會記錄一些我的面試心得，也分享給其他正在找工作的人和學弟妹。\u003c/p\u003e\n\u003ch2 id=\"tldr\"\u003eTL;DR\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e履歷要記得多給其他有經驗的朋友看過，差很多。\u003c/li\u003e\n\u003cli\u003e面試時如果可以的話記得要 feedback，即自己有沒有需要進步的地方，有問有差。\u003c/li\u003e\n\u003cli\u003e線上程式測驗 (OA) 只是入場門票，有刷過題一般來說就不會太難。\u003c/li\u003e\n\u003cli\u003e不要說自己很熟 C++ 。\u003c/li\u003e\n\u003cli\u003e不要怕找一些不認識的人問問題，以我的個人經驗來說，只要有一些基本禮儀、不要太伸手牌，通常大家都是願意幫忙的。這一點是跟面試模擬訓練好夥伴\u003ca href=\"https://www.linkedin.com/in/han-ru-chen-734816248/\"\u003e陳翰儒\u003c/a\u003e學的。\u003c/li\u003e\n\u003cli\u003e可以的話，練習一邊 coding 一邊講自己在做啥。可以看這一系列的影片了解面試流程。 \u003ca href=\"https://www.youtube.com/watch?v=rw4s4M3hFfs\"\u003eGoogle Coding Interview With A Normal Software Engineer - YouTube\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"個人背景和經歷\"\u003e個人背景和經歷\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e112 CS 雙主修數學。\u003c/li\u003e\n\u003cli\u003eLeetcode 在2022年8月刷到500題。\u003c/li\u003e\n\u003cli\u003e大一上時拿過一次書卷獎。\u003c/li\u003e\n\u003cli\u003eGPA 3.67/4.3，並不算亮眼，雖然是被很多數學系的怪課平均下去的。\u003c/li\u003e\n\u003cli\u003e大學時當過三次資料結構與演算法助教，兩次演算法設計與分析助教。當了四年的資訊之芽講師，主要是講 Python。\u003c/li\u003e\n\u003cli\u003e從高中一年級開始寫程式。那時因為做數學科展時要找一個不定方程式的整數解的 pattern，找了一個會寫程式的朋友請他幫忙寫個程式爆搜一下。他很快就幫我寫好了，我覺得超屌，就開始學習寫程式。那時從 C++ 開始學，高一下時加入高雄中學程式設計社，並且開始打程式競賽。大學之後就打得比較少了。\u003c/li\u003e\n\u003cli\u003e2021年初請朋友幫忙內推實習，於是我到了\u003ca href=\"https://www.leju.com.tw/\"\u003e樂居\u003c/a\u003e後端工程部實習，共在樂居經歷快半年的時間。感謝這位朋友和樂居的同仁給我這個機會。\u003c/li\u003e\n\u003cli\u003e2021年10月認識創業夥伴，開始投入創業計畫。從2022年3月左右開始近全職投入創業，直到2022年7月下旬退出。\u003c/li\u003e\n\u003cli\u003e2022年8月開始認真生履歷，直到9月中才生出一個像樣的履歷。\u003c/li\u003e\n\u003cli\u003e2022年9月初認識面試模擬好夥伴，開始真的練習面試。\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- [![Leetcode Stats](https://leetcard.jacoblin.cool/Mrbear666)](https://leetcode.com/Mrbear666/) --\u003e\n\u003ch2 id=\"面試心得文章連結\"\u003e面試心得文章連結\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"../interview-kronos\"\u003eKronos\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"../interview-cmoney\"\u003eCMoney (全曜財經)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"../interview-aics\"\u003eAICS\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","title":"2022面試找工作經驗分享"},{"content":"Problem A finite commutative ring $R$ without zero divisors is a field. Here we don\u0026rsquo;t assume that $R$ has an identity.\nProof $R$ has an identity For each $a \\neq 0$ in $R$, consider the map\n$$\\phi_a: x \\mapsto ax$$\nSince $a$ is not a zero divisor, $\\phi_a$ is injective. Because $R$ is finite, $\\phi_a$ is also surjective. Hence, there is $e \\in R$ such that\n$$a = \\phi_a(e) = ea$$\nNow, for each $b \\in R$, again by the fact that $\\phi_a$ is surjective, we can find $x_b \\in R$ such that\n$$b = \\phi_a(x_b) = ax_b$$\nMultiply the first equality by $x_b$, and we obtain\n$$b = ax_b = eax_b = eb$$\nTherefore, $e$ is an identity in $R$.\nThen use the fact that $\\phi_a$ is surjective again, there is $c \\in R$ such that\n$$e = \\phi_a(c) = ac$$\nHere $c$ is the inverse of $a$.\nRandom Notes $\\phi_a$ is injective Let $x, y \\in R$ be such that $\\phi_a(x) = \\phi_a(y)$, then $a(x - y) = 0$. Since $a$ is not a zero divisor, it follows that $x = y$.\n","permalink":"https://bearomorphism.pages.dev/posts/notes/a-finite-commutative-ring-without-zero-divisors-is-a-field/","summary":"\u003ch2 id=\"problem\"\u003eProblem\u003c/h2\u003e\n\u003cp\u003eA finite commutative ring $R$ without zero divisors is a field. Here we don\u0026rsquo;t assume that $R$ has an identity.\u003c/p\u003e\n\u003ch2 id=\"proof\"\u003eProof\u003c/h2\u003e\n\u003ch3 id=\"r-has-an-identity\"\u003e$R$ has an identity\u003c/h3\u003e\n\u003cp\u003eFor each $a \\neq 0$ in $R$, consider the map\u003c/p\u003e\n\u003cp\u003e$$\\phi_a: x \\mapsto ax$$\u003c/p\u003e\n\u003cp\u003eSince $a$ is not a zero divisor, $\\phi_a$ is injective. Because $R$ is finite, $\\phi_a$ is also surjective. Hence, there is $e \\in R$ such that\u003c/p\u003e\n\u003cp\u003e$$a = \\phi_a(e) = ea$$\u003c/p\u003e","title":"A Finite Commutative Ring Without Zero Divisors Is a Field"},{"content":"Probability of collapsing $a |0 \\rangle + b |1 \\rangle$ 變成 0 的機率是 $|a|^2$ 變成 $1$ 的機率是 $|b|^2$\nUnitary operator 保長保角 $M_{\\text{NOT}} = \\begin{pmatrix} 0 \u0026amp; 1 \\ 1 \u0026amp; 0 \\end{pmatrix}$ $W_2 = \\begin{pmatrix} \\frac{1}{\\sqrt{2}} \u0026amp; \\frac{1}{\\sqrt{2}} \\ \\frac{1}{\\sqrt{2}} \u0026amp; \\frac{-1}{\\sqrt{2}} \\end{pmatrix}$ fair coin toss Tensor product Entangled state v.s. decomposable state $\\langle a \\otimes b, c \\otimes d \\rangle = \\langle a, c \\rangle \\langle b, d \\rangle$ $$\\begin{align*}M_{\\text{CNOT}}: \u0026amp;|00\\rangle \\mapsto |00\\rangle, |01\\rangle \\mapsto |01\\rangle, \\\u0026amp;|10\\rangle \\mapsto |11\\rangle, |11\\rangle \\mapsto |10\\rangle \\end{align*}$$ EPR Pair $$M_{\\text{CNOT}}\\left((\\frac{1}{\\sqrt{2}} | 0 \\rangle +\\frac{1} {\\sqrt{2}} |1\\rangle) \\otimes |0\\rangle\\right) = \\frac{1}{\\sqrt{2}} |00 \\rangle +\\frac{1} {\\sqrt{2}} |11\\rangle$$\nShor\u0026rsquo;s algorithm Problem: Factor a number $n$. That is, find a pair $(p, q)$ such that $pq = n$.\nStep 1 Choose a random number $a \\in \\{2,3,4,\u0026hellip;,n - 1\\}$. If $\\gcd(a, n) = 1$ then move to next step. Otherwise, done.\nStep 2 From now the operations are under the ring $\\mathbb{Z} / n\\mathbb{Z}$.\nSince $\\gcd(a, n) = 1$, there is a positive even integer $r$ such that\n$$\\begin{align}a^r = 1 \\ a^{r/2} \\neq 1 \\end{align}$$\nDenote $b = a^{r / 2} - 1$ and $c = a^{r/2} + 1$, then\n$$bc = (a^{r / 2} - 1)(a^{r / 2} + 1) = a^r - 1 = 0$$\nIf $c \\neq 0$, then the pair $(\\gcd(b, n), \\gcd(c, n))$ is the answer.\nStep 3 Since $pq \\mid bc$, we have (i) $p \\mid b$ and $q \\mid c$ or (ii) $p \\mid c$ and $q \\mid b$. Thus, $(p, q) = (\\gcd(b, n), \\gcd(c, n))$.\nFind the $r$ in step 2 of Shor\u0026rsquo;s ","permalink":"https://bearomorphism.pages.dev/posts/notes/quantum-algorithm/","summary":"\u003ch2 id=\"probability-of-collapsing\"\u003eProbability of collapsing\u003c/h2\u003e\n\u003cp\u003e$a |0 \\rangle + b |1 \\rangle$ 變成 0 的機率是 $|a|^2$ 變成 $1$ 的機率是 $|b|^2$\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUnitary operator 保長保角\u003c/li\u003e\n\u003cli\u003e$M_{\\text{NOT}} = \\begin{pmatrix} 0 \u0026amp; 1 \\ 1 \u0026amp; 0 \\end{pmatrix}$\u003c/li\u003e\n\u003cli\u003e$W_2 = \\begin{pmatrix} \\frac{1}{\\sqrt{2}} \u0026amp; \\frac{1}{\\sqrt{2}} \\ \\frac{1}{\\sqrt{2}} \u0026amp; \\frac{-1}{\\sqrt{2}} \\end{pmatrix}$ fair coin toss\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"tensor-product\"\u003eTensor product\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEntangled state v.s. decomposable state\u003c/li\u003e\n\u003cli\u003e$\\langle a \\otimes b, c \\otimes d \\rangle = \\langle a, c \\rangle \\langle b, d \\rangle$\u003c/li\u003e\n\u003cli\u003e$$\\begin{align*}M_{\\text{CNOT}}: \u0026amp;|00\\rangle \\mapsto |00\\rangle, |01\\rangle \\mapsto |01\\rangle, \\\u0026amp;|10\\rangle \\mapsto |11\\rangle, |11\\rangle \\mapsto |10\\rangle \\end{align*}$$\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"epr-pair\"\u003eEPR Pair\u003c/h2\u003e\n\u003cp\u003e$$M_{\\text{CNOT}}\\left((\\frac{1}{\\sqrt{2}} | 0 \\rangle +\\frac{1} {\\sqrt{2}} |1\\rangle) \\otimes |0\\rangle\\right) = \\frac{1}{\\sqrt{2}} |00 \\rangle +\\frac{1} {\\sqrt{2}} |11\\rangle$$\u003c/p\u003e","title":"Quantum Algorithm Notes"},{"content":"Theorem Suppose $K$ is a compact set of $\\mathbb{R}^n$, and $\\{V_\\alpha\\}$ is an open cover of $K$. Then there exists functions $\\psi_1, \u0026hellip;, \\psi_s \\in C(\\mathbb{R}^n)$, such that\n$0 \\leq \\psi_i \\leq 1$; each $\\psi_i$ has its support in some $V_\\alpha$; (subordinate) $\\psi_1 + \u0026hellip; + \\psi_s = 1$ on $K$. (partition of unity) Proof Associate with each $x \\in K$ an index $\\alpha(x)$ such that $x \\in V_{\\alpha(x)}$. Then there are open balls $B(x)$ and $W(x)$ centered at $x$ with\n$$\\overline{B(x)} \\subset W(x) \\subset \\overline{W(x)} \\subset V_{\\alpha(x)}$$\nSince $K$ is compact, there are $x_1, \u0026hellip;, x_s$ such that\n$$K \\subset B(x_1) \\cup \u0026hellip; \\cup B(x_s)$$\nThere are functions $\\varphi_1, \u0026hellip;, \\varphi_s \\in C(R^n)$, such that $\\varphi_i = 1$ on $B(x_i)$, $\\varphi_i = 0$ outside $W(x_i)$ and $0 \\leq \\varphi_i \\leq 1$ on $\\mathbb{R}^n$. Define $\\psi_1 = \\varphi_1$ and\n$$\\psi_{i+1} = (1 - \\varphi_1)\u0026hellip;(1 - \\varphi_i)\\varphi_{i+1}$$\nfor $i = 1, \u0026hellip;, s - 1$. It follows that\n$$ \\psi_1 + \u0026hellip; + \\psi_s = 1 - \\prod_{i=1}^s (1 - \\varphi_i) \\quad \\text{ on } \\mathbb{R}^n$$\n","permalink":"https://bearomorphism.pages.dev/posts/notes/partitions-of-unity/","summary":"\u003ch2 id=\"theorem\"\u003eTheorem\u003c/h2\u003e\n\u003cp\u003eSuppose $K$ is a compact set of $\\mathbb{R}^n$, and $\\{V_\\alpha\\}$ is an open cover of $K$. Then there exists functions $\\psi_1, \u0026hellip;, \\psi_s \\in C(\\mathbb{R}^n)$, such that\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e$0 \\leq \\psi_i \\leq 1$;\u003c/li\u003e\n\u003cli\u003eeach $\\psi_i$ has its support in some $V_\\alpha$; (subordinate)\u003c/li\u003e\n\u003cli\u003e$\\psi_1 + \u0026hellip; + \\psi_s = 1$ on $K$. (partition of unity)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"proof\"\u003eProof\u003c/h2\u003e\n\u003cp\u003eAssociate with each $x \\in K$ an index $\\alpha(x)$ such that $x \\in V_{\\alpha(x)}$. Then there are open balls $B(x)$ and $W(x)$ centered at $x$ with\u003c/p\u003e","title":"Partitions of Unity"},{"content":"Property The continued fraction representation of a rational is unique.\nProof Let $r \\in \\mathbb{Q}$ and $[p_0, p_1, \u0026hellip;, p_n], [q_0, q_1, \u0026hellip;, q_m]$ be continued fraction representations of $r$. Now, process induction on $\\min(n, m)$. The case $\\min(n, m) = 0$ is trivial.\nBy definition, we know that $p_0 = q_0 = \\lfloor r \\rfloor$. Then,\n$$(r - \\lfloor r \\rfloor)^{-1} = [p_1, \u0026hellip;, p_n] = [q_1, \u0026hellip;, q_m]$$\nthe rest can be shown by induction hypothesis.\n","permalink":"https://bearomorphism.pages.dev/posts/notes/continued-fraction-uniqueness/","summary":"\u003ch2 id=\"property\"\u003eProperty\u003c/h2\u003e\n\u003cp\u003eThe continued fraction representation of a rational is unique.\u003c/p\u003e\n\u003ch2 id=\"proof\"\u003eProof\u003c/h2\u003e\n\u003cp\u003eLet $r \\in \\mathbb{Q}$ and $[p_0, p_1, \u0026hellip;, p_n], [q_0, q_1, \u0026hellip;, q_m]$ be continued fraction representations of $r$. Now, process induction on $\\min(n, m)$. The case $\\min(n, m) = 0$ is trivial.\u003c/p\u003e\n\u003cp\u003eBy definition, we know that $p_0 = q_0 = \\lfloor r \\rfloor$. Then,\u003c/p\u003e\n\u003cp\u003e$$(r - \\lfloor r \\rfloor)^{-1} = [p_1, \u0026hellip;, p_n] = [q_1, \u0026hellip;, q_m]$$\u003c/p\u003e","title":"Uniqueness of Continued Fraction Representation of Rational Numbers"},{"content":"Theorem Give 2 sequences $\\{a_n\\}$ and $\\{b_n\\}$, put\n$$ A_n = \\sum_{k=0}^n a_n$$\nif $n \\geq 0$; put $A_{-1} = 0$. Then, if $0 \\leq p \\leq q$, we have\n$$\\sum_{n=p}^q a_n b_n = \\sum_{n=p}^{q-1} A_n(b_n - b_{n+1}) + A_qb_q - A_{p-1}b_p$$\nProof $$ \\sum_{n=p}^q a_n b_n = \\sum_{n=p}^q (A_n - A_{n-1}) b_n = \\sum_{n=p}^q A_nb_n - \\sum_{n=p-1}^{q-1}A_nb_{n+1}$$\nSimplify the last expression.\nNote 每次我要用這東西的時候都會忘記，就這樣記下來。\n","permalink":"https://bearomorphism.pages.dev/posts/notes/summation-by-part/","summary":"\u003ch2 id=\"theorem\"\u003eTheorem\u003c/h2\u003e\n\u003cp\u003eGive 2 sequences $\\{a_n\\}$ and $\\{b_n\\}$, put\u003c/p\u003e\n\u003cp\u003e$$ A_n = \\sum_{k=0}^n a_n$$\u003c/p\u003e\n\u003cp\u003eif $n \\geq 0$; put $A_{-1} = 0$. Then, if $0 \\leq p \\leq q$, we have\u003c/p\u003e\n\u003cp\u003e$$\\sum_{n=p}^q a_n b_n = \\sum_{n=p}^{q-1} A_n(b_n - b_{n+1}) + A_qb_q - A_{p-1}b_p$$\u003c/p\u003e\n\u003ch2 id=\"proof\"\u003eProof\u003c/h2\u003e\n\u003cp\u003e$$ \\sum_{n=p}^q a_n b_n = \\sum_{n=p}^q (A_n - A_{n-1}) b_n = \\sum_{n=p}^q A_nb_n - \\sum_{n=p-1}^{q-1}A_nb_{n+1}$$\u003c/p\u003e\n\u003cp\u003eSimplify the last expression.\u003c/p\u003e\n\u003ch2 id=\"note\"\u003eNote\u003c/h2\u003e\n\u003cp\u003e每次我要用這東西的時候都會忘記，就這樣記下來。\u003c/p\u003e","title":"Summation by Part"},{"content":"Problem The Quaternion group $G = Q_8$ is not isomorphic to any subgroup of $S_7$.\nProof Let $A$ be a set with 7 elements. Any homomorphism $\\alpha: G \\to S_7$ can be viewed as a group action $G$ on $A$.\nFor each $a \\in A$, consider the size of its orbit $Ga$ and stabilizer $G_a$. Orbit-stabilizer theorem gives the following equality:\n$$ |Ga| = \\frac{|G|}{|G_a|} $$\nSince $Ga \\subseteq A$, we have $|G_a| \\leq 7$. Then\n$$ 7 \\geq |Ga| = \\frac{8}{|G_a|} $$\nSimplify the inequality,\n$$ |G_a| \\geq \\frac{8}{7} $$\nHence $|G_a|$ is at least 2. Now, consider the kernel of the homomorphism $\\alpha$. By definition, we have $\\ker \\alpha = \\bigcap_{a \\in A} G_a$. Notice that all non-trivial subgroup of $G$ contains $\\{\\pm 1\\}$, so $\\{\\pm 1\\} \\subseteq \\ker \\alpha$.\nSince $\\ker \\alpha$ is non-trivial, the homomorphism cannot be injective. Therefore, $\\alpha$ is not an isomorphism to any subgroup of $S_7$.\n","permalink":"https://bearomorphism.pages.dev/posts/notes/q8-no-isomorphism-s7/","summary":"\u003ch2 id=\"problem\"\u003eProblem\u003c/h2\u003e\n\u003cp\u003eThe Quaternion group $G = Q_8$ is not isomorphic to any subgroup of $S_7$.\u003c/p\u003e\n\u003ch2 id=\"proof\"\u003eProof\u003c/h2\u003e\n\u003cp\u003eLet $A$ be a set with 7 elements. Any homomorphism $\\alpha: G \\to S_7$ can be viewed as a group action $G$ on $A$.\u003c/p\u003e\n\u003cp\u003eFor each $a \\in A$, consider the size of its orbit $Ga$ and stabilizer $G_a$. Orbit-stabilizer theorem gives the following equality:\u003c/p\u003e\n\u003cp\u003e$$ |Ga| = \\frac{|G|}{|G_a|} $$\u003c/p\u003e\n\u003cp\u003eSince $Ga \\subseteq A$, we have $|G_a| \\leq 7$. Then\u003c/p\u003e","title":"Q8 is not Isomorphic to any subgroup of S7"},{"content":"Theorem Every vector space $V$ has a basis.\nProof The case $V$ is zero space is trivial, so we just consider the case $V$ is not zero.\nWe will use \u0026ldquo;Zorn\u0026rsquo;s lemma\u0026rdquo; in the following proof.\nLet $P$ be the collection of all linearly independent subset of $V$. Note that $P$ is partially ordered with respect to \u0026ldquo;inclusion\u0026rdquo;. Also note that $P$ is not empty, since it must contain $\\{v\\}$ for some $v \\in V$.\nTake a chain $C$ in $P$. Denote $U = \\bigcup_{S \\in C} S$, the union of all elements of the chain $C$.\nNow we need to show that $U$ is indeed an upper bound of $C$ in $P$. It suffices to show that $U$ is linearly independent. For each finite subset $\\{v_1, \u0026hellip;, v_k\\}$ of $U$, we can find $S_1, \u0026hellip;, S_k \\in C$ such that $v_i \\in S_i$ for $i = 1, \u0026hellip;, k$. Since $C$ is a chain, there is some $j$ such that $S_1, \u0026hellip;, S_k \\subseteq S_j$, which also implies $v_1, \u0026hellip;, v_k \\in S_j$. Notice that $S_j$ is linearly independent, the equality\n$$a_1v_1 + \u0026hellip; + a_kv_k = 0$$\nholds only if all coefficients $a_i = 0$. Therefore, $U$ is linearly independent.\nThe hypothesis of Zorn\u0026rsquo;s lemma has been checked. Hence, there is a maximal element in $P$. Let\u0026rsquo;s pick a maximal element from $P$ and call it $M$. The next goal is showing that $M$ is a basis.\nBy definition, $M$ is a linearly independent subset of $V$. To show $M$ is a basis of $V$, it suffices to check that $M$ spans $V$.\nSuppose otherwise, $M$ does not span $V$. Take some $w \\in V \\setminus \\text{span}(M)$. Now $\\{w\\} \\cup M$ is a linearly independent subset of $V$ and a superset of $M$, which contradicts to the fact that $M$ is maximal. Therefore, $M$ indeed spans $V$, and thus a basis of $V$.\n","permalink":"https://bearomorphism.pages.dev/posts/notes/every-vector-space-has-a-basis/","summary":"\u003ch2 id=\"theorem\"\u003eTheorem\u003c/h2\u003e\n\u003cp\u003eEvery vector space $V$ has a basis.\u003c/p\u003e\n\u003ch2 id=\"proof\"\u003eProof\u003c/h2\u003e\n\u003cp\u003eThe case $V$ is zero space is trivial, so we just consider the case $V$ is not zero.\u003c/p\u003e\n\u003cp\u003eWe will use \u0026ldquo;Zorn\u0026rsquo;s lemma\u0026rdquo; in the following proof.\u003c/p\u003e\n\u003cp\u003eLet $P$ be the collection of all linearly independent subset of $V$. Note that $P$ is partially ordered with respect to \u0026ldquo;inclusion\u0026rdquo;. Also note that $P$ is not empty, since it must contain $\\{v\\}$ for some $v \\in V$.\u003c/p\u003e","title":"Every Vector Space Has a Basis"},{"content":"Problem If $S$ is an uncountable collection of positive real numbers, then the summation of $S$ diverges.\nProof Suppose otherwise, the summation converges.\nFor $n = 1, 2, \u0026hellip;$, denote $A_n = \\{x \\in S \\mid x \\geq \\frac{1}{n}\\}$.\nNotice that $A_n$ is a subset of $S$, so its summation must converge.\nSince each element of $A_n$ has a lower bound $1/n \u0026gt; 0$, the cardinality of $A_n$ must be finite. (Otherwise $\\sum A_n$ diverges.)\nFinally, observe that $S = \\bigcup_{n=1}^\\infty A_n$. Since each $A_n$ is finite, $S$ is at most countably infinite, which contradicts to the given assumption that $S$ is uncountable.\n","permalink":"https://bearomorphism.pages.dev/posts/notes/uncountable-sum/","summary":"\u003ch2 id=\"problem\"\u003eProblem\u003c/h2\u003e\n\u003cp\u003eIf $S$ is an uncountable collection of positive real numbers, then the summation of $S$ diverges.\u003c/p\u003e\n\u003ch2 id=\"proof\"\u003eProof\u003c/h2\u003e\n\u003cp\u003eSuppose otherwise, the summation converges.\u003c/p\u003e\n\u003cp\u003eFor $n = 1, 2, \u0026hellip;$, denote $A_n = \\{x \\in S \\mid x \\geq \\frac{1}{n}\\}$.\u003c/p\u003e\n\u003cp\u003eNotice that $A_n$ is a subset of $S$, so its summation must converge.\u003c/p\u003e\n\u003cp\u003eSince each element of $A_n$ has a lower bound $1/n \u0026gt; 0$, the cardinality of $A_n$ must be finite. (Otherwise $\\sum A_n$ diverges.)\u003c/p\u003e","title":"Uncountable summation diverges"},{"content":"時間軸 2022/07/30 在 COSCUP 看到這間公司的攤位，覺得有趣就記下來了，也有填寫他們的表單 08/22 收到面試邀請 (標題其實是寫面試) 08/29 因為對方 HR 直接來電提醒我，我才想到要回覆，並且把履歷和成績單附上 09/07 線上一面 09/13 線上一點五面 09/25 邏輯推理測驗 09/26 線上二面 為什麼會來面這家公司 在 COSCUP 看到這間公司，覺得有點有趣，順手填了表單。\n一面 對一個有在刷題以及基本概念的人來說肯定不會太難的。題目大致上包含時間複雜度、空間複雜度、動態規劃、stack overflow、資料結構、堆疊 (heap)、物件導向（介面、抽象類別、泛型）、Library 和 framework 的差別、什麼是 race condition，如何解決等等。\n基本上我只有物件導向和 library 那邊答得比較差，因為物件導向的那些名詞我有一段時間沒碰了，我只大概知道什麼不能實體化，什麼可以寫實體函數，什麼一定要 override 等等。\n一點五面 這是人資部門親自來電跟我另外約的，目的是讓我瞭解公司的現況。\n這邊跟 CTO 聊了半小時，我記得聊天時對方有聊到他是林軒田教授的同學還是學弟，也有小聊一下這次暑期實習的狀況，有提及一些在那裡實習的同學。聊天的過程對方很有禮貌，把公司的專案、產品和成績一一簡介給我聽。過程中房東還打了兩通電話說要來修冷氣，讓對方 CTO 講話講到一半被打斷了一兩分鐘\u0026hellip;對對方很不好意思。\n邏輯推理測驗 邏輯推理測驗是在第二次面試前一天線上填測驗卷而已。就\u0026hellip;很簡單，我也不知道該下什麼評論。題目的形式大概就是「小明在小美和小華的中間，小華在小明和大明的中間」然後給幾個敘述句看哪個是對的，或者會問「你被一個歹徒用六發彈匣的左輪手槍抵著頭，其中兩發子彈是相鄰的，打兩發沒死人就放你走，如果第一發打出去你還活著，歹徒讓你選要不要重新轉動一次輪盤，你應不應該讓他重新轉動」的簡單貝氏定理問題。總之這邊花了25分鐘左右。\n二面 二面的時候也是蠻預期中的流程，對方請我自我介紹、講解專案。Coding interview 是簡單的模擬題，大致上是模擬一個撲克遊戲的洗牌和發牌，其中可以隨機一個整數，不能使用內建的 shuffle 函式。因為剛好上一次面試 Kronos 也有問到，我很快就寫出來了。接下來面試官問如果人數不能整除牌堆，要怎麼做到之後每次洗牌時丟掉的牌不會再被洗進去。\n解完之後大致上問了一下現在對方公司有沒有面臨什麼困難點，還有比較缺的人才和技術等等。\n跟面試官要了 feedback，是說我在這關 coding 沒什麼缺點，硬要挑剔的話就是，我很常有一些抓頭髮或者把手會擺在把臉擋住的地方，如果是現場面試的話會更明顯，對於管理出身的主管來說，可能會比較在意一點。這邊很感謝面試官給我的這些回饋，我以前沒想過視訊鏡頭的問題，在 mock 時也沒人想過。\n最後面試官也問了我這整個面試體驗如何。我是先問了一下為什麼會出這種題目，有沒有考慮出難一點的算法題等等。這邊面試官的回應是，這種題目是在測驗受試者有沒有把需求或邏輯用程式碼寫下來，以及程式碼的品質等等。對方有提到我會把程式碼整理的比較乾淨，有些人可能就會用 player1, player2, player3, player4 去直接命名那些變數。至於算法題的話，可能會有題目太抽象、敘述不太容易的問題。我也老實跟面試官說整個面試下來，滿分10分我可以給到8分或9分，沒什麼可以挑剔的。\n結果 Offer get\n說實話薪水跟我理想中有一段差距，不過那時我還沒有拿到更多 offer 所以沒什麼談判籌碼，也沒有想到會面到這一步。總之我有先說明我還有其他正在面試階段，還有計畫要面的公司。\n總結 整個面試流程沒什麼問題，但印象中好像沒遇到什麼 behavior question ，有點不太確定公司那邊會怎麼判斷一個人到底適不適合這個團隊。有可能是因為這邊流動率本來就偏高，公司方就沒那麼在乎這個人能不能長期留著？這只是我在寫這一篇時心中冒出的一些想法，不太確定是不是對的。\n公司那邊似乎也有很多不錯的福利，除了網站上有提及的零食櫃等等，在面談時因為我有提及我比較在乎的一些點，像是效率和同儕之間的學習，對方也有提到一些去上課可以報公帳，要回公司開分享會等等的有趣制度。\n據說 CMoney 也有暑期實習計畫，2022年這個暑假他們也有招一些台大學生去實習，但我就沒那麼確定學期中有沒有了。\n","permalink":"https://bearomorphism.pages.dev/posts/blog/interview-cmoney/","summary":"\u003ch2 id=\"時間軸\"\u003e時間軸\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e2022/07/30 在 COSCUP 看到這間公司的攤位，覺得有趣就記下來了，也有填寫他們的表單\u003c/li\u003e\n\u003cli\u003e08/22 收到面試邀請 (標題其實是寫面試)\u003c/li\u003e\n\u003cli\u003e08/29 因為對方 HR 直接來電提醒我，我才想到要回覆，並且把履歷和成績單附上\u003c/li\u003e\n\u003cli\u003e09/07 線上一面\u003c/li\u003e\n\u003cli\u003e09/13 線上一點五面\u003c/li\u003e\n\u003cli\u003e09/25 邏輯推理測驗\u003c/li\u003e\n\u003cli\u003e09/26 線上二面\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"為什麼會來面這家公司\"\u003e為什麼會來面這家公司\u003c/h2\u003e\n\u003cp\u003e在 COSCUP 看到這間公司，覺得有點有趣，順手填了表單。\u003c/p\u003e","title":"[面試心得] CMoney (全曜財經)"},{"content":"緣起 之前在COSCUP的攤位上看到這個公司正在招人，剛好那時去聊天時跟我聊的人是單車社的，他說那邊目前蠻缺人的可以試試看。後來我請朋友幫我修履歷，修到一個「可以看」的水平之後，跟那位單車社朋友要了一下內推，我就投上去了。\nOA 四題160分鐘，我覺得沒有沒有很難，花了100分鐘就寫得差不多了。最難的我覺得是C++題組，很多我沒研究過的物件導向用法。\n一面 有分兩個階段，分別有一位面試官。時長共兩個小時。\n第一個階段面試官一開始問了一些簡單算法題，大致上是在不同的條件下，怎麼去找兩個數列的對稱差。我自己覺得在這邊都答得算不錯。\n後來面試官跟我簡介了一些加密貨幣和真實世界貨幣的一些關係，還有一些金融術語，例如套利是無風險的賺錢等等。接著面試官要我用程式去模擬市場、加密貨幣和策略的操作。面試官問我語言要用C++還是Python，我選C++\n然後面試官就要我實作幾個class，但他用的constructor寫法我完全沒看過(事後據說是 uniform initialization)，再加上我沒有很確定當時面試官問的問題的詳細定義，讓我緊張到我的狀態不是很好，只能一半用猜的混過去，最後還因為沒有 iostream 編譯不過，我還被抓包我不太確定自己使用的編譯器標準是C++17, 14還是11，真的要尷尬死。總的來說，整個過程很卡，明明當下覺得只是一些簡單微積分的應用，卻因為各種名詞定義問題讓我需要去猜面試官到底什麼意思，雖然我當下有針對我不太確定的名詞定義和問題定義去問面試官，但我自己覺得問題沒有被解釋到，一直到這一關結束以後我才比較瞭解面試官要問什麼。我覺得我在這邊的表現蠻糟糕的。\n第二階段大部分是問數學問題，這邊就換了一個面試官。\n第一題是問要怎麼均勻的從一個陣列中取k個東西出來，其中有假設可以呼叫均勻的隨機亂數。因為我以前沒想過這個問題，我就先提了一個暴力解：每次隨機戳一個index看看以前有沒有戳過。面試官也跟我一起分析了這個方法的average case，這邊花了蠻多時間的，我太久沒有碰機率，所以很多東西只能暴力重推一次，連summation by parts 都忘了。這個方法推完以後，我也立刻想到最佳解（事後知道我想到的方法叫做洗牌算法），跟面試官解釋了這個算法以後，對方也說這應該也是最好的解。\n接著因為時間所剩不多，對方問了一個隨機過程的問題，題意大致上是說：假設有一個均勻公正銅板，每次翻到正面得一分，翻到背面失一分，可以翻無窮多個回合，翻到10分贏，-10分輸，那贏的機率是多少？如果-20分才輸，那贏的機率是多少？我其實前陣子有上 MIT OCW 隨便找一個隨機過程的課來聽，所以我有聽過這個問題，但是我忘記第二小題的答案為什麼會是2/3了。後來跟面試官討論以後，他有給我一個解釋，大意上是說期望值要是0，所以列方程式可以解0的機率，不過事後我自己覺得這個解釋怪怪的，我還不太能接受。\n結果 感謝信，沒有進第二輪面試QQ\n後記 因為我有在linkedIn上放上我的履歷還有 open to work ，所以還蠻常收到獵頭傳來的訊息。最近一次遇到的獵頭是幫quant的公司找人的，跟他通話以後獲得蠻多資訊，像是量化產業目前的現況，今年下半年有多慘，以及因為我還有兵役問題，這個兵役問題對我面試quant來說可能會是一個痛點。因為量化產業的 headcount 比較緊，需要比較確定我可以 on board 的時間，所以我的兵役的不確定性對資方來說可能就不太好；相對來說，backend這種職位全年有缺，就比較沒有差。這位獵頭後來也跟我建議說在兵單下來以後再去投量化研究員，對我會比較好。\n這位獵頭真的非常有職業道德，非常感謝他。\n反省 雖然結果不太好，這次的面試就算是一個經驗，以結束時間來算的話，畢竟這是我面試的第一份正職工作，也很感謝 Kronos 花時間跟我面試。\n這邊列幾個我如果可以回到面試前的時間點，我會做的事情：\n要多了解對方公司的產業現況。 行話也要多多瞭解。 刷一下機率和微積分考古題，把手感撿回來。 不要說自己會寫 C++，至少在我用這個語言做一個中小型專案以前，不要說自己會寫，儘管我都用這個語言刷題。 如果說自己會什麼語言，需要知道使用的版本。 ","permalink":"https://bearomorphism.pages.dev/posts/blog/interview-kronos/","summary":"\u003ch2 id=\"緣起\"\u003e緣起\u003c/h2\u003e\n\u003cp\u003e之前在COSCUP的攤位上看到這個公司正在招人，剛好那時去聊天時跟我聊的人是單車社的，他說那邊目前蠻缺人的可以試試看。後來我請朋友幫我修履歷，修到一個「可以看」的水平之後，跟那位單車社朋友要了一下內推，我就投上去了。\u003c/p\u003e","title":"[面試心得] Kronos"},{"content":"題目連結\n給定一棵樹上的兩個節點可以得到唯一的路徑，要找到路徑上節點總和最大的值\n先把路徑其中一個端點限制在根節點上，考慮這個根節點走出去的最大總和路徑，我暫且叫它「假最大總和」，如果算出來是負的就把它當作 0。對每個節點我們可以遞迴算這個值。\n注意到原本題目問的路徑沒有限制其中一個端點一定要是根節點，因此我們要對每個節點另外算一個東西：當前節點的值，加上左子樹的假最大總和，再加上右子樹的假最大總和。這算出來就會是以這個節點為最高點的最大總和路徑。我們對每個節點算好這個東西以後取最大值即可。\n以下是程式碼：\nclass Solution { private: int dfs(TreeNode *root, int \u0026amp;ret) { int left = root-\u0026gt;left ? dfs(root-\u0026gt;left, ret) : 0; int right = root-\u0026gt;right ? dfs(root-\u0026gt;right, ret) : 0; ret = max(ret, left + right + root-\u0026gt;val); return max(0, root-\u0026gt;val + max(left, right)); } public: int maxPathSum(TreeNode *root) { int ret = INT_MIN; dfs(root, ret); return ret; } }; ","permalink":"https://bearomorphism.pages.dev/posts/notes/leetcode-124/","summary":"\u003cp\u003e\u003ca href=\"https://leetcode.com/problems/binary-tree-maximum-path-sum/\"\u003e題目連結\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e給定一棵樹上的兩個節點可以得到唯一的路徑，要找到路徑上節點總和最大的值\u003c/p\u003e\n\u003cp\u003e先把路徑其中一個端點限制在根節點上，考慮這個根節點走出去的最大總和路徑，我暫且叫它「假最大總和」，如果算出來是負的就把它當作 0。對每個節點我們可以遞迴算這個值。\u003c/p\u003e","title":"Leetcode 124 Maximum Path Sum"},{"content":" ","permalink":"https://bearomorphism.pages.dev/calendar/","summary":"\u003ciframe src=\"https://calendar.google.com/calendar/embed?\u0026mode=WEEK\u0026title=Tim%20Hsiung%20(public)\u0026src=bear890707%40gmail.com\u0026ctz=Asia%2FTaipei\" style=\"border: 0\" width=\"100%\" height=\"800\" frameborder=\"0\" scrolling=\"no\"\u003e\u003c/iframe\u003e","title":""}]