各种原因之下,最近两周一直处于面试状态,这里整理了最近出镜率略高的面试题。以及个人的一些面试心得。
开始面试之前一直听大家在说iOS行业不景气、面试机会少、待遇差等等等等各种抱怨。听完后确实担忧过一段时间,怕辞职之后找不到工作,毕竟我的学历是个硬伤。大家学历背景都比我强,我估计会更不好找工作了。
然而实际过程还算顺利。正式离职之前陆陆续续投递过几次简历,但是反向平平。17年12月8日(周五)办理离职手续,周一正式开始在各大招聘平台(主要是BOSS、拉钩)投递简历。周二晚上停止投递简历,因为每天两家面试的安排已经安排到周五。周三的面试结束后,很幸运的拿到三家Offer。为赶在15号之前入职,将周四周五四家公司推了两家(对不起贵司),将剩下两家合并到周四面试,很幸运的又拿到一家Offer,也就是我将要入职公司的Offer。
总投递简历时间两周,面试11家公司,拿到4家Offer(本来应该是5家,有一家过了四面,最后一面因为学历问题被pass了,必须吐槽一下)。期间没有安排BAT级别的公司。为了这次面试,做了很多的准备,在这里总结一下。
- 完善简历(用时两天,以下内容无优先级区分)
- 简历细节
- 简历合理性
- 简历模块分布
- 简历干净、整洁程度
- 模块内容
- 模块优先级
- 模块内容优先级
- 模块内容可阅读性
- 简历亮点(我觉得这个很重要)
我用了两天时间完善简历。期间在简书、知乎、百度等各种地方找简历模板、模范简历。知乎上有各种资深HR回答的“一份优秀简历需要注意的内容”。找工作第一关就是HR,所以我觉得简历是最重要的,需要好好准备一下。
- 技术储备(以下内容无优先级区分)
- 刷历年面试题
- 刷新知识新内容
- 刷基础知识书籍、文档
- 刷各位大神博客
- 刷各大iOS论坛
技术储备这部分我觉得是最辛苦的部分,脑海里每天要被一大堆新技术旧技术各种冲击,精神一直处于紧绷状态。晚上睡觉都是各种面试题、技术原理、技术实现细节等等。 技术储备我觉得不一定需要把所有内容都背到脑子里,只要在脑海里形成一个大体的逻辑就可以。当面试官问到的时候把知道的说出来就好(切记不要猜)。 讲真直播方面的内容我到现在都是一知半解的,以前工作一直没有涉及到直播方面。而且直播相关知识实在是太多了!
- 面试准备(以下内容无优先级区分)
- 公司简介
- 公司项目
- 公司创立时间
- 公司发展历程
- 公司处于什么阶段
面试准备是很重要的,这部分的准备决定了面试时候的主导权在谁手里! 每个公司都有对应的发展历程,不同的历程决定了技术架构的不同,不同的技术架构决定了面试官的问题的技术深度。你去和做直播公司的面试官聊直播就是找虐(如果你想入职!你要记住即使面试官错了!那也是对的!)。这边有个小技巧,如果你的回答和面试官给你解释的内容不一样,而且你也不觉得他说的是对的,请记住!少说一点!不要长篇大论的给面试官解释,在他解释的时候切其中的某个知识点一下就行。总之就是请不要把你的位置放到面试官之上,哪怕你俩其实是对等的。 如果在你查看公司项目的时候发现,项目的知识点刚好是你完全不了解的,请直接说我不会!不要给面试官在你面前秀知识的机会!不然他会面完你转身和HR说:“这个人啊,呵呵,就那样吧”! 最最重要的一点!!!去面试之前千万记得在拉钩上看一下公司的面试评论!!!例如:XX善康XXXX公司,我要点你!我要曝光你!太生气了!我用了一个半小时跑过去,面试我5分钟。而且面试官嘴里居然会说出:“就这些?”,“还有吗?”,“完了吧?”等引人深思的句子。全程玩手机什么的我就不说了,嘁,为了它我推掉一个BAT的公司呢~
以下为出镜率较高的面试题,暂时列出一个大概,后续有时间会补上衍生问题和答案。
原理类
- 响应者机制
- 消息传递机制
- 介绍一下catagory
- block的本质是什么
- JSON解析快慢原因
- __bridge 是什么意思
- assign和weak的区别
- runtime是如何工作的
- runloop和线程的关系
- 长连接在TCP的哪一层
- 使用drawRect有什么影响
- nonatomic和atomic的区别
- oc中new和alloc/init的区别
- nonatomic和atomic的区别
- NSDictionary的本质是什么
- UIView和CALayer是啥关系
- ARC和MRC的区别,ARC的实现
- unrecognized selector是如何出现的
- JSON和NSArray/NSDictionary和互转
- 简述UIButton和UITableView的继承关系
- @dynamic和@synthesize关键字是用来干什么的
- 堆栈的区别、日常的开发中哪些地方会涉及到堆栈
- presentView 的释放时机 rootVC切换的时候释放吗
- __strong和__weak修饰词的作用是什么__autoreleasing修饰词是干什么的
- __weak 所属的hash表里 存的键值都是什么,被修饰的属性会在什么时候释放
- 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?
实战类
- 屏幕适配
- 实现一个单例
- 实现retain和copy
- 清空NSArray中的元素
- 举几个造成死锁的例子
- 线程通讯和线程安全问题
- 数据持久化的几种方案及优缺点
- 微信支付流程、支付宝支付流程
- 循环引用 什么时候用到strongSelf 举例
- 讲讲你用Instrument优化动画性能的经历吧
- 实现一个六边形Button,要求边框之外区域不可点
- storyBoard名为Personal中多个页面,初始化其中名为MyCtrl的页面如何实现
架构类
- 介绍一下RN
- 介绍一下组件化
- 介绍一下响应式编程
- 做过哪些方面的性能优化
- 做过哪些方面的内存优化
- 如何设计一个AFNetWoring
- 如何考虑一个APP框架的搭建
- APP个人信息安全性如何保证
- MVC/MVVM/MVP区别及优缺点
- 如何设计一个存有公司内部员工信息的APP(假设公司有10万以上员工)
- 如何看待storyBoard、xib和纯代码开发,说一下优缺点,你负责项目开发会采用哪种形式
音视频类
- 流媒体
- 视频播放
- 边下边播
- 直播相关知识
即时通讯类
- socket、XMPP是如何实现IM的,具体流程
- JSON串的储存模式是什么
- XML和JSON的优缺点
- 除了socket和XMPP还有其他实现IM的方式吗
JS与原生交互类
- JS交互使用过哪种方式
- WKWebImage和UIWebImage的却别及优缺点
- AFNetWorking和SDWebImage实现原理,SDWebImage核心缓存理念
算法类
- 随便写一个排序算法
- 写一个取10000以内质数算法
- 实现找到两个向教练表的倒数第n个节点(可以用伪代码)
- 字符串按照单词反转,例“Objective-C Hello Word!”,结果“word! Hello Objective-C”
功能类
- 蓝牙有几种通讯协议
- 说一下蓝牙的实现
其他类
- 职业规划
- 展示项目,介绍项目难点,亮点,项目哪些模块是你负责的
- 工作期间遇到有意思的问题或者比较难的问题
- 工作期间有没有让你觉得很有成就感的事情
- 做过的最有技术含量的东西
- 有没有做过看起来特别炫的东西
神经病类
这个问题不是我遇到的,是我一个朋友去面试被问到,欢迎各路大神讨论。
- 你有朋友吗?
- 如果你和你朋友一起去犯罪,很不幸你被抓住了,你会把你的朋友供出来吗?
代码类
void tet1(){
int a = 10;
void (^block) = ^{
NSLog(@“a is %d”, a);
}
a = 20;
block();
}
输出结果:
复制代码
main() {
int a[5] = {1,2,3,4,5};
int *ptr = (int *)(&a+1);
printf(“%d, %d”,*(a+1),*(ptr+1));
}
输出结果:
复制代码
NSLog(@"1");
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"2");
});
NSLog(@"3");
输出顺序:
复制代码
结束,预祝各位找工作顺序~
有志者、事竟成,破釜沉舟,百二秦关终属楚;
苦心人、天不负,卧薪尝胆,三千越甲可吞吴.