#軟體工程師面試 #文長慎入
面試問題好像一直以來都是一個很多人關切的環節,在各大版上也一直有人會詢問。因為之前有幫公司面試一些人,還有加上從朋友那邊搜刮來的經驗,概括分享一下。
這邊感覺可以分成幾個部分:
1. 面試的題目是否都是演算法相關題目?
2. 是為什麼實際工作內容通常都和面試考的沒有相關?
3. 我現在學的東西對找工作是否有幫助?
4. 公司招募看的到底是這個人的學經歷,能力,個性,還是什麼,為什麼有些人很感覺很厲害卻一直無法拿到offer?
其實用FB排版不太容易,但因為懶得登入部落格,想說快速地打一打,所以也請各位見諒。
#面試的題目是否都是演算法相關題目
如果是投FANG之類的,Facebook Amazon, Neflix, Google (沒記錯應該是這幾間),反正就是這些有名的大廠,除了Netflix目前沒有遇到認識的聊過,其他都是考演算法沒錯。
當然也不只有會考演算法,根據你申請的職缺,可能也會加考一些其他的東西。
那其公司是怎樣呢?其實還是有很多公司會考演算法相關的,尤其是線上面試。
雖然在疫情下全都是線上,但一般來說,還是會有分兩種,一種是沒有真人的狀況下,就是給你像是HackRank這種網站,你點開可能有六十分鐘讓你做兩題。
做完以後你提交,你也不會知道你的分數跟分析結果之類的,看公司怎麼做設定,而且除了演算法相關題目,也可以設定選擇題之類的。
另一種就是真人面試,通常電腦自動面完以後,你可能會跟真人線上面試,真人也是會給你類似所謂的白板題,就是出一個題目讓你現場解題,然後中間可能有的會要你跟他討論,當然看面試官拉!
比較加分的還是,你編寫的時候可以邊闡述自己的想法,而不是低頭默默寫完,這樣也是有點尷尬。如果你編寫邊闡述的話,或者是少有點互動,也是展現你的溝通能力以及你對於題目的掌握能力,就像是你看到一個很簡單的題目 (2+3)*5 之類的,你可以很有自信的說,喔因為2+3在括弧裡面,所以要先算,然後再乘以5,展現底是真的有理解,而不是就是背題目之類的。
有些公司也可能是給你回家作業,叫你做一個小專案之類的,看你應徵的職缺,可能是叫你做一個UI 或者叫你建一個API 也可能叫你做一整個比較完整的東西出來。如果你是面試架構師的話,可能會叫你建一個架構,或設計一個架構出來。
然後也有的公司(像我們公司)就是需要pair programming 所以在線上面試的階段就是會有,真人跟你一起寫程式這樣。
#為什麼實際工作內容通常都和面試考的沒有相關
這個部分一直以來都是一個難解的謎題。像是Google Facebook這種大公司其實不難理解,畢竟他們是比較類似General 的招募,不是一開始就決定好你就是要去某個Team然後永遠讓你待在那個Team。就他們招募的是他們覺得,有潛力的人才,這樣不管需要做什麼都可以自由移動他們,給他們training就可以變得很好用。加上他們一次招募的數量也是相當龐大,考演算法相關的話,可以快速篩選,也更有機會找到他們需要的人才。
因為像是Facebook或Google這種有自己開發框架,開發技術的公司,他們的確有很多時候需要寫演算法或者系統優化的工作。
那像是普通的中小企業或新創,說真的,其實就是跟風。因為覺得人家Google Facebook都是這樣找到優秀人才,那我們也要依樣畫葫蘆,這樣鐵定也能找到厲害的人。
可是這樣找到的人進去以後,發現公司好像也是不知道在幹嘛,最後可能也會待不下去。所以這個部分,近年來也越來越多公司開始改進,開始思考什麼樣的招募流程最適合自己公司。
像是pair programming也開始成為近年來的一個流行的面試,有的公司並不是真的pair 但就是你要跟他們一起工作,了解他們公司的文化,或者跟他們的工程師進行一些深度討論。或者會問你說,假設給你設計一個系統,你要怎麼做之類的。
當然,面試問題跟流程都是每間公司各有不同,不是說你現在準備一種就萬無一失。所以說最好還是盡可能的,提升自己的基礎能力。
如果真的就是打算以FANG為目標的話,就可以從刷題開始,像是Leetcode, Hackrank, codewars之類的都不錯。之前有看到一篇文章,他刷了幾百題,而且每題刷了三次以上,真的很有毅力。刷題的重點就是在於熟練那些題目,可是也不要硬背,你練習是要練那個速度感。可是該理解的還是要理解。
因為你進公司以後,你還是需要使用那些東西來工作,不是只是為了刷題而刷題,而且面試官可能也會考你變形題之類的,或者問你一些記憶體相關的問題,或者是系統設計的問題,或者單純想知道,你是怎麼想出解法的,所以硬背題目跟答案其實也是不太行。
目前我的了解是,大部分中小型企業或者新創,很多時候你學習新東西的能力是比演算法更重要的,尤其是新創你什麼都要會,假設公司是剛起步的新創,你就要變成公司主要的技術專家,什麼東西不太會也要馬上現學現賣,也不要期望公司可能會給你什麼Training 或者有人給你依靠,可能同事還要依靠你。
中型或者普通大型企業,假設公司已經有產品的話,大部分的時候可能是既有產品維護,除非你剛好很幸運地在新產品開發的Team,這樣就有機會學到很多東西,不然維護的話,很多時候只是在了解產品本身是否有Bug,改善code品質之類,也要看公司是否有想花成本在維護上面。如果公司就是打算一個產品,改一點東西就繼續賣錢,那樣好像也不太需要一直去migrate 或者搞新東西上去。
如果你剛好很幸運在獨角獸新創,那你不但可以學到很多東西,還可以用最新科技,可能還有機會遇到大神帶你。
所以說選公司其實也是有點重要,面試的時候,可以問問他們說,那你平常的daily work是怎麼樣的,公司有沒有走敏捷開發,公司有沒有用雲端,公司一個Team的規模之類,以及公司會不會提供訓練。
#我現在學的東西對找工作是否有幫助
其實這個就要看你的未來三年五年十年規劃。
假設你就是都在寫前端,你也覺得我要寫前端寫一輩子,那好像就可以繼續一直focus在前端。如果你擔心自己會丟飯碗,是不是要學點後端,其實也是可以學,可是學了以後,你打算學得多專精?後端的東西也是會一直更新,一直進步。可能Restful API 也可能不是,DB也有好多種DB, 後端語言也很多種,所以你是想要學個大概,還是是希望,後端也問題的時候,自己可以去看code也看得懂?
前一個專案,公司有一個前端,他就是因為自己做的ticket幾乎都會碰到後端,就乾脆把整個後端也寫一寫,就變成fullstack,雖然他主要還是算前端。但也因為是.NET 所以前端跟後端可能沒有太明顯的分界,至少我相信他本來就會寫.NET了,因為幾乎有一半以上的controller都是他寫的。
如果你是寫react SPA,就是跟後端完全分開,你就只要寫到send http request 那邊的話,那好像也不太需要去了解到後端的架構,就是大概知道後端的endpoint 長什麼樣子就好,他們需要提供的文件就是需要提供。
如果說你是怕以後失業,怕公司可能覺得請全端比較划算,那的確還是多學一點好,反正多學也是投資自己。還能順便展現自己的上進心以及學習能力。
以consultancy來說好了,感覺是什麼都要學,像是公司可能就會說,啊最近我們的客人都要求要會什麼什麼,那你就趕快學一下。當然公司也不是很壞心的就叫你要馬上學會,公司最近也是有開始提供一大堆Training 之類的,還給你錢讓你去考一些證照。
目前我使用的語言主要還是Javascript 和 C#這樣,然後公司有希望我可以好好學學Java。其實也不是不會寫Java,如果有發漏我其他文章的話就知道,其實我最一開始學的時候,第一個語言就是Java。
在台大資訊系統訓練班的時候,我就上了Java和PHP的課程,為自己來英國念研究所做準備,一年的master course也都是Java 跟PHP為主,然後有用了一點Python這樣。可是工作以後就只有使用C#和Javascript 而已,所以說,學校學了也不一定會用到。
很多東西都是工作以後才學的,然後Python是平常自己刷題的時候會用,因為覺得不錯用。
其他的話,我覺得雲端相關的東西滿實用的,像是AWS或Azure 或GCP 有機會的話是可以自己摸摸。我自己是滿幸運的在工作上一直都有用到雲端產品,主要是AWS,前一個專案有用Azure 這樣。
DB的話,就是SQL和NoSQL可以個學一個,應該就滿好用的了,目前最流行的應該就是PostgreSQL和MongoDB 。如果對於Graphic Database有興趣也可以稍微看一下像是Neo4J之類的吧!
前端框架的話,就是React, Angular, Vue.js選一個吧!學會一個以後再去學其他的也不難,這三個我是剛好工作上都有用到,我自己是覺得Vue和React應該是比較好上手的,入門門檻比較低,Angular就一定要寫Typescript.
後端框架的話,看你用什麼語言,Java就學spring boot,
C#就是.NET,JS的話應該是Express,Python就Django,PHP就Laravel 。
Mobile的話我沒有寫過也不知道。
如果是平常想要補充知識的話,可以多念一些像是security 相關的東西,或者是Oauth那類的,也可以看一下架構之類的。像是Microservices, microfrontend, Domain Driven Development 這些概念性的東西。
也可以看一些像是Clean Code相關的書,怎樣重構原本的爛Code或者TDD相關的書。
反正前一篇文章就說了,這個職業就是要一直學,活到老學到老,如果打算做到老的話。
#公司招募看的到底是這個人的什麼
其實每個公司應該都不太相同。有的公司就是要招募他們覺得最聰明的人,所以就是一直問你一些很難的東西。或者就是只要找那種名校出來的人,最好有什麼數學物理奧林匹亞的。
有些公司看的是你的個性,符不符合公司文化,或者同事喜不喜歡你之類的。
有些公司就是很缺人,看你能不能馬上上工之類的。能的話就馬上錄取你之類。但通常那個可能是很雷的缺,例如公司找人找很久都找不到,終於看到一線希望。然後為什麼找不到人,可能是薪水開的偏低,或者公司名聲不好,上Glassdoor就可以查看公司的評價。也可能是職缺本身很雷,例如看起來就是個打雜缺。或者是前人都做不久就離開,所以需要一直找人。
有些公司是看你寫的code 例如看你的code乾不乾淨,可能你寫出來的code都很乾淨,設計也很好,思路也很清晰,他們就會錄取你。
有些公司看的是你有沒有某些特定的經驗,例如公司開那個缺剛好就是要找有AWS經驗的人,所以可能就是會錄取他們覺得AWS經驗比較多的人。或者是剛好想找之前有做過Serverless架構的人,或者是有碰過Kubernetes的人,這個時候真的就是靠經驗了。
也有的公司就是,他們也懶得找人,HR給他們面試的第一個人就會錄取,這個完全靠運氣。這件事情真的發生在我第一間公司的另外一個Team,主管非常不喜歡面試人,也覺得我工作都沒時間還要面試。所以就是隨便問問之類的,然後就跟HR說好。
--------------------------------------
以上就是我目前經歷過以及別人分享給我的經驗。我覺得面試的話,運氣真的也是佔滿大的比例,尤其是遇到像第一間公司那種狀況的。
當然年輕的時候可能會比較急躁,也很擔心自己找不到工作,考量到的還有金錢跟公司名聲,所以學不學得到東西也可能是其次。
選offer的時候,也可能就是可以分析一下,自己想要的到底是什麼,是金錢,是做得開心,還是想要可以做的久(這個也要看公司可以活多久),除了看Glassdoor也可以上網看一下公司財報。
最近的疫情衝擊下,有很多新創或中小企業也開始裁員跟減薪,所以公司平常的財務狀況和經營方針也是很重要的。即使公司可能一直都有收入,也可能因為現金管理問題,導致沒有足夠現金需要裁員。
「google api js」的推薦目錄:
- 關於google api js 在 小吃貨的英國生活日記 Facebook 的最讚貼文
- 關於google api js 在 純靠北工程師 Facebook 的最佳解答
- 關於google api js 在 小吃貨的英國生活日記 Facebook 的最佳貼文
- 關於google api js 在 Google API Client Library for JavaScript 的評價
- 關於google api js 在 Google API Client Library for JavaScript 的評價
- 關於google api js 在 google-api-javascript-client/docs/samples.md at master 的評價
- 關於google api js 在 Google JavaScript API 的使用原创 的評價
- 關於google api js 在 Setting Up Google Maps JavaScript API - YouTube 的評價
- 關於google api js 在 google maps javascript api without browser - node.js 的評價
- 關於google api js 在 Cannot add Google Map API script after pageload 的評價
- 關於google api js 在 Google API callback doesn't work - Drupal Answers 的評價
- 關於google api js 在 google maps javascript api的推薦與評價,YOUTUBE、GITHUB 的評價
- 關於google api js 在 google maps javascript api的推薦與評價,YOUTUBE、GITHUB 的評價
- 關於google api js 在 hit 的評價
google api js 在 純靠北工程師 Facebook 的最佳解答
#純靠北工程師2jr
請益各位30cm,
最近在找工作剛好看到
「台灣軟體業業界現況詳解」
這篇文章,看到其中
「一個專精React Native的人定位很尷尬」
這一段十分有感,小弟南部私立大學資工還沒畢業但幾乎沒課,目前靠接案維生,想要轉往兼職、實習、遠端,但因為用過不少技術但都不專精,導致我不知道履歷表上該不該放上去(經驗不足)
一方面是希望工作上可以繼續接深入,但又怕被面試官覺得太雜刷掉,希望各位前輩們可以指點履歷&職涯發展(排版難看對不起)
主要寫雙平台React Native與 後端,用過像是docker、RabbitMQ、nginx、Ha、Gitlab、GCP...等工具。
不到精通也就是能看需求翻文件做出來的程度(做的慢)
前端離開框架就不太會寫,切版很爛。
後端主要用 RoR、Py、js、GO 搭配 MongoDB/SQL,就是能做出前端要的後台/API的程度,可以完成基本的架站跟部署,但很少寫測試,coding style自認母湯,不會PHP也很不熟微軟。
RN的話寫過不少企業內部工具類的App,可以幫身邊的人隔空抓藥的程度,但是興趣在後端,做過的專案不少但都只能放截圖。
身邊太多強者同學不是Google就是外商新創(或是+9),讓我不知道以菜雞大學生來說要到什麼程度才可以進公司工作。感謝各位,歡迎洗臉
📢 匿名發文請至 https://kaobei.engineer/cards/create
🥙 全平台留言 https://kaobei.engineer/cards/show/3303
google api js 在 小吃貨的英國生活日記 Facebook 的最佳貼文
#英國工作面試經驗分享
趁著新工作開工前和大家簡單分享一下這次找工作的心得。
這次找工作前前後後大概做了10間公司的interview ,但只有兩間是face to face 這樣,然後我拿了其中一間的offer。另一間其實也有很大機會拿offer但後來不太想繼續他們的流程,所以就沒下文了。
有些是我自己投的,有些是agent/hunter幫我找的,一般來說,如果沒有工作經驗,很難吸引到hunter,所以這次的經驗跟我剛畢業的時候很不一樣,這次一大堆hunter打來也很煩。
一般來說會有phone interview 和 on-site interview,有的會有一個phone interview + 兩個 on-site interview
on-site就是去他們公司面試這樣。然後工程師類型,一般phone interview可能會是technical的,例如會用Google Doc或者他們公司自己的系統,可以雙方一起coding的。
像Javascript會有codePen之類的,然後可能Skype也是Group一起,就對方可能有兩三個人跟你一起寫code然後同時也skype,這個我覺得壓力很大,尤其你寫的時候別人都看的到。這個是Oxfordnanopore的面試,也是我第一次遇到這樣的面試,面試的亂七八糟的,但其實我不知道結果如何,因為這個是agent幫我找的(跟我後來拿到offer的agent同一個,所以即使有下文也是他幫我回絕,所以我不太清楚feedback。
分析一下表現得很爛的原因,有一點大概是因為沒什麼這樣的經驗,以及我從來沒用過CodePen,然後原本一個小時的面試拖到兩個小時(所以大家時間最好都抓比較長一點),而且又是三個人,覺得壓力很大。雖然問的問題並不是很難,但當下腦但就是一片空白......寫出了第一題以後,他們稍微改了題目,讓我又很混亂,然後他們決定要跳到第三題,其實我當下已經覺得很痛苦想要快點結束......然後我忘記第三題我解的怎麼樣了,反正那些題目大概就是Google JS interview會被問的題目。然後又問了我CSS的東西,我CSS真的超爛的,答得很爛,他們知道我CSS很少用到,因為我們都用Angular Material ......(寫到這裡不知道有多少人看得懂我在寫什麼了.....) 反正題目結束以後,他們就問我有沒有什麼問題要問他們,然後他們還問我今天的感想如何,覺得自己表現的怎麼樣,我說我覺得自己表現得很爛,當下肚子非常的餓,快餓昏了(因為這個面試前還做了另一個面試,也是寫題目的),讓人覺得很想哭= =想要快點結束,後來終於亂聊了一下結束這樣。回想起來這個大概是我最痛苦的一次面試。
這個面試的前一個面試,也是要雙向互動,但不是雙方一起寫一些code,是登入他們公司的系統,然後有點像記事本那樣,他可以打一些東西我看的到,也是做題目,大概是寫一個函式,可以給一串數字,找出當中的偶數。這個跟我第一個電話面試是一樣的題目,只是我第一次是寫C#,所以這個表現得還可以,然後問到CSS也是慘死,但他說他知道我不太會寫CSS。反正這個面試是面試的還OK,比較奇怪的是,這樣的面試,卻是用電話溝通,然後登入電腦系統,並不是用Skype,所以電話可能要開擴音,不然也無法打字.....這個公司也是跟我新公司一樣的agent,所以我也不知道feedback如何,就是沒麼下文這樣。
第一個電話面試,就是我說的一樣的方式,只是他們是用Google Doc.,然後也是問了那個找偶數的,再來就是給我看一串code問我會印出什麼這樣,然後如果把Class改成Struct會印出什麼。我自己覺得這個面試還可以,但之後HR說什麼不能幫Junior工程師做簽證,他們目前只能幫Senior的做.....讓我很無言,因為我一開始就寫在履歷上面我需要簽證。
然後其他的面試通常是Phone interviw就是大致上問一些關於我的事情,例如我目前的工作內容,我在Team的角色,然後所使用的工具技能那些,接著就是會給回家作業,然後可能要在限定的時間做完這樣。過了的話他們通常會叫你去公司跟他們談談,問問你怎麼做的,然後我現在的公司他們有要我Improve code,雖然我自己覺得面試的有點爛,而且他們問我一些JS的東西當時回答是錯的答案,他們也沒糾正我。反正還是拿到offer就對了,而且我滿喜歡他們公司的,就馬上答應。
除了上述幾個以外,也有遇過直接給Technical 線上做題的,就是例如可能一個半小時內要做完50題前端的題目,然後可能有單選或多選,問的就是也是Google可以找到的題目,但就是閱讀的要快,然後要Google也要快,這個覺得多練習就可以了。
有的Phone Interview就是直接一直瘋狂問你各種技術性的問題,例如:
1.什麼是物件導向
2.什麼是多型
3.什麼是RestfulAPI
4.為什麼要寫automation test, 好處是什麼
5.什麼是Database normalisation
6.git commit 和 git push的差異
7.如果瀏覽器沒辦法支援JS可能會發生什麼問題
8.跨瀏覽器的重要性
9.什麼是工廠模式
就是類似這些,然後問了大概2-30題左右,超多的其實我已經忘記大概了,順序也忘了,phone interview之後要我寫回家作業,反正後來因為我已經拿到offer就回絕這間公司了,沒有繼續。
通常phone interview又寫完作業,現場面試可能會是白板題。
我覺得agent的好處是,你不用一直浪費時間去回email或者去follow up,然後需要談薪水的時候也可以讓他們去幫你談。
如果想要引起agent的注意可以到各大求職網站一直撒CV就是了,但通常Agent都不接受需要簽證的人,所以這個比較麻煩,我算是滿幸運的遇到我的agent,有一些agent還是會願意幫忙找可以做簽證的公司或者願意幫你跟公司談就是了。
個人覺得phone interview一般的問題可以自己在家裡模擬練習,然後講電話的時候記得發音要清楚,建議是準備耳機,如果不是需要coding的話,需要也可以用無線耳機之類的吧!
然後記得要注意禮貌,跟agent說話也要注意禮貌,請、謝謝、對不起,大概就是英國的傳統,一直講就對了,講完還可以適時地稱讚對方。
技術類的onsite interview通常應該也是類似白板題這樣,自己在家裡也可以練習,或者有要你寫回家作業的話就會討論回家作業相關的。回家作業通常是,前端就是做一個SPA(因為現在比較多是走SPA)然後後端就是要你寫一個API讓人家可以call 你,也有就是要你寫一個SPA可以call後端的RESTAPI,有限時間的話最好就快速完成,沒有限的話就把握時間把 code寫得漂亮一點。我新公司當時是叫我用Canvas做一個動畫,這個比較少見,大概是因為他們知道我原本是寫Angular可是他們公司用Vue.JS所以覺得那就考純JS......
新公司面試的一個關鍵我覺得是CEO跟Head of private market喜歡我,因為他們說公司文化很重要,Right experience doesn't means right person. 當時我也很喜歡他們給我的感覺,面試的時候工程師們也都很好,要走的時候CEO還帶我參觀公司環境。雖然Glassdoor上面有很多人批評CEO太controlling,但我覺得實際上還是要看相處起來的狀況,當然我還沒上工我也不清楚啦!面試的時候我滿喜歡他的。
總之這次的面試大概都是技術的,跟我原本剛畢業的時候差很多,但是我還是覺得每一間公司很重視自己公司的文化,所以找到對的公司也滿重要的,然後一開始其實我看公司簡介的時候覺得對他們沒什麼興趣,可是談完以後覺得好像可以試試看,然後去他們公司的時候感覺非常好。如果有任何面試機會的話,都可以去試試看,不然當作練習也好。
希望這篇對大家有小小的幫助......雖然說如果你不是工程師的話可能看不太懂QQ
#人生就是峰迴路轉
google api js 在 Google API Client Library for JavaScript 的推薦與評價
The Google API Client Library for JavaScript is designed for JavaScript client-application developers. It offers simple, flexible access to many Google APIs. ... <看更多>
google api js 在 google-api-javascript-client/docs/samples.md at master 的推薦與評價
This page provides three detailed examples which demonstrate the library's functionality. Additional samples(including authenticated/authorized requests) can be ... ... <看更多>
google api js 在 Google API Client Library for JavaScript 的推薦與評價
The Google API Client Library for JavaScript is designed for JavaScript client-application developers. It offers simple, flexible access to many Google APIs. ... <看更多>
相關內容