聽說你最近在刷題- 軟體工程師的面試一定會遇到的資料結構及演算法關卡 (& 分享 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
「前端工程師薪水2021」的推薦目錄:
- 關於前端工程師薪水2021 在 半路出家軟體工程師在矽谷 Facebook 的最佳解答
- 關於前端工程師薪水2021 在 孫弘岳-人力資源管理的世界 Facebook 的最佳解答
- 關於前端工程師薪水2021 在 半路出家軟體工程師在矽谷 Facebook 的精選貼文
- 關於前端工程師薪水2021 在 [心得] 2021前端工程師面試心得- 看板Soft_Job - 批踢踢實業坊 的評價
- 關於前端工程師薪水2021 在 台灣前端工程師的年薪天花板 - Dcard 的評價
- 關於前端工程師薪水2021 在 【開箱】2021 前端工程師薪水調查- YouTube 的評價
- 關於前端工程師薪水2021 在 前端工程師起薪ptt、前端薪水低 - 台鐵車站資訊懶人包 的評價
- 關於前端工程師薪水2021 在 網路上關於前端工程師薪水-在PTT/MOBILE01/Dcard上的升學 ... 的評價
- 關於前端工程師薪水2021 在 網路上關於前端工程師薪水-在PTT/MOBILE01/Dcard上的升學 ... 的評價
- 關於前端工程師薪水2021 在 網路上關於前端工程師薪水-在PTT/MOBILE01/Dcard上的升學 ... 的評價
- 關於前端工程師薪水2021 在 The F2E - 前端修練精神時光屋 - Facebook 的評價
- 關於前端工程師薪水2021 在 軟體工程師薪水ptt 的評價
- 關於前端工程師薪水2021 在 前端工程師薪水PTT - 加油地圖 的評價
- 關於前端工程師薪水2021 在 [求職][全台]Junior前端工程師· Issue #964 · f2etw/jobs - GitHub 的評價
- 關於前端工程師薪水2021 在 回顧成為前端工程師的這五年: 淺談選擇前端的理由 的評價
- 關於前端工程師薪水2021 在 Re: [心得] 2022上半年前端工程師面試心得PTT推薦Soft_Job 的評價
- 關於前端工程師薪水2021 在 軟體工程師薪水// enjoy 121 旗艦版ptt 的評價
- 關於前端工程師薪水2021 在 Soft_Job - [心得] 學店生前端轉職面試心得 - PTT情感投資事業版 的評價
前端工程師薪水2021 在 孫弘岳-人力資源管理的世界 Facebook 的最佳解答
Glassdoor 公佈2021美國最佳50大職業
.
繼最佳雇主(企業)後,Glassdoor根據美國薪資高低、工作滿意度與職缺數三個數據面向,排出最佳50個職業,沒有意外的,前9名都是資通訊有關的工作,第10名是牙醫,第11名又是資訊類(前端工程師),第12名則是人力資源經理,是目前所有非理工類/醫科,排名最佳的職業。雖然薪水不如13名的策略規劃經理,但職缺機會較多。這個排名告訴大家,能夠吸引、留住與激勵資通訊人才的人資經理,可能是HR的關鍵成功要素。至於HR倒底該不該也懂一點理工知識,就讓我們繼續看下去。
.
Glassdoor根據人資經理的職缺條件發現目前最多的關鍵字是: 策略思維、領導力、協作力、諮詢技巧、影響力、溝通與HR商業夥伴 (HRBP)。
.
https://www.glassdoor.com/List/Best-Jobs-in-America-LST_KQ0,20.htm
前端工程師薪水2021 在 半路出家軟體工程師在矽谷 Facebook 的精選貼文
聽說你最近在刷題- 軟體工程師的面試一定會遇到的資料結構及演算法關卡 (& 分享 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
前端工程師薪水2021 在 台灣前端工程師的年薪天花板 - Dcard 的推薦與評價
台灣前端工程師的年薪天花板. 前端工程師. 2021年9月14日11:03. 想請問各位大大前端的年薪在台灣最高大概落在哪裡,未來還有機會突破目前的天花板嗎?前端在未來有哪些 ... ... <看更多>
前端工程師薪水2021 在 【開箱】2021 前端工程師薪水調查- YouTube 的推薦與評價
超過30 歲以上的 薪水 分佈3. 容易達到年薪百萬的產業分布4. 第一份 前端工程師 的年薪平均5. 男女性與科系背景比例調查. ... <看更多>
前端工程師薪水2021 在 [心得] 2021前端工程師面試心得- 看板Soft_Job - 批踢踢實業坊 的推薦與評價
幫轉,不是我的心得。
要看網誌請搜尋李彥杰 2021 前端工程師面試心得 應該就找得到;我貼網址一直失敗。
一、前言
先簡介一下背景,小弟畢業於112EE,大二的時候開始接觸前端,一開始是看線上平台的課程學習,之後大三大四分別進入了三家不同的公司做前端實習生,畢業後做了正職前端工程師大約八個月。這次找工作從二月過完年後開始找工作,總共經歷大約一個月的時間。
因為之前受到ptt版友還有一些medium的文章幫助很多,所以趁這個機會來回饋一下,也當作是紀錄自己人生的小里程碑。
二、準備
1.leetcode medium 刷了120題左右,不太想刷easy跟hard因為覺得很浪費時間(之後要往senior做準備就會開始刷hard了),不知道從何刷起的話之前在ptt文章有看到一個非常有幫助的連結:
https://leetcode.com/list/xoqag3yj/,這75題幾乎囊括了所有類型的題目,一邊刷的同時一邊複習自己有哪些觀念或結構還不熟悉,就再去針對那類型的題目練習。
2.英文我上了一個線上平台的課程(怕被說業配我就不打名字了),每天上三十分鐘,持續了大概兩個禮拜就去面試了。
我覺得英文這個東西還是趁早開始學比較好,至於甚麼平台真的不要太在意,先開始最重要,先開始最重要,先開始最重要,反正投資自己一定穩賺不賠,與其拿去養胖自己不如多做一點有意義的事:D
3.對你的履歷上面提到的專案一定要非常非常熟悉,包括遇到的難點,是怎麼解決的,當時遇到甚麼抉擇,因為什麼原因做了這樣的決定。除了專案以外最好再準備一個最近看到學到的技術相關的東西,可以是任何東西讓你跟別人有差距的,一方面可以告訴面試官你平常都有在學新東西,另一方面可以將話題帶往你比較熟悉的方向。
4.剩下的就是一些CSS,JS,React準備,CSS的部分因為我現在上班都是全部自己來,不用auto complete,所以算是蠻熟的了就沒有多去準備,剩下的JS跟React只能說看到甚麼學甚麼,底下有幾個我很推薦的連結有興趣可以看一下(如果有作者不希望我放連結請通知我謝謝):
Web rendering
https://developers.google.com/web/updates/2019/02/rendering-on-the-web
Web performance
https://developers.google.com/web/updates/2018/08/web-performance-made-easy
Netflix 網站優化
https://medium.com/dev-channel/a-netflix-web-performance-case-study-c0bcde26a9d9
Event loop
https://pjchender.blogspot.com/2017/08/javascript-learn-event-loop-stack-queue.html
如果不知道自己哪裡不足可以看這個
https://zhuanlan.zhihu.com/p/143611353
三、面試心得
升鼎科技
一面:
總共分成四個階段
第一個階段寫了一題easy的leetcode,寫完之後追加follow up問有沒有更好的時間複雜度或空間複雜度,算是很簡單的題目,有把javascript的Map跟Set是怎麼操作的好好學起來應該不是大問題。
第二和第三個階段主要聊了一下之前的經驗,還有現在公司的產品主要負責的部分,還有之後想要發展的方向,整體聊起來的感覺非常的好,非常工程師的聊天,讓我覺得他們是真心想要跟我合作的,而不只是單純在考我問題。
最後一個階段跟HR聊了一下期待薪資,福利等等。
結果:offer get,氛圍非常好,但是因為接受了其他 offer 所以婉拒了。
Appier
一面:online interview
由三位不同team的前端來面試,主要寫了一點code,還問了一些基本的css,有答應面試官不透露題目,所以就不細講了,之前有看過類似的像這題:
https://github.com/lgwebdream/FE-Interview/issues/21
有興趣的可以研究一下,就是看你js的程如何。
二面:onsite interview
由三位同個team的成員來面試,一樣問了一些背景相關的知識,之後問了一個React怎麼做data binding,然後當場我就愣住了,我好像都是自己做binding,就亂回答了一通說給一個input怎麼做bind的,這好像也不是面試官想要聽的答案,之後又問了會不會寫後端跟App,感覺是需要一個通才,面完的當下就覺得大概是沒過了,還需要好好加強自己的基本功,然後多碰一點後端的東西。
結果:感謝信。
優拓科技
這間的老闆ric是我大學時期有修過課的教授,他的data structure在敝系是出了名的硬,來之前就覺得應該不會很簡單,所以抱著學習的心態來這家公司面試。
一面:onsite interview
先簡單的介紹了一下自己之後,開始問技術相關的問題,印象比較深刻的是問了一個如果今天在做一個操作很大的迴圈,導致畫面會卡頓,該怎麼辦?
我沒有在前端操作過巨量的運算,所以算是問到了一個我的知識盲點,後來面試官看我不會就跟我講了可以的解法,大概就是把迴圈拆開來,或是把運算拆開,用setInterval去做,很像React Fiber的操作,就是每更新一個node就去檢查一下時間超過了沒,沒超過就繼續做,超過了就停下來先去做比較重要的事。其實很多問題大概都可以回答個五到六成,但是面試官在聽你解釋問題的時候其實也能聽得出來你有幾兩重,所以還是多充實自己,遇到問題就去通盤了解,被問到的時候才可以給出比較全面的回答。
結果:感謝信,tech lead 還在信中跟我說到「頂尖的前端工程師不僅僅只是會前端,他們是通才,只是選擇在前端領域更加專精」,真的讓我很感動,他們是很認真的在招攬人才,只可惜我還沒到那個境界。
HaHow
零面:phone interview
時間大概半小時,簡單問了一下之前的背景,現在的工作負責什麼項目,有沒有遇到什麼困難,怎麼解決。
作業:
寫一個無限滾動的介面,最近很多間公司都會希望手刻無限滾動,可以參考一下ObserverIntersectionAPI,這個Web API同時也能拿來做lazyloading,有興趣的可以研究一下。
一面:
原本預定要有兩個階段,分別是RD team還有PM會來面試,結果RD面完就說PM有個臨時會議中斷了。
RD team考了一題費氏數列,問了一些JS的問題,還問了React的Virtual Dom是怎麼做的,我把React16的Fiber架構大概講了一遍,結果被問到如果React在commit階段就超過了時間那還是會卡頓要怎麼辦,我當下就卡住了,我的內心想法是那應該沒辦法吧,但我又覺得commit階段真的會超過時間嗎?
然後就一邊糾結一邊回答我不知道XD之後還問了一題React在做map的時候會需要加上一個key,加這個key的目的是什麼?完了又是一個我之前遇到但是沒有徹底搞懂的東西,結果又亂答一通。
結果:無聲卡,整個面試的流程非常冗長,建議如果有想要去試試看的可以提早投。
Line Taiwan
OA:
總共十題兩個小時,前三題是coding題目,第四題問事件捕捉,事件冒泡,後面幾題都是問答題。整體來說難度應該算中間偏上,但是因為用他們家的系統所以難度直接拉高一個等級,輸入輸出都要自己來,連test case都要自己想,我原本以為這種OA都是要全對才會過,寫完當下覺得自己肯定過不了了,結果來了一面的通知讓我嚇一大跳XD
一面:
簡單做了自我介紹,講了一下現在在用的技術,現在負責做什麼,然後針對OA的題目做了一些討論,特別說一下我覺得這樣才有在重視求職者,很多公司發了OA或作業,面試時完全都沒提到,雖然說對公司來說可能就只是篩人的門檻,但是對求職者來說也是付出了時間,又沒拿報酬,給個回饋我覺得應該不算是太過分。之後有著重問了Web performance相關的東西,因為之前剛好有做到所以還算回答的順暢。
二面:
這關由Hiring Manager來面試,主要是聊之前的專案經驗,跟技術比較無關,比較偏向想法類型,這類型的面試對我來說蠻有趣的,可以跟面試官交流彼此想法,各種類型的問題都有可能在這關被問到,像是我現在的專案沒有寫測試,就被問了如果我要跟PM解釋測試的價值,那我會怎麼說?
那如果你因為時間不夠,只能加部分測試,你覺得你要怎麼加,你要加哪種測試?
像是這種問題,可以看出你的溝通能力還有思路夠不夠清晰,我覺得非常的專業,這是我理想中面試官的樣子。
三面:
原本二面的面試官跟我說二面就是最後一面了,所以我收到三面通知的時候還蠻疑惑的。
不過也因為這時候我決定去Bytedance了,所以就沒有參加三面了,Line給我的面試體驗真的是非常好(除了OA那個系統很難用之外)。
結果:收到其他offer婉拒三面。
Bytedance(Singapore)
總共三輪技術面+一輪HR,每輪都45分鐘左右
一面:
有特別要求所以是中文面試,比較特別的是這關的面試官似乎連我的履歷都沒看,上來自我介紹完之後就是題目轟炸,問得非常仔細,像是javascript和React差別,function component 跟 class component 差別,閉包等等,而且每個問題都有follow up,只知道表面肯定會倒,最後考了一題medium左右的leetcode,給你一顆binary tree,tree node的結構包含parent, left, right,給你兩個節點p, q,請問p與q的距離是多少?
我先給了一個 dfs的解答,時間複雜度O(n),之後面試官追問只要是一個map都可以用dfs來做,既然我給你了一個binary tree,有沒有更好的辦法,之後就給了一個往上找parent然後記起來的解法,時間複雜度O(log(n))。
二面:
有特別要求所以是中文面試,這關主要針對你的履歷問相關的問題,這裡停留了蠻久的效能優化問題,還問了現在做的項目中比較困難的部分,針對這個部分面試官再出follow up,主要也是技術相關的問題居多,最後問了一題應該也是medium的題,給你一個array,裡面的每個元素都是一個object,
object包含id和next,請你按照上一個元素的next是下一個元素的id做排序,可以假設題目一定正確且只有一個正確解答。題目描述有點複雜但不是一個太難的題目,我一開始給了一個O(n )的解答,之後用了兩個Map把元素都記起來,時間複雜度O(n),這個做法不是很漂亮但只要時間複雜度對了應該就給過。題外話前兩關的coding題如果沒過大概率就沒下文了,要想辦法在10分鐘內想出完美解答還是有點難度的,可以試著先給比較爛的解答,給的同時順便想一下等一下要怎麼改,可以幫你增加一點信心的同時多延長一點時間。
三面:
這關規定一定要用英文,所以英文至少要能夠溝通,由Hiring Manager來面試,先做了自我介紹之後針對經驗問了一些問題,之後總共問了三個大問題,第一個你打完網址按下enter之後發生了什麼事,這個問題網路上的資源非常的多,重點在於你能回答得多細,像我中間對DNS解析沒有過多研究,就被問DNS具體是怎麼解析的,我只能回答到從後面解析到前面,具體是用什麼演算法,怎麼比對,我當時都沒有研究過,算是亂回答了一通。第二題問CORS是什麼,我回答了一些簡單請求,預檢的規則以後,接著問CORS有什麼優點跟缺點,我就舉了古早的Proxy Server
跟jsonp等這些方法跟CORS做比較,之後又接著問CORS有沒有什麼安全性上的問題,然後我就倒了:(,讓我了解自己對於這個問題沒有研究透徹,在研究問題的時候就應該要有這種窮追猛打的精神。最後一個問題javascript的hash map具體是怎麼實作的,還好我之前大學在上課的時候有自己刻過,就回答了一些hash function, collision,還提到如果碰撞超過8個會從link list轉成紅黑樹,接著就被問如果被轉成樹要怎麼確定hash
map查找的時間複雜度是O(1),我腦中想著紅黑數最快也要O(log(n))呀那到底是怎麼找的,然後我就又亂扯了一通。我都覺得我可能要在這關倒了,結果面試官直接跟我說覺得我的表現蠻好的,但是如果以後要來新加坡工作要好好練英文XD算是鬆了一口氣。
HR面:
這關也是一定要用英文面試,原本其實我很擔心,以為會問很多behavior question,結果比較像是在閒聊,聊一些為什麼要來這間公司,期望薪資是多少等等這些,沒有問什麼很刁難的題目,HR給人的感覺也很親切。大概兩天之後就通知我有確定的offer了。
結果:offer get,整體面試下來的強度算是很夠的,每次大約一個小時的過程中一直在輸出大量的資訊,面試官也會給足feedback然後再接著問follow question,所以平常的閱讀量真的蠻重要的,非常有可能一不小心就會問到你不會的東西,儘管你沒準備到但是依然能回答個三四成。
四、總結
我覺得面試有個很有趣的地方就是可以檢視自己還有哪些不足,平常上班可能都在操作熟悉的環境,熟悉的代碼,很有可能有某部分東西自己一直在用但是沒有搞懂過,可以透過這個機會讓自己再精進一點。然後我很喜歡一句話:「不難,要你幹嘛?」所以在準備的時候還有平常再寫code的時候盡量讓自己的思考再深入一點,以此勉勵自己,繼續朝著頂尖前端工程師的路上前進。
-----
Sent from JPTT on my iPhone
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.42.34 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1617225338.A.53C.html
... <看更多>