[心得] (誠蜂/米波/Animoca Brands/HLX/商凱捷)

看板Soft_Job作者 (祥)時間9年前 (2016/11/09 18:44), 9年前編輯推噓18(1801)
留言19則, 19人參與, 最新討論串1/1
前篇面試心得分享: https://www.ptt.cc/bbs/Soft_Job/M.1478494372.A.792.html (1) 公司: 誠蜂(honestbee) 職位: Android Developer honestbee為新加坡商,主要是做代購服務(台灣官網:https://honestbee.tw/zh-TW/) ,先前有在mit.jobs和Soft_Job版上徵才,由於他目前在台灣的業務僅限於台北,因 此團隊尚在擴大中,算是已經有一定規模的新創事業,衝著它在板上表示不限資深職 位便斗膽丟了CV過去,人資確認條件符合便會請你填phone interview的時間,面試分 4個階段(皆英文面試): 1) Phone Interview: 這部分人資會先請你自我介紹,並且會要求你說明你為何認為 自己適合這個職位? 過去有無做過android相關的專案,成效是如何? 對於honest -bee的了解為何? 以及你個人未來3~5年的職涯規劃? 最後你為何想要加入honest -bee? 你能替公司做什麼? 公司又能給你什麼? 2) Technical Interview: 自我介紹及專案成果說明,然後就是直接考白板題 3) Culture Interview: 這部分在測試面試者人格特質是否符合企業文化 4) Founder Interview: 過前3關就有機會和創辦人面對面接觸,聽說會壓力測試XD? 面試過程: 在第一階段很需要面試者展現自己的motivation,最好能先思考過申請的 intention是什麼,這會影響人資對你的觀感,並且回答盡量能夠和申請職位有相關性 ,例如我表示我所學技能和這職位相符,過去也已經有參與專案開發的經驗,順道比 較新創事業和一般大公司的優缺點,強化自己非這工作不可的動機,然後說明過去在 碩論上所得到的成果,期望未來可以在工作上做另一層次的突破...,人資覺得ok便會 口頭邀請進入第2階段面試; 第二階段是到honestbee台北公司面試,面試官為新加坡 Sr. Technical Manager,先做自我介紹以及android作品demo,面試官會從你的作品 裡面問你可能已經需要具備的概念,甚至可能問你的作品在其他國家是否有應用價值 ? 這部分仰賴面試者對於自己專案的熟悉程度,做完初步了解後便會開始請你上去解 白板題如下,多數都是考android和Java問題: [1] 請在白板上畫出life cycle的流程圖,並解釋每個state運行時的作用? 這部分最好能夠熟悉每個state基本上會處理的事情,例如: onCreate(): 通常會先做parameters setup或是resources configuration onPause(): acticity進到這state會先將需用到的變數或資源暫存起來 onDestroy(): 回收運行時記憶體資源並關閉activity ... [2] 你目前知道android中有哪幾種儲存資料的方式? # 儲存在local file # 儲存在SQLite DB # upload至遠端server # 使用ContentProvider # 利用SharedPreferences儲存; 不過這項當下我沒有想到,因為真的沒用過... [3] 說明你用過幾種layout? 這題應該是要考5大布局,然後我傻傻地只回答前兩個QQ LinearLayout/RelativeLayout/FrameLayout/TableLayout/AbsoluteLayout [4] 說明finalize()這個function的作用為何? 主要是可以覆寫(override)base class的同名函式,由使用者自定義資源釋放的 機制 [5] 如何使activity進不去onStop()和onDestroy()這兩個狀態? 這題我倒了...,以前沒遇過這個狀況,聽說是在這兩個state前先呼叫finish() ,實務上是可以這麼做啦,不過應該不會有這種寫法出現才對? [6] 今天給你兩個class分別為A, B,請在白板上寫A如何繼承B public class A extends B{ //do stuff }; [7] 承[6],假設在class A裡面有一個private member 'str',實作一個function, 比較兩個字串是否相同? public class A extends B{ private: String str; public: boolean strcmp(String s){ if(str.equal(s)) return true; return false; } }; [8] 舉例說明什麼是function overloading? function overriding? [9] 假設今天有一個interface C,寫下你要如何在class A實現C? public class A implements C{ //do stuff }; [10] abstract class和interface有什麼差別? [11] 假設今天有其他class D, E, F,class A可否繼承這3個class? 無法,Java無法多重繼承 [12] 承[11],那你要如何實現多重繼承概念? 將D, E, F寫成interface,再由A去實作三個interface的protocol public class A implements D, E, F{ //do stuff }; [13] Java和C++的差別在哪裡? 考完這些面試官就沒有再問下去了,進入聊天時間想知道我還有哪些問題,我大概跟 他問了一下這個職位上需要做哪些事? 另外順道分享我最近求職的歷程,想知道目前 新創公司大概都會需要哪些類型的即戰力,雖然面試官認為我答的不錯,但是他還是 希望這位置是由資深人員擔任(心碎~),因為新加坡公司步調和壓力都比較快,幾乎每 個月就需要開出新的project,因此有快速上手能力的人最需要,他也建議我或許可以 嘗試嵌入式系統,面試官先前是在CyberLink服務,聊到這就差不多換下一位,結束面 試。 結果: 感謝函,沒有3面。老實說面試到這一家我大概感受的到一般新創對沒有工作經 驗的新人看法是如何?雖然有違我當初求職的初衷,但是想了想也不無道理,沒有工作 經驗要闖新創簡直跟衝入火海沒兩樣,沒燒死也半殘,因此我稍微調整了一下求職方 向改以一般外商or大公司為主,雖然後續還是有其他新創面試,多半是不期不待。 (2) 公司: 米波國際(MeepShop) 職位: Software Engineer 這是一家電商(https://www.meepshop.com/),老闆似乎是由攤販起家的,累積了10年 多的銷售經驗,以既有的客戶群為基礎,轉向作為銷售平台提供者,但我也必須說, 這家公司大概是我面試以來最無感的一家了XD,因為全程其實沒有被問到太多技術問 題,反倒是對於我的背景及個人特質比較好奇,老闆喜歡看到個人背後的"質"在哪。 面試過程: 這部分分別和CEO及CTO面談 CEO: 由於我早到了,老闆先請我到他的辦公室面談,請我先做自我介紹,順便問了我 一下最近求職的類型和方向,並且和我介紹目前公司的規模和未來走向,聽聞我最近 找新創的歷程,也給予我部分建議,多數新創為了成本的考量其實不會想要用新人, 接受Junior的公司還是有,但是可能要碰運氣。此外他也表示公司未來不太可能朝向 大型企業方向發展,畢竟規模一大起來勢必要更多管理成本,終端用戶的訴求便不太 容易被聽到,因此會讓它保持彈性成長,講到這裡就差不多請CTO進來和我面談。 CTO: 由於CTO是比利時人,全程英文面談,看完我的Linkedin後他問我過去在校時擅 長做哪種工作,我回答數理建模及分析,並且有自行閱讀文件的能力,因此學習新技 能並非問題,接著他詢問我對於backend的工作是否有興趣? 由於SQL的經驗其實不到 一年,這部分我便誠實跟他說我的狀況,但是他並不是很在意這件事,反倒是從我過 去的學術經歷裡推敲我可能擁有的潛質,另外有詢問到我是否懂前端的技術(EX:html, css, javascript...),再來則是要我說明過去有做過哪些專案,如何實現要求的功能 等等,最後他問了我的期望薪資,依它在Inside Job Board上的開價是N-5k起跳,不 過因為我也沒有太多backend的技能,所以就先開N-5K給他,CTO點點頭,結束面試。 結果: 無聲卡 (3) 公司: Animoca Brands Co. Ltd. 職位: Software Engineer 這是一家做遊戲開發的港商(http://www.animocabrands.com/),聽head hunter講述 應該是這兩年在台灣設立的據點,從1998年至今應該已經有開發超過上百款遊戲了, 據我面試中得知,台灣團隊中僅有4位台灣人,其他都是外國人,所以環境應該算是滿 國際化的,這家是在Inside Job Board上投遞的職缺,104上也有在徵才,不過建議投 英文CV比較適合。 面試過程: 面試分兩階段,第1階段和台灣工程師面談,第2階段和香港技術主管SKYPE 面談(皆英文面試): 第一階段到中正區辦公室面試,面試前會先考邏輯測驗和C/C++筆試,筆試部分主要出 題方式都是給你一段CODE,選出執行完後會印出的答案,這部分主要考的內容大致上 是pointer/reference用法, inheritance/polymorphism/virtual觀念,少數有考到用 recursion方式對tree做traversal,熟悉的話其實不會太難,都是選擇題。 面試時主要是2位工程師面談,一開始先做自我介紹以及展示android專案成果,由兩 位工程師分別針對作品提問,接著下來開始會問滿多OOP概念,不論是C++還是Java, 以及少數OS: [1] 請說明什麼是OOP? [2] 請解釋data encapsulation的意義是什麼? [3] 請說明struct和class的差別? [4] 請說明什麼是inheritance? [5] 請解釋polymorphism是什麼? [6] 請說明什麼是abstract class? 它和interface有什麼差異? [7] 請說明process和thread的差別? [8] 解釋何謂deadlock? 原因是什麼? [9] 承[8],你要如何解決deadlock的狀況? 講到這就差不多了,接著其中一位工程師便接著和我介紹公司的營運狀況和工作時需 要用到的技能,順便跟我說明一下在香港總部的情形,基本上他們會定期和香港的技 術團隊視訊會議,一年會有不到一個月的時間出差和香港團隊合作,總之英文很重要 ,隔天就收到二面通知,準備skype和香港主管面談。 第二階段主要會考DS和Algorithm,這部分先前有耳聞過,所以讓我緊張了一陣子,不 知道會問出什麼題目來,因此面試前把常考的DS和Algo重新實作了一遍,面試當天技 術主管會分享一份google doc給你,會要求你在上面寫code給他看,他也會寫部分程 式要你回答問題,由問答的過程中由淺入深逐步問出你的能力到哪,也會依據你的回 答決定出題類型,以下為印象中有考過的問題: [1] 考官要求我寫一個 class A,要產生A的instance有哪些方式? class A{ A obj_a; //do stuff A* p = new A(); }; [2] 承[1],面試官將我的code貼到一個function裡面,問這樣這兩者有何差別? void foo(){ A obj_a; A* p = new A(); } 這應該就是要你解釋stack和heap的差別了 [3] 承[2],寫一段code釋放heap的記憶體 void foo(){ A obj_a; A* p = new A(); delete p; } 解釋delete這個運作會發生什麼事 [4] 面試官寫一段類似fibonacci的程式碼,問我這段code會發生什麼事? uint fib(uint n){ printf("%d ", n); return fib(n-1)+fib(n-2); } ex: fib(3); 一開始我回答會run time error,因為參數要求為unsigned,recursion往下走應 該會遇到negative value,不過考官給了提示,unsigned value有一段範圍,超 過就會"重新循環",所以會印出 3 2 1 0 UINT_MAX, UINT_MAX-1...... [5] 承[4],既然我都講到recursion,請修改這份code,寫成遞迴版本的fibonacci uint fib(uint n){ if(n == 0 || n == 1) return n; else return fib(n-1) + fib(n-2); } [6] 承[5],上述code的複雜度是多少? 為什麼? O(2^N),在遇到boundary condition前,每次都會產生兩個branches,各branch 又會再產生另外兩個branches...,依此類推複雜度(2*2*2*2*....) [7] 既然如此,有沒有什麼辦法降低複雜度? 當時第一個想法是利用dynamic programing,實作一個cache儲存每個子問題的解 這樣就可以減少重複計算的次數 class cache{ uint fib(uint n, cache& tmp){ //do stuff //do stuff }; } [8] 承[7],那還有沒有更快速的方式可以比這個更快? (靈光!) 這可以用iteration方式解決,複雜度O(N) uint fib(uint n){ int n1 = 0; int n2 = 1; int val = 0; if (n == 0) { return n1; } else if (n == 1) { return n2; } else { for (int i = 2; i <= n; i++) { val = n1 + n2; n1 = n2; n2 = val; } } return val; } [9] 假設今天給你一堆integer values,你會如何有效率的儲存或存取他們? 當下回答用hashtable [10] 承[9],你會如何實作hashtable,假設hashtable是fixed size? 利用modulo operator(%),將不同integer儲存到對應的index index = key % size [11] 承[10],hashtable是固定size,勢必會遇到不同值的index相同的狀況,你要如 何解決? 當下我以為是要處理race condition問題,就答使用mutex/semaphore的機制,考 官再次說明了題意。我突然理解他想講什麼XD,可以實作list儲存相同index的整 數值。 問到這裡面試官就沒有再問下去了,接著稍微說明了一下如果進入這間公司我大概會 做哪些事情,然後就換hr和我面談,詢問我對於這間公司的了解和求職意願,由於這 間公司有和台灣人力公司合作,所以核薪部分會依據台灣薪資水平去計算,不過還是 有到我要的標準啦。 結果: offer get,薪資為N (4) 公司: 洪量科技(HLX Technology) 職位: Software Engineer 洪量科技在板上的幾乎是沒有任何討論,先前在Inside Job Board上看到這一家,稍 微研究了一下HLX的背景(http://www.hlxtech.io/),主要是做FinTech的公司,可能 須要用到machine learning/modeling/finance等背景的知識來應付他們的工作,另外 在官網上也有看到paper發表,所以剛開始我有點不明白這家到底是研究機構還是真的 有在進行FinTech技術開發,但是從它職缺來看技能幾乎相符,還有用到matlab,這幾 乎在其他家看不到,而且Job Board上package開 1500K up,照理來說應當是板上的熱 門焦點才對,因此我便抱著越級打怪的心情丟了CV過去,一探公司的神秘面紗。 面試過程: 分兩階段,筆試 -> 面試,筆試當天有幸進到該公司,發現總人數應該不 超過10人,辦公室是由透明玻璃隔開,因此你可以清楚的看到所有人的舉動,人資一 會給了我一份7頁考卷,作答時間共1小時,結束後會在依作答結果決定是否2面,大致 考題不脫離以下幾種類型: 1. Linux網路管理相關指令 2. Design Pattern 3. Function Implementation 4. Algorithm Analysis (ex: best case/worst case/average time complexity/recursion/DP...) 5. OS 以下列舉我還有印象的考題,大抵上Algorithm考題占多數,OS相關很少,由於本 人沒學過Design Pattern,所以考試時一律跳過QQ,但大抵上就是你得用c++實作 Design Pattern,看來小的我要前來踢館還是太早了: [1] 請寫出linux command line,你要如何釋放一個運行中的process? [2] 請寫出linux command line,你要如何讓一個process在背景中執行? [3] 請寫出linux command line,將一個路徑下的所有檔案copy到另一個路徑下? [4] 請寫出linux command line,你要如何知道目前有哪些connection和自己相連? [5] 請寫出linux command line,你要如何判斷目前network的連線狀況? [6] 請實作一個swap function交換兩整數,但是禁止使用暫存變數 (hint: bit operation) void swap(int& x, int& y){ x = x^y; y = x^y; x = x^y; } [7] 題目給一個階乘函數的數學式,請實作Divide and Conquer方式 1, if n equals 0 / fact(n) \ n! int fact(n){ if(n < 0) return -1; if(n == 0 || n == 1) return 1; else return n * fact(n-1); } [8] 承[7],請問是否有更快速的方式? (改成iteration) int fact(n){ int val = 1; if(n < 0) return -1; if(n == 0) return 1; for(int i = 1; i <= n; i++) val *= i; return val; } [9] 承[7][8],請說明這兩種執行方式有何差異?(比較recursion和iteration優缺點) [10] 給定兩個任意長度的整數陣列,請用最快速的方式實作一個function,印出在此 兩個陣列中只出現一次的整數(彼此不重複)? ex: A = {1,2,5,3,6} B = {1,8,2,6,4,7,9} result: 5 3 8 4 7 9 這題當時因時間關係我只有寫出O(n^2)的算法,不過應該還有更快的方式,例如 可以用cache紀錄已經重複的值,這樣在後續比較時就可以減少重複比較的次數 [11] 給定長度為1000的整數陣列,所有數值介於1~1000,彼此不重複(unique),並且 是以random方式排列,並未做sorting,假設現在我將陣列中某個值更改為0,請 找出該值的"前一位"數值? 請實作一個function [12] 承[11],best case的複雜度是多少? worst case的複雜度是多少? 平均複雜度是多少? [13] 你要如何預防locking的狀況? 考完當下沒有啥特別感覺,只知道還是先練幾年功再來踢館吧,便離開公司 結果: 不意外的感謝函,不會Design Pattern真的很傷 (5) 公司: 商凱捷管理顧問股份有限公司(Capgemini) 職位: Developer Capgemini的主要業務可以參閱官網https://www.capgemini.com/,大抵上有很多面向 ,舉凡保險, 房地產, 金融科技, i-Service等等都有涉略,而我應徵的是南港研發部 門,由於HP是Capgemini的客戶之一,因此為了強化合作,直接在南港HP部門對面也開 一個LAB出來,由Capgemini協助HP開發整合測試平台,會徵人是因為HP研發部門人數 擴張,為了因應擴張的業務必須找人進來分擔loading 面試過程: 面試分3階段,筆試 -> PM, CTO面談 -> HR面談 第一階段筆試HR會寄一份試題給你寫,寫完後回傳,交由CTO看過後,認為你OK便會安 排2階段面試,筆試主要語言是C++/C#/pseudo-code,挑你熟悉的寫就好: [1] 實作一個function決定每個integer轉成binary時,有多少bits為'1',例如5轉為 binary為101,有2個bits為1,依此類推~ (hint: bit operation) [2] 給定一個singly-linked list,請實作一個演算法可以找出"倒數第3個元素",若 list長度不足3則回傳0,例如 1->3->6->2,回傳3 [3] 給定一個tree diagram,請寫出以DFS(Depth First Search)方式搜尋某個節點時 ,會經過的節點 [4] 給定一組字串,請實作一個function找出"第1個","非重複"的字元並回傳 ex: apple,回傳 'a' [5] 請實作一個function決定一組字串是否為palindrome,禁止使用recursion [6] 請說明在c++/c#中,你分別用何種方式處理race condition的問題? [7] 說明abstract class和interface的差異 其實考題都不難,程式的部分我在自己工作站上完成便一併寄過去,不久就收到通知 第二階段須到南港部門面試,先後由PM及CTO提問,前者問題多偏向臨場反應及個人特 質,CTO則是針對你目前現有的知識背景做了解,這部門算是比較願意給Junior機會, 一開始先行做自我介紹,並demo作品,由兩位主管分別對作品提問,由於作品裡用到 G-Sensor,兩位順便和我分享一下筆電裡的G-Sensor有哪些功能? 再來是兩位提問: PM: [1] 可以說一下你對我們公司的了解嗎? [2] 在履歷中你分別列出3項過去曾經參與的專案,可否說明一下你在這些專案裡 所扮演的角色? 以及你所負責的部分? [3] 你在履歷裡有寫到IoT專案經驗,可以分享一下你對這個平台的了解嗎? [4] 假設今天團隊要共同完成一個project,但是主管可能loading上分配不均, 你會如何因應這個情況? [5] 由於我們是和HP lab合作,因此勢必會時常和對方討論測試結果,倘若客戶 堅持自己的觀點才是對的,你會如何說服他? [6] 說說你3~5年內的職涯規劃? [7] 你有任何英語檢定的成績嗎? 你要如何證明你的語言能力? CTO: [1] 可以說一下你認知中的軟體開發流程是如何? [2] 說明user mode和kernel mode的差別? [3] 你是否懂c#? [4] 你目前用過哪些Windows-Based/Linux-Based的作業系統? [5] 說明你對於X86/X64/ARM架構的了解? [6] 說明今天一台電腦從boot時到完全run起來,內部的運作方式? [7] 說明你對linux kernel的了解程度? 以上大致為印象中有問到的問題,不過CTO的問題答不太出來沒有關係,他主要是希望 了解你目前的背景知識有多少? 因為試用期有6個月,所以可以想像有不少東西需要學 習,內部有許多e-Learning的資源,對內部員工是完全開放的,看你要不要使用而已? 最後PM口頭給我第3階段面試機會,要我回去等通知,結束第2階段。 第3階段是到信義區大樓和HR面談,這部分就比較像是閒聊了,HR要我說明一下目前對 這間公司的了解程度? 另外對於這個職位上我需要做哪些事情? 目前求職過程中大多 是傾向哪些類型? 至今求職歷程大概是怎樣的狀況? 未來職涯規劃? 認為我們公司和 其他公司有什麼不一樣? 最後還有講到目前台灣求職平台的現況等等,然後結束面試 ,等候通知。 結果: 等候中,整體而言這家公司氣氛應該不差,可以學到很多東西。 -------------------------------求職心得----------------------------------------- 我算了一下從9月底開始丟履歷的公司數量,總共丟了80家公司,實際有面試只有10家,截 至目前為止僅有2家拿到offer,大致上可以嗅出最近的時間點開的缺真的不多,何況我前 期幾乎都在linkedin和glassdoor上投職缺,多數都是senior職位,願意給新人的機會簡直 少之又少,後期雖然開始用104找工作,不過就這陣子觀察的結果來看,上面的職缺不外乎 兩種: (1) 真的有職缺需求 (2) 公司人事異動,走掉一批人要補 (2)的選項幾乎都會打槍,因為踩雷機會很高,雖然朋友開玩笑跟我講104面試邀請會如雪 花般地飛來XD,不過我是完全沒有這種感受,反倒覺得我的履歷如雪花般飛出去比較正確 ,另外我認為面試臨場表現和筆試結果大大地影響你是否有機會進入這間公司,其實我沒 特別感受到學歷有幫我加到什麼分,反倒是作品給了我更多空間可以展現自己,走純軟大 底上就是要不斷累積可以展示的作品和實戰經驗,另外DS/ALGO/OS是一切的基底,看來工 作後我得重新補強兵役這段時間消失的記憶,祝福尚在面試浮沉的各位早日有offer。 ps: 我去了Animoca Brands -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 182.235.201.72 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1478688273.A.4BC.html ※ 編輯: aplmnbvcxz (182.235.201.72), 11/09/2016 18:47:15

