2018/1 iOS面試心得

Peter Chen
18 min readMar 17, 2018

--

上班配備XD

整體心得

面試結果: 5/8 Offer get

這篇當初只寫在hackmd並分享到臉書給朋友知道,後來想說要多給一些人回饋,自己也想要認真經營medium,就稍微整理一下轉過來了。現在在裡面其中一家上班。

面試時間:2017/12/29 ~ 2018/1/26,前後約一個月

找工作平台:104Youratormit.jobscakeresumefb社團"社會新鮮人找工作"

其實自己薪水沒有開到很高,這次除了前面幾家來鬧的(?之外幾乎都有拿到offer,才想說是不是自己薪水開太低XD,就結論來說,可能有一年開發經驗的iOS工程師是可以再往上提高身價的,因為上班後是可以直接上工的,再由公司的前輩帶領,簡單的一些工作都能夠handle,等熟悉工作模式之後就能加入團隊內工作了(吧

  • 挑公司的方式
    在104上有百百種公司,看到沒有公司網站、人數、資本額的那種建議是不要去了,就算要去也要先問好那家在幹嘛
  • 問清楚面試的職缺
    有認真看這篇的人應該都有發現第二家公司邀請我去之後才知道原來不是找iOS工程師,所以當mail內沒有提到時,記得要先問清楚

背景介紹

本人台科大資工系學士畢業,畢業後去苑裡當了一年替代役,開發Swift約一年的時間,準備了三個side project demo,大學專題是做風格化建模,用QT、C++、Dlib把3D model放到手機App,可以對其鼻子、耳朵、下巴等地方做變形。

大四下2016/1~2016/7在瑞典Halmstad University交換,多益775分。

以下正文,面試的職缺以iOS App 工程師為主

面試準備

可以分為求職需求、履歷準備、iOS面試題準備、一班面試題準備三部分

求職需求

這幾天一個台大非本科的朋友也分享了他的面試心得,去面了三家都很厲害的公司,裡面內文提到了我一開始沒有寫到的部分,但現在回頭看覺得這個很重要必須要跟大家分享,求職都會依照自己的喜好去排需求

以下是我朋友的排列排列順序,薪資等基本需求不列入:

  • 新創團隊或具有新創氛圍
  • 技術討論風氣盛。
  • 有能力相仿或更強的 co-worker,不必自幹。
  • 工作流程明確。
  • 重視軟體品質(CI/CD、單元測試)。
  • 同事年齡相近。
  • 對社會有正面意義。

我自己的話:

  • 團隊氣氛好、討論風氣盛
  • 有一個senior可以帶我
  • 可以學到整個App開發流程(需求討論->Wireframe->UI/UX->程式開發)
  • 跑Scrum或Agile敏捷式開發
  • 少加班或可以特定時間不加班

履歷準備

基本上就是參考 cakeresume.com 的公開履歷,看些履歷撰寫文章來製作,如果有時間的話當然可以做英文CV跟Resume,附上個人稍微做的CV,英文CV製作參考連結

iOS面試題準備

當然,在面試之前除了去PTT Soft_Job版看各個大大分享的心得外,也盡量找些面試題來看看並做些準備,這裡就直接跟大家分享自己整理的連結吧
演算法、資結是必要的,leetcode有空就多刷,據說easy的題目都刷過也做熟了大部分面試都能順利過關。
https://www.jianshu.com/p/a616f6b146aa
https://medium.com/@jiancheng06/25個面試ios-junior工程師常問問題-5028ecdf411a
https://www.jianshu.com/p/f9eb6b315c08
http://hl1987.com/2017/09/05/腾讯SNG某部门iOS面试经历/ (這篇不一定要看)
Leetcode
演算法筆記
寫給初學者的演算法教學
作業系統 ,不過通常比較少考這個
除此之外,推薦必讀這篇,一個Soft_Job版的大大分享的心得以及如何準備面試

一般面試題準備

為什麼選擇我們公司、我們公司的比較、你有什麼優缺點、為什麼我們要選擇你大概類似這些題目吧,自己也沒有特別準備

再來就是記得要準備一些問公司的題目,諸如:加班制度(是否有補休/加班費)、上班時間、年終、福利、公司氣氛、公司開發流程、是否有跑敏捷開發、code review、是否有寫測試、公司未來目標、公司希望我進來可以為公司做些什麼,如果膽子夠大也可以問面試官是否能給自己這次面試上的一些回饋或建議

面試官問「你有沒有問題想問我們」應對手冊在這!
剛好看到這篇,就是不錯的反問面試官的例子

這邊都做足準備後,就進入面試篇吧。
以下根據面試的順序寫各公司的面試情況~

1.神*科技股份有限公司

職缺 : iOS App 工程師 -南港

面試流程: 英文測驗(仿多益的英聽+閱讀) 30min -> 性向測驗、邏輯測驗、程式筆試(考C) -> 面試

面試時間: 約3 hrs

上班時間: 9~18,早上八點在北車有接駁車,晚上18:20從林口回來

這家是公司透過104邀請我去面試的。
前面的考試就佔了2.5hrs然後主管的面試不到30分鐘就結束了…,英文測驗英聽的部分講的速度比多益在快一些,口音也會比較重,前面的看圖題做起來沒有很順。程式筆試的部分都是選擇題,原想說是面試iOS會考Swift之類的結果是考C XD,考題不會太難,只是recursive的地方有點忘記答案不太確定。
考完試後有點累做了一個小夢:夢到主管面試說整個App team是在林口龜山總部上班…wtf,你找我來南港面試結果說缺在林口,最後就沒有下文了。
剛剛再查一下,他把南港分部的人改成Sr.iOS 工程師,希望能在南港獨立作業,能力比較不足當Sr.的就拉到林口上班,整個App team約6.7人。

結果: 無聲卡

2. Beseye 雲守護安控股份有限公司

職缺 :Cloud Engineer 雲端工程師

一家做網路攝影機的新創公司,成立不到四年就有3億的資本額,產品的外型做得滿不錯的,
主要功能除了居家安全外,若遭小偷、小孩再哭泣都能透過App通知家裡大人。

面試時間: 1hr

上班時間: 9~18(彈性半小時),公司不鼓勵加班,通常時間到公司就沒人了

這家是在104看到我履歷後由創辦人寄mail給我邀請我去面試。
面試官有三人,一開始自我介紹完後,其中一位面試官就跟我說: 請問你知道你來面試的是雲端工程師不是iOS工程師嗎? 當下聽到真的滿傻眼的,但想說都跟單位請假來面試的就還是硬著頭皮面試完。他們後端是使用RoR,雲端的部分是Node.js跟各種JavaScript的code,要做來分析使用者攝影機回傳的資料,判斷是否有外人入侵等功用。必竟自己JS系列的都不熟,最後主考官就考C跟Python相關的一些題目,但沒有額外準備,想也知道結果很慘烈…

結果: 感謝函

其實個人滿喜歡這家公司的產品跟公司的氣氛的,雲端處理的部分也會用到影像處理,機器學習相關的東西,他們的研發部門通常不會單單只支援某一部分,可能雲端的function做完就能回去支援iOS team之類的。

原先文章寫說是公司搞烏龍在此跟這家公司說聲抱歉,他們在寄mail的時候就有說是雲端工程師,可能我看到產品線有iOS App就以為是要找我去面試iOS Engineer 哈,只能說之後要看清楚職位內容。

3.集佳股份有限公司

職缺: iOS App 工程師

這家是做RFID、藍芽通訊、門禁卡、生物辨識產品等等,已經做了30年了的樣子,主要客戶在國外,所以進到公司有機會跟公司去國外參展,公司有70人,臺中的工廠130人,軟體部門只有四人所以現在正在努力招人XD

面試流程: 程式筆試+邏輯測驗 -> 面試

面試時間: 約2hr

上班時間: 8:30~17:30(彈性半小時),偶而加班,加班就看產品的進度而定

邏輯測驗題目不難,程式考題都有考到滿多觀念的,之前爬文看這種iOS面試題目都會寫到,這邊也寫出來跟大家分享:

  1. UIView life cycle
  2. delegate跟protocol的差異
  3. ARC機制,什麼是reference count
  4. 什麼是Callback
  5. git基本指令,如何做git merge
  6. strong 跟 weak 對memeory的差別
  7. MVC架構是什麼及優缺點
  8. 什麼是safe thread
  9. GCD(Serial, Concurrent, Main Dispatch Queue)
  10. 藍芽Server跟Client通訊,head一個值,data長度一個值,data 16個值,end兩個值,寫一個callback function拿一串array中的資料

一開始最後一題不太懂要幹嘛,他寫的跟學校計算機網路的圖一樣,中間的data是16進位,還好交卷後技術主管有在給我一些提示才把function給寫出來。
面試官共4位,就是整個軟體組的成員,就問一些Swift、iOS相關的問題,也有問是否看得懂Obj-C code,因為公司另一個Android/iOS工程師是用Obj-C開發的,就回答大三有修過半年iOS開發的課是用Obj-C,雖然現在沒有在寫但還算看得懂。後來主管也有講到為何要考最後一題的藍芽通訊,因為他們未來開發會開發藍芽通訊協定的東西,回傳的data就是長的醜醜的binary code,也有說到技術開發完會OpenSource給其他廠商使用(也可能是賣授權之類的XD)。

結果: Offer get, N+2k, 年終2~4個月

感覺得出來公司軟體組滿缺人的,也希望心血進來能帶來些轉變吧,未來公司也想從硬體公司轉型成軟硬體的應用公司,軟體的比重會越來越重吧,優點是離家算近(公車+走路 40min內、騎車 20min),唯一的缺點是沒有UI/UX Designer,這部份真的是重function不重使用者體驗的傳統公司呢XD

4. 玉山銀行

職缺: 新進IT人員

玉山應該就不用多做介紹了吧,在104上也有看到iOS的缺,不過他們人資送過來的邀請是統一團面用新進IT的方式來應徵。

面試流程: 先線上填玉山履歷表+性向測驗 -> 團體面試

面試時間: 約2hrs

上班時間:8:30 ~ 17:30

[一面]

這次團面共五個人,一女四男,面試官兩人,想當然爾大家都穿西裝或者襯衫加毛衣,只有一個男的穿得比較不正式就是了。團面為每人3分鐘自我介紹,除了最後一個厲害的政大資科所大大講到3分鐘滿外,其他人都1、2分鐘就結束了。
面試官有特別提到說,可能進來不會那麼剛好分到iOS的職缺,要做好要用.NET或Java開發銀行系統的準備。因為面試時間只有三分鐘就沒有特別Demo自己的project,不過其中一位主管感覺真的有翻一下我的github,還講說”你用過滿多種語言開發的呢,是喜歡學各種語言嗎”,我只好誠實回答都是學校課程project,只有Ruby on Rails的CRUD Web是覺得好玩來做的XD。除了針對自介的內容做詢問之外還有問一些性向測驗的問題,這裡就不多做詳述。
團面結束後有做一段玉山的介紹,臨走前還給每人一份面試禮物(我還沒打開來看就是了XD)

[二面]

面試流程: 筆試 45min -> 面試 1hr -> Offer get講解福利與薪資

面試時間: 加上最後講解約三小時

二面共三個人,一開始先筆試45min,考簡單的邏輯、英文、資料庫跟網路,網路就是考TCP/UDP、哪一層在幹嘛的那種題目。考完後進行面試,主考官兩人,一人問些人格特質跟性向測驗,問卷的問題,另一個針對每個面試者考不一樣的專業題目,他考singleton優缺點、是否用過Oauth、銀行的金流怎麼串,是否有串過,其他人則是考.NET跟Java的比較、優缺點等等。結果考完主考官跟人資在外面講一下話,就讓三個人都錄取了(????,看來PTT上所言不假,只是沒想到…玉山真的是看學歷而已,學士35K,碩士40K,完全不管你之前的經歷,是否可以直接上工等等,雖然一開始就沒有打算去玉山,但沒想到新進IT的薪水規定這麼死,早知道就不浪費兩次面試來他們這了@@

結果: Offer get, 35k,年終按照考績表現去給,有優存5.5%

銀行業感覺是不錯的選項,不過進去之後每天都要穿玉山的制服感覺有些彆扭,很像回到國高中年代或像現在替代役每天都要穿制服,有種拘束感吧…

後記:

這幾天無聊翻了一下104台北iOS的職缺,發現玉山銀行iOS的職缺還開著就覺得wtf,當初跟你說想投iOS結果HR說用新進人員進來就好最後面試官還要說什麼不一定可以分到你想寫的iOS喔WTF

5.北祥股份有限公司

職缺: iOS App工程師

一家有IBM、Microsoft、VMWare臺灣代理的公司,主要也是接大公司的案子,常跟銀行業合作,需要派駐在各銀行工作。

面試流程: 邏輯測驗 1hr -> 面試 -> 上機

面試時間: 約3.5hr

上班時間: 根據各派駐銀行的規定。可能會加班,加班時間1:1補休,偶而會有加班費,但若是個人產能問題就不能報。

一開始邏輯測驗圖形題滿機車的,給你兩張圖各有五個圖形,找出第一張圖有的但第二張沒有的規律。
面試共三位面試官,兩位技術主管,一位人資。自我介紹完Demo三個App並介紹各個功能,也有做專題的講解,這家公司也會看一下大學成績這樣,面試有提到目前的案子是跟遠東銀行合作,要派駐到遠東銀行工作,開發team不止我一人,所以不用擔心沒有人帶。開發team有機會跟銀行IT人員接觸,有些需求可能技術人員直接溝通會比跟PM講完再轉達有效率些。公司未來規劃是希望開發人員也能學一些後端的技術

公司會有買電腦補助,一開始補助1/2,一年後多補1/4,兩年後全額補助,並且電腦歸自己。
薪資的部分有提到前一家公司開N+2k,這家說這個薪水太高,不過會依據個人表現去調薪(恩…好像都是這樣說)

結果: Offer get,N-2k, 年終按照公司營運狀況而定

感覺會是個不錯練功的公司吧(?,不過看Soft_Job版對派駐工程師的觀感都沒有那麼好,可能比較沒有保障吧?

6.聯合報股份有限公司

職缺: iOS App 工程師

聯合報系大家每天看新聞都會看到吧,他們還做滿多App的,udn買東西、udn售票網、udn News、udn讀書吧、udn瘋活動、經濟日報、搭車吧,臺北

面試時間: 1hr

工作時間: 9~18(彈性半小時),主管不鼓勵加班,加班的話以補休為主

面這家之前早上先去北祥,9點面到快13點,還好有打電話改時間不然面試遲到直接GG。面試官兩人,一個App技術總監,一個App技術主管,技術主管有暖男爸爸型的感覺,講話聲音很舒服(?,一樣自介完Demo三個App,不過其中一個app不知道怎樣打不開只好Demo兩個,總監除了問些iOS問題外還問到Web相關、資料庫阿等等之類的,整個過程滿像再聊天的,也問了滿多公司的事情。整個行動發展部共40人,會分成各個專案小組去maintain既有App、開發新App,還有2成的人會負責研究新技術AI、Machine Learning、VR、AR等等,好像有說希望未來可以往VR App做發展。
整個技術部門不會特別跑Agile、Scrum,不過有說敏捷開發有些適合用的他們就會採用,公司會開會code review、分享新技術等等,且各個專案team都會有UI/UX Designer合作,部門也有自己的技術Wiki,已經servey過的技術都會放上去,此外也有各種內部的framework,最基本的login/logout,Navigation bar都有各種包好的framework可以用,感覺進來可以學到很多東西。

結果: Offer get,N+1K

目前面下來最想去的就是這家吧XD,公司氣氛不錯,主管、總監人也都滿好的,可以學到很多東西

7. 群傳媒股份有限公司(Readmoo 讀墨)

職缺:iOS App 工程師

直接講讀墨可能比較多人知道,他們有出可以跟Amazon kindle打對盤的電子書閱讀器mooInk網路上滿多好評的,當初也有再考慮要不要買XD,還有電子書平台,跟kobo打對盤,整個公司35人,App team約13.14人

面試時間: 約1.5hr

工作時間: 9~18(彈性半小時),不鼓勵加班,假日加班以補休為主(通常都是辦活動),平日加班需有主管簽加班班

[一面]

面試官共三人,一個App team技術主管,一個技術總監,一個iOS工程師。起手式一樣自介+Demo,然後iOS工程師就開始問一連串的問題,直接用問答的方式還滿爽快的,稍微紀錄一下自己記得的部分:

  1. Swift 2.0、3.0、4.0 的差別
  2. struct vs class差別
  3. 如何做一個可回傳Error的function
func numberToInt(number: Int) ->{...}

我回答用

func numberToInt(number: Int) -> (Int, Error){...}

但他期望的回答其實是用throws去丟出error
4. 如果一個.swift的class裡面的function不想給其他人用要怎麼做
A: 用private func
5. 請說明各個如private的權限跟名稱
A:
open:所有人都可以使用+可以override
public:所有人都可使用(包括framework的部分)
internal:一般的情況
fileprivate: 一個file內兩個class可互相使用
private: 只有自己class可以使用
6. 說明WebView有幾種以及他的差別
7. 請說明什麼狀況會造成retain cycle?
A: 當a,b 兩個object或block 互相強引用時,就會造成即使一方設成nil,memory也無法被ARC回收
8. 請說明tableview的cell是什麼機制
9. 知道cell 會把前一個cell收回來,下一個cell需要時再拿出來用的情況下,一cell上有switch button,要如何把他Off掉
10. 如果已經有一長方型的長、寬,要如何宣告一個面積並且取得他的面積

let length: Int?
let width: Int?
var area: Int? { return length * width }
  1. 是否有解過XML的檔
  2. 是否有用過JSONDecoder?他跟SwiftyJSON的差別?
  3. 知道SwiftyJSON如果JSON data沒有值會給一個default value,那工程師要如何檢查這部分?
  4. 如何進行錯誤處理
    A:
do {
try ...
} catch {
}

之後有想起來其他面試題目會再補上

除了考這些外他人也很好,我不太知道的東西他也都會幫我補充,像他們做電子書的App,閱讀的view其實是WebView我有點嚇到,一直以來對WebView的印象都是104或是PCHome那種做的不好看直接把往夜搬過來App使用的那種。公司有在跑Scrum,每天一早先開會講三件事情:今天工作進度、昨天進度回報、昨天遇到的問題,每周五會有App team的code review約2hrs,iOS目前只有一人(就那個面試我的工程師),原本是Obj-C混Swift,現在想全部改成Swift,原本MVC架構也正在改成MVVM或MVPM的架構,iOS 預計年前會改版。版本控制的部分是用git,主管有叫我回去看一下git flow如何多人控管專案。

[二面]

面試時間: 1.5 hrs

工作時間: 9:30 ~ 18:30 彈性半小時上下班

二面跟他們的CEO龐文真進行面試,他問了很多人格特質的問題,為什麼選擇我們公司,我們公司跟跟KOBO、博客來差在哪裡?、如果進來我們公司,你最想改善哪一個部分? 等問題,也有講到說希望招進來的人是愛電子書、愛看書的人,也有說到我給他的熱情並沒有那麼足夠XD可惜的點就是他要兩週後再回覆,所以就算到時候給Offer,也會拒絕掉吧。

結果: 感謝函

這家跟聯合報算是我最想去的公司吧,雖然iOS team只有一人,技術主管說他有空也會下來幫忙XD,但感覺這個人真得非常厲害,整個App team也滿不錯的,也是進來可以學到很多的一間公司。

感謝函寫的滿好的,其實是兩周後我沒有收到通知(當下也知道對方應該招到人了),對方HR跟CEO也很有誠意的回信給我跟我講一些面試的回饋(文章一開始提到可以問對方面是回饋的部分),希望我可以針對各個公司的產品、服務、整體公司做更多的功課再去面試

8.果思設計公司

職缺:iOS工程師

臨時起意去面試的公司XD,一家做一年多的接案公司,目前人只有六人,之後會增加app team至10~14人左右
詳情可以去看他們網站:http://goonsdesign.com/

面試時間: 1.5 hrs

上面忘了講到他們沒有工程師,都是交給老闆的朋友公司去做後端跟App/Web開發,公司都是做設計為主,面試是CEO跟我面試,人非常年輕,30左右吧,開公司之前當了4~5年的SOHO,因此有些公司的案子是靠他之前的案主介紹的,面試基本上沒有什麼困難,跟聊天一樣XD,老闆有說到想找工程師進來事想跑Scrum,做的事情不難,就是把東西做出來(廢話XD,之後也會招個iOS/Android全端的sr.工程師

結果: Offer get, N + 5k,年終一個月起

感覺的出來他們滿缺人的,說想要在六月前把team組出來並且磨合完成,接案的好處就是可以做各式各樣的東西吧,整個開發流程也都能跑到,跟老闆聊聊也覺得滿合得來的,之所以會來也是因為想知道怎麼接案,案主來源之類的,也算是學到一些吧

結論

面試的這一個月算是成長幅度非常大的一段時間吧,從一開始非常緊張到後來覺得面試其實滿有趣的,因為有時候單看公司官網、104上的介紹很難知道這公司的描述有幾分是真的,團隊氣氛這些也是要面試當下詢問才會知道自己是否適合這家公司。藉由一次次的面試去調整自己求職的積極度、說話的方式、如何觀察這家公司的上層主管、了解自己技術面的不足甚至是更加了解自己的人格特質等,真的很感謝以上這八家公司給我面試機會,進入職場前後的認知差異是非常大的。

面試一個很重要的點是,除了公司面試你之外,你也在面試這家公司,是基於對彼此有一定的了解之後才會簽下合同的。

擇期所愛,愛其所擇,也祝福大家都能找到自己喜歡的工作

--

--