iOS 2017年面试总结

·  阅读 817

各种原因之下,最近两周一直处于面试状态,这里整理了最近出镜率略高的面试题。以及个人的一些面试心得。

开始面试之前一直听大家在说iOS行业不景气、面试机会少、待遇差等等等等各种抱怨。听完后确实担忧过一段时间,怕辞职之后找不到工作,毕竟我的学历是个硬伤。大家学历背景都比我强,我估计会更不好找工作了。

然而实际过程还算顺利。正式离职之前陆陆续续投递过几次简历,但是反向平平。17年12月8日(周五)办理离职手续,周一正式开始在各大招聘平台(主要是BOSS、拉钩)投递简历。周二晚上停止投递简历,因为每天两家面试的安排已经安排到周五。周三的面试结束后,很幸运的拿到三家Offer。为赶在15号之前入职,将周四周五四家公司推了两家(对不起贵司),将剩下两家合并到周四面试,很幸运的又拿到一家Offer,也就是我将要入职公司的Offer。

总投递简历时间两周,面试11家公司,拿到4家Offer(本来应该是5家,有一家过了四面,最后一面因为学历问题被pass了,必须吐槽一下)。期间没有安排BAT级别的公司。为了这次面试,做了很多的准备,在这里总结一下。

  1. 完善简历(用时两天,以下内容无优先级区分)
    • 简历细节
    • 简历合理性
    • 简历模块分布
    • 简历干净、整洁程度
    • 模块内容
    • 模块优先级
    • 模块内容优先级
    • 模块内容可阅读性
    • 简历亮点(我觉得这个很重要)

我用了两天时间完善简历。期间在简书、知乎、百度等各种地方找简历模板、模范简历。知乎上有各种资深HR回答的“一份优秀简历需要注意的内容”。找工作第一关就是HR,所以我觉得简历是最重要的,需要好好准备一下。

  1. 技术储备(以下内容无优先级区分)
    • 刷历年面试题
    • 刷新知识新内容
    • 刷基础知识书籍、文档
    • 刷各位大神博客
    • 刷各大iOS论坛

技术储备这部分我觉得是最辛苦的部分,脑海里每天要被一大堆新技术旧技术各种冲击,精神一直处于紧绷状态。晚上睡觉都是各种面试题、技术原理、技术实现细节等等。 技术储备我觉得不一定需要把所有内容都背到脑子里,只要在脑海里形成一个大体的逻辑就可以。当面试官问到的时候把知道的说出来就好(切记不要猜)。 讲真直播方面的内容我到现在都是一知半解的,以前工作一直没有涉及到直播方面。而且直播相关知识实在是太多了!

  1. 面试准备(以下内容无优先级区分)
    • 公司简介
    • 公司项目
    • 公司创立时间
    • 公司发展历程
    • 公司处于什么阶段

面试准备是很重要的,这部分的准备决定了面试时候的主导权在谁手里! 每个公司都有对应的发展历程,不同的历程决定了技术架构的不同,不同的技术架构决定了面试官的问题的技术深度。你去和做直播公司的面试官聊直播就是找虐(如果你想入职!你要记住即使面试官错了!那也是对的!)。这边有个小技巧,如果你的回答和面试官给你解释的内容不一样,而且你也不觉得他说的是对的,请记住!少说一点!不要长篇大论的给面试官解释,在他解释的时候切其中的某个知识点一下就行。总之就是请不要把你的位置放到面试官之上,哪怕你俩其实是对等的。 如果在你查看公司项目的时候发现,项目的知识点刚好是你完全不了解的,请直接说我不会!不要给面试官在你面前秀知识的机会!不然他会面完你转身和HR说:“这个人啊,呵呵,就那样吧”! 最最重要的一点!!!去面试之前千万记得在拉钩上看一下公司的面试评论!!!例如:XX善康XXXX公司,我要点你!我要曝光你!太生气了!我用了一个半小时跑过去,面试我5分钟。而且面试官嘴里居然会说出:“就这些?”,“还有吗?”,“完了吧?”等引人深思的句子。全程玩手机什么的我就不说了,嘁,为了它我推掉一个BAT的公司呢~

以下为出镜率较高的面试题,暂时列出一个大概,后续有时间会补上衍生问题和答案。

