※ [本文转录自 Soft_Job 看板 #1S2fCbI0 ]
作者: m20021991y (Eddie) 看板: Soft_Job
标题: [心得] 2018 iOS 面试心得
时间: Fri Dec 7 23:34:58 2018
[代 po]
(Alfred / honestbee / iChef)
最近刚结束一连串的面试
准备过程中受到 Soft_Job 板前辈的文章帮助很大,
不论是面试分享的文章,或是职涯相关的文章,都让我受用无穷
秉著饮水思源的精神,我也想把面试心得分享出来给大家,希望可以帮助到需要的人。
背景:23y, 私大CS夜间部学士毕, 约 4 年 iOS 开发经验
第一次分享这样的文章,不确定把薪资直接写出来好不好,因此还是先以 N 代替
N = 现职月薪(单位:K),现职年薪 = N * 13
文中拿到的 Offer 年薪皆大于等于 1M
# Alfred 阿福管家
[面试获得方式]
Yourator 主动投履历
[面试流程]
第一关 技术团队 (两个 iOS 工程师,一个 CTO) + PM 面试 - 约 30 分钟
第二关 CEO 面试 - 约 90 分钟
[面试过程]
## 第一关 - 技术面试
由技术团队 (两个 iOS 工程师 + CTO) + PM 面试
进去后不免俗的双方先自我介绍一下,
自我介绍中间还因为第一次面试太紧张有点忘记要讲什么 囧
结束后由 PM 开始面试,由于我自己有做一个 App (下班后的 Side Project)
所以 PM 的话题多围绕在我做的 App 上,过程中像是在交流 App 的开发
(e.g. 这个功能怎么决定要做的?A/B Test 怎么实作?
用了什么数据分析的服务?举例一个根据数据来决定的功能?)
中间有穿插约 3 题的 Objective-C 问题,都算是基础,不难
CTO 也有针对我做的 App 提问了两个假设性的情境题,
两题都算是比较偏向团队合作的问题,感觉得出来很着重在团队合作这块
第一关过程约三十分钟,快结束前由我问了一些公司及团队的问题后,
就换第二关 CEO 面试。
## 第二关 - CEO 面试
一样先自我介绍一下,然后就开始面试
面试主要也是围绕在人格特质、了解过去的经验、
为什么想换工作、为什么选择唸夜校等
对方表示原本一面前是有 Take home test 要写的,
但因为看我有一个还不错的作品,所以团队讨论过后觉得可以直接省略这块
聊到一半 CEO 说:你好像还不是很了解公司
(我有大致上了解公司做的产品是什么,也有下载使用,但了解程度的确是很片面没错)
当下抖了一下想说完了大概要被请出去了 XD
不过之后 CEO 也和我介绍了一下公司、团队、主要的营收方式等
但可能因为记性不太好再加上聊了一个半小时聊太多了,有些对话有点想不起来
第二关过程大概一个半小时左右,整体面试下来还满愉快,
团队每个人给人的感觉都很好相处,很亲切,
CEO 在过程中也给予我相当正面的评价,真的非常感谢他!
[结果]
Got an offer
面试结束后 CEO 直接发口头 Offer (实在是受宠若惊)
当下有表明非常感谢,但因为同时也在看其他机会,
所以可能不会这么快回复 Offer,对方也表示没问题会等我
约三个工作天后收到 Email 正式 Offer
待遇:(N + 17) * 13
=====================================
# Honestbee 诚实蜜蜂 (台湾)
[面试获得方式]
HR 透过 LinkedIn 联络
[面试流程]
第一关 技术面试 (三个 iOS 工程师) - 约 100 分钟
第二关 文化面试 (两个 Backend 工程师) - 约 60 分钟
第三关 Engineer VP 文化面试 - 约 20 分钟
[面试过程]
## 第一关 - Technical Interview
由三位 iOS Engineer 面试,其中一位是 iOS team lead
看了 PTT 以前的几篇面试分享,有英文也有全中文面试的
不知道现在到底是哪个,所以面试前很抖,
不过我这次的经验是从开始到结束都是以中文面试
这次面试跟第一次一样,面试完对于被问了什么问题大概只记得一半,
不知道这样正不正常 XD
一开始一样不免俗的自我介绍,
介绍完毕后开始针对履历及作品集上的项目提问,
这边跟 Alfred 一样,面试官有先下载并使用过我作品集上的 App,
一样也针对 App 里面的某些功能做提问
个人觉得主要着重在:
— 基本功
— 过去经历
— 对架构的了解程度/想法
— 对语言的了解程度/想法(例:struct 跟 class 会怎么选择?)
— 团队合作
并且会针对你过去做过专案再一直细问下去,确认你是不是真的会
(例:我有提到专案中用的是 FLUX 架构,对方便请我说明 FLUX 是如何运作)
用了什么架构?用什么方法实现某个功能?用什么方法有什么优缺点?
说明使用过的架构 etc ...
因此对参与过的专案掌握程度要很高,才有办法回答每个问题
最后有一题算是上机考吧,给你一小段 code,
请你找出这段 code 所有可能的问题、或是可以优化的地方,并且讲出来
个人觉得题目出得不错也不会太难,大概 5 ~ 10 分钟就可把问题都抓完
算是把很多语言面 & 实作面的基础问题都浓缩在一题里面
不过因为是肉眼 compile 所以有些细节容易漏掉
我就是尽力把我看到的问题都讲出来,并解释为什么这样错了,
应该要用什么方法,最后还是有一两个漏掉地方,
在面试官的引(ㄊㄧˊ)导(ㄕˋ)下也有抓出来
最后是发问时间,问完想问的问题就结束一面了
过程中有提到因为是跨国产品,国外也有 Engineering team,
因此会需要英文沟通,可能大部分都是读 & 写,少部分口说,问我觉得英文 ok 吗?
(OS:糟了,这个开场白一定是英文面试的起手式
此时脑袋已经开始高速运转准备要接招了,但最后还是没被用英文问到问题 XD)
我表示读写一定没问题,说也ok,不过口说可能还是需要多练习才能讲得顺
结束后由 HR 简短说明接下来的流程,如果有二面的话一个礼拜内会通知,
重点会放在文化面试,然后就离开了
## 第二关 - Culture Interview
三天后收到二面邀请,HR 寄信通知后也直接打电话通知我
也说明了接下来的面试会如何进行,以及简短说明薪资福利,
还有面完对公司的感觉是什么,感觉得出来很重视面试者
一面完还特别寄信给 HR 说如果被拒绝的话可不可以也寄信跟我说一声,
看来是多心了呜呜呜
二面由两个 Backend Engineer 进行,着重在处事上面
两位面试官刚开始杀气很重,刚开始有点吓到,后来发现其实他们人很好也满有趣的 XD
(例:如果跟成员意见有冲突,会怎么办?被排了很多事做不完,怎么办?etc ...)
这部分就是照实回答,其实也没什么标准答案,平常遇到时怎么处理就怎么回答,
没遇到的就想一下遇到时会怎么应对。
还有一部分时间在闲聊,相对轻松一点,约 30 ~ 40 分钟就结束了。
结束后由 HR 询问面试到现在的感觉,以及询问期望的薪资,
HR 表示几天后会根据我开出的期望薪资给我一个回复后,就离开囉
(到这边终于算是拿到一个口头 Offer 了!)
原以为面试到此就结束了,
回家后接到 HR 电话表示 Engineer VP 希望可以跟我聊聊,
原本是要排在跟刚刚的面试一起,但因为有会议所以就没有一起面,
于是展开了第三面之旅
### 第三关 - Engineer VP Culture Interview
三度来到 Honestbee 办公室
一样是 Culture Interview,事前有先针对 HR 给可能会被问到的题目做准备
(例:遇到最挫折的事是什么?有什么兴趣或热爱的事吗?)
过程也会直接谈到期望的 Offer,说了期待的薪资后,
VP 表示由于我被归在 Junior iOS Engineer,所以会比我开的数字还要再减 10 万,
但因为一季会有一次 review,会有加薪及升职的机会,所以也是有机会升到 Senior 的
我也表示 ok。
面试很短,约 20 分钟而已,VP 人很帅很亲切,面试过程很轻松,
不会有什么压力,VP 会一边用钢笔纪录在笔记本上面,稍微喵了一下,字很漂亮 XD
结束后由 HR 说明接下来流程会怎么跑,大概会花多久
我询问完相关的福利之后就结束面试了。
后来问了一下 HR 为什么以前面试分享的文章都说有四关英文面试,
但我完全没有遇到,HR 回应说是因为不希望因为英文而错过真的优秀
但英文或许没那么好的面试者,所以才有修改了面试流程。
(我记得没错的话是这样,如果我有讲错请纠正我)
[结果]
Got an offer!
原本 HR 是说一个礼拜内会有答案
不过当天晚上就接到 HR 打来的好消息,表示 VP 觉得我 ok,
送件给新加坡 review 时也意外跑得很快,所以当天晚上就拿到 Offer 了!
待遇:(N + 31.5) * 12
=====================================
# iChef 资厨管理
[面试获得方式]
主动联系 HR (HR 半年前透过 LinkedIn 联系,当时表明还没有找工作的打算。)
[面试流程]
第一关 技术面试 (两个 iOS 工程师) - 约 160 分钟
第二关 HR 面试 - 约 20 分钟
[面试过程]
原本已经约好面试时间,不过因为其他公司的二面结果在 iChef 排定一面之后才出来
想把其他面试排在同一天,所以和 HR 姊姊改时间,
过程中多次打电话反复确认面试流程、时间相关的细节才终于敲定,
HR 也很有耐心的协助我,真的很对她很不好意思也很感谢。
## 第一关 - 技术面试
一面由两位 iOS 工程师进行
面试的问题一样不外乎语言的基础、用过的架构、用过哪些 Design Pattern、
哪些 Design Pattern 用在什么时候、有没有 Refactor 的经验等
我会在文末整理最常被问到的问题,在这边就不多赘述
没有什么太难或刁钻的问题,但有些基础问题还是没有答对或答得很好
(例:NSString 为什么要用 copy?),觉得非常惭愧。
面试到一半火警警报器还响起来,后来发现是虚惊一场,算是满特别的经验(?
HR 提到会有白板题,原以为会有算法题目,但后来发现没有,
只是有时候讲解东西会需要用到白板来辅助而已 XD
印象满深刻的是由于 iChef 是做 B2B 的 POS 系统,但有些店家会没有网络,
所以 App 必须也要在没有网络的情况下可以运作,
所以逻辑跟资料储存都会写在前端,因此也很重视 unit test,感觉是个很大的挑战。
## 第二关 - HR 面试
HR 相对技术面试而言就是比较轻松的了
主要就是一些满常被问到的人格特质相关的问题,了解找工作的动机等
(例:用几个词形容自己、觉得自己有什么缺点?etc...)
此时 HR 也会询问期望薪资,如果有二面的话会跟 CTO 面试
## 第三关 - CTO 面试
(很抱歉这段因为面试完没有马上做笔记
几天后想起来要写笔记已经忘掉大部分问题了)
一面约三天后收到二面通知!
二面也是一些常被问的问题
(例:遇过最困难的技术上的问题是什么?介绍一下做过的作品)
CTO 也不吝啬分享 iChef 团队内部的情况,团队的愿景、团队如何协作等
过程像聊天,CTO 人很亲切,大概有一半的时间是我在发问,
问完想问的问题后面试就差不多结束了,后续跟 HR 简单聊一下后就离开了。
[结果]
Got an offer!
两天后收到 HR 电话通知录取
待遇:(N+20) * 13
[后记]
面试/准备面试真的是一件很累人的事情,不论是心灵上还是身体上
心灵上要承受着面试后可能被拒绝的压力,
就算被拒绝后还是要打起精神继续面试下一家公司
身体上由于只能用下班时间来准备面试需要用的东西,
再加上下班后还有 side project 要顾,
光是履历 + 整理作品集就花了我两三个礼拜才真正完成,
更别说要整理出面试常被问到的问题,并且熟悉这些问题所花的时间跟精力有多少了
尽管如此,面了三间公司以后,让我收获满满
不论是透过和不同公司、不同的人面试,可以知道自己还有哪些地方不足
还是每间公司的面试方式、面试会问的东西、公司在乎求职者的是什么
在这边整理一下面试这三间公司以来,最常被问到的一些技术上的问题:
struct、class 差异是?怎么选择?
GCD 相关 (dispatch_sync、dispatch_async)
strong, weak, assign, copy 是什么,分别在什么时候使用?
retain cycle 是什么?怎样造成?怎么解决?通常最容易发生在哪些情况?
Category 是什么?
NSInteger、int 的差异是?
用过哪些 Design Pattern?
物件之间沟通有哪些 Design Pattern 可以用?Delegate 用在什么情况?
Notification Center 用在什么情况?
用过哪些架构?听过哪些架构?OO架构的运作方式是?有什么优缺点?
面到后来发现其实每家公司在乎的都满像的(当然我样本数只有三个不够多)
最重要的一定还是:基本功、基本功、基本功,
如果连最简单的 Retain cycle 都回答不出来的话,
我想也很难说服人自己可以写出一个稳定的 App。
再来就是你懂不懂得在哪些时机,使用哪些方法
哪些情况适合用哪一种?哪些又不适合?
(例:Objective-C 中 Category 跟 Class extension 的差异是?
Delegate 跟 Notification Center 分别在哪些时机使用?)
另外有 unit test 的经验看下来虽然不是必须,但有些公司还是会问有没有接触过,
如果有一点 unit test 的经验我想应该算是有加到分的(乱猜测)
个人觉得至少要懂 Dependency Injection、Mock、Stub 这些概念。
至于算法白板题,看了以前板上的文章会觉得好像现在刷题已经是基本中的基本,
不管到哪里一定会考。
但我很幸运的没有在这三次面试中遇到,不然我可能一面就通通直接被刷掉了 XD
虽然我有因此买了个白板在家自己练习、模拟解题,但在这方面还是非常非常弱,
只写了约 50 题的 Leetcode Easy。
最后补充一点,我觉得有一个(自己的)完整独立开发的作品也是相当重要
有一个从 0 到 1 参与的专案,会让你对专案的掌握度非常高,
接触到的“东西”也会相当多,技术方面一定是接触到最多的,在面试时会很有优势,
因为你是专案唯一的开发者,对专案非常熟悉,会有很多经验可以分享;
再来就是和人合作、沟通的能力也会因此而培养,很多公司重视的不只是技术能力,
协作、沟通、表达的能力也是非常重要的一点。
分享到这边,希望我的文章可以帮助到有需要的人,
如果有觉得哪里写得不好的地方有欢迎跟我说。
如果你是正在找工作的人,希望这篇文章有帮助到你,
也希望可以透过这篇文章给你一点信心,
祝福你/妳可以撑下去,找到心目中理想的工作!