
面试技巧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 。