iOS程序员面试笔试真题与解析
上QQ阅读APP看书,第一时间看更新

面试技巧10 名企iOS工程师行业访谈录

某知名互联网公司研发工程师访谈录(1)

1.当前市场对于iOS程序员的需求如何?待遇如何?

就笔者所在的互联网公司来说,因为现在产品基本上是移动端先行,所以对iOS程序员的需求量还是挺大的,而iOS程序员的待遇基本与同级其他岗位(除算法岗外)无差别。

2.iOS程序员未来的发展方向如何?

对于发展方向而言,我的个人感觉还是要看iOS程序员个人的成长路线以及以后的发展目标,iOS这个行业的前景和市场需求目前还是一片光明的。

对于不同层次的iOS程序员成长路线和发展,我觉得可以分为以下几个方面的内容:

(1)独立App开发。

(2)业务能手,业务逻辑抽象。

(3)SDK功能组件开发。

(4)跨端技术Weex、React-Native等。

(5)底层研究,iOS汇编、性能、网络、安全等研究。

(6)端上机器学习(Core ML),AR(ARKit)这些新技术也很有发展前景。

总之,iOS程序员并非要局限于iOS开发本身,条条大河终入海,iOS程序员要以iOS开发为入口,深入下去,不断深扎根计算机领域,努力走在计算机科学技术发展的前端。

iOS的行业前景主要依赖于iOS、iPhone本身的发展以及App Store的生态圈,目前看起来,iOS的行业前景无须担心,它们都还处于上升期。大公司的iOS研发其实一直缺人,但是满足条件的开发者较少,由于现在行业上新产品的Web版可以考虑不做,但是移动端是一定要有的,所以市场对iOS程序员的需求量还是很大的。

3.iOS程序员有哪些可供选择的职业发展道路?

我认为可以大概划分为以下两个路线:

(1)一个是UI线,在大业务中专门负责业务页面搭建,沉淀UI组件。

(2)一个是基础架构线,主要实现网络、高可用、App架构等。

4.企业在招聘时,对iOS程序员通常有什么要求?iOS程序员的日常工作是什么?

企业在招聘时,主要还是考察求职者对iOS开发基础知识的掌握情况,例如对Objective-C和Swfit语言的了解,对App运行机制的了解,对基础Framework以及业界知名的第三方Framewok的了解等,还有一部分较为重要的就是求职者的软素质,例如学习能力和沟通能力等。

iOS程序员的日常工作大概可以分为以下几类:

(1)最主要的还是业务页面的搭建,已有业务页面的维护。

(2)基础组件(网络、UI等)的编写维护,三方组件的接入和升级。

(3)iPhone机型以及iOS系统适配。

5.要想成为一名出色的iOS程序员,需要掌握哪些必备的知识?有哪些好的书籍或是网站可供推荐学习?

一名出色的iOS程序员的必备知识基本与招聘要求是一致的:

(1)Objective-C和Swift的基础知识。

(2)UIKit和Foundation两个库的使用。

(3)iOS App以及iOS的运行机制。

对于学习书籍,由于我个人看的比较少,所以这里就不推荐了,而我主要是通过以下几种方式来学习提升的。

(1)苹果(https://developer.apple.com/documentation)和第三方库的文档。

(2)优秀开发者的博客,例如喵神:https://onevcat.com/。

(3)阅读Github优秀开源项目的源码。

某知名互联网公司研发工程师访谈录(2)

1.当前市场对于iOS程序员的需求如何?待遇如何?

因为iOS开发的入门门槛相对较低,虽然当前市场上入门级的iOS开发已经饱和了,但是对于iOS的中高端人才需求缺口仍然很大。而待遇方面的情况可以参考各类招聘网站的信息了,在此就不方便透露个人以及所在企业的薪酬体系了。

2.iOS程序员未来的发展方向如何?

手机现在是人们生活中必不可少的工具之一,所以iOS程序员的发展前景非常乐观。现在互联网公司的主要业务都依赖于App进行操作和发展。此外,移动互联网已经深入到生活的方方面面,现在仍然有大量的公司业务只能在PC端办理,非常不便,这也是手机端业务的机遇和挑战。整体的市场需求对于移动开发是非常巨大的。

3.iOS程序员有哪些可供选择的职业发展道路?

1)一直钻研,成为在某一领域专精的优秀iOS专家。

2)工作几年之后,由于经验丰富并且熟悉业务,从而可能成为iOS项目经理,逐渐进入管理层。

3)自主创业,转型去授课或提供知识服务,成为一名自由工作者,按需求提供咨询服务等。

4.企业在招聘时,对iOS程序员通常有何要求?iOS程序员的日常工作是什么?

首先,iOS开发需要扎实的计算机基础知识,包括基础的算法和数据结构、常用设计模式、网络通信协议、数据安全等;其次,要求iOS基础扎实,熟练使用常用的UI组件和网络组件,具有优秀的代码设计能力,避免开发中犯一些低级错误;了解各个常用框架的实现原理、网络性能、数据库性能、H5加载调优、精通Hybrid开发,有App的架构设计能力。

程序员的日常工作主要是通过自己优秀的代码设计能力,快速高效、高质量地完成业务开发,并能够攻克遇到的一些棘手问题,提升自己的能力。

5.要想成为一名出色的iOS程序员,需要掌握哪些必备的知识?有哪些好的书籍或是网站可供推荐学习?

现在iOS开发呈现出大规模的集成化,除了App的整体架构设计的能力之外,网络通信、数据库、数据安全、消息同步、缓存设计、动态性Hybrid、webview调优、日志记录、性能监控、数据埋点、crash上报、自动化测试、视频处理、图像处理等,都是App非常核心的功能,专精其中2~3项就已经是一名非常出色的iOS工程师了。

我对iOS的书籍关注较少,网站推荐Github 。