聽說你最近在刷題:軟體工程師面試一定會遇到的資料結構與演算法關卡

聽說你最近在刷題:軟體工程師面試一定會遇到的資料結構與演算法關卡
非內文當事人照片|Photo Credit: Depositphotos

我們想讓你知道的是

準備演算法的方式,不僅只有瘋狂刷題,本文提供有效的學習方法與審題技巧。 

先澄清一下我現在沒有在刷題(我這樣講絕對不是怕很多同事會看到我的文章XD),說實在的,我覺得大家好像太過度強調「刷」題的刷,好像刷油漆似的要來回刷很多遍。我過往看過許多「刷」幾百題或每題做2~4次以上的人,分享他們的經驗,我很佩服他們投入的時間及毅力,但我自知做不到,有小孩後更是難以做到「刷」一遍。

我自己找軟體工程師的工作的經驗,2015年上完Coding Bootcamp到找到工作,大概做了60題左右的Leet Code問題,2016年底找工作比較認真,大概完成了100題左右。今天這篇文章,主要想分享我的演算法準備方式,如果你想要找如何刷題的方式,或是覺得無法「刷」幾百題很多遍的人,歡迎往下閱讀。

持之以恆,養成每天練習1至2題習慣

2015年上完Coding Bootcamp後,我陸續有一些電話面試,每天可能會有1~3個電話面試。所以在準備面試上,要研究公司,並且依照職缺來做面試的複習。因為我是面試前端相關的職缺,所以也有一部分的精力在前端的資料複習。關於資料結構及演算法(Data Structures & Algorithms)的練習,我大概維持一天練習1~2題的步調。2016年底的面試,因為還要上班,所以基本上只有晚上有時間,可能一天只能練習1題,假日有比較多時間才可以多做幾題。

解題前,先仔細審題:確認題目input、格式、desired output

看到問題的時候,我會先確保我了解題目的意思,真正在面試的時候,通常第一步也是和面試官確認我們自我的理解和面試官要問的是否一致。不要花了時間才發現一開始的理解及假設是錯誤的。我通常會立刻寫下題目給予的input有什麼、格式是什麼、desired output又是什麼。

確認好input&output後,我會思考題目可以用什麼類型的資料結構或是演算法來解。通常在面試的時候,我會和面試官說明我可能會先就一個大概可行的方式來做解答,如果他/她覺得沒有什麼問題的話,我再做後續的優化。在我開始有一些思路後,我會先寫下pseudocode,就是先用英文來說明我的解法會是怎麼樣。每個步驟和面試官確認都沒有問題後,我才會正式寫code。

「他山之石,可以攻錯」,卡題時參考別人解方並再試一次

當然有些時候不論怎麼想都寫不出來,如果是自己練習的時候,我大概在15分鐘後會開始看一些討論,嘗試學習別人的思路。但如果再花10分鐘還是解不出來的話,才會參考別人的解法。我看完別人的答案後,還是會用自己的code再實現一次。如果面試中卡住的話,則是要儘快和面試官討論,我會把我的理解,可能的解法方式和面試官說,同時也說明我的情況可能哪裏不是很確定,讓面試官在適當的時候可以給予我提示。一般來說,公司都是希望有順利的面試經驗,面試官也都願意在溝通正常下給予協助。

紀錄解法的「空間及時間複雜度(Space & Time Complexity)」並反思優化

自己練習寫完之後,我會再寫出解法的空間及時間複雜度(Space & Time Complexity),通常面試也會詢問這個部分,所以自己每個練習也要歸納一下。如果我發現我的解法時間可能不是太好,我會再嘗試看不同人的討論,研究更優化的解法,並再自己寫出不一樣的解法。有些比較棘手的問題我可能會寫2、3個解法比較彼此的優缺點。

筆記本紀錄Q&A

在之前準備面試的時候,我有準備一本筆記本,每次寫完問題之後,我會用筆寫下我在哪一天寫了哪一個問題,並且用很精簡的方式總結問題及解法。隔天要做下一題之前,我會先看一下前一天的問題,嘗試回想我是否可以再次在頭腦中想出大致的解法。如果還是不行的話,再看我自己的總結並做上記號,隔天會再做一次同樣的步驟,直到我可以順利複習出解題的邏輯思路。