11/09 19:06, , 1F
恭喜。hashtable那題是問碰撞的處理。
11/09 19:06, 1F

11/09 19:24, , 2F
很詳細 推
11/09 19:24, 2F

11/09 20:16, , 3F
感謝分享!
11/09 20:16, 3F

11/09 20:30, , 4F
非常詳細呢~
11/09 20:30, 4F

11/09 20:56, , 5F
記憶力很好 實用推
11/09 20:56, 5F

11/09 21:38, , 6F
詳細推
11/09 21:38, 6F

11/09 22:21, , 7F
最後的心得感同身受,我也是這一個月找工作的感想,推
11/09 22:21, 7F

11/09 22:29, , 8F
用心推
11/09 22:29, 8F

11/09 22:59, , 9F
太詳細了 激推
11/09 22:59, 9F

11/09 23:08, , 10F
11/09 23:08, 10F

11/10 01:42, , 11F
推推
11/10 01:42, 11F

11/10 09:11, , 12F
推 詳細
11/10 09:11, 12F

11/10 10:21, , 13F
記憶力好強!
11/10 10:21, 13F

11/10 23:18, , 14F
推用心!
11/10 23:18, 14F

11/10 23:20, , 15F
感謝分享
11/10 23:20, 15F

11/11 22:58, , 16F
最近的心得文都好厲害 記超詳細@@
11/11 22:58, 16F

11/12 01:24, , 17F
超有用的心得文 推!!!!!
11/12 01:24, 17F

11/12 22:13, , 18F
11/12 22:13, 18F

11/16 20:46, , 19F
感謝分享
11/16 20:46, 19F
文章代碼(AID): #1O8luHIy (Soft_Job)