聽說你最近在刷題- 軟體工程師的面試一定會遇到的資料結構及演算法關卡 (& 分享 LeetCode 折扣)
歐, 要澄清一下我現在沒有在刷題 (我這樣講絕對不是怕很多同事會看到我的文章 XD), 說實在的, 我覺得大家好像太過度強調 “刷”題的刷, 好像刷油漆似的要來回刷很多遍。 我過往看過許多刷幾百題、每題做 2、3、4 次以上的人分享他們的經驗, 我很佩服他們投入的時間及毅力, 但我自知做不到, 有小孩後更是難以做到刷一遍。 我自己找軟體工程師的工作的經驗, 2015 年上完 Coding Bootcamp 到找到工作, 大概做了 60 題左右的 LeetCode 問題, 2016 年底找工作比較認真, 大概完成了 100 題左右。 今天這篇文章想要分享一下我的演算法準備方式, 如果你也是覺得無法刷幾百題很多遍的人, 歡迎往下閱讀。
2015 年上完 Coding Bootcamp 後, 我陸續有一些電話面試, 每天可能會有 1~3 個電話面試, 所以在準備面試上, 要研究公司, 並且依照職缺來做面試的複習, 因為我是面試前端相關的職缺, 所以也有一部分的精力在前端的資料複習。 關於資料結構及演算法 (Data Structures & Algorithms) 的練習,我大概維持一天練習 1-2 題的步調。 2016 年底的面試, 因為還要上班, 所以基本上只有晚上有時間, 可能一天只能練習 1 題, 假日有比較多時間才可以多做幾題。
看到問題的時候, 我會先確保我了解題目的意思, 真正在面試的時候, 通常第一步也是和面試官確認我們自我的理解和面試官要問的是否一致, 不要花了時間才發現一開始的理解及假設是錯誤的。 我通常會立刻寫下題目給予的 input 有什麼、格式是什麼, desired output 又是什麼。
確認好 input & output 後, 我會思考題目可以用什麼類型的資料結構或是演算法來解。 通常在面試的時候, 我會和面試官說明我可能會先就一個大概可行的方式來做解答, 如果他/她覺得沒有什麼問題的話, 我再做後續的優化。 在我開始有一些思路後, 我會先寫下 pseudo code, 就是先用英文來說明我的解法會是怎麼樣。 每個步驟和面試官確認都沒有問題後, 我才會正式寫 code 。
當然有些時候不論怎麼想都寫不出來, 如果是自己練習的時候,我大概在 15 分鐘後會開始看一些討論, 嘗試學習別人的思路, 但如果再花 10 分鐘還是解不出來的話, 才會參考別人的解法。 我看完別人的答案後, 還是會用自己的 code 再實現一次。 如果面試中卡住的話, 則是要儘快和面試官討論, 我會把我的理解, 可能的解法方式和面試官說, 同時也說明我的情況可能哪裏不是很確定, 讓面試官在適當的時候可以給予我提示。 一般來說, 公司都是希望有順利的面試經驗, 面試官也都願意在溝通正常下給予協助。
自己練習寫完之後, 我會再寫出解法的空間及時間複雜度 (Space & Time Complexity) , 通常面試也會詢問這個部分, 所以自己每個練習也要歸納一下。 如果我發現我的解法時間可能不是太好, 我會再嘗試看不同人的討論, 研究更優化的解法, 並再自己寫出不一樣的解法。 有些比較棘手的問題我可能會寫 2、3 個解法比較彼此的優缺點。
在之前準備面試的時候, 我有準備一本筆記本, 每次寫完問題之後, 我會用筆寫下我在哪一天寫了哪一個問題, 並且用很精簡的方式總結問題及解法。 隔天要做下一題之前, 我會先看一下前一天的問題, 嘗試回想我是否可以再次在頭腦中想出大致的解法。 如果還是不行的話, 再看我自己的總結並做上記號, 隔天會再做一次同樣的步驟,直到我可以順利複習出解題的邏輯思路。
如果有和公司面試, 不論是電話還是 onsite, 面試完後我會再檢查我遇到的題目是否和我過去做過的題目類似, 如果有的話, 是否我的思路在面試中是清晰及正確的, 如果沒有的話, 我是否有利用對的觀念來解答。 面試結束後, 會花時間在盤點及複習, 從面試中的題目和過往的練習做統整。
你可以看到我的練習方式不是很強調快, 因為我希望我做完問題可以有很深的理解, 所以花很多時間在做整理、複習確認, 即使當下沒有那麼理解, 隔天回想又想不出的話, 我會再複習一次, 再隔一天做新題前也會再確認。 複習及思考的次數多了,真正把題目所想要考的觀念融會貫通, 畢竟面試很難真的遇到原題, 重點是我們對於資料結構及演算法的理解, 及遇到難題如何面對的應對的思考過程。
條條大路通羅馬, 每個人面試準備的方式都不太一樣, 以上就是我的資料結構及演算法的準備方式, 之前寫找工作的系列文章好像沒有特別提這塊, 所以特別再寫出來分享。當然我不是大神每次面試都可以收割 5 到 10 個以上 offer, 所以就請你自己斟酌評估你的學習方法,畢竟我們都要找到對自己最能接受、且有效率的方式來準備面試 。
我從 2015 、2016 年準備面試的時候, 有許多練習演算法的網站, 但到了今日, 好像 LeetCode 和練習演算法關係就如同 Google 和搜尋一樣, 大部分我聽到的準備面試的人都用 LeetCode 來做練習了! 剛好最近認識一位在 LeetCode 工作的朋友牽線, LeetCode 特別優惠讀者, 只要使用這個連結 (http://bit.ly/34UrjEe) 購買 Premium, 就能有 15% 優惠 (幾乎和一年一度的感恩節特價差不多了!)。
我目前聽到朋友準備面試基本上都會購買 LeetCode 的 Premium, Premium 最大的好處就是可以看到問題和公司的標註, 拿過去拒絕我 2 次的 Google 為例 (XD), LeetCode 就有 925 道題目被大家回報有在 Google 面試中看到 (925 道還是好多啊!@@), 當你正要 phone or onsite interview 的時候, 可以聚焦你要面試的公司練習、提高效率的話還是可以提高面試的表現的。 Premium 還有答題評斷比較快、LeetCode 官方解答、及依據公司有 Mock interviews 等其他功能, 但主要大家好像都還是為了 company tag 的功能而付費, 相信以大家拿到 offer 後的加薪, 會覺得這是個很好的投資!(什麼, 你說不一定會加薪, 那請你再閱讀一下我的談判文章來和公司談判加薪 "面試中談到錢怎麼辦? 問到你期望薪水如何接招?" 及"面試得到 Offer 薪水如何談? 三明治溝通法及最後簽約前的談判招式") 。
我當初有想說要直播訪問在 LeetCode 的朋友, 探討 LeetCode 最近幾年的快速發展、及如何幫助軟體工程師及公司行號, 可惜目前朋友還沒有意願, 如果大家有興趣的話, 請在文章留言, 讓她可以看到大家的意願加強她的動力和我們分享 (群眾多數暴力啊!)。
附上過去我寫的找工作系列文章:
1. 程式語言- 到底學哪個好?我想進Google,我沒學OOO,他們會接受我XXX語言背景嘛?
2. 簡介美國軟體工程師面試流程
3. 等待機緣- 我要如何被人資或獵人頭發現? 我要如何脫穎而出? LinkedIn重要嘛?
4. 主動出擊- 我要找工作了,現在美國都用什麼找工作?哪個網站平台能讓我有較多面試機會?
5. 軟體工程師面試準備- 面試要練習什麼? 找工作和練習的時間要如何平衡拿捏?
6. 被錄取了- 我該注意什麼,我可以談判要求多一點薪水、股票或假期嘛?
7. 矽谷找工作之常見問題 FAQ
8. 面試技巧及心得,如何有條理的說服面試官?
9. 英文履歷怎麼寫? 美國科技公司注重什麼?
10. 如何到美國科技公司工作?
11. 最有效得到面試的方式- 內部推薦: 尋找內推資源 & 歹晚郎互助網絡
12. 面試中談到錢怎麼辦? 問到你期望薪水如何接招?
13. 面試得到 Offer 薪水如何談? 三明治溝通法及最後簽約前的談判招式
2021 年, 如果你要找工作的話, 祝你轉換順利, 拿到許多理想的 offers! 如果你有什麼準備的技巧及心得, 也歡迎留言分享。
部落格原文及各文章連結:
https://brianhsublog.blogspot.com/2020/12/AlgorithmDataStructureLeetCode.html
同時也有1部Youtube影片,追蹤數超過2萬的網紅Untyped 對啊我是工程師,也在其Youtube影片中提到,拖了三個月的軟體工程師面試SOP在此獻上!把面試當作刷題的我,把面試經驗技巧,努力濃縮再濃縮,還是有15分鐘的精華,只要五步驟,面試照著做,保證你 ace the coding interview like a PRO (most of the time). 這集會聊到... 💬 Overvie...
演算法面試題目 在 波痞到底是在幹嘛? Facebook 八卦
今年因為有很多其他規劃,再加上藝文工作室剛開張(目前對外課程還在規劃中,如果單純是對繪畫、藝術課程講座有興趣可以先去按讚追蹤
不可方物藝文工作室 Indescribable Art Studio,之後也會在這邊分享工作室的改造內容,但現在還沒有要正式跟大家介紹它)。
在還沒有找到助理、工讀生的情況下,最近我其實是先把影片邀約都先推掉了,手邊其他影片工作也都暫時停止,因為犧牲影片製作能讓我其他方面的產能最大化。
本來我一直很抗拒在自己的社群平台徵人,因為很擔心會有一大把「懷抱著憧憬而貿然應徵,見到面的瞬間就發現現實不如想像」的人,但這幾天仔細想想,與其在徵才平台找了人,結果對方其實對我毫無認同感甚至有負面觀感的話,不如在自己的平台上把醜話說在前面,來應徵的至少是不討厭我的人。
簡單說,今天是要來徵人的,但我不會按照一般的徵人啟事那樣簡短說明重點,會打一個不短的純文字內容,因為我會希望來應徵的人,至少能夠清楚閱讀完並理解這段文字,而不是靠著一股衝勁,或是想在網紅底下工作所以讓自己也能成為網紅這類的動機來投履歷。
說真的,我是要找助理,不是要開網紅培訓班。
----------------------
先跟大家講一下「我平常自己一個人在做」的工作內容,再跟大家解釋助理需要做什麼:
(1)照片拍攝,但不是隨便按兩下那樣的照片拍攝,是不管用手機還是全片幅單眼相機,都要能拍出不被廠商挑剔、退件,同時又能在社群之海中能被人看見,同時具備舒適感與美感的照片。
(2)照片編輯:包含色調調整,將照片調整成舒適但不失真、明亮但不過度鮮豔也不過曝的照片,因為每張照片曝光度不同,所以基本上要一張一張調整;照片排版,將照片適當地排版,讓大家在閱讀的時候能夠更輕鬆,單張圖片中也能放進更多素材及資訊;浮水印壓制,主要是怕照片被盜用,所以浮水印要以不影響畫面但卻沒那麼容易修掉的位置,每一張要壓的地方不一樣,所以只能一張一張調整。
(3)影片腳本撰寫:在開拍之前要先把腳本段落、分鏡寫好,讓自己清楚知道要拍攝什麼內容,如果是業配合作的話這個也是讓廠商先了解影片內容的方式,我通常會告訴他們要確認好腳本內容,如果腳本確認好以後,影片開拍下去不可修改影片架構,只能修改字幕字卡,但還是會有廠商後續才死要修改,這又是另一個故事了。
(4)影片拍攝:分成產品單拍、示意內容、口說內容,不同的影片內容,會需要拍攝的內容段落也都不一樣,有時候在一個地方就能拍完,有時候要分好幾週分好幾個拍攝地。
(5)影片剪輯:將拍好的影片內容、段落、分鏡、配樂剪輯好,雖然我這邊只用一句話帶過,但在這些所有工作裡面我最恨的是這一項。
(6)工作相關信件、訊息回覆:各大廠商寄來的email或傳來的訊息回覆,包含未執行的、已經在執行的、已經執行完但又追加一些事情的,看似簡單但有時候會耗費4-5個小時。
(7)相關社群留言、訊息回覆:就是你各位的留言跟訊息回覆,訊息我幾乎全部都會回覆,雖然留言我是不會每個都回啦,但能順手回的還是盡量,YT上面那種同一個問題大概100個人重複問的我就會懶得回,或是LINE官方帳號上騷擾跟無意義貶低居多的就直接忽略。
(8)相關社群文章發佈:包含FB,IG,YT,LINE等等不同類型社群平台的文案撰寫、發表,因為每個平台的受眾、演算法都不同,所以每一個平台要撰寫的內容其實不一樣,適合發表的內容也不太一樣,所以同一組圖片同一個文案不是在所有平台都能一次發表。
(9)Blog文章撰寫:其實我自己還是最喜歡寫這種圖文並茂的長文,現在因為時間被壓縮,變成有時候可能好幾個月才更新一篇,但其實我還是希望可以一週發個一篇之類的。
(10)工作室教案規劃:目前我們繪畫課程的教案發想、內容規劃主要是我在處理的,如果主要是71的想法,最後是我負責彙整編排,讓它變得比較好理解以及有系統性。
(11)工作室教學文案、文宣製作:目前有對外宣傳的教案、文宣也都是我製作的,因為與其讓71在旁邊意見一堆想得很複雜,不如我自己做一做比較快。
(12)工作室社群平台管理:文案撰寫什麼的大概講一百遍了,總之就是FB,IG,LINE等等平台對症下藥去寫去編輯,然後還有Wix網站製作跟管理,目前也是我自己處理,但目前因為還沒有正式對外招生,所以這個工作的佔比還算很低。
(13)工作室專案教師面試與課程編排:因為目前還在找適合的老師來開其他適合的課程,以及相關課程的規劃討論(71本身就有的課已經在上課),有些課程是我跟71一起面試,有些是我單獨負責面試;除了面試以外,後續的課程時間安排目前也是我在處理。
(14)工作室行銷規劃、預算規劃:欸...因為行銷跟預算也是我比較擅長,所以目前也是我處理,身為客家人,告訴別人不能亂花錢讓我快樂。
(15)模特兒工作:就是大家熟悉的Air Space Plus棚內以及外景拍攝,目前還有另一個品牌在跟我洽談,但因為佔的時間跟花費的心力也不算少,如果接下來其他工作的時間勢必會更壓縮,還在猶豫要不要接;雖然之前來談的大部分聽到鐘點費就嚇跑了,不過我是認為如果沒有到這個鐘點費,我寧願去做其他工作效益更好,看看上述在做的事情,大家應該有感覺到我「不缺工作」吧?因為實在太會給自己找事情做了。
(16)今年度還有大概2~3個額外規劃,目前都在執行中,但還不能透露給大家,也因為有這些額外事項,所以才會下定決心決定要找專職助理。
---------------------
平常在家裡的家事我跟71大概是一人一半,雖然上述有很多事情是我在做,但這些都算是我擅長所以攬下來做,有很多麻煩的雜事我就會叫71去做,因為我就是一個討厭出門討厭跑東跑西的人,所以他這個人也是滿忙碌的,當初工作室裝潢時他更是要完成我各種任性要求,這個也是日後再告訴大家。
總之我平常「一個人」在做的工作大概就是上述這些,當然不是說每天都要做以上所有的工作,大部分都是以週為單位先做個大規劃,預留好要去運動、採買家裡跟工作室用品以及處理一些雜事的時間,再去細分每天要做的進度有哪些。
目前我有外包出去的工作只有兩項:一是無法自己拍攝的照片,比方說要拍到半身、全身,要拍出厲害畫面的,或是跑活動無法只有自拍,這個我會請品君特地幫我拍攝,這些照片她就會幫我把色調調好、畫面經修好,但後續排版、壓浮水印是我自己處理;二是影片的字幕字卡特效後製,基本上我會把影片所有的內容、分鏡、架構剪好,然後請這位厲害的字幕君幫我把字幕跟特效做好,但如果有時候影片量較多,就會有部分影片需要我自己把整支影片包含字幕字卡都剪完。
以前負責影片字幕字卡後製的是有兩位,都是我以前大學美術系的學妹,所以美感方面都不會有太大的問題,目前還在接案這個是有軟體基礎,所以很幸運地不需要教她什麼也沒有太多磨合期;另一位是去年建築研究所畢業後就去南科工作了,因為工作壓力較大,接案方面就跟我請辭,當時她是美感基礎有,但軟體方面以及剪輯常識是我手把手教會的。
在她請辭以後為了分擔另一位字幕君的工作,我有找過一些外包的影片剪輯,但美感方面即使非常努力溝通,甚至把已經配好色的色卡提供給他們,剪出來的成品還是非常可怕,以至於有一段時間是我自己跟這些人要花很多時間溝通以外,還要重新處理他們處理不了的這些影片,反而增加工作量。
美感是主要問題,影片節奏又是另外一個問題,這個比較難解釋,總之我外包出去的影片其實需求都是列得超清楚,連幾分幾秒要幹嘛都寫得一清二楚那種,但剪出來不行就是不行,花了錢自己還要花時間擦屁股。
昨天在IG上發了限動以後,很多人要我把工作內容跟薪資先列出來,但問題是現在其實是我需要知道這個人能為我做什麼、能分擔我手邊什麼樣的工作,我才能夠真正決定她是做兼職還是全職,領的薪水能是多少。而且本來我自己的工作就是沒有固定上下班時間,我幾乎只要有時間就是在工作,所以我也很難清晰地列出上下班時間、在哪工作(但基本上就是雙北交通都方便的地方,也不會跑太遠);事實上很多事也要做下去才知道,畢竟會說漂亮話的人也滿地都是。
然後不要期望我在工作的時候還是能夠隨時照顧別人的心情、保持幽默,看看我上述的工作內容,我還能維持情緒穩定已經是不幸中的大幸了,我是來徵助理的,不是來幫人做心理諮詢的。
-----------------------
主要我目前需要有人來協助分擔的工作有以下,但這不是最終徵才內容,請繼續詳細閱讀:
(1)照片拍攝:同上述,不是摸過單眼相機就叫會拍照,需要能協助我拍攝一些隨手但好看的照片(當只是拍每日穿搭或一些產品的時候),但如果檢測後發現照片拍起來不行,那我會請你做別的事(但你要能做別的事),我會叫品君來拍照。
(2)照片編輯:同上述,包含色調調整、排版、壓浮水印等等,總之就是我上面說的我自己平常在做的那些,忘記了就自己拉回去看,所以基本的PS,AI,PR要會,如果是有基礎的人,這方面目前應該不會到非常吃重,但除了我這邊社群經營需要的,可能會需要排一些教案之類的。
(3)影片拍攝:腳本撰寫、絕大部分拍攝我自己會做,但未來可能會需要有人可以額外出一機協助拍攝(目前是固定腳架的跟品君的一台),器材我這邊會購入,如果不熟拍攝方式、拍攝運鏡我會教,其實主要就是你美感要有,沒有美感我很難教。
(4)影片剪輯:這個會是最主要、最吃重的,希望是初步能做好字幕字卡特效,未來熟悉節奏後能把初剪、分鏡等等剪好,如果無法獨立作業做好初剪,至少能讓我聲控做好初剪,這樣處理初剪同時我就可以執行其他工作。因為我自己是真的完全沒空看別人的影片,我連Netflix會員都是別人在看,我根本沒空看,所以如果來的人是自己平常看的影片較多,比較理解影片節奏、近期流行素材的人會更好。
(5)YT留言回覆:其他所有平台我都是自己回覆留言跟私訊的,工作信件訊息等等我也全部會自己回,但因為YT有很多人都是完全不認真看影片也不看描述欄也不看留言處其他回覆,所以詢問重複問題的留言超級多,這樣的內容我就會覺得無法花時間一一回覆,所以希望至少有人來幫那些人複製貼上(是說他們自己不看其他留言,也只值得複製貼上了)。
(6)工作室社群管理:主要是負責回覆課程相關內容、招生教案文案張貼,如果不是那麼擅長撰寫文案,那文案就還是我自己寫,如果還算擅長,就是文案寫了之後我會協助過稿。
(7)工作室雜務處理:在老師上課前提前去工作室開門、掃地拖地簡單清潔,有時協助管理課堂狀況。
--------------
由於以上工作量非常多,我也理解找一個人來做不太可能(雖然我一個人是全做啦,但我是為自己而做,情況當然不一樣),所以說,這一次徵才主要我會以兩個大方向來徵:
(一)專屬行政助理:以上至少(1)~(4)點要能做,主要是希望(3)(4)能做,如果(5)或(6)能協助處理是最好。以純美術、應用美術、設計相關科系畢業的人為主要徵才對象,工作時間會比較不固定,但視情況有些可遠端工作,一開始會以兼職形式磨合,後續沒問題就轉全職,希望是能長久穩定工作的人,不然我光做職場訓練就飽了。
(二)工作室工讀生:主要處理第(7)點,如果(5)或(6)可以協助處理是最好。但因為我們是藝文工作室,後續可能有些課堂也需要助教,所以有實際手繪能力尤佳(術科考試會考的水彩、素描),以讀過美術系、美術班的人為優先錄取對象,工作時間較為彈性,在學生亦可。
如果有覺得可以一次勝任以上兩者的勇者也歡迎,但我想應該是不太可能啦。
--------------
工作待遇我必須說初期我沒有辦法直接開出很棒的條件,因為我不知道你能夠做什麼的話,也許會變成支付不錯的薪水出去,但我卻是花了錢花了時間又在自我消耗。
(一)專屬行政助理一開始以兼職形式磨合,前兩週試用期時薪160元/hr,確認雇用後時薪200元/hr起跳;轉正職後28000元/月起跳,因為這個真的是要看能做多少事、工時多少再來計算,所以我現在只能給一個最低的數字,正職含勞健保。
(二)工作室工讀生:前兩週試用期時薪160元/hr,確認雇用後時薪為180/hr,若能擔任助教,時薪為200元/hr,若可以執行更多額外工作,時薪可再往上調整。
如果看了以上落落長的資訊,你還是想應徵的話,相關應徵個人資訊、履歷、作品集幫我寄到工作室的信箱:[email protected]
寄到此信箱以外的應徵資訊一概不受理,因為我不需要一個連這種基本要求都看不懂的員工。
我可能不會是個像惡婆婆一樣的超級慣老闆,但大概會是一個對你不會太差,卻在有些地方還是會吹毛求疵、講話不經意會流露傷人之處的那種婆婆一樣的老闆;簡單說,就是不可能像你媽對你一樣好啦!再怎樣你都不是我生的那種概念,懂?
如果沒有要應徵,只是要聊天的,歡迎底下隨意尬聊。
演算法面試題目 在 半路出家軟體工程師在矽谷 Facebook 八卦
聽說你最近在刷題- 軟體工程師的面試一定會遇到的資料結構及演算法關卡 (& 分享 LeetCode 折扣)& LeetCode Premium 抽獎啦(2021- 9 月更新)
-----------------------------
2021年 9 月更新:
從 8 月開始,收到許多剛到美國唸書的讀者來信請求幫忙內推 2022 年暑假的實習工作,如果你還不知道的話, 請查看我另外一篇文章來了解內推網路:最有效得到面試的方式- 內部推薦: 尋找內推資源 & 歹晚郎互助網絡 (2021 年 8 月更新)。軟體工程師的面試關卡很多都是資料結構及演算法, 所以大家在準備實習也都不免俗的要刷題一下。 我許久沒有看 LeetCode, 發現現在 LeetCode 的功能越來越多, 還有像是學習資源文章及 study plan 的功能,把大家要準備面試的各種需求都越來越在他們網站上一站搞定。 今天除了再次分享去年寫的文章(還有折扣碼), 還要大大感謝 LeetCode 願意提供 3 個 7 天 Premium 會員試用來給予讀者, 讓大家面試前可以使用如公司 tag 的功能來做複習。 此外感謝大家一直以來的支持, 我也自掏腰包提供購買 3 個 1 個月的 Premium 會員試用來加碼, 再請大家做以下動作參加抽獎歐!
✅ 按讚並留言你希望用 LeetCode 達到什麼目標 (轉職、實習面試、換工作,可以寫一寫細節像是目標公司、職位等), 或是你過去使用 LeetCode 的心得、或者是自己未來職業目標等等, 也可以是找朋友來一起練習。
✅ 公開分享此篇文章的話多一次被抽中的機會
獎項: 共 6 個名額,3 個 7 天 Premium 試用會隨機抽出, 3 個 1 個月的 Premium 試用則用留言內容來挑選, 希望抽出給很需要、或是很有創意的留言, 哈!
活動期間到加州時間下週四 9/9 晚上 9 點截止。會直接於文中留言通知中獎,祝大家學習愉快、找實習、換工作都順利!
--------------------------
2020 年 12 月原文:
歐, 要澄清一下我現在沒有在刷題 (我這樣講絕對不是怕很多同事會看到我的文章 XD), 說實在的, 我覺得大家好像太過度強調 “刷”題的刷, 好像刷油漆似的要來回刷很多遍。 我過往看過許多刷幾百題、每題做 2、3、4 次以上的人分享他們的經驗, 我很佩服他們投入的時間及毅力, 但我自知做不到, 有小孩後更是難以做到刷一遍。 我自己找軟體工程師的工作的經驗, 2015 年上完 Coding Bootcamp 到找到工作, 大概做了 60 題左右的 LeetCode 問題, 2016 年底找工作比較認真, 大概完成了 100 題左右。 今天這篇文章想要分享一下我的演算法準備方式, 如果你想要找如何刷題的方式,或是覺得無法刷幾百題很多遍的人, 歡迎往下閱讀。
2015 年上完 Coding Bootcamp 後, 我陸續有一些電話面試, 每天可能會有 1~3 個電話面試, 所以在準備面試上, 要研究公司, 並且依照職缺來做面試的複習, 因為我是面試前端相關的職缺, 所以也有一部分的精力在前端的資料複習。 關於資料結構及演算法 (Data Structures & Algorithms) 的練習,我大概維持一天練習 1-2 題的步調。 2016 年底的面試, 因為還要上班, 所以基本上只有晚上有時間, 可能一天只能練習 1 題, 假日有比較多時間才可以多做幾題。
看到問題的時候, 我會先確保我了解題目的意思, 真正在面試的時候, 通常第一步也是和面試官確認我們自我的理解和面試官要問的是否一致, 不要花了時間才發現一開始的理解及假設是錯誤的。 我通常會立刻寫下題目給予的 input 有什麼、格式是什麼, desired output 又是什麼。
確認好 input & output 後, 我會思考題目可以用什麼類型的資料結構或是演算法來解。 通常在面試的時候, 我會和面試官說明我可能會先就一個大概可行的方式來做解答, 如果他/她覺得沒有什麼問題的話, 我再做後續的優化。 在我開始有一些思路後, 我會先寫下 pseudo code, 就是先用英文來說明我的解法會是怎麼樣。 每個步驟和面試官確認都沒有問題後, 我才會正式寫 code 。
當然有些時候不論怎麼想都寫不出來, 如果是自己練習的時候,我大概在 15 分鐘後會開始看一些討論, 嘗試學習別人的思路, 但如果再花 10 分鐘還是解不出來的話, 才會參考別人的解法。 我看完別人的答案後, 還是會用自己的 code 再實現一次。 如果面試中卡住的話, 則是要儘快和面試官討論, 我會把我的理解, 可能的解法方式和面試官說, 同時也說明我的情況可能哪裏不是很確定, 讓面試官在適當的時候可以給予我提示。 一般來說, 公司都是希望有順利的面試經驗, 面試官也都願意在溝通正常下給予協助。
自己練習寫完之後, 我會再寫出解法的空間及時間複雜度 (Space & Time Complexity) , 通常面試也會詢問這個部分, 所以自己每個練習也要歸納一下。 如果我發現我的解法時間可能不是太好, 我會再嘗試看不同人的討論, 研究更優化的解法, 並再自己寫出不一樣的解法。 有些比較棘手的問題我可能會寫 2、3 個解法比較彼此的優缺點。
在之前準備面試的時候, 我有準備一本筆記本, 每次寫完問題之後, 我會用筆寫下我在哪一天寫了哪一個問題, 並且用很精簡的方式總結問題及解法。 隔天要做下一題之前, 我會先看一下前一天的問題, 嘗試回想我是否可以再次在頭腦中想出大致的解法。 如果還是不行的話, 再看我自己的總結並做上記號, 隔天會再做一次同樣的步驟,直到我可以順利複習出解題的邏輯思路。
如果有和公司面試, 不論是電話還是 onsite, 面試完後我會再檢查我遇到的題目是否和我過去做過的題目類似, 如果有的話, 是否我的思路在面試中是清晰及正確的, 如果沒有的話, 我是否有利用對的觀念來解答。 面試結束後, 會花時間在盤點及複習, 從面試中的題目和過往的練習做統整。
你可以看到我的練習方式不是很強調快, 因為我希望我做完問題可以有很深的理解, 所以花很多時間在做整理、複習確認, 即使當下沒有那麼理解, 隔天回想又想不出的話, 我會再複習一次, 再隔一天做新題前也會再確認。 複習及思考的次數多了,真正把題目所想要考的觀念融會貫通, 畢竟面試很難真的遇到原題, 重點是我們對於資料結構及演算法的理解, 及遇到難題如何面對的應對的思考過程。
條條大路通羅馬, 每個人面試準備的方式都不太一樣, 以上就是我的資料結構及演算法的準備方式, 之前寫找工作的系列文章好像沒有特別提這塊, 所以特別再寫出來分享。當然我不是大神每次面試都可以收割 5 到 10 個以上 offer, 所以就請你自己斟酌評估你的學習方法,畢竟我們都要找到對自己最能接受、且有效率的方式來準備面試 。
我從 2015 、2016 年準備面試的時候, 有許多練習演算法的網站, 但到了今日, 好像 LeetCode 和練習演算法關係就如同 Google 和搜尋一樣, 大部分我聽到的準備面試的人都用 LeetCode 來做練習了! 剛好最近認識一位在 LeetCode 工作的朋友牽線, LeetCode 特別優惠讀者, 只要使用這個連結購買 Premium, 就能有 15% 優惠 (幾乎和一年一度的感恩節特價差不多了!)。
我目前聽到朋友準備面試基本上都會購買 LeetCode 的 Premium, Premium 最大的好處就是可以看到問題和公司的標註, 拿過去拒絕我 2 次的 Google 為例 (XD), LeetCode 就有 925 道題目被大家回報有在 Google 面試中看到 (2021 年已經變成 1014 道了! @@), 當你正要 phone or onsite interview 的時候, 可以聚焦你要面試的公司練習、提高效率的話還是可以提高面試的表現的。 Premium 還有答題評斷比較快、LeetCode 官方解答、及依據公司有 Mock interviews 等其他功能, 但主要大家好像都還是為了 company tag 的功能而付費, (2021 年 9 月更新, 最近又有如文章、影片的學習資源,還有像是 Study Plan 的功能, 看起來 LeetCode 要往大家學習、準備、一站式的服務來黏住使用者了!)
相信以大家拿到 offer 後的加薪, 會覺得這是個很好的投資!(什麼, 你說不一定會加薪, 那請你再閱讀一下我的談判文章來和公司談判加薪 "面試中談到錢怎麼辦? 問到你期望薪水如何接招?" 及"面試得到 Offer 薪水如何談? 三明治溝通法及最後簽約前的談判招式") 。
我當初有想說要直播訪問在 LeetCode 的朋友, 探討 LeetCode 最近幾年的快速發展、及如何幫助軟體工程師及公司行號, 可惜目前朋友還沒有意願, 如果大家有興趣的話, 請在文章留言, 讓她可以看到大家的意願加強她的動力和我們分享 (群眾多數暴力啊!)。
附上過去我寫的找工作系列文章:
1. 程式語言- 到底學哪個好?我想進Google,我沒學OOO,他們會接受我XXX語言背景嘛?
2. 簡介美國軟體工程師面試流程
3. 等待機緣- 我要如何被人資或獵人頭發現? 我要如何脫穎而出? LinkedIn重要嘛?
4. 主動出擊- 我要找工作了,現在美國都用什麼找工作?哪個網站平台能讓我有較多面試機會?
5. 軟體工程師面試準備- 面試要練習什麼? 找工作和練習的時間要如何平衡拿捏?
6. 被錄取了- 我該注意什麼,我可以談判要求多一點薪水、股票或假期嘛?
7. 矽谷找工作之常見問題 FAQ
8. 面試技巧及心得,如何有條理的說服面試官?
9. 英文履歷怎麼寫? 美國科技公司注重什麼?
10. 如何到美國科技公司工作?
11. 最有效得到面試的方式- 內部推薦: 尋找內推資源 & 歹晚郎互助網絡
12. 面試中談到錢怎麼辦? 問到你期望薪水如何接招?
13. 面試得到 Offer 薪水如何談? 三明治溝通法及最後簽約前的談判招式
2021 年, 如果你要找工作的話, 祝你轉換順利, 拿到許多理想的 offers! 如果你有什麼準備的技巧及心得, 也歡迎留言分享。
部落格原文:
https://bit.ly/3zNrluU
演算法面試題目 在 Untyped 對啊我是工程師 Youtube 的評價
拖了三個月的軟體工程師面試SOP在此獻上!把面試當作刷題的我,把面試經驗技巧,努力濃縮再濃縮,還是有15分鐘的精華,只要五步驟,面試照著做,保證你 ace the coding interview like a PRO (most of the time).
這集會聊到...
💬 Overview 💬
💙 什麼是 coding interview? 1:20
💙 面試必備 - 比履歷還重要的東西 3:44
💙 面試流程 1 - 聽問題問問題 4:15
💙 面試流程 2 - 如何分析問題 6:00
💙 面試流程 3 - 如何寫程式碼 8:45
💙 面試流程 4 - 測試程式碼 10:10
💙 面試流程 5 - 再問更多問題 12:08
💙 面試流程 0 - 寒暄問暖不囉唆 13:30
🙌🏻 面試好書推薦 🙌🏻
👍🏻 準備軟體工程師面試必備書
Cracking the Coding Interview 提升程式設計師的面試力 https://shp.ee/y7rbjqk
https://www.books.com.tw/products/0010881287
👍🏻 當畫家遇上演算法 看圖學演算法
Grokking Algorithms 白話演算法!培養程式設計的邏輯思考
https://shp.ee/k3jtmvg
👍🏻 置入生活中的演算法
Algorithms to Live By: The Computer Science of Human Decisions 決斷的演算:預測、分析與好決定的11堂邏輯課
https://shp.ee/rvvh89e
https://www.books.com.tw/products/0010761815
👍🏻 Logitech 羅技 MX Keys 無線鍵盤 https://shp.ee/ptt9wtm
👍🏻 Logitech 羅技 MX Master 3 無線藍牙滑鼠 https://shp.ee/pu9qtcc
👍🏻 Backbone 人體工學椅 https://shp.ee/fgi35c9
👍🏻 Tresanti 電動升降桌 https://shp.ee/9wmht7r
👍🏻 logitech 羅技 StreamCam https://shp.ee/fbvgbvc
👍🏻 RODE Lavalier GO 領夾式 小型麥克風 https://shp.ee/nx6w9vc
📢 📣 📢 本頻道影片內容有輸出成 podcast 📢 📣 📢
可以在各大podcast平台搜尋「Untyped 對啊我是工程師」
請大家多多支持呀!!🙏🏻💁🏻♀️
#面試SOP #工程師求職 #面試流程大剖析
一定要看到影片最後面並且在「YouTube影片下方」按讚留言訂閱分享唷!
【愛屋及烏】
YouTube 👉 https://www.youtube.com/c/Untyped對啊我是工程師
Podcast 👉 https://open.spotify.com/show/3L5GRMXmq1MRsliQt43oi2?si=3zgvfHlETeuGfp9rIvwTdw
Facebook 臉書粉專 👉 https://www.facebook.com/untyped/
Instagram 👉 https://www.instagram.com/untypedcoding/
合作邀約 👉 untypedcoding@gmail.com
-
Untyped 對啊我是工程師 - There are so many data types in the world of computer science, so are the people who write the code. We aim to UNTYPE the stereotype of engineers and of how coding is only for a certain type of people.
凱心琳: 一個喜歡電腦科學邏輯推理,在科技圈努力為性別平等奮鬥的工程師。
【Disclaimer 聲明】
Some links are affiliated.
上面有些連結是回饋連結,如果你透過這些連結購買商品,我可以得到一些小獎勵,但不會影響到你購買的價格,甚至會是更低的價格!謝謝你的支持💕
![post-title](https://i.ytimg.com/vi/4tbQhdrpB9s/hqdefault.jpg)
演算法面試題目 在 Python 資料結構×演算法刷題鍛鍊班 - YouTube 的八卦
求職/轉職必看!Coding 面試 的衝刺總複習57 大重點× 74 道 面試題 × 160 個例題,紮實打好基本功☆本書收錄了陣列、串列、樹狀結構、圖、搜尋樹等 ... ... <看更多>