原理类

  1. 响应者机制
  2. 消息传递机制
  3. 介绍一下catagory
  4. block的本质是什么
  5. JSON解析快慢原因
  6. __bridge 是什么意思
  7. assign和weak的区别
  8. runtime是如何工作的
  9. runloop和线程的关系
  10. 长连接在TCP的哪一层
  11. 使用drawRect有什么影响
  12. nonatomic和atomic的区别
  13. oc中new和alloc/init的区别
  14. nonatomic和atomic的区别
  15. NSDictionary的本质是什么
  16. UIView和CALayer是啥关系
  17. ARC和MRC的区别,ARC的实现
  18. unrecognized selector是如何出现的
  19. JSON和NSArray/NSDictionary和互转
  20. 简述UIButton和UITableView的继承关系
  21. @dynamic和@synthesize关键字是用来干什么的
  22. 堆栈的区别、日常的开发中哪些地方会涉及到堆栈
  23. presentView 的释放时机 rootVC切换的时候释放吗
  24. __strong和__weak修饰词的作用是什么__autoreleasing修饰词是干什么的
  25. __weak 所属的hash表里 存的键值都是什么,被修饰的属性会在什么时候释放
  26. 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?

实战类

  1. 屏幕适配
  2. 实现一个单例
  3. 实现retain和copy
  4. 清空NSArray中的元素
  5. 举几个造成死锁的例子
  6. 线程通讯和线程安全问题
  7. 数据持久化的几种方案及优缺点
  8. 微信支付流程、支付宝支付流程
  9. 循环引用 什么时候用到strongSelf 举例
  10. 讲讲你用Instrument优化动画性能的经历吧
  11. 实现一个六边形Button,要求边框之外区域不可点
  12. storyBoard名为Personal中多个页面,初始化其中名为MyCtrl的页面如何实现

架构类

  1. 介绍一下RN
  2. 介绍一下组件化
  3. 介绍一下响应式编程
  4. 做过哪些方面的性能优化
  5. 做过哪些方面的内存优化
  6. 如何设计一个AFNetWoring
  7. 如何考虑一个APP框架的搭建
  8. APP个人信息安全性如何保证
  9. MVC/MVVM/MVP区别及优缺点
  10. 如何设计一个存有公司内部员工信息的APP(假设公司有10万以上员工)
  11. 如何看待storyBoard、xib和纯代码开发,说一下优缺点,你负责项目开发会采用哪种形式

音视频类

  1. 流媒体
  2. 视频播放
  3. 边下边播
  4. 直播相关知识

即时通讯类

  1. socket、XMPP是如何实现IM的,具体流程
  2. JSON串的储存模式是什么
  3. XML和JSON的优缺点
  4. 除了socket和XMPP还有其他实现IM的方式吗

JS与原生交互类

  1. JS交互使用过哪种方式
  2. WKWebImage和UIWebImage的却别及优缺点
  3. AFNetWorking和SDWebImage实现原理,SDWebImage核心缓存理念

算法类

  1. 随便写一个排序算法
  2. 写一个取10000以内质数算法
  3. 实现找到两个向教练表的倒数第n个节点(可以用伪代码)
  4. 字符串按照单词反转,例“Objective-C Hello Word!”,结果“word! Hello Objective-C”

功能类

  1. 蓝牙有几种通讯协议
  2. 说一下蓝牙的实现

其他类

  1. 职业规划
  2. 展示项目,介绍项目难点,亮点,项目哪些模块是你负责的
  3. 工作期间遇到有意思的问题或者比较难的问题
  4. 工作期间有没有让你觉得很有成就感的事情
  5. 做过的最有技术含量的东西
  6. 有没有做过看起来特别炫的东西

神经病类

这个问题不是我遇到的,是我一个朋友去面试被问到,欢迎各路大神讨论。

  1. 你有朋友吗?
  2. 如果你和你朋友一起去犯罪,很不幸你被抓住了,你会把你的朋友供出来吗?

代码类

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");
输出顺序:
复制代码

结束,预祝各位找工作顺序~



有志者、事竟成,破釜沉舟,百二秦关终属楚;

苦心人、天不负,卧薪尝胆,三千越甲可吞吴.

分类:
iOS
分类:
iOS
收藏成功!
已添加到「」, 点击更改