美文网首页面试那些事儿生活和工作iOS面试资料搜集
iOS开发工程师面试策略(3)-面试流程

iOS开发工程师面试策略(3)-面试流程

作者: iOS大蝠 | 来源:发表于2019-10-28 21:29 被阅读0次

1.流程简述

就我所知,大部分的 iOS 公司的面试流程都大同小异。我们先简述一下大体的流程,然后再详细讨论。

在面试的刚开始,面试官通常会要求你做一个简短的自我介绍。

然后面试官可能会和你聊聊你过去的实习项目或者工作内容。接着面试官可能会问你一些具体的技术问题,有经验的面试官会尽量找一些和你过去工作相关的技术问题。最后,有些公司会选择让你当场写写代码,Facebook 会让你在白板上写代码,国内的更多是让你在 A4 纸上写。有一些公司也会问一些系统设计方面的问题,考查你的整体架构能力。在面试快要结束时,通常面试官还会问你有没有别的什么问题。

以上这些流程,不同公司可能会跳过某些环节。比如有一些公司就不会考察当场在白板或 A4 纸上写代码。有些公司可能跳过问简历的环节直接写代码,特别是校园招聘的时候,因为应届生通常项目经验较少。面试流程图如下所示:

面试流程

2.自我介绍

自我介绍通常是面试中最简单、最好准备的环节。

一个好的自我介绍应该结合公司的招聘职位来做定制。比如公司有硬件的背景,就应该介绍一下在硬件上的经验或者兴趣;公司如果注重算法能力,则介绍自己的算法练习;公司如果注重团队合作,那么你介绍一下自己的社会活动都是可以的。

即使做到了以上这些仍然是不够的,候选者常见的问题还包括:

(1)太简短

(2)没有重点

(3)太拖沓

(4)不熟练

我们在展开讨论上面这些问题之前,我们可以站在面试官的立场考虑一下:如果你是面试官,你为什么要让候选人做自我介绍?你希望在自我介绍环节考察哪些信息?

在我看来,自我介绍环节相当重要,因为:

首先它考察了候选人的表达能力。大部分的程序员表达能力可能都一般,但是如果连自我介绍都说不清楚,通常就说明表达沟通能力稍微有点问题了。面试官通过这个环节可以初步考察到候选人的表达能力。

它同样也考察了候选人对于面试的重视程度。一般情况下,表达再差的程序员,也可以通过事先拟稿的方式,把自我介绍内容背下来。如果一个人自我介绍太差,说明他不但表达差,而且不重视这次面试。

最后,自我介绍对之后的面试环节起到了支撑作用。因为自我介绍中通常会涉及自己的项目经历,自己擅长的技术等。这些都很可能吸引面试官追问下去。好的候选人会通过自我介绍 “引导” 面试官问到自己擅长的领域知识。如果面试官最后对问题答案很满意,通过面试的几率就会大大增加。

所以我如果是面试官,我希望能得到一个清晰流畅的自我介绍。下面我们来看看候选人在面试中的常见问题。

3.项目介绍

自我介绍之后,就轮到讨论更加具体的内容环节了,通常面试官都会根据自我介绍或者你的简历,选一个他感兴趣的项目来详细讨论。

这个时候,大家务必需要提前整理出自己参与的项目的具体挑战,以及自己做得比较好的地方。切忌不要说:“这个项目很简单,没什么挑战,那个项目也很简单,没什么好说的”。再简单的事情,都可以做到极致的,就看你有没有一个追求完美的心。

比如你的项目可能在你看来就是摆放几个 iOS 控件。但是,这些控件各自有什么使用上的技巧,有什么优化技巧?其实如果专心研究,还是有很多可以学习的。拿 UITableView 来说,一个人如果能够做到把它的滑动流程度优化好,是非常不容易的。这里面涉及网络资源的异步加载、图片资源的缓存、后台线程的渲染、CALayer 层的优化等等。

这其实也要求我们做工作要精益求精,不求甚解。所以一场成功的面试最最本质上,看得还是自己平时的积累。如果自己平时只是糊弄工作,那么面试时就很容易被看穿。

4.写代码

编程能力,说到底还是一个实践的能力,所以说大部分公司都会考察当场写代码。

