IOS面试问题

  自我介绍

  自我介绍时,一定要简洁明了,不要长篇大论。以我个人而言,最不喜欢自我介绍说了一大堆,最后连她/他叫什么名字都没记住。

  参考答案:

  自我介绍时,突出重点,说话慢一些,在关键点声音大一点。本人回答时,就简单地说: 我叫某某某,做iosX年了,曾在XX公司担任过XX职务,在YY公司担任过XX职务,主要负责ZZ工作。业余喜欢做NN(要说积极点的),擅长LL(把自己的特长说明白)等。

  最近这两天你有学到什么知识/技能么?

  对于这个问题,面试官肯定知道作为求职者,这两天肯定是在忙于找工作、面试。那么,面试官问出这样的问题的目的是什么?如果我是面试官,我最想了解的是这两天你为此次面试准备了什么而不仅仅是告诉面试官这两天学习了某一方面的知识。

  参考答案:

  这两天为了准备面试,整理了以前所做过的一些项目的笔记,回头看了看以前的工作日志。一来是整理一些在工作中经常遇到的坑,比如cell重用问题、ios6适配问题等;二来是回头告别过去的自己,在思想上、技术上迎来全新的自我;三来定位自己下一个目标:往架构师方向深入研究。

  最近有做过比较酷或者比较有挑战的项目么?

  这个问题的关键是酷和挑战。其实这里所说的酷对应于开发中的动画,而挑战则对应于开发中的冲刺。对于笔者而言,其实并没有做过特别酷的项目,但是做过有挑战性的项目。但是没有做过并不是就不用回答,面试官想看到的是你的学习能力、应用能力以及解决问题的能力,而不是一句没做过或者没什么挑战性这样的话语。

  参考答案:

  我之前所负责的项目大多是电商项目,因此并不会特别酷,但是业务比较多,很有技术挑战性。不过,平时我也深入研究过ios核心动画相关知识,对于常用的动画是很熟悉的。在我看来,用户体验并不是所谓的酷,而是简单、方便且明了。我很在意用户体验问题,在开发中会不断地站在用户的角度地问自己用户讨厌什么、喜欢什么和怎样才能让用户感觉容易上手且使用简单等问题。比如,我会很在意网络状态的变化给用户的提示、请求网络时右上角的转圈圈是否开启、滚动cell时是否有卡顿的问题等。

  我待过几家公司,从一个人开发到带领团队,从小公司到大公司,因此对于不同的公司对项目的要求完全不一样。对于大公司,一般项目管理机制相对比较完善,而且会有比较多经验丰富的技术VP,因此对于工作的要求比较高,对于用户的体验及反馈会非常地关注;而对于一些小公司,可能就一个人在开发,而这个人往往是菜鸟的多,因此都是东拼西凑而形成的项目,技术不成熟、水平不够,而且还被压着不断加班,因此几乎不会过多关注用户体验问题,当然这样项目也不会有什么好的构架(初创技术合伙人除外)。

  现在我所在的公司不算大,也就1000+号人,而做ios也才40号人左右。本公司是按业务方向划分成多个团队,不同团队开发不同的业务需求,因此这样就面临技术架构问题、安全问题、团队开发如何做到互不干扰等问题了。而我在团队中的主要职责是处理团队之间冲突的问题、如何代码模块化以减少团队之外的依赖问题、移动端安全通信问题、项目存储安全问题、公共框架等问题,这一系列都是非常有技术挑战的,需要花费很多非工作时间去调研、写demo、写文档等

  最近看过的书/文章有哪些?

  询问最近看过的书或者文章,其实通过所回答的书的性质差不多就可以猜出当前状态下应聘者的技术水平大致处于什么样的水准了。下面的参考答案是笔者的常态。

  参考答案:

  最近在看《iOS应用逆向工程》、《The Swift Programming Language》。不过本人更喜欢的是阅读博客文章和官方文档,虽然官方文档是英文的,阅读起来相对要费劲一些,但是一方面可以提高英文阅读能力,另一方面英文原版表达的语义才是最准确的,其他翻译过来的文章会有一些变味之处。

  为什么要学习编程,编程对你而言的乐趣在哪儿?

  这样的话题在很多社区都出现过,其实问这样的问题只是想知道应聘者的态度而已。通过应聘者的回答,一方面可初步了解应聘者对编程的认知程度,另一方面可从应聘者口出得出编程对于应聘者而言是什么样的态度。下面是结合笔者的事迹写下的参考答案,仅供参考。

  参考答案:

  说到这个问题,我曾经也问过自己为什么要学习编程。回想当年高考结果出来的时候,需要选择学校和专业的时候是很迷茫的,不知上大学应该学点什么。后来,我选择了计算机科学与技术专业,并为了这个专业而选择学校。由于高考考得不好,虽然超过一本线,但是高不成低不就,很多高校的计算机专业要求总分达到560(当时一本线是502分)左右才能稳拿到这个专业,而我才考了526分,想想计算机专业很强的高校是很难进的。于是选择了从广西到沈阳这么遥远的地方上学,竟然是为了计算机专业,现在回想起来还自己偷笑。

  在大学的时候,大一天天在图书馆提前学习编程,因为动手能力突出,到大二的时候有好多教计算机的老师提前知道了这样的我,感谢他们的认可,在大学这几年,是他们引导我如何编程实战。大学的时候做过很多PC端的软件(.net开发的)、给老师做过教程网站(ASP.net开发的)、参加学习的ACM训练等等,一切的一切,都要感谢那些教导我的恩师们。

  后来通过学长了解到未来就业的一些动向,了解到毕业后如何找工作,学习了iOS开发,于是越来越爱她了。如果非要说编程的乐趣在哪里,我想说在讨论技术的时候就像和同学、朋友一起玩LOL的时候;在解决掉一个别人解决不了的bug的时候,那是一种想要向全世界大声说:YES,I Can;当我们与技术总监并肩作战,一起为了项目上线熬夜,总监为我们买夜宵一起吃的时候,那就是兄弟情谊,那会有种相见恨晚的感觉。

  如果一个函数10次中有7次正确,3次错误,问题可能出现在哪里?

  这样的问题通过应聘者的分析,可以知道应聘者的功底如何。很多人的回答会是很简单的,没有从多方面去分析。这样的问题也是很有意义的,在项目开发中所产生的bug,有的时候会出现这样的情况,而代码量比较大且业务比较复杂时,通过其他工具并不能分析出来是什么bug,但是我们却可以根据出现的频率推测。笔者把这个问题当作测试部反馈过来的bug描述问题来分析一下。

  参考答案:

  从问题描述可知,bug不会必现的,因此无法直接定位出错之处。从以下角度出现来分析可能出错之处:

  因出错并不是崩溃,因此没有错误日志可看。第一步就是分析函数中的所有分支,是否在语法上存在可能缺少条件的问题。所以,检查所有的分支,确保每个分支执行的结果的正确的

  检测函数的参数,保证必传参数不能为空,若为空应该抛出异常。因此,用断言检测参数的正确性是很重要的。

  检测函数中每个分支所调用的函数返回结果是正确的,其实就是一个递归的过程(步骤1、2)

本文已影响6827
上一篇: 下一篇:国家公务员面试最常见问题

相关文章推荐

|||||