[转载]知乎上一篇关于怎样面试IOS工程师的回答,用于面试和学习都不错

http://www.zhihu.com/question/19604641  感谢回答者 @张自玉

如何面试 iOS 工程师?

看了这个问题觉得楼主是外行,所以先胡乱说两句。
讲到开发,一定要有开发工具,我们经常说的IDE也就是集成开发环境。ios开发所需的环境就是一款名为xcode的[软件]。是苹果官方推出的,在appstore上可以下载的到。这个xcode是ide是环境,里边集成了编译器,文档管理,编辑等好多功能,就想c++程序员用的vc,java用的ecslips。ios开发过程中的软件环境还包括苹果官方的UIKit框架,当然作为一个成熟的开发者,仅仅知道这些是远远不够的。在界面日益花里胡哨的今天,各种优秀的开源框架层出不穷,下面列举比较常用的ios第三方框架
1 SBJson 这个不用说的,做网络的没有不用的。
2 ASIHttpRequest ios原生的网络类啰嗦,这个简洁点。
3 ZBar 这个也许没大有人听过,但是搞开发 ,弄二维码 基本没有不知道的。
4 MBProgressHud 很好用的指示条,各种各样的UI。
5 Three20 这个不用说了吧,facebook总该知道吧,就算你不知道facebook,人人网总该知道吧,他们的手机客户端都是用这个控件库里的控件,目前在github上还可以download。不过作者貌似已经停止更新了。
6 KissXML 解析XML的时候大家都用啥,我有时候手动,有时候这个。
7 FMDB , 很好用的数据库包。
8 cocos-2d cocos2d-x 开源游戏引擎,好多流行的游戏都是这个搞的,捕鱼达人知道否,对 就是cocos2d。

-----------------------------------------啰嗦的分割线------------------------------------------------------------------------------
下面开始说面试的事。
面试有好多方面,这里主要说技术。其余的什么创造力啊,RP啊,情商啊。找人力的解决吧。
我主要说说机试,任何的面试最后都要回归到代码上的,招人是来干活的,是写代码的。所以面试的时候就来点最实际的吧,开始写代码。
软硬件准备
1 装有mac os的mac电脑一台(哥曾经华丽丽的看到各种牛x人士拿着装着xp的mac电脑)
2 稳定的网络。
基础篇
1 新建一个empty工程,从appdelegate开始写一个根控制器,一个button,点击button后跳转到另一个控制器里。另一个控制器中还有另外一个button,点击跳回来。
其实现在很多人连这个都实现不了,你不信? 我面试了好多ios开发的工程师,叫他们写个最最简单的功能,从入口也就是appdelegate开始写代码,他们都写不全,这样的人说死不能要,基础极度不扎实。
扩展---> 在跳转的同时将A控制器的某一个string传递至B控制器中。

2 给以txt文件,里面有一段文字,读取这个文件并用label来展示,label宽度给定,折行方式给定,要求算出展示文字所需要的精确高度。
扩展--> 统计文字中的某个字符或者某些标点的字数。
这个扩展可以延伸到很多,文本处理是各种交互设计永恒的主题,这里可以考察一下正则,越说越复杂了。

3 定制tableview,tableview是ios开发中最常用的控件之一,面试题目就是让面试者定制特定样式的tableview。自行模拟数据源,用tableview展示。顺便提两个常用功能,下拉刷新和上拉加载更多。

4 网络与数据库,此处不详述了,不知楼主主要开发何种应用,关于特定应用 会有特殊要求。如果做网络客户端,此项为必考。

没啥提高篇
1数据结构与算法
写个链表,存100个数,写个队列存100个数,写个循环缓冲队列 。
写个A*算法。走个迷宫神马的,搞个二叉树优化一下思密达
基础一点的就实现一点基本的查找和排序吧。

2 各种媒体处理方法,视频音频等等,此处过于专业 不再作者擅长领域。期待大牛补充。
3 写的有点累,先凑合着看,后续更新。

原文地址:https://www.cnblogs.com/matrixchen/p/3035739.html