如果有和公司面試,不論是電話還是onsite,面試完後我會再檢查我遇到的題目是否和我過去做過的題目類似,如果有的話,是否我的思路在面試中是清晰及正確的,如果沒有的話,我是否有利用對的觀念來解答。面試結束後,會花時間在盤點及複習,從面試中的題目和過往的練習做統整。

解題時切莫僅追求速度,而是追求通盤理解

你可以看到我的練習方式不是很強調快,因為我希望我做完問題可以有很深的理解,所以花很多時間在做整理、複習確認,即使當下沒有那麼理解,隔天回想又想不出的話,我會再複習一次,再隔一天做新題前也會再確認。複習及思考的次數多了,真正把題目所想要考的觀念融會貫通,畢竟面試很難真的遇到原題,重點是我們對於資料結構及演算法的理解,及遇到難題如何面對的應對的思考過程。

條條大路通羅馬,每個人面試準備的方式都不太一樣,以上就是我的資料結構及演算法的準備方式,之前寫找工作的系列文章好像沒有特別提這塊,所以特別再寫出來分享。當然我不是大神每次面試都可以收割5到10個以上offer,所以就請你自己斟酌評估你的學習方法,畢竟我們都要找到對自己最能接受、且有效率的方式來準備面試。

工欲善其事,必先利其器:善用LeetCode學習

我從2015、2016年準備面試的時候,有許多練習演算法的網站,但到了今日,好像Leet Code和練習演算法關係就如同 Google和搜尋一樣,大部分我聽到的準備面試的人都用Leet Code來做練習了!我目前聽到朋友準備面試基本上都會購買 LeetCode的Premium,Premium最大的好處就是可以看到問題和公司的標註,拿過去拒絕我2次的Google為例,LeetCode就有925道題目被大家回報有在Google面試中看到。


猜你喜歡


台灣人偏好的威士忌風味?甜美風味是大宗,帶果香、蜜香風味威士忌男女皆愛

台灣人偏好的威士忌風味?甜美風味是大宗,帶果香、蜜香風味威士忌男女皆愛

我們想讓你知道的是

台灣每人一年平均品飲2.3瓶威士忌。不過,隨著女性愛好者逐年增加、族群年輕化的全球趨勢,威士忌的喜好風向正默默地變化著,更同時影響著國際酒廠推出熱門酒品的未來計劃。TNL Research 關鍵議題研究中心針對普羅大眾進行了威士忌的品飲喜好調查。

每年近800億元規模的台灣酒類市場中,威士忌最是一大重點。然而,近年來品醇族群結構的變化,加上酒友們對風味的求新求變,不少品牌開始尋覓下一個令人沈醉的風味。未來台灣威士忌市場主流,將吹向哪種風味的酒品呢?TNL Research 關鍵議題研究中心針對普羅大眾進行了威士忌的品飲喜好調查。

根據蘇格蘭威士忌協會公佈的2021年國際出口市場表現報告,台灣這個僅2300萬總人口的市場,一年竟進口了將近新台幣85億元的蘇格蘭威士忌,在全球排名第三。若再加上日本、美國等其他產地的酒品,統計資料也顯示全年威士忌市場消費總金額約550億新台幣,台灣每人一年平均品飲2.3瓶威士忌。不過,隨著女性愛好者逐年增加、族群年輕化的全球趨勢,威士忌的喜好風向正默默地變化著,更同時影響著國際酒廠推出熱門酒品的未來計劃。

三分之一女性愛好者 有力影響威士忌市場風潮

根據TNL Research關鍵議題研究中心於7月11~12日,針對年齡分布於30歲以上ShareParty會員所進行的「威士忌品飲習慣調查」,分析376份有效回收問卷之後發現,40.9%受訪者有品飲威士忌的習慣,且男女比例已達逼近2:1之譜,顯見女性在威士忌同好族群中已成長至三分之一的比例,其風味喜好必將更具市場聲量。

風味偏好調查
Photo Credit:TNL Brand Studio

然而,再進一步詢問關於威士忌風味的偏好,倒是能從中一窺在男女族群上的異同處。台灣民眾近年來普遍偏好風味較為甜美、順口易入喉的威士忌,而兼具有果香者獲得最多受訪者的喜愛(57.4%),其次則是帶有蜂蜜風味之酒品(36.3%)。至於較具獨特個性的煙燻風味,訪問後倒是出現了35.9%男性喜愛,但僅有14.5%女性能夠接受的明顯差異。

