成  就  一  直  前  進  的  你

成  就  一  直  前  進  的  你

loanding...

首頁>求職面試>資工新手如何有效率的準備面試 (coding篇)?|應徵技巧分享

資工新手如何有效率的準備面試 (coding篇)?|應徵技巧分享

無論你正面臨面試挑戰,或是在職場中努力站穩腳步,這裡整理了實用經驗與建議,協助你釐清方向、提升應對力,並在每個職涯轉折點做出更明智的選擇。

資工新手如何有效率的準備面試 (coding篇)?|應徵技巧分享
share

book 文章目錄

arrow_uparrow_up
share
圖片來源: freepik   文/DCARD 網友   OK恭喜你,你用上一篇的方法過了履歷篩選,得到了面試機會。但別高興得太早,現在才是真正的考驗。 我以前一直覺得軟體工程師拿的薪水實在太高了。為什麼一個沒經驗的大學生,剛剛畢業就可以拿到一年20幾萬美金的總薪資(底薪+股票+分紅+簽約金)?當然因素有很多(市場供需等等),但其中的原因可能是資工的面試門檻很高、準備起來真的很累。在參與過上百場面試(面試者大部分都是Senior Engineer以上)後,我發現真的不是每個工程師都擅長Coding面試(好的面試能力當然也不等於好的工作能力)。以下分享如果你是資工新手,該怎麼準備技術面試最有效率。 🛣「Coding面試怎麼準備?努力要有方向」 「多刷題」當然是解答,因為如果面試官問到你熟悉的題目,就萬事大吉了。但「怎麼刷?」「刷什麼?」「怎麼堅持?」才是關鍵。很多人做題沒方向、覺得太累,到最後就覺得太困難而放棄。 開始之前,我想提幾個小細節: 1. 用Python:它可以應對所有Leetcode傳統題目,而且如果你被問到functional programming languages的問題,也可以輕鬆面對。我還在用Java準備的時候,有次被問到個邏輯不難、但非常繁瑣的題目,寫了20幾行,耗了很多時間debug才成功運行,而面試官在30分鐘內問了5個類似問題,最後就沒時間寫完。後來我發現其實用functional programming languages(如Python)可能當時那些題寫3-5行就可以,從此我決定只用Python面試。(註:這裡用詞可以再更精確 見 b4 b5-2 ) 2. 不用執著Leetcode Rating/Contest: 如果Leetcode是你的興趣那我沒話說,但如果只是為了準備面試,沒必要去追求Leetcode Rating或參加比賽,這只會給你沒必要的壓力。 3. 要做可持續性的努力: 能夠堅持才是最重要的,很多人一開始興沖沖,打算一天刷個20題,但這樣高強度訓練,沒過幾天就受不了。不如找到你適合的步伐,不要跟別人比較一天刷幾題,能夠走到終點才是最重要的。 🔨「如何開始?打好基本功」 如果你不知道怎麼開始,我建議先複習基本概念,先求廣再求深。推薦Leetcode有個很好的Crash Course(Leetcode付費會員可以免費看): https://leetcode.com/explore/featured/card/leetcodes-interview-crash-course-data-structures-and-algorithms/ 🎯「針對性刷題」 2016-2017年我大四時,Leetcode就是400多題,其實拼一下,卯起來刷完不是太困難的事。在我面試巔峰時,甚至面試官沒說完題目,我腦中就像HashMap,直接可以map到解答。 然而看看今天的Leetcode,將近3,000題,要刷完+非常熟練,實在是癡人說夢。但慶幸的是,現在絕大多數的面試官,都是Leetcode小於1,000題的年代的人,所以其實也沒必要全部刷完,把時間花在高頻的題目就好。 買了Leetcode 的付費會員,可以看到熱門公司的高頻題,這絕對是非常值得的投資。如果你覺得太貴,可以試試看中國版的「力扣」 https://leetcode.cn/problemset/all/   另外還有幾個不錯的論壇,可能會有你要面的公司,最近常出現的題目或面試經驗: - 一畝三分地: https://www.1point3acres.com/ - Blind: https://www.teamblind.com/ - Glassdoor: https://www.glassdoor.com/ 如果你沒有要面哪家特定的公司,我建議刷Leetcode前200題高頻題就好 (Sort by Frequency)。 🔍「直接看最優解答案,然後反覆刷題」 很多人會覺得直接看答案,有點像作弊。但面試官只在乎你有沒有好的溝通能力、能不能解出題目,他根本不知道你當時這些題目是自己想出來的,還是直接看答案(我自己是完全沒有這種精神潔癖,畢竟真實工作中遇到問題,還不是靠Google找解答最有效率)。 我個人認為刷題的核心是,你能不能「真正理解題目」,這樣才可以應變考試題目的變化。每個人學習方式都不一樣,但我認為非常複雜的題目,看Youtube解說是最容易懂的,以下推薦幾個不錯的頻道(但其實你在Youtube 搜尋「XXX tutorials」就可以,XXX是指Leetcode 題目): - Neetcode: https://www.youtube.com/@NeetCode - Tushar Roy - Coding Made Simple: https://www.youtube.com/@tusharroy2525 🥇「魔鬼藏在細節裡:如何脫穎而出」(進階篇) 能夠寫出最優解,並且理解時間和空間複雜度的工程師,大概是初級工程師的最基本要求。但同樣是做得出題目的人,有經驗的資深工程師回答會完全不一樣。 以下用Leetcode #146 LRU Cache舉例: 初級工程師可能就是知道怎麼寫出解答,比方用Doubly Linked List和HashMap。但有實務經驗的資深工程師在看到題目時: - 會指出題目有問題:「為什麼value not found是return -1? 如果要找的key的value就是-1怎麼辦?Throw Errors/Exceptions會更好」 能夠對面試官說他出的題目有問題並提出改進,會給人留下很深的印象。 - 做完題目後會思考實際運用:面試官通常最後會問說,「你還有什麼想補充的嗎?」即便你給出了最優解,如果能夠把實際情況也考慮進去會很加分。比方Leetcode的問題最常見、最容易説的補充就是考慮concurrency issues,能夠講出來能讓你更脫穎而出。 (當然以上這段對新手是沒必要的,能夠解出來其實通常就可以過面試了,所以現在也不必過於在意) ⭐️「結語」 一些想法: - Leetcode強不強跟你實際上是不是個好工程師沒關係。我從來沒有在工作上遇到需要backtracking, topological sort 和 dynamic programming (甚至recursion都非常少見)的任務。在工作中,Design pattern & architecture還有核心思想如Single Responsibility Principle更重要。 - 面試其實就是個建立「信任」的過程。公司信任你並覺得你「有機會和潛力」,可以讓他付你的薪水是「可能值得」的,而Leetcode只是一種可以有效率地用來篩人的手段而已。 - 我遇過一些很強的工程師,在業界夠久、名聲夠好,他們是有跟人資說不要面試Leetcode的籌碼。我自己如果遇到以前工作過的強者夥伴在找工作,我也會為他的面試免去Leetcode(有良好的人脈和內推真的會讓生活變簡單很多) - Coding面試被拒絕很正常,一開始不順也很正常,但只要選對方向並持續努力,一切一定會變得更好,大家都是這樣走過來的,「所有人一開始都是新手」。 最後,如果你覺得我寫的對你有幫助,我希望你幫我一個忙:如果你之後成為面試官,不要用刁難面試者的方式,取得優越感以及發洩你工作的情緒。記得你現在的不滿和痛苦,等你坐到桌子的另一邊時,問更多現實coding中會遇到的問題。 面試能說得太多了,下一篇我會分享「明明就是能夠讓你大放異彩的送分題,但很多人卻不好好準備的面試關卡」- Behvarioal Questions (非技術面試) 本文由 DCARD 網友 授權轉載, 原文: 《 資工新手如何有效率的準備面試 (coding篇)? 》
上一篇: 資工新手怎麼提高履歷命中率?|應徵技巧分享 下一篇: (不限資工新手)如何準備非技術面試 ?|應徵技巧分享

你可能會喜歡的文章

author

作者簡介

我是面試經驗談 / 各行各業面試全攻略!

分享各行各業的面試技巧與準備心法,從履歷撰寫到面試應答一手掌握!也記錄進入職場後的甘苦點滴,無論是升遷瓶頸、人際相處,還是轉職迷惘,都陪你一起思考下一步。

totop