[{"data":1,"prerenderedAt":1180},["ShallowReactive",2],{"blog-2025-review":3,"related-2025-review":119},{"id":4,"title":5,"author":6,"body":7,"category":105,"date":106,"description":107,"draft":108,"extension":109,"image":102,"meta":110,"navigation":111,"path":112,"seo":113,"stem":114,"tags":115,"__hash__":118},"blog/blog/2025-review.md","2025 Review","Ting Zhang",{"type":8,"value":9,"toc":101},"minimark",[10,14,17,34,37,46,49,59,66,69,72,79,84,87,92],[11,12,13],"p",{},"今天是我開始工作的第708天，今年順利從智電系統畢業，順利來到GC成爲比較正式一點的軟體工程師。",[11,15,16],{},"11月底Onboard到現在其實也一個月出頭而已，必須說這一個月的收穫是超乎我想像的，雖然我沒辦法說出具體的感覺，但我可以感受到我正身處一個“正確的環境”",[11,18,19,20,27,28,33],{},"今天同時看到我的兩位師傅 Alex & Danny 的",[21,22,26],"a",{"href":23,"rel":24},"https://www.linkedin.com/feed/update/urn:li:activity:7409841197114028032/",[25],"nofollow","文章1"," & ",[21,29,32],{"href":30,"rel":31},"https://chenghsuan.me/posts/imposter-syndrome",[25],"文章2","，都在談論冒牌者症候群，我其實一直都處在這樣的狀態，不過這讓我無時無刻都在思考我的不足之處並且補齊，以結果來說暫時是正向的，就先這樣子吧。",[11,35,36],{},"最後可以來一點明年的期許：",[38,39,40],"blockquote",{},[11,41,42],{},[43,44,45],"strong",{},"Mindset",[11,47,48],{},"主要是改進一些我自己很annoying我自己的點吧，例如",[50,51,52,56],"ul",{},[53,54,55],"li",{},"停止懷疑任何會阻止我變得更好的行為，例如我會花過多的時間去確認我腦子裡冒出來的問題是否是\"不笨的問題\"，然後再花時間琢磨要怎麼問，期許我可以就直接問，被罵了再說",[53,57,58],{},"感覺自己還是有一些心防，例如會有：“這個人會不會其實覺得我很爛？“的念頭，我認為更好的方法還是把這個防備卸下比較好，被背刺再說",[38,60,61],{},[11,62,63],{},[43,64,65],{},"Skills",[11,67,68],{},"問題很大，但也不大，相信繼續待在這個環境下，就算我不想進步也很難",[11,70,71],{},"除了保持現有的幾個主線 (主業 & Moniit & 每週讀書會)，時間允許之下希望自己可以週更這個blog，不管是心態上或是把在GC寫的文章搬來都好，最好是用英文寫",[38,73,74],{},[11,75,76],{},[43,77,78],{},"Languages",[50,80,81],{},[53,82,83],{},"Conversational English",[11,85,86],{},"作為剛換工作的藉口我已經停差不多兩個月了，哈，這個必須要做到，是通往國外工作的必須門票",[50,88,89],{},[53,90,91],{},"Japanese at least N3",[11,93,94,95,100],{},"看起來很難，不過根據我的基礎加上一點運氣(?)，參考 ",[21,96,99],{"href":97,"rel":98},"https://zh.wikipedia.org/zh-tw/%E6%97%A5%E6%9C%AC%E8%AF%AD%E8%83%BD%E5%8A%9B%E6%B5%8B%E8%AF%95",[25],"維基百科: 漢字圈考生學習時數","，絕對是有可能的。",{"title":102,"searchDepth":103,"depth":103,"links":104},"",2,[],"生活","2025-12-26","今天WFH，午餐吃新媛煮的泡菜鍋，讚",false,"md",{},true,"/blog/2025-review",{"title":5,"description":107},"blog/2025-review",[116,117],"Review","2025","a--I2MAWFPvTaWjOROqM2NxWOXW-vsLpx3tIeVCH4PA",[120,217,836],{"id":121,"title":122,"author":6,"body":123,"category":105,"date":208,"description":102,"draft":108,"extension":109,"image":102,"meta":209,"navigation":111,"path":210,"seo":211,"stem":212,"tags":213,"__hash__":216},"blog/blog/2026q1-insights.md","2026 工作與生活的一些 Insights & 隨筆",{"type":8,"value":124,"toc":202},[125,129,132,135,140,143,148,151,154,157,160,169,172,175,180,183,186,189,197],[126,127,128],"h2",{"id":128},"前一份工作教會我的事情",[11,130,131],{},"離職後大概過了4個月，偶爾從前同事口中得知前公司的經營狀況亮起紅燈，甚至各種「鬼故事」頻傳。",[11,133,134],{},"這讓我再度反思：在動盪的環境下，如何持續保有競爭力，並提高自己無可取代的價值，好讓未來的自己擁有更多選擇權？",[38,136,137],{},[11,138,139],{},"工作與生活的界線必須清晰",[11,141,142],{},"這不只是時間分配，更是心理邊界的建立。",[38,144,145],{},[11,146,147],{},"警惕家族企業的非理性因子",[11,149,150],{},"雖然凡事皆有例外，但這類企業往往容易將勞資權益與人情壓力混為一談。當極端狀況發生時，人情壓力往往會干擾對你的人生有重大影響的判斷。",[11,152,153],{},"我的底層邏輯：\n工作之於我，核心價值是獲取資源（賺錢）。我不排斥在職場建立友誼，但若某些因素挑戰到這個底層邏輯，我必須能毫不猶豫地做出選擇。ㄑ",[126,155,156],{"id":156},"對於目前工作的看法",[11,158,159],{},"目前的工作環境對我而言是一個絕佳的成長平台。同事與主管都蠻好相處的，最重要的是公司制度透明，績效與獎金機制明確。",[161,162,163,166],"ol",{},[53,164,165],{},"把握環境紅利：全力累積技術實力與產業經驗。",[53,167,168],{},"量化成長：透過明確的績效爭取實質回饋，包括金錢與技術上的（技術如何量化成長可以另外寫一篇文章聊）",[126,170,171],{"id":171},"接案",[11,173,174],{},"因緣際會下，今年應該有機會可以接到幾個副業專案，包含前後端開發與 AI 應用的接案機會。雖然這與我的職涯發展高度相關，但我也意識到一個現實問題：",[38,176,177],{},[11,178,179],{},"我的能量與注意力，是否足以支撐如此高強度的輸出？",[11,181,182],{},"在正職工作之外，我還需要處理接案、語言學習、結婚與人生規劃，所以 Overloading 是可預期會發生的。希望我可以撐過這段高壓期，只要撐過去，預期可收穫非常豐厚的成果。",[126,184,185],{"id":185},"對於生活的一些紀錄",[11,187,188],{},"這次過年回家，我也跟家人釐清了家裡的經濟狀況，也讓我持續反思未來 3-5 年的佈局。",[161,190,191,194],{},[53,192,193],{},"婚姻計畫的取捨\n我決定將結婚計畫適度推遲。如果婚禮的開銷會大幅影響現有的工作專注度或投資布局，那這件事就不是現階段的優先選項。理性的選擇，是為了讓未來更有保障。",[53,195,196],{},"日本移居計畫\n面對國際情勢的不確定性，加上對台灣經濟長期走勢的觀察，前往日本的計畫仍需持續推進。",[38,198,199],{},[11,200,201],{},"2026 是一個關鍵的轉折點，願我能在這場多線並進的計畫中可以保持清醒且穩定輸出。加油勒！",{"title":102,"searchDepth":103,"depth":103,"links":203},[204,205,206,207],{"id":128,"depth":103,"text":128},{"id":156,"depth":103,"text":156},{"id":171,"depth":103,"text":171},{"id":185,"depth":103,"text":185},"2026-02-20",{},"/blog/2026q1-insights",{"title":122,"description":102},"blog/2026q1-insights",[214,215],"Insights","Mood","WKk4DLUdFDA0KuDovfMPZtMC_vxlPwHgzE4WCvw_Vfo",{"id":218,"title":219,"author":6,"body":220,"category":399,"date":826,"description":827,"draft":108,"extension":109,"image":102,"meta":828,"navigation":111,"path":829,"seo":830,"stem":831,"tags":832,"__hash__":835},"blog/blog/2025q3q4-career.md","2025 軟體工程師面試經驗",{"type":8,"value":221,"toc":800},[222,225,228,231,234,238,252,255,269,272,280,283,286,290,293,296,307,310,314,317,320,323,327,330,333,336,340,343,346,373,376,378,381,385,389,397,400,403,405,409,412,422,425,430,447,452,463,469,471,475,478,500,503,508,511,522,527,544,549,554,557,560,562,566,569,586,589,594,599,604,609,614,619,627,632,634,638,641,654,657,663,669,674,688,690,694,697,702,705,710,744,747,750,752,755,758,761,778,780,784],[126,223,224],{"id":224},"前言",[11,226,227],{},"嗨，大家好，我是Ting，是一名全端工程師。\n這篇文是寫給想要轉職工程師的你，希望透過我的經驗分享能對你有幫助。",[11,229,230],{},"我原本在智電系統工作，是一個新創能源公司，除了web相關開發以外，我也投入非常多時間在能源相關的業務邏輯研究與開發，但在工作一年半以後，我認為我對能源相關的業務邏輯已經沒有太大的興趣，工作內容也漸漸被甲方的客製化需求給淹沒，所以我決定離職。",[11,232,233],{},"做這個決定主要有以下考量",[235,236,237],"h3",{"id":237},"目標",[50,239,240,243,246,249],{},[53,241,242],{},"更明確的職涯目標",[53,244,245],{},"更高的薪資成長(或是說更穩定)",[53,247,248],{},"WFH或自由的工作時間",[53,250,251],{},"未來有規劃國外工作",[235,253,254],{"id":254},"離職的好處",[50,256,257,260,263,266],{},[53,258,259],{},"可以挑選公司，讓工作內容更集中在開發",[53,261,262],{},"學習新技術，使用一樣的時間來學習更多東西",[53,264,265],{},"作為通往國外工作的敲門磚，必須提升履歷價值，至少到一間有聽過的公司",[53,267,268],{},"更有機會WFH，自由安排自己的時間，原本需要耗費大量通勤時間",[235,270,271],{"id":271},"離職的壞處",[50,273,274,277],{},[53,275,276],{},"原公司是正在IPO階段，離職後需要放棄RSU，算是一筆不小的機會成本",[53,278,279],{},"離開舒適圈，其實原本的工作環境除了需要每日通勤以外，工作內容不太會有人管",[281,282],"hr",{},[126,284,285],{"id":285},"準備",[235,287,289],{"id":288},"_1-程人頻道ted-協助","1. 程人頻道Ted 協助",[11,291,292],{},"首先這篇文章必須 S/O 給程人頻道的Ted，可以說這個計劃沒有他的話就不會這麼順利。\n原本就有在聽Ted的Podcast，他也一直有在提供想要轉換跑道的工程師協助，剛好在我下定決心要轉職以後，\n他上一期的諮詢服務剛結束一陣子，在招下一期的工程師，我把我的履歷與動機整理一下以後提供，就這麼被選上了。",[11,294,295],{},"這個計劃主要包含每週一小時的諮詢時間直到轉職成功，內容主要有",[50,297,298,301,304],{},[53,299,300],{},"履歷健檢",[53,302,303],{},"模擬面試 (BQ / Leetcode / System Design)",[53,305,306],{},"檢視準備方向是否正確",[11,308,309],{},"其實Ted的協助不僅僅是單純轉職而已，我們幾乎花了一樣多的時間在討論與探索“我真正想要的職涯規劃”，透過他的經驗，與整個計劃的進行，我也更聚焦我的職涯目標。",[235,311,313],{"id":312},"_2-專案實作-moniit","2. 專案實作 - Moniit",[11,315,316],{},"延續上一點，除了每週一小時的諮詢以外，程人頻道也一直有在經營社群開發的項目，剛好他們近期規劃的資產管理App - Moniit正在開發早期階段，透過這個機會我也幾乎參與了這個產品從0開始的開發過程，",[11,318,319],{},"我主要參與了後端開發，第一次使用FastAPI作為主要框架，且實戰了System Design，如何根據實際狀況來取捨設計，怎麼樣算是好的設計，怎麼樣算是Over Design。",[11,321,322],{},"並且這個專案有非常完善的K8s設計，包括但不限於helm, hpa, IaC框架等，這些都是我第一次接觸，透過實戰我對於k8s以及gcp相關雲生態系有更深入的了解。",[235,324,326],{"id":325},"_3-leetcode","3. leetcode",[11,328,329],{},"我leetcode只寫了166題 (E:72/M:82/H:12)，主要參考Blind 75跟Neetcode 150，如果對該演算法不熟，我會先把Hello Algo相關的文章看完，然後練習，最後再找Neetcode的影片來複習以及參考他的解題思路，慢慢把整個解題思維培養起來。",[11,331,332],{},"但相較於大部分的工程師，我覺得我在Leetcode的投入相對較少，一部分是因為瞄準公司的是台商居多，而不是Fang等一線外商，另一部分則是我花了更多時間在實際開發專案來獲取實務經驗。",[11,334,335],{},"我認為台商的OA的題目好像沒有遇到真的很難的，以及面試過程也很少遇到演算法題目，基本上都是履歷相關的問答，但若是要以更高水準的公司為目標的話，我認爲還需要投入更多的時間與精力。",[235,337,339],{"id":338},"_4-履歷","4. 履歷",[11,341,342],{},"可以參考標準的Latex模板，基本上是分成Work Experience、Side Projects、Education、Technical Skills四個部分。",[11,344,345],{},"各個部分我認為的重點",[50,347,348,356,367,370],{},[53,349,350,351],{},"General\n",[50,352,353],{},[53,354,355],{},"根據職位寫公版的履歷，再根據投遞目標的JD來微調",[53,357,358,359],{},"Work Experience\n",[50,360,361,364],{},[53,362,363],{},"強調技術相關的經驗，並且盡量量化指標(ex: rps, qps, 節省多少時間, 節省多少成本等等)",[53,365,366],{},"若有PM相關經驗，我覺得是個加分",[53,368,369],{},"Education: 簡單即可，基本上只看畢業校系，除非你的專案或論文與JD高度相關，不然我感覺放了只是佔版面而已",[53,371,372],{},"Technical Skills: 盡量跟JD上提到的技術棧相同或高度相關",[11,374,375],{},"以現今的web相關工作來看，除了前後端與資料庫技術棧以外，Docker與K8s基本上一定會出現在JD的Preferred Skills中，面試中如果可以帶一下或是有被問到並且回答的不錯是個大加分，所以可以的話一定要補一下相關知識。",[281,377],{},[126,379,380],{"id":380},"面試",[235,382,384],{"id":383},"_1-cardlytics-full-stack-engineer","1. Cardlytics Full Stack Engineer",[386,387,388],"h4",{"id":388},"時程",[50,390,391,394],{},[53,392,393],{},"D+0: 投遞履歷",[53,395,396],{},"D+2: Quick chat with Manager",[386,398,399],{"id":399},"心得",[11,401,402],{},"這是我第一個獲得投遞履歷有後續的公司，但這間對我來說實在是越級打怪，需要的職位要求以及語言我都還無法勝任，但也很趕謝Manager還是跟我聊了30分鐘，且知道我的狀況後給了我一些方向與建議，也不吝於分享Cardlytics的產品。",[281,404],{},[235,406,408],{"id":407},"_2-捷思科技-full-stack-engineer-偏前端","2. 捷思科技 - Full Stack Engineer (偏前端)",[386,410,388],{"id":411},"時程-1",[50,413,414,416,419],{},[53,415,393],{},[53,417,418],{},"D+7: 現場上機測驗 + 面試",[53,420,421],{},"D+14: Reject",[386,423,399],{"id":424},"心得-1",[11,426,427],{},[43,428,429],{},"Pair Programming 題目：",[161,431,432,435],{},[53,433,434],{},"寫一個翻牌互動介面 (HTML/CSS hover 翻轉效果)",[53,436,437,438,442,443,446],{},"不使用 ",[439,440,441],"code",{},"Promise.all"," 實作一個 ",[439,444,445],{},"PromiseAllLike"," function",[11,448,449],{},[43,450,451],{},"Behavior Question：",[161,453,454,457,460],{},[53,455,456],{},"目前工作遇過最困難的難題以及如何解決",[53,458,459],{},"如果接手 co-workers 的程式很糟的話，會怎麼處理",[53,461,462],{},"若工作上遇到某個流程很冗長很麻煩的話，會怎麼處理",[11,464,465,468],{},[43,466,467],{},"總結：","\n一間小公司，要找偏前端的，覺得我的技術棧並不符合，算是個面試經驗。",[281,470],{},[235,472,474],{"id":473},"_3-trend-micro","3. Trend Micro",[386,476,388],{"id":477},"時程-2",[50,479,480,482,485,488,491,494,497],{},[53,481,393],{},[53,483,484],{},"D+5: 收到 Online Assignment 邀請",[53,486,487],{},"D+11: 完成 Online Assignment",[53,489,490],{},"D+14: 一面",[53,492,493],{},"D+32: 收到二面邀請",[53,495,496],{},"D+39: 二面",[53,498,499],{},"D+46: 寄信詢問未回，無聲卡",[386,501,399],{"id":502},"心得-2",[11,504,505],{},[43,506,507],{},"一面內容：",[11,509,510],{},"自我介紹：",[50,512,513,516,519],{},[53,514,515],{},"學經歷",[53,517,518],{},"工作經驗",[53,520,521],{},"Side Project",[11,523,524],{},[43,525,526],{},"技術問題：",[50,528,529,532,535,538,541],{},[53,530,531],{},"RESTful API 用過哪些 Method? (GET, POST, PUT, DELETE)",[53,533,534],{},"前端或後端有無 test 相關經驗？",[53,536,537],{},"協作相關經驗",[53,539,540],{},"Skillset 應用經驗",[53,542,543],{},"開發遇到最大的困難",[11,545,546],{},[43,547,548],{},"二面：",[50,550,551],{},[53,552,553],{},"一樣是根據履歷問答居多，還有畫參與過的專案的架構圖",[386,555,556],{"id":556},"總結",[11,558,559],{},"隔那麼久是因為中間家人生病需要照顧，所以耽誤了一些時間，趨勢那邊也表示體諒，配合我改期。\n趨勢應該是我原本目標的其中一間，雖然薪水可能開不高，但是WFH政策以及公司地理位置非常加分。",[281,561],{},[235,563,565],{"id":564},"_4-gilacloud-backend-集雅科技","4. GilaCloud Backend / 集雅科技",[386,567,388],{"id":568},"時程-3",[50,570,571,574,577,580,583],{},[53,572,573],{},"D+0: 獵頭連繫",[53,575,576],{},"D+3: 確認投遞",[53,578,579],{},"D+8: 完成 OA",[53,581,582],{},"D+49: 一面",[53,584,585],{},"D+66: Reject",[386,587,399],{"id":588},"心得-3",[11,590,591],{},[43,592,593],{},"Coderbyte OA：",[50,595,596],{},[53,597,598],{},"難度約 Easy ~ Medium",[11,600,601],{},[43,602,603],{},"一面 (Online Interview)：",[11,605,606],{},[43,607,608],{},"技術主管提問：",[50,610,611],{},[53,612,613],{},"履歷相關題目（內容沒印象了）",[11,615,616],{},[43,617,618],{},"人資提問：",[50,620,621,624],{},[53,622,623],{},"基本 BQ",[53,625,626],{},"詢問公司內是否有讀書會等進修機制，被洗臉",[11,628,629,631],{},[43,630,467],{},"\n中間隔那麼久應該是因為我OA分數勉勉強強過關而已，所以等前面的人都面完了才輪的到我。\n技術主管雖然對能源領域不懂，但問的還蠻深入的，整體感覺不錯，但人資面試給我蠻扣分的印象。",[281,633],{},[235,635,637],{"id":636},"_5-crescendo-lab","5. Crescendo Lab",[386,639,388],{"id":640},"時程-4",[50,642,643,645,648,651],{},[53,644,393],{},[53,646,647],{},"D+1: 收到一面邀請",[53,649,650],{},"D+7: 一面 (CTO / HR quick call)",[53,652,653],{},"D+10: Reject",[386,655,656],{"id":656},"面試過程",[11,658,659,662],{},[43,660,661],{},"Tech Lead","\n主要詢問了我目前公司的業務內容與產品細節，以及在專案中遇到的挑戰和我的解決經驗。技術面則聚焦於過往處理大數據、API 效能優化（例如如何調整資料庫 index）、與太陽能管理系統相關的技術細節（如數據量、QPS、缺值補償等）。也有探討到專案部署、監控、以及是否運用 AI 工具提升效率等經驗，整體問題偏重於實務經驗及技術應用。",[11,664,665,668],{},[43,666,667],{},"HR","\nHR 主要詢問了一些基本背景與求職動機，像是過去的經歷、為何想換工作、對公司的了解與興趣，以及對未來工作環境和待遇的期待，同時也有聊到目前是否有使用 AI 工具和如果錄取後的交接安排等。",[11,670,671],{},[43,672,673],{},"整體感覺：",[50,675,676,679,682,685],{},[53,677,678],{},"遇到最困難/最挫折的工作經驗，可以再想好一點的故事",[53,680,681],{},"DB Indexing 相關知識需補齊",[53,683,684],{},"PostgreSQL 相關語法與知識需補齊",[53,686,687],{},"錄取機會不高，就算錄取，薪水應該也會蠻低",[281,689],{},[235,691,693],{"id":692},"_6-blockriver","6. BlockRiver",[386,695,388],{"id":696},"時程-5",[50,698,699],{},[53,700,701],{},"D+0: HR Quick Call",[386,703,399],{"id":704},"心得-4",[11,706,707],{},[43,708,709],{},"HR Quick Call 問題：",[161,711,712,715],{},[53,713,714],{},"Introduce yourself",[53,716,717,718],{},"Technique questions:\n",[50,719,720,728,736],{},[53,721,722,723],{},"List 3 methods to communicate between two processes\n",[50,724,725],{},[53,726,727],{},"答案參考：Pipes、Shared Memory、Message Queues、Sockets、Signals、Redis (in-memory, web-based)",[53,729,730,731],{},"List 6 data containers in STL\n",[50,732,733],{},[53,734,735],{},"參考：vector, list, deque, set, map, unordered_map 等",[53,737,738,739],{},"Insert and find time complexity for set\n",[50,740,741],{},[53,742,743],{},"答案：O(log n), O(log n)（註：回答 O(1), O(1) 可能不正確，set 是紅黑樹實作）",[386,745,556],{"id":746},"總結-1",[11,748,749],{},"全英文面試，但我英文講感覺不太順，HR應該是香港或是中國人，直接問我要不要說中文...\n感覺是透過HR快速篩選履歷，照著問題問，我想要請他多敘述一下問題(STL是啥真的沒聽過)都不理睬。",[281,751],{},[126,753,556],{"id":754},"總結-2",[11,756,757],{},"細算下來這半年以來我投了大概接近200個履歷（中間因為家人生病有暫停一個月），有後續的大概只佔不到10%，但一部分是因為我認為我需要累積面試經驗才有辦法在我真正想去的公司的面試中表現得更好，所以基本上職位技術棧有對到我就投了，不管薪資待遇等其他事項，若是你認為你的面試經驗已經充足，也可以指投你想去的公司就好。",[235,759,760],{"id":760},"建議",[50,762,763,766,769,772,775],{},[53,764,765],{},"一定要嘗試將目前有參與過的專案，或是Side Projects嘗試繪製成架構圖，並且有辦法在面試的時候從0開始邊畫邊講解為何要選用這個，以及這個設計的優缺點或是取捨等。",[53,767,768],{},"一直投履歷就對了，累積面試過程的經驗我覺得是一條必經之路，可以檢視目前的準備是否充足，也可以調整自己在面試過程中的問答表現。",[53,770,771],{},"面試趣以及LinkedIn Premiere都可以直接課，在密集投遞履歷的階段幫助很大。",[53,773,774],{},"從面試官的角度來思考他們想要怎麼樣特色的人，切記面試的時候需要給面試官”你是來提供價值，是來輸出的“的印象，若有機會的話可以自己延伸一些技術話題，\n只是單純問答的話蠻可惜的，因為一方面對方也是在看未來是否可以跟你順利的合作。",[53,776,777],{},"常見的BQ問題一定要先想好一個故事，不要現場遇到問題才想，通常會講到爆掉，或是不那麼適合的回覆。",[281,779],{},[126,781,783],{"id":782},"reference","Reference",[161,785,786,793],{},[53,787,788],{},[21,789,792],{"href":790,"rel":791},"https://techporn.io/podcast/052c5980-7a04-4bd3-9976-24cf8aeecdc6",[25],"程人頻道EP263",[53,794,795],{},[21,796,799],{"href":797,"rel":798},"https://moniit.com/",[25],"資產管理App - Moniit官方網站",{"title":102,"searchDepth":103,"depth":103,"links":801},[802,808,814,822,825],{"id":224,"depth":103,"text":224,"children":803},[804,806,807],{"id":237,"depth":805,"text":237},3,{"id":254,"depth":805,"text":254},{"id":271,"depth":805,"text":271},{"id":285,"depth":103,"text":285,"children":809},[810,811,812,813],{"id":288,"depth":805,"text":289},{"id":312,"depth":805,"text":313},{"id":325,"depth":805,"text":326},{"id":338,"depth":805,"text":339},{"id":380,"depth":103,"text":380,"children":815},[816,817,818,819,820,821],{"id":383,"depth":805,"text":384},{"id":407,"depth":805,"text":408},{"id":473,"depth":805,"text":474},{"id":564,"depth":805,"text":565},{"id":636,"depth":805,"text":637},{"id":692,"depth":805,"text":693},{"id":754,"depth":103,"text":556,"children":823},[824],{"id":760,"depth":805,"text":760},{"id":782,"depth":103,"text":783},"2025-11-13","Software engineer interview experience in 2025.",{},"/blog/2025q3q4-career",{"title":219,"description":827},"blog/2025q3q4-career",[833,834,117],"Interview","Career","dIQ4AxjCw-2ZyrTZoptA-22qc9EV3GQKUOWsMTIFHmE",{"id":837,"title":838,"author":6,"body":839,"category":1163,"date":1164,"description":1165,"draft":108,"extension":109,"image":1166,"meta":1167,"navigation":111,"path":1168,"seo":1169,"stem":1170,"tags":1171,"__hash__":1179},"blog/blog/20260304-troublemaker.md","關於我一天在公司 AWS 開發帳號花掉 14000 鎂的那回事",{"type":8,"value":840,"toc":1145},[841,848,851,855,862,865,874,883,890,893,907,910,915,918,921,928,931,934,937,941,944,948,951,956,965,977,980,988,993,996,999,1004,1007,1014,1019,1023,1026,1037,1041,1044,1051,1058,1061,1064,1067,1070,1073,1076,1079,1082,1086,1089,1092,1098,1102,1105,1116,1120,1123,1130,1133,1136,1139,1142],[11,842,843,844,847],{},"身為工程師，你可能聽過同事不小心把 Production 資料庫砍了、或是忘記關 EC2 多燒了幾百塊。但你有聽過",[43,845,846],{},"用雲服務一天燒掉 14,000 美金","的嗎？",[11,849,850],{},"沒錯，這件事發生在我身上...嗎？",[126,852,854],{"id":853},"tldr","TL;DR",[11,856,857,858,861],{},"在公司開發帳號 survey AWS Bedrock AgentCore Policy 功能，試用了 Cedar Policy Generator。幾天後帳單突然出現一筆 ",[43,859,860],{},"$14,000+ USD 的單日費用","。經過 CloudTrail 排查確認是 Cedar Generator 觸發的異常計費，最終 AWS 承認是 Bedrock 端的計費 bug，修復並校正了帳單。",[126,863,864],{"id":864},"事發經過",[11,866,867,868,873],{},"3/4 我因為看到 ",[21,869,872],{"href":870,"rel":871},"https://aws.amazon.com/bedrock/agentcore/",[25],"AgentCore"," 新 Feature - Policy 剛上線，所以需要 Survey 一下。",[11,875,876,877,882],{},"AgentCore Policy 讓你可以用 ",[21,878,881],{"href":879,"rel":880},"https://www.cedarpolicy.com/",[25],"Cedar"," 語言來定義 Agent 的授權策略，控制 Agent 能存取哪些工具和資源。Cedar 是 AWS 開源的授權語言，語法可讀性很高，設計上是要讓非工程師也能看得懂的那種。",[11,884,885,886,889],{},"而 AgentCore 很貼心地提供了一個 ",[43,887,888],{},"Natural Language Policy Generator","——你用自然語言描述你要的權限規則，它就幫你生成對應的 Cedar Policy。聽起來很 User-friendly 對吧？",[11,891,892],{},"我就照著文件走了一遍流程：",[161,894,895,898,901,904],{},[53,896,897],{},"建了一個 Policy Engine",[53,899,900],{},"試了幾次 Cedar Policy Generator（用自然語言描述轉成 Cedar）",[53,902,903],{},"確認功能可以正常運作",[53,905,906],{},"收工，覺得這功能還不錯",[11,908,909],{},"整個過程大概就一兩個小時，正常的 survey 流程。",[11,911,912],{},[43,913,914],{},"然後就沒有然後了——直到五天後。",[126,916,917],{"id":917},"帳單爆炸",[11,919,920],{},"後來請假看完中華隊在 WBC 的比賽，打贏韓國那場實在很感動，回來上班的第一天，3/9 下午，Slack突然被狂 tag，我被我們公司的 Billing Manager & Team Lead 問為何會有一筆費用產生，我也趕緊地打開CE，一個讓我愣住的數字：",[38,922,923],{},[11,924,925],{},[43,926,927],{},"3/4 單日Agentcore產生了 $14,000+ USD的費用",[11,929,930],{},"我先是以為自己眼花了。重新整理頁面，數字還在那裡。",[11,932,933],{},"完了... 哪裡搞錯了吧？",[126,935,936],{"id":936},"排查過程",[235,938,940],{"id":939},"step-1先開-support-ticket","Step 1：先開 Support Ticket",[11,942,943],{},"不管三七二十一，先開 AWS Support Ticket 回報異常帳單。把時間範圍、帳號資訊、異常金額都附上去，讓 Support 那邊開始調查。",[235,945,947],{"id":946},"step-2自己也同步排查","Step 2：自己也同步排查",[11,949,950],{},"等 Support 回覆的同時，我也開始自己排查紀錄。",[11,952,953],{},[43,954,955],{},"確認 AgentCore Policy 的收費機制",[11,957,958,959,964],{},"根據 ",[21,960,963],{"href":961,"rel":962},"https://aws.amazon.com/bedrock/agentcore/pricing/",[25],"AgentCore 定價頁面","，Policy 的計費主要是：",[50,966,967,974],{},[53,968,969,970,973],{},"Cedar Policy Generator：",[43,971,972],{},"按 input token 數量計費","（每 1,000 tokens）",[53,975,976],{},"Policy Engine 的 Authorization 請求：按請求數計費",[11,978,979],{},"稍微思考一下：",[161,981,982,985],{},[53,983,984],{},"我當天的使用量根本不可能撐到這個金額。就算我瘋狂打 Generator 也打不出 $14,000，同事跟我說 Billing 那邊顯示 Policy 使用了 109 1M Tokens (接近 1.1 億，我甚至不知道一天要怎麼用掉那麼多 Tokens...)。",[53,986,987],{},"我的 Policy Engine 並沒有 Attach Gateway，所以也沒有真正的使用 Policy 這個 Feature。",[11,989,990],{},[43,991,992],{},"確認 Runtime 沒有產生額外費用",[11,994,995],{},"AgentCore Runtime 是按 CPU 和記憶體的秒級消耗來計費的。我需要確保沒有遺留的 Runtime 在背景持續運作，或者跟 Gateway 掛鉤產生連鎖費用。",[11,997,998],{},"檢查結果：沒有任何遺留資源在跑。",[11,1000,1001],{},[43,1002,1003],{},"CloudTrail",[11,1005,1006],{},"我拉出了那段時間的 CloudTrail 紀錄，逐筆檢查跟 AgentCore 相關的 API 呼叫。",[11,1008,1009,1010,1013],{},"最終鎖定是 ",[439,1011,1012],{},"StartPolicyGeneration"," 這個 API 呼叫。從紀錄上看，我確實只有呼叫了3次，請求量完全不合理對應到那個帳單金額。",[11,1015,1016],{},[43,1017,1018],{},"結論：應該不是我的使用量有問題，是計費那邊有問題。",[235,1020,1022],{"id":1021},"step-3跟-support-同步","Step 3：跟 Support 同步",[11,1024,1025],{},"我把 CloudTrail 的排查結果整理好，回覆到 Support Ticket 上。附上了：",[50,1027,1028,1031,1034],{},[53,1029,1030],{},"明確的 API 呼叫時間和次數",[53,1032,1033],{},"計費金額的不合理性說明",[53,1035,1036],{},"我這邊已經確認沒有遺留資源",[235,1038,1040],{"id":1039},"step-4aws-確認是計費-bug","Step 4：AWS 確認是計費 Bug",[11,1042,1043],{},"AWS Support 將 case 轉給了 Bedrock 團隊。Bedrock 團隊調查後確認：",[38,1045,1046],{},[11,1047,1048],{},[43,1049,1050],{},"Cedar Policy Generator 存在計費問題，導致實際計費金額遠超正常使用量應有的費用。",[11,1052,1053,1054,1057],{},"他們修復了這個計費 bug，並且",[43,1055,1056],{},"校正了帳單","。",[11,1059,1060],{},"結案。",[126,1062,1063],{"id":1063},"心理狀態",[11,1065,1066],{},"看到 $14,000 這個數字的時候，腦袋裡跑過各種最壞的劇本——會不會要自己賠？這是我好幾個月的薪水總和，光想就覺得可怕。",[11,1068,1069],{},"即使理性上告訴自己先查原因再說，甚至基本上確定不是我這邊的問題，但焦慮感還是壓不住。",[11,1071,1072],{},"這幾天嚴重睡眠不足，每天躺在床上腦袋還在轉「到底是哪裡出問題」。腸胃也跟著出狀況，一直拉肚子。壓力對身體的影響比我想像中來得直接。",[11,1074,1075],{},"最後當 CloudTrail 的證據越來越明確指向計費問題，Support 也確認 Bedrock 團隊發現問題並正在進行修復，我的心情才開始慢慢平復。",[126,1077,1078],{"id":1078},"事後反思",[11,1080,1081],{},"雖然這次最後證實是 AWS 的計費 bug，但整個事件讓我學到了很多。",[235,1083,1085],{"id":1084},"_1-工作紀錄真的很重要","1. 工作紀錄真的很重要",[11,1087,1088],{},"當下會感到慌張的原因，很大一部分來自 Context 不足，一來我不確定 Agentcore Policy 是如何計費，為何可以用到那麼貴？二來我不知道我5天前具體做了什麼操作。",[11,1090,1091],{},"如果我當初 survey 的時候沒有留下操作紀錄，排查的時候會更加困難。CloudTrail 能幫你查到 API 呼叫，但你自己當時在做什麼、為什麼做，這些 context 只有你自己知道。",[11,1093,1094,1097],{},[43,1095,1096],{},"養成習慣：每次操作不熟的雲服務時，簡單記錄一下你做了什麼。"," 不需要多詳細，一個簡單的筆記或是 Slack 訊息就夠了。關鍵時刻這些紀錄可以救你一命。",[235,1099,1101],{"id":1100},"_2-使用前搞懂計費方式","2. 使用前搞懂計費方式",[11,1103,1104],{},"這聽起來像廢話，但真的很多人（包括我）在 survey 新服務的時候會直接跳進去玩，不會先仔細看定價頁面。",[50,1106,1107,1110,1113],{},[53,1108,1109],{},"開始 survey 前，先看過定價頁面",[53,1111,1112],{},"特別注意按量計費的服務，搞清楚「量」是怎麼定義的",[53,1114,1115],{},"開發帳號最好設定 Budget Alert，超過閾值自動通知",[235,1117,1119],{"id":1118},"_3-先了解公司的處理流程","3. 先了解公司的處理流程",[11,1121,1122],{},"事發的時候，我其實不太確定公司對這種事情的態度和處理方式。後來跟主管報告時，主管第一句話就是：",[38,1124,1125],{},[11,1126,1127],{},[43,1128,1129],{},"「不可能叫你賠的，先搞清楚狀況就好。」",[11,1131,1132],{},"這句話讓我放下了很大的心理負擔。每間公司的文化不同，但我想大部分公司都不會因為合理操作導致的意外費用而讓員工賠償。",[126,1134,1135],{"id":1135},"結語",[11,1137,1138],{},"回頭看這件事，蠻慶幸最後不是我的問題，也慶幸公司的主管很 Nice",[11,1140,1141],{},"這次經歷讓我建立起了面對雲端成本異常的 SOP。以前覺得帳單管理是 FinOps 團隊的事，現在覺得每個會碰到雲服務的工程師都應該有基本的成本意識。",[11,1143,1144],{},"題外話，這讓我想到我大學時期第一次買股票的時候，我買了3股台積電花了大概 2000塊吧，當時每天看著損益正負三四百塊就能很影響我的心情，影響我做事與學習的效率，直到今天可能每天的損益就是一個月的薪水，我還是照常做著自己的事情。我想有了這次經驗，肯定能讓我在未來遇到類似的事情的時候心態更穩健吧。",{"title":102,"searchDepth":103,"depth":103,"links":1146},[1147,1148,1149,1150,1156,1157,1162],{"id":853,"depth":103,"text":854},{"id":864,"depth":103,"text":864},{"id":917,"depth":103,"text":917},{"id":936,"depth":103,"text":936,"children":1151},[1152,1153,1154,1155],{"id":939,"depth":805,"text":940},{"id":946,"depth":805,"text":947},{"id":1021,"depth":805,"text":1022},{"id":1039,"depth":805,"text":1040},{"id":1063,"depth":103,"text":1063},{"id":1078,"depth":103,"text":1078,"children":1158},[1159,1160,1161],{"id":1084,"depth":805,"text":1085},{"id":1100,"depth":805,"text":1101},{"id":1118,"depth":805,"text":1119},{"id":1135,"depth":103,"text":1135},"技術","2026-03-18","Survey AWS AgentCore Policy完，過了幾天以後才發現帳單噴了14000...","/images/blog/20260304-troublemaker/banner.png",{},"/blog/20260304-troublemaker",{"title":838,"description":1165},"blog/20260304-troublemaker",[1172,1173,1174,1175,1176,1177,1178],"AWS","雲端","成本控管","經驗分享","踩雷","DevOps","雲服務","6QyxVCpq8RjfovhyvoS0butlFVU7bQKJ1pfTGyL4M1Q",1774237782446]