描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121342622
√ 117道以上IT大厂面试题
√ 详解iOS大厂技术人员所关注和重视的技术点
√ 不仅是面试指南,也是构建iOS知识体系的基本框架
√ 在一问一答间,融入作者对问题本质的深刻理解和多年工作经验的沉淀
√ 硅谷iOS工程师、资深iOS开发者为你详解硅谷、Google、Facebook、BAT等知名IT大厂面试题!
目录
第1章 iOS工程师的面试 / 1
1.1 简历的准备 / 1
1.2 寻找机会 / 8
1.3 面试流程 / 9
1.4 代码和系统设计的准备 / 16
1.5 如何提问 / 22
1.6 Offer的比较和选择 / 24
第2章 算法基础 / 28
2.1 基本的数据结构 / 28
数组 / 28
字典和集合 / 30
字符串 / 32
2.2 链表 / 34
链表的基本概念 / 34
Dummy节点和尾插法 / 35
快行指针 / 38
2.3 栈和队列 / 40
栈和队列的基本概念 / 40
栈和队列互相转换 / 43
栈和队列面试实战题 / 45
2.4 二叉树 / 47
二叉树的基本概念 / 48
二叉树的遍历 / 50
二叉树面试实战题 / 51
2.5 排序和搜索 / 54
排序的基本概念 / 54
搜索的基本概念 / 57
排序面试实战题 / 59
搜索面试实战题 / 61
iOS中搜索与排序的配合使用 / 64
2.6 深度优先搜索和广度优先搜索 / 66
深度优先搜索和广度优先搜索的基本概念 / 66
深度优先搜索和广度优先搜索面试实战题 / 69
2.7 动态规划 / 74
斐波拉契数列问题 / 74
斐波拉契数列问题面试实战题 / 77
第3章 语言工具 / 81
3.1 Swift / 81
Swift面试理论题 / 81
Swift面试实战题 / 88
3.2 Objective-C / 91
Objective-C面试理论题 / 91
Objective-C面试实战题 / 96
3.3 Swift VS Objective-C / 101
数据结构 / 101
编程思路 / 104
语言特性 / 105
3.4 Xcode使用 / 112
Xcode调试 / 112
分析与优化 / 114
Playground技巧 / 117
第4章 系统框架 / 119
4.1 UI相关知识 / 119
UIKit / 119
UI控件和基本布局 / 119
动画 / 124
多任务开发 / 127
4.2 UIScrollView及其子类 / 131
UIScrollView及其子类理论面试题 / 131
拓展知识 / 134
优化进阶 / 138
4.3 网络、推送与数据处理 / 141
网络、推送与数据处理相关理论 / 142
iOS网络请求 / 144
信息推送 / 148
数据处理 / 150
4.4 并发编程 / 152
4.5 设计模式 / 168
第5章 经验之谈 / 175
5.1 架构的选择 / 175
5.2 面向协议的编程 / 184
POP VS OOP / 184
POP面试实战题 / 189
5.3 App的测试和上架 / 195
测试相关知识 / 195
App Store相关知识 / 201
结束语 / 204
题目目录
给出一个字符串,要求将其按照单词顺序进行反转 33
类(class)和结构体(struct)有什么区别 81
Swift是面向对象还是函数式的编程语言 83
在Swift中,什么是可选型(Optional) 84
在Swift中,什么是泛型(Generics) 84
说明并比较关键词:Open,Public,Internal,File-private和Private 85
说明并比较关键词:Strong,Weak和Unowned 86
在Swift中,如何理解copy-on-write 87
什么是属性观察(Property Observer) 87
在结构体中如何修改成员变量的方法 88
如何用Swift实现或(II)操作 89
实现一个函数:输入是任意一个整数,输出为输入的整数 2 89
实现一个函数:求0~100(包括0和100)中为偶数并且恰好是其他数字平方的
数字 90
什么是ARC 91
什么情况下会出现循环引用 92
说明并比较关键词:strong,weak,assign和copy 93
说明并比较关键词:atomatic和nonatomic 94
atomic是百分之百线程安全的吗 94
说明并比较关键词:_ _weak和_ _block 95
什么是block?它和代理的区别是什么 95
属性声明代码风格考查 96
架构解耦代码考查 97
内存管理语法考查 98
多线程语法考查 99
以scheduledTimerWithTimeInterval的方式触发的timer,在滑动页面上的列表时,
timer会暂停,为什么?该如何解决 100
Swift为什么将String,Array和Dictionary设计成值类型 101
如何用Swift将协议(protocol)中的部分方法设计成可选(optional) 102
协议的代码实战 103
在Swift和Objective-C的混合编程项目中,如何在Swift文件中调用
Objective-C文件中定义的方法?如何在Objective-C文件中调用Swift
文件中定义的方法 104
比较Swift和Objective-C中的初始化方法(init)有什么异同 105
比较Swift和Objective-C中的协议(protocol)有什么异同 105
谈谈对Objective-C和Swift动态特性的理解 105
语言特性的代码实战 107
message send如果找不到对象,则会如何进行后续处理 108
什么是method swizzling 108
Swift和Objective-C的自省(Introspection)有什么不同 109
能否通过Category给已有的类添加属性(property) 110
LLDB中p和po有什么区别 112
Xcode中的Buildtime issues和Runtime issues指什么 113
App启动时间过长,该怎样优化 114
如何用Xcode检测代码中的循环引用 115
怎样解决EXC_BAD_ACCESS 116
如何在Playground中执行异步操作 117
在playground中实现一个10行的列表,每行随机显示一个0~100的整数 118
要在UIView上定义一个Label有哪几种方式 119
storyboard/xib和纯代码构建UI相比,有哪些优点和缺点 120
Auto Layout和Frame在UI布局和渲染上有什么区别 121
UIView和CALayer有什么区别 121
说明并比较关键词:frame,bounds和center 122
说明并比较方法:layoutIfNeeded,layoutSubviews和setNeedsLayout 123
说明并比较关键词:Safe Area,SafeAreaLayoutGuide和SafeAreaInsets 123
在iOS中实现动画的方式有几种 124
控制屏幕上的圆形小球,使其水平向右滑动200个point 125
在iOS开发中,如何保证App的UI在iPhone、iPad及iPad分屏情况下
依然适用 127
如何用drag & drop实现图片拖动功能 129
说明并比较关键词:contentView,contentInset,contentSize和contentOffset 131
说明UITableViewCell的重用机制 133
说明并比较协议:UITableViewDataSource和UITableViewDelegate 133
请说明并比较协议:UICollectionViewDataSource,UICollection- ViewDelegate
和UICollectionViewDelegateFlowLayout 133
实现一个10行的列表,每行随机显示一个0~100的整数。用户可以删除、
移动任何一行,下拉列表中的数字重新刷新 134
UICollectionView中的Supplementary Views和Decoration Views分别指什么 137
如果一个列表视图滑动很慢,那么该怎样优化 138
说一说实现预加载的方法 139
如何用UICollectionView实现瀑布流界面 140
说一说HTTP中GET与POST的区别 142
说一说Session和Cookie的概念 142
说明并比较网络通信协议:Ajax Polling,Long Polling,WebSockets和
Sever-Sent Event 143
在一个HTTPS连接的网站中,输入账号和密码并单击登录按钮后,
到服务器返回这个请求前,这期间经历了什么 143
说明并比较类:URLSessionTask,URLSessionDataTask,
URLSessionUploadTask和URLSessionDownloadTask 144
什么是Completion Handler 145
设计一个方法,在给定API的网址的条件下,返回用户数据 146
在iOS开发中,本地消息通知的流程是怎样的 148
说一说在iOS开发中,远程消息推送的原理 149
在iOS开发中,如何实现编码和解码 150
说一说在iOS开发中数据持久化的方案 151
在iOS开发中,对于并发操作有哪3种方式 153
比较关键词:Serial,Concurrent,Sync和Async 153
串行队列的代码实战 154
并行队列的代码实战 156
举例说明iOS并发编程中的三大问题 157
竞态条件的代码实战 160
试比较GCD中的方法:dispatch_async,dispatch_after,dispatch_ once
和dispatch_group 162
GCD中全局(global)队列有哪几种优先级 164
试比较Operations中的关键词:Operation,BlockOperation和OperationQueue 164
如何在OperationQueue中取消某个Operation 166
在实际开发中,主线程和其他线程有哪些使用场景 168
说说你平常开发中用到的设计模式 169
什么是MVC 170
Objective-C和Swift在单例模式的创建上有什么区别 171
什么是装饰模式(Decorator) 171
什么是观察者模式(Observer) 172
什么是备忘录模式(Memento) 174
比较苹果官方的MVC架构的优点和缺点 176
MVC架构的代码实战 177
MVCS中的S为什么要单独拆分出来 179
MVP和MVC有什么异同 179
MVVM中的ViewModel的作用是什么 180
比较MVC、MVP和MVVM这三种架构 181
VIPER之间的各个组件是如何交互的 182
什么是OOP?它在iOS开发中有哪些优点 184
OOP在iOS开发中有哪些缺点 185
POP相比OOP有哪些优势 187
要给一个UIButton增加一个点击后抖动的效果,该怎样实现 189
POP的代码实战 190
试用Swift实现二分搜索算法 192
一个App崩溃了,可能是什么原因造成的 195
在模拟机上完成所有测试之后,就不需要在真机上再进行测试了吗 196
为什么在单元测试中引入代码模块要用@testable关键词 197
单元测试的代码实战 197
说一说iOS中的性能测试(performance test) 199
说一说iOS开发中的UI测试 200
如何检查测试覆盖率 200
什么是iOS中的App ID 201
什么是iOS中的Code Signing 202
什么是iOS中的App Thinning 202
向App Store提交App时有哪些原因可能被拒 203
“你会反转二叉树吗?不会?那么对不起……”
当闻名遐迩,编写了几乎是业界标准的Homebrew的作者Max Howell在面试时被 Google 以算法题拒绝后,我不禁开始重新思考,面试为什么这么重要,在面试中有没有什么能帮助我们遂愿的必杀技或者小窍门。Max Howell是幸运的,因为他有着社区内无与伦比的声望和漂亮的项目履历,Google将这扇门关上后,Apple 又为他开了一扇窗。但是,对可能资质平平,似乎也没有什么闪光点的我们来说,要怎么做才能求到一个自己心仪已久的职位,其实是一件非常值得细细琢磨一番的事情。
面试几乎是每个社会人一生必然会经历几次的社会活动,但是,由于它发生的频率不高,很容易被人忽视。我在面试别人时,的感受就是有不少应聘者其实并没有做好万全的准备。很多时候,应聘者虽然可能十分优秀,但在面试时总感觉就差临门一脚:要么是因为面试礼仪不足,让人觉得无法合作;要么是因为交流时过于紧张,导致理解偏差;要么是在做面试题时因为缺乏经验,无法很快抓住问题本质。这些往往都是准备不足,如果由于这样的原因导致面试失败,就非常可惜了。
本书的两位作者分别是中美两国知名“大厂”的高级从业人员,有丰富的面试(或面试别人)经验。他们合作编写了本书,想要解决的就是上面提到的问题。书中内容涵盖广泛:从面试前的职位调研、简历准备,到具体的算法设计、iOS开发中的常见问题,再到后的面试总结、工作的挑选,都有所涉及。在保证覆盖面的前提下,本书对一些重点进行了深入讲解:比如,对常见算法给出了具体的参考实现,对常见的知识点误用和考点进行了深入的原理分析。另外,本书中很多问题都带有关键字,通过查询书中的关键字,读者可以概览相关知识,并迅速建立关于这个关键字的知识网络。作者结合自己的行业经验和对行业现状的分析,不仅向应聘者提出了问题,更一一详尽地给出了解决的方式和建议,可谓字字珠玑,让人相见恨晚。
通过阅读本书,你不仅可以准备面试时的技巧和问题,还可以更多地了解iOS“大厂”的技术人员所关注和重视的技术点。即使你在短期内不参加面试,也可以通过阅读本书开阔视野,并对自己的知识体系查缺补漏。这不仅对你的下一次面试有所助力,也可以帮助你精进实力,在现在的工作中更加游刃有余。
好了,现在是时候来看一看两位作者会带给我们怎样的“思维碰撞”了。
王 巍
智能手机经过十多年的发展,其销量增长趋于平稳,技术逐渐成熟,iOS应用程序也已经融入我们生活的方方面面。作为相关技术的开发者,唐巧老师和我怀着忐忑的心情,将多年的经验和积累,结合具体面试内容,总结成这本《iOS面试之道》,呈现在各位读者面前。
《iOS面试之道》分为3部分,其中面试准备部分由唐巧老师创作,算法知识和iOS专业问答部分则由我完成。
第1部分为面试准备。这部分详谈了求职中遇到的基本问题,唐巧老师根据其多年的经验现身说法,在面试流程、简历投递、复习准备方面给出了完善的参考意见和建议。
第2部分为算法知识。作为对程序员基本功的考查,算法几乎是各种水平的程序员都要面对的必考内容。该部分采用Swift语言重新审视了多种数据结构和算法原理,可以说是为iOS开发者量身打造的算法解答。
第3部分为iOS专业问答,分为语言工具、系统框架和经验之谈,采用问答的形式来详细介绍。其中,第3章语言工具主要针对iOS的主流开发语言Objective-C和Swift进行分析和对比,同时也整理了 Xcode编辑器的使用技巧和经验。正所谓,工欲善其事,必先利其器,本章主要考查的是开发者对工具和语言特性的掌握。第4章系统框架则是从视图、网络、设计模式等方面考查开发者的开发水准,这是任何一名合格的iOS开发者都应该具备的基本素养。第5章是经验之谈,主要包括一些进阶内容的提问和解答,考查的是iOS开发者的功力。
本书收录和参考了大量的真实面试题,每章的面试题按照从易到难的顺序进行编写。如果你是一名iOS开发者,并且正准备跳槽,那么本书是一本不错的复习参考书;如果你没有面试计划,那么本书可以帮助你对iOS知识进行提纲挈领的整理;如果你是iOS面试官,那么我们也希望本书能够为你提供考查应聘者的依据和源泉;对于具有其他背景的软件工程师,若想一窥iOS世界的知识框架,本书也是不错的切入点。
感谢电子工业出版社的编辑王静对我们提出大量宝贵的意见。感谢唐巧老师在该书创作上的尽心尽力和对我的不吝指教。感谢喵神王巍的作序和诸位同仁的推荐,他们的帮助使得这本书的价值能更为充分地展现给读者朋友。后,我要感谢我的父母,感谢他们对我的支持和理解。
故胤道长
2018年6月1日于硅谷
《iOS面试之道》虽然讲的是iOS和面试,但内容涉及算法基础、工具语言、系统框架、简历和面试准备等丰富而有质量的内容。无论是哪个领域,面试对软件开发工程师来说都是一块非常好的敲门砖。良好的技术基础和准备充分的简历既可以帮助你打开向上的职业通道,也可以改变你的生活。如果你是一名移动开发工程师,那么建议阅读这本书。
——极客邦科技总裁,MacTalk作者 池建强
本书内容涉及面试前的准备、算法和数据结构、UI设计、并发、网络、设计模式等面试中经常被问到的问题,对iOS新手程序员来说,这是一本不错的书。其中的面试知识也适用于如Google、Facebook等国际大公司。另外,本书也给出了一个iOS程序员的技能树地图,除应对面试外,只要你沿着这条路径钻研下去,就一定能够开启未来更为广阔的天地。
——程序员 陈皓(左耳朵耗子)
如何面试,面试前需要达到什么样的水平,是初学者经常问的问题。而一般面试方法都不被当作硬实力,不过这个软实力往往直接决定了你是否被录用,以及薪资如何。可惜,很少有业内的高手愿意在这样的基本问题上发声,所以,故胤道长和唐巧两位高手写的这本书就显得更加珍贵,非常值得阅读。
——老iOS程序员 Tinyfool
本书介绍了iOS面试时需要的知识和全新的面试趋势。第1章对面试的总结让人身临其境,第2章算法基础精彩实用,后面的章节对各个知识点采用问答方式来介绍,问题丰富,有代表性,解答条理清晰,有针对性。这是一本很有价值的书。
——滴滴iOS技术专家 戴铭
本书为iOS程序员面试量身定制,既有关键算法知识的分析,又有全新iOS面试题的解析;对技术难点的讲解深入细致,易于吸收。对正在准备面试的同学来说,是一本难得的好书。
——iOS杂货铺店主 Peak
本书的算法基础一章结合Swift语言和函数式编程思想,详细、具体地介绍了iOS开发过程中经常遇到的算法问题,在一问一答间还融入了作者对问题本质的深刻理解和多年工作经验的沉淀,非常精彩,值得阅读。
——支付宝iOS工程师 念茜
作为技术研发人员,*终还是要靠自身实力说话。本书的每一节内容都是作者结合自身的实战经验精雕细琢而成的,简洁而有深度,称得上字字珠玑。本书不仅可以当作面试指南,也可以作为我们的iOS知识体系的基本框架,值得细细研读。
——*iOS工程师 南大
程序员面试经验在网上随处可见,但是内容良莠不齐。如果你是一名iOS程序员,那么本书是不错的选择。本书不仅涵盖简历准备、算法知识等基础,还对面试所需的开发语言、框架和架构都做了分析和答疑,是一本值得面试者阅读的好书。
——微信iOS工程师 芒果
本书是一本优质的面试指南:融合了简历修改、面试准备、算法基础、函数式编程等当下全新、实用的iOS面试开发内容,并结合作者多年iOS开发工作和开源经验,为读者介绍了iOS开发者应该理解并熟悉的重点。
——谷歌iOS工程师 老驴
1.1 简历的准备
一份好的求职简历是面试的敲门砖。但是,我发现很多人都不能写好一份求职简历,所以,我首先谈谈如何写一份针对互联网公司的求职简历。
1.简洁的艺术
互联网公司和传统企业有着很大的区别,通常情况下,创新和效率是互联网公司所追求的公司文化,所以,这一点也会体现在简历上。一般情况下,超过一页的简历通常会被认为不够专业。
更麻烦的是,大多数超过一页的简历很可能在HR手中就被过滤了。因为HR每天会收到大量的简历,一般情况下,每份简历在其手中停留的时间也就10秒左右。而超过一页的简历会让HR花更多的时间寻找简历中有价值的部分。对他们来说,他们通常认为写过长的简历的人是不靠谱的,因为连写简历都不懂行规,为什么还要给这种人面试的机会呢?
那么,应该如何精简简历呢?简单地说就是一个字:删!
删掉不必要的自我介绍信息。很多求职者会将自己在学校所学的课程罗列在简历中,例如,C语言、数据结构、数学分析??一写就是几十门,还放在简历的上面,就怕面试官看不见。对于这类信息,处理的方式就是一个字:删!因为面试官不关心你上了哪些课程,而且全国大学的课程也都是大同小异的,所以没必要将其写出来。
删除不必要的工作或实习、实践经历。如果你要找一份程序员的工作,那么你参加了奥运会的志愿者活动并且拿到了奖励,或者你参加学校的辩论队,获得了辩手等这些经历通常是与工作不相关的。删除不相关的工作或实习、实践经历,可以让你的简历变得干净。当然,如果你实在没得可写,比如,你是应届毕业生,一点儿实习经历都没有,那么可以适当地写一两条,保证你能写够一页的简历。但是,也要注意这些经历要体现出你的团队合作能力或者执行力,因为这些才是面试官感兴趣的。
删除不必要的证书。多在简历上写上获得大学英语四级或六级的证书就可以了,而像获得教师资格证、中高级程序员证,以及国内的各种考试认证,都是没有人关心的。
删除不必要的细节。很多求职者在介绍自己的iOS项目经历时,会介绍这个项目用的工作环境是Mac OS,使用的机器是Mac Mini,编译器是Xcode,能够运行在iOS的哪些版本环境中。还有一些人把这个项目用到的开源库都写上了,如AFNetworking、CocoaPods等。其实这些都不是重点,请删掉。后面我会介绍应该如何介绍自己的iOS项目经历。
自我评价这部分内容是应届毕业生喜欢写的,他们会把各种自己具备或不具备的优点都写上,例如:
本人性格开朗、稳重,有活力,待人热情、真诚;工作认真负责,积极主动,勇于承受压力,勇于创新;有很强的组织能力和团队协作精神,具有较强的适应能力;意志坚强,具有较强的无私奉献精神;对待工作认真负责,善于沟通,有较强的组织能力与团队精神;乐观上进,有爱心并善于施教并行;勤于学习,能不断提高自身的能力与综合素质。
以上这些内容在面试的时候不太好考查,都可以删掉。通常,如果有HR面试的环节,他们自然会在该环节考查一些应聘者的沟通能力、性格等软实力。
我相信,不管你是刚毕业的学生,还是工作十年的老手,都可以把简历精简到一页A4纸上。记住,简洁是一种美,一种效率,也是一种艺术。
2.重要的信息写在简历的前面
将你觉得自己吸引人的地方写在简历的前面。如果你曾在一家实力很强的公司实习,就把实习经历写在前面;如果你曾在一个很牛的实验室里做科研,就把研究成果和论文写在前面;如果你参加过某些比赛并获得过比较好的名次(例如Google code jam、ACM比赛之类),则将其写在简历上会吸引别人的眼球。
所以,每个人的简历的介绍顺序都是不一样的,不要在网上下载一个简历模板,然后就一项项地填写。这样的简历毫无吸引力,也无法突出你的特点。
除你的个人特点是重要信息外,你的手机号、邮箱、毕业院校、专业及毕业时间等也都是非常重要的,一定要写在简历的上面。
3.不要简单地罗列工作经历
不要简单地介绍你开发了某个iOS客户端。这样简单地罗列你的作品集并不能让面试官很好地了解你的能力。当然,在面试时,面试官可能会仔细询问,但是一份好的简历,应该可以省去一些面试官额外向你询问工作细节的时间。
具体的做法是:详细描述你对于某个iOS客户端的贡献,主要内容包括:你参与了哪些功能的开发?你解决了哪些开发中有挑战性的问题?你是不是技术负责人?如果你是技术负责人,那么你是如何协调大家工作的?如果你不是技术负责人,那么你是如何与大家配合工作的?
而且,通过反思这些经历,你也可以达到自我审视的目的。如果你发现对于这个项目,你根本没有做什么有价值的贡献,只是来“打酱油”的,那么好不要写在简历上,否则当面试官问起时,你如果回答得不好,会让他发现你的这个项目经历根本一文不值,从而会给其留下负面的印象。
4.不要写任何虚假或夸大的信息
应届毕业生都喜欢在简历上写自己精通Java或精通C/C ,其实自己写过的代码可能还不到1万行。我觉得要称得上精通某种语言,至少得写50万行这个语言的代码才行,而且要对语言的各种内部机制和原理有所了解。那些宣称精通Java的同学,连Java如何做内存回收,如何做范型支持,如何做自动boxing和unboxing都不知道,真不知道为什么要写“精通”二字。
简历中不要有任何夸大或虚假的信息,如果在面试时被发现有这些信息,则会给面试官留下极差的印象。所以,如果你对某个知识一知半解,要么就写“使用过”,要么就干脆不写。如果你的简历实在太单薄,只能写上一些自己“打酱油”的项目,被问到这些内容时该怎么办?请看看下面的故事:
我面试过一名同学,他在面试时非常诚实。我问他一些简历上的内容,他如果不会,就会老实说,这个他只是使用了一下,确实不清楚细节。对于一些没有技术含量的项目,他也会老实说,这个项目他做的工作比较少,主要是别人在做。后他还会补充说:“我自认为自己的数据结构和算法学得还不错,要不你问我这方面的知识吧。”
这倒是一个不错的办法,对于一名没有项目经验,但是聪明并且数据结构和算法基础知识扎实的应届毕业生,其实大多数公司是非常愿意培养的。很多人以为公司在招人时是看经验的,希望招的人一进来就能干活。其实不是这样的。至少我所在的公司更看重的是应聘者的潜力。应聘者的潜力越大,可塑性越好,未来的进步也更快。一些资质平庸,却经验稍微丰富的应聘者,相比聪明好学的应聘者,后劲是不足的。
总之,简历中不要写任何虚假或夸大的信息。即使你终骗得过面试官,进了公司,在试用期内,也很可能因为能力不足而被开除。
5.留下更多的信息
前面说到,简历好写够一张A4纸即可,如果你想留下更多可供面试官参考的信息该怎么办呢?可以在简历中附上更多的参考链接。如果面试官对你感兴趣,那么他自然会仔细查阅这些链接。对iOS面试来说,GitHub上面的开源项目地址、博客地址都是不错的参考信息。如果你在微博上也经常讨论相关技术话题,也可以附上自己的微博地址。
如果有精力,那么非常建议大家好好维护一下自己的博客或者GitHub上的开源代码。如果你打算把这些写到简历上,让面试官仔细评价你的水平,就应该对上面的内容进行足够认真的准备。否则,本来面试完面试官可能对你还挺感兴趣,结果一看你的博客和开源代码乱糟糟的,评价立刻降低,就得不偿失了。
6.不要附加任何可能带来负面影响的信息
任何与面试无关的内容,都尽量不要提。有些信息提了可能会加分,也有可能会减分,这取决于具体的面试官。下面罗列了我认为会减分的信息。
(1)个人照片
不要在简历中附加个人照片。个人长相属于与工作能力不相关的信息,也许你觉得自己长得很帅气或者很漂亮,但你怎么知道自己的样子是不是和面试官的情敌长得一样?这里说的情况有点儿,但是人们对于长相的评价标准确实千差万别,萝卜青菜各有所爱,加上可能有一些潜在的情况,所以没必要附加个人照片。这属于可能会加分,也可能会减分的情况。
(2)有风险的爱好
不要写各种奇怪的爱好,比如喜欢打游戏、抽烟、喝酒等,这类可能带来负面影响的爱好好不要写。的确有些公司会有这种一起联机玩游戏或者喝酒的文化,不过,除非你明确清楚写上这些信息会是加分项,否则还是不写为妙。
(3)Word格式的简历
简历不要使用Word格式,要使用PDF格式。我在招iOS程序员时,看到很多人的简历都是Word格式的,我都怀疑这些人是否有Mac电脑。因为Mac电脑中的Office很难用,很多人的Mac电脑中都没有装Office。我真怀疑这些人真是的想投简历吗?PDF格式的简历通常能展现出简历的专业性。
(4)邮箱账号是QQ号码
不要使用以QQ号开头的QQ邮箱,例如[email protected],在前文简单提到过,有些面试官很在乎这个,有些面试官觉得无所谓。但是,我对于用以数字开头的QQ邮箱的求职者不会有加分,但是对于使用Gmail邮箱的求职者有加分。因为这涉及个人的工作效率,使用Gmail的人通常会使用邮件组、过滤器,这些都有助于提高工作效率。如果你非要使用QQ邮箱,也应该申请一个有意义的邮箱名,例如[email protected]。
7.职业培训信息
在简历中不要写参加过某培训公司的iOS培训,特别是那种一两个月的速成培训。这会让很多面试官对你打负分。
这个现象似乎有点儿奇怪,因为我们从小都是由老师教授新知识的。我也实验过,掌握同样的高中知识,老师教授的速度通常比自学的速度要快一倍。即对于一个知识点,如果自己要看两小时的书才能理解,有好的老师给你讲解的话,那么只需要一小时。所以,我一直希望在学习各种知识的时候都能去听一些课程,因为我认为这样节省了学习的时间。
但是,这个道理在程序员这个职业中行不通,为什么?原因有以下两点。
l 计算机编程知识更新速度很快。同时,国外相关资料的翻译质量不高,国内原创的优秀书籍也很少。所以,通常需要靠阅读国外资料原文才能掌握的知识。以iOS来说,每年WWDC(苹果全球开发者大会)的资料都非常重要,而这些内容涉及版权,国内培训机构很难快速整理成教材。
l 计算机编程知识需要较多的专业知识积累和实践。而学校的老师大多只能做入门性的教学工作。
如果一家培训机构中有这样一位老师:能够通过自己做一些项目来积累很多专业知识和实践,并且可以不断地从国外资料中学习的技术,那么这个人在企业里会比在国内的培训机构里更有施展自己能力的空间。国内的培训机构基本上还是以培养初级程序员为主,所以,对老师的新技术学习速度的要求不会那么高,自然,老师也不会花太多时间在新技术研究上。
但是企业就不一样了,企业需要不停地利用新技术来增强自己产品的竞争力,因为对IT企业来说,产品的竞争就是人才的竞争,所以它们能给优秀的人很高的薪水。
所以,我们不能期望从IT类培训机构中学习到的技术,一切只能通过自学。当然,自学之后与同行相互交流,对于技术成长也是很有帮助的。
评论
还没有评论。