重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
程序员面试iOS开发工程师都会遇到哪些问题?下面是一些问题分享,希望对以后的面试会有所帮助。
创新互联-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、雅安服务器托管、等保安全、私有云建设等企业级互联网基础服务,欢迎咨询:13518219792
首先需要声明的是,此次的面试者大多在有1~3年的iOS开发经验,并非需要找一个真正的大牛,所以准备的题目,自己觉得大多数还是比较基础,比较能够看出这个层次的人的水准的。如果也是个有3年左右开发经验的从业者,不妨一试。
面试开始的时候,会让面试者选择一个他最熟悉的项目,给介绍一下它的技术架构,以及面试者在其中参与的模块和具体工作。事实上,很多开发者并不明白提到的“架构”的具体意思,有些人说了一大堆产品的功能,还有人说的非常笼统(比如,遵循MVC架构之类),一般这种时候会打断他们,直接让他们给讲一下这个APP的层次结构,或者是核心模块等。
之后会问两个问题:
1. 讲述一次在这个APP中,用户触发了一个事件,引起了一个服务请求,然后获取服务端返回,并且更新前端界面的过程。请说的详细一点,比如数据经过了哪些类的处理,每一次传递时的格式是怎么样的?
2. 参与的APP,是如何处理多个服务的同步发起的?随后让面试者说一下APP的界面架构,这个比较随意。
问完了项目,就开始基础知识题啦~
Model层:
数据持久化存储方案有哪些?
沙盒的目录结构是怎样的?各自一般用于什么场合?
SQL语句问题:inner join、left join、right join的区别是什么?
sqlite的优化
网络通信用过哪些方式(100%的人说了AFNetworking...)
如何处理多个网络请求并发的情况
在网络请求中如何提高性能
在网络请求中如何保证安全性
语言与基础知识:
内存中的栈和堆的区别是什么?那些数据在栈上,哪些在堆上?
#define和const定义的变量,有什么区别
什么情况下会出现内存的循环引用
block中的weak self,是任何时候都需要加的么?
GCD的queue,main queue中执行的代码,一定是在main thread么?
NSOperationQueue有哪些使用方式
NSThread中的Runloop的作用,如何使用?
.h文件中的变量,外部可以直接访问么?(注意是变量,不是property)
讲述一下runtime的概念,message send如果寻找不到相应的对象,会如何进行后续处理 ?
TCP和UDP的区别是什么?
MD5和Base64的区别是什么,各自场景是什么?
二叉搜索树的概念,时间复杂度多少?
架构:(招的不是架构师,这方面问的不多,而且从之前对APP的架构介绍里可以边听边问)
哪些类不适合使用单例模式?即使他们在周期中只会出现一次。
Notification的使用场景是什么?同步还是异步?
简单介绍一下KVC和KVO,他们都可以应用在哪些场景?
APP相关:
如何添加一个自定义字体到工程中
如何制作一个静态库/动态库,他们的区别是什么?
Configuration中,debug和release的区别是什么?
简单介绍下发送系统消息的机制(APNS)
UI:
系统如何寻找到需要响应用户操作的那个Responder
多屏幕尺寸的适配
UIButton的父类是什么?UILabel呢?
push view controller 和 present view controller的区别
描述下tableview cell的重用机制
UIView的frame和bounds的区别是什么
最后是几道场景题,也是最喜欢问的:
发送10个网络请求,然后再接收到所有回应之后执行后续操作,如何实现?
实现一个第三方控件,可以在任何时候出现在APP界面最上层
实现一个最简单的点击拖拽功能。
上面那个拖拽之外,如果在手放开时,需要根据速度往前滑动呢?
如何减小一个应用程序的尺寸?
如何提高一个性用程序的性能?
不同版本的APP,数据库结构变化了,如何处理?
平心而论,这些题目并没有特别难,没有讲到黑科技,也没有讲到ACM算法题,都是iOS的基础概念以及很容易遇到的场景。可能也是因为招的目标,也只是一个可以完成业务开发的3年左右经验的人而已,所以大部分面试者水平并不如意,能答出以上大半题目,同时思路清晰态度积极向上的人,不到四分之一吧...
另外的感想就是,这个行业可能真的有点浮躁,很多面试者,连简单的几个场景题都答不出来,基础知识更是一般,只会用几个第三方库,就开口要25~30w的年薪,还有一种爱理不理的感觉。也有些人,在原来的公司,自称是技术负责人,但连APP的基本架构,包括哪些主要模块都讲不清楚,各种兜圈子,甚至有人讲了半天的产品功能和亮点,不得不一次次打断才能继续面试。
学iOS,做的事情越多,越觉得自己有越多的东西要学,离大牛的标准也是越来越远。而无论从深度还是广度来看,iOS开发都是一个值得挖掘的技术领域。由于苹果产品的火热,市场上的iOS开发一直供不应求,但真正有能力,高素质的可能真的不那么多。
ios个人简历模板一
刘*
二年以上工作经验|男|27岁(1989年11月24日)
居住地:南京
E-mail:
最近工作[1年]
公司:XX有限公司
行业:计算机科学与技术
职位:ios开发工程师
最高学历
学历:本科
专业:计算机科学与技术
学校:南京
自我评价
1.拥有丰富的ios项目开发经验;
2.较强的系统设计能力及跟踪算法设计能力;
3.精通ios编程及标定测试;
4.较好的沟通与协调能力。
求职意向
到岗时间:立即到岗
工作性质:全职
希望行业:计算机科学与技术
目标地点:南京
期望月薪:面议/月
目标职能:ios开发工程师
工作经验
2014/12—2015/12:XX有限公司[1年]
所属行业:计算机科学与技术
研发部ios开发工程师
1.参与项目执行,讨论项目执行流程;
2.主导项目执行相关培训工作;
3.随时跟进项目执行的进度及质量;
2013/10—2014/10:XX有限公司[1年]
所属行业:计算机科学与技术
研发部ios开发工程师
1.作为综合模块组长参与到项目实施中,主要负责前期准备工作,包括落实办公环境,项目人员入场,网络调研及网络整改等工作;
2.负责综合模块管理及实施工作,包括业务调研与差异化分析工作,需求分析匹配工作,组织建模工作,系统部署,用户培训,权限管理,数据收集、导入及校核工作,试运行支持及建转运等工作;
3.负责项目文档管理工作,撰写并核查项目各阶段产出文档等。
教育经历
2008/9—2012/6南京计算机科学与技术本科
证书
2009/12大学英语四级
语言能力
英语(良好)听说(良好),读写(良好
ios个人简历模板二
基本信息个人相片
姓名:性别:男
民族:汉族出生年月:1991年2月7日
政治面貌:共青团员婚姻状况:未婚
身高:168cm体重:55kg
户籍:福建现所在地:厦门
毕业学校:福建交通职业技术学院学历:专科
专业名称:计算机控制毕业年份:2012年
求职意向
职位性质:全职
职位类别:软件工程师,
专业技能(范文)
熟练Objective-C/C等开发语言;
熟练各种UI控件的定制和各种功能模块的简单封装;
熟练使用Xib,熟练3.5寸屏和4寸屏的适配以及Ios6和Ios7的适配;
熟练使用plist文件来搭建自定义TabBar;
熟练NSThread/NSOperation/GCD多线程开发;
熟练MVC/Single/Delegate/KVO/KVC等设计模式;
熟练SQLite3/Write/FMDB/NSUserDefaults存储;
熟悉友盟社会化组件和新浪等第三方账号登陆、绑定和分享;
精美word版简历模板可参考我的文库主页(点击头像进入);
使用台式电脑可较好显示简历的设计效果;
《围城》里将婚姻形容为一个围城,城内的想出去,城外的想进去,其实职场又何尝不是另一个围城,因此跳槽、卧槽的纷争不断在身边上演。俗话说“金三银四”,这正是每年各家企业寻求畜牧人才的旺季,想必不少人的心思已经开始活络了起来。但是畜牧人才网想在这里提醒各位,跳槽不仅是为了获得一份更好的薪资,更是职场生涯中重要的一环,然而已经错过金三的你准备如何在银四找到属于自己的工作呢?
大家经常觉得简历就自我赞歌,所有美好的形容词堆砌起来都不够不够的,自己实在是太优秀了[捂脸]!
但是,实际上这样的简历并非真的优秀。拿下图举例。
第一个小白,简历做的像渣渣,海投简历无人问津,铁定不是好简历。
第二个小黑,简历做的像文案,头像层层美颜,投出去的简历几乎封封得到回复,但几乎没通过一面,这也不是好简历。
真正好的简历,是命中率高的小红,虽然没有全部回复,回复过的公司总能保持较高的面试通过率,用最少资源,找到合适的工作。
所以下面三个人中,小白做的太渣,小黑做的太过……
网传HR筛一份简历最多3秒钟,有人说自己只要1秒,全局来说不到1秒钟我相信。
大家可能不知道简历有个筛选器功能,比如今天我招个iOS应用开发工程师,设置字段如学历、工作经验、性别等信息,可以把研究生以下、工作经验不到2年的全部筛掉。几秒钟筛选几百封再正常不过。
时间紧、压力大,根据达尔文的进化论,招聘HR进化出一个决策框架来筛选候选人,比如:
求职者要珍惜这有限的注意力,把简历包装精简而有吸引力,让HR一眼看到你的特点,总结起来就三个词:
很多人跳槽前有目标,比如某家的程序猿,提前了解,知己知彼,成功几率高。
也有人广撒网的,觉得自己能力到哪都行,把行业前几名公司划拉一下,选出几个目标职位,海投了简历。
投简历前心里做个匹配度盘点,确定胜算几率,知道简历书写重点。为什么还能知道简历重点呢?关于盘点的思路见下表,实际匹配度的评估只要心里盘算一下即可,不需要表。
职位分类是说,你上家单位是否做过相似职能的工作。
工作经验是说,你的工作时间、工作环境、工作内容,是否与目标岗位匹配。
简历定位就是要按照与以上岗位要求相关的内容来开始给自己画一个像,做个定位,履历内容紧贴定位。
工作履历是简历的主体,而所有工作履历中,项目经验是比较重要的内容,可以放在更靠上的位置,一般来说:负责外部咨询项目经验 主持内部项目经验 参与普通项目经验 没有项目经验。所以相应的文字比重也是按照这个顺序由大到小来写。
另外,经常有人不知道工作职责的写法,在这里明确方法如下:根据「工作限定」,通过「实现途径」,达成「任务目标」
如:参与/参加/承担****部门****项目的调研/研究/设计实习,通过****,实现****率增长*个百分点。
这里有几句话:
所以毕业3年以上的,学校奖学金的事可以省略了。个人评价「执行力强、创新思维、服务意识」也不要写了,写了HR也不看。过度包装不适用于大多数职位,一是审美疲劳二是会稀释专业性,简历还是要看内容。
扎实的 Objective-C 和 C
语言基础,具体良好的代码编写风格和设计思想;
· 熟练使用Mac系统、Xcode等相关开发工具掌握 iOS
应用开发、发布、上线流程,逻辑思维较强;
· 熟悉移动终端网络编程,熟悉XML/JSON,掌握HTTP/TCP/IP协议,Socket网络编程,熟练使用 JSON 精通,XML 数据解析;
· 熟练掌握 iOS 中的
ARC 和 MRC 的内存管理机制
· 熟练使用各种设计模式,如MVC 模式(MVVM模式与MVCS设计模式)、代理模式、单例模式、工厂模式、观察者模式等设计模式
;
· 熟练运用第三方登录、极光推送、地图、支付宝支付、环信等开发平台的集成流程和注意事项;
· 熟练掌握数据持久化技术,如使用 数据库、CoreData、NSUserdDefault、plist 及归档等常见的
· 熟练掌握 UI 系统界面和自定义控件,熟练掌握动画的制作
· 熟练使用二维码的生成和扫描,了解 H5 和
UI 界面的交互
· 熟练使用并理解 MJRefresh、SDWebImage、AFNetworking、JSONModel、MBProgress、
MagicalRecord 等第三方库;
· 熟悉并掌握多线程技术,如 NSThread、GCD、NSOpeartion;
· 熟悉 CocoaPods 管理第三方类库
· 熟悉 runtime 以及 runloop、多线程等底层开发
· 熟悉 SourceTree、Github 代码管理工具