由于人最终招进来就是干活写代码的,所以如果候选人当场写代码表现很差的话,基本上面试就挂掉了。

当面试官考察你写代码的时候,他其实在考察:

(1)你对语言的熟悉程度。如果候选人连常见的变量定义和系统函数都不熟悉,说明他肯定经验还是非常欠缺。

(2)你对逻辑的处理能力。产品经理关注的是用户场景和核心需求,而程序员关注的是逻辑边界和异常情况。程序的 bug 往往就是边界和特殊情况没有处理好。虽然说写出没有 bug 的程序几乎不可能,但是逻辑清晰的程序员能够把思路理清楚,减少 bug 发生的概率。

(3)设计和架构能力。好的代码需要保证易于维护和修改。这里面涉及很多知识,从简单的 “单一职责” 原则,到复杂的 “好的组合优于继承” 原则,其中设计模式相关的知识最多。写代码的时候多少还是能够看出这方面的能力。另外有些公司,例如 Facebook,会有专门的系统设计(System Design)面试环节,专注于考察设计能力。

5.系统设计

有一些公司喜欢考查一些系统设计的问题,简单来说,就是让你解决一个具体的业务需求,看看你是否能够将业务逻辑梳理清楚,并且拆解成各个模块,设计好模块间的关系。举几个例子,面试官可能让你:

设计一个类似微博的信息流应用。

设计一个本地数据缓存架构。

设计一个埋点分析系统。

设计一个直播答题系统。

设计一个多端的数据同步系统。

设计一个动态补丁的方案。

这些系统的设计都非常考查一个人知识的全面性。通常情况下,如果一个人只知道 iOS 开发的知识,是很难做出相关的设计的。为了能够解决这些系统设计题,我们首先需要有足够的知识面,适度了解一下 Android 端、Web 端以及服务器端的各种技术方案背后的原理。你可以不写别的平台的代码,但是一定要理解它们在技术上能做到什么,不能做到什么。你也不必过于担心,面试官在考查的时候,还是会重点考查 iOS 相关的部分。

6.提问

提问环节通常在面试结束前,取决于前面的部分是否按时结束,有些时候前面的环节占用了太多时间,也可能没有提问环节了。

相关文章

  • iOS开发工程师面试策略(3)-面试流程

    1.流程简述 就我所知,大部分的 iOS 公司的面试流程都大同小异。我们先简述一下大体的流程,然后再详细讨论。 在...

  • BAT面试经验分享——iOS高级开发工程师的自我总结!

    BAT面试经验分享——iOS高级开发工程师的自我总结! BAT面试经验分享——iOS高级开发工程师的自我总结!

  • IOS面试

    如何面试 iOS 工程师? - iOS 开发 - 知乎 《招聘一个靠谱的iOS》面试题参考答案(上) - Coco...

  • IOS面试

    如何面试 iOS 工程师? - iOS 开发 - 知乎 《招聘一个靠谱的iOS》面试题参考答案(上) - Coco...

  • Android开发

    《Android 开发工程师面试指南》 《Android 开发工程师面试指南 LearningNotes 》,作者...

  • 面试技巧攻克(2)-Objective-C语言

    面试技术攻克(1)-iOS开发基础 面试技巧攻克(3)-OC高级特性 面试技巧攻克(4)-iOS中对象间通信机制 ...

  • 小目标吧

    最近准备面试,看了许多免费的,不免费的面试题。也看了iOS 工程师如何自我提高。反思自己iOS工程师近3年,学到了...

  • 无标题文章

    转载自《Android 开发工程师面试指南》 《Android 开发工程师面试指南 LearningNotes 》...

  • 滴滴面试 + 百度面试

    面试岗位:Java开发工程师面试时间:2018年3月8日面试地点:奋斗大厦面试时间:10:00 ~ 15:00面试...

  • 面试了 20 个初/中级 iOS 工程师之后(上)

    面试了 20 个初/中级 iOS 工程师之后(上) 面试了 20 个初/中级 iOS 工程师之后(上)

网友评论

    本文标题:iOS开发工程师面试策略(3)-面试流程

    本文链接:https://www.haomeiwen.com/subject/qsdivctx.html