提到風味甜美的威士忌,深諳威士忌的酒友們,腦海中必然會浮現百富單一麥芽威士忌的名稱。百富的傳奇首席調酒師大衛史都華(David C. Stewart),運用將近60年的經驗和深厚的製酒工藝,讓標誌性的「香甜蜂蜜」風味在每一款百富威士忌中都有一致但又獨特的展現。而大衛史都華更令人讚賞不已的,是他於1980年代所發明的「過桶」(Cask Finish)工藝:先將威士忌置於傳統橡木桶中熟成若干年後,再移至另一種橡木桶進行第二次的熟成,而二次熟成的時間並非定數,全靠大衛史都華帶領團隊的耐心定期監控,直到風味達到標準之後方才進行裝瓶。40年來運用「過桶」工藝,百富將酒廠經典的蜂蜜、香草基調,變幻出多樣的迷人風貌,因而廣受全球消費者歡迎。

私聊聚會 最是品飲威士忌的好時機

配圖警語_3
Photo Credit: 百富

關於最適合享飲威士忌的生活情境,則有近七成(68.8%)受訪者鍾意於私人會所或家庭聚餐時,與三五好友共享黃金酒液,其次還有「商務應酬場合」(35.9%)及「餐廳等公開場合聚會」(35.6%)成為品飲威士忌的常見場景;也有超過三成(32.8%)受訪者鍾愛與另一伴在家中親密啜飲。

若要在私聚餐會上品飲明顯具有果香風味的威士忌,百富12年雙桶DoubleWood是威士忌愛好者的首選之一。百富首席調酒師大衛史都華精選首次裝桶之Oloroso雪莉桶,陳放9個月過桶的百富12年雙桶單一麥芽威士忌,從1993年販售迄今已近30年,為百富的最經典酒款。此外,百富酒廠歷史上推出的第二種過桶酒款:百富21年波特酒桶PortWood威士忌,經長時間窖藏熟成,醞釀極具深度的風味,是百富獲得首獎最多,也是首席調酒師大衛史都華個人最愛的酒款之一。

首創過桶工藝 讓百富威士忌在甜美蜂蜜風味上 更增添多變的層次

配圖警語_2
Photo Credit: 百富

最後,綜合分析威士忌市場的主流風味,果香、蜂蜜、煙燻和花香是台灣民眾鍾愛的四大風味。然而,想要品飲這四種風味,藉由百富首創的過桶工藝,體驗品牌經典的香甜蜂蜜風味之餘,如果想要體驗熱帶水果的果香,就可選擇百富14年加勒比海蘭姆桶單一麥芽威士忌。過桶加勒比海蘭姆酒桶(Rum)的金黃酒液,先帶來熱帶水果、熱帶香料及太妃糖的香氣,再引出香草、橡木桶甜味,口感濃厚圓潤,餘韻柔和且綿長。若是喜歡煙燻泥煤風味,百富故事系列14年泥煤週威士忌是個很好的選擇,溫和的煙燻泥煤融合著細緻奶油蜂蜜氣息與淡雅花香調,品飲時還能感受到些微的柑橘和橡木氣息,猶如天鵝絲絨般的滑順飽滿口感,加上引出水果香氣的尾韻層次變化,怎會不讓人念念難忘。

配圖警語_4_V2
Photo Credit:百富

近來領先全球、在台首發上市的百富16年法國皮諾甜酒桶單一麥芽威士忌,是百富首席調酒師大衛史都華的最新傑作,先在美國橡木桶陳年16年,再經由法國皮諾甜酒桶二次熟成,讓百富的蜂蜜甜香層疊出更多層次感,不僅讓品飲者能嗅聞到美妙平衡的蓮花與天竺葵花香,更有蜂蜜基調和細緻蜜餞、嫩薑辛香,加上清爽順口的尾韻,豐富感受、很是令人著迷。

一心一藝,百富持續以「過桶工藝」在標誌性的香甜蜂蜜風味之上,尋找新的可能。相信只要曾感受過桶工藝的魔幻般奧妙,肯定會為台灣日益增長的威士忌愛好者族群,開拓出更為寬廣多元的嗅味覺體驗疆域。


猜你喜歡