落魄iOS实习生面经
到今天为止春招所有的面试全都面完了,按时间顺序面过这些公司,阿里cbu,人人车,飞猪,蘑菇街,趣头条,网易,百度,美团,京东,字节,收到了满意的offer,跟大家分享一下面经~
字节头条部门
一面(全程iOS)
- 直接问项目 oc方法调用流程,消息传递以及消息转发流程,动态方法解析,备用接收者,消息转发各个阶段详细问 ,是否会与jspatch冲突.
- oc 这个类的实例对象占几个字节
@interface TestObject : NSObject @property (nonatomic, assign) float num; @end @implementation TestObject @end
- AutoreleasePool的原理和实现,双向链表...下面哪个跟AutoreleasePool有关系
+[UIImage imageWithNamed:] +[NSArray arrayWithObjects:]; [[NSObject alloc] init];
- NSTimer GCDtimer
- NSTimer对象引用关系,循环引用,如何解决,中间类NSProxy,消息转发
- 最后是一个设计题,问的很详细,讨论了20分钟,设计一个倒计时功能tableview有100条cell,每个cell展示一个倒计时60->0秒, label展示剩余时间,每秒更新一次,为0时停止更新
二面
- 为什么学iOS
- 介绍一下项目
- 如何进行系统崩溃拦截
- 类簇问题,什么时候用类簇,我讲了类簇是抽象工厂模式
- 什么是抽象工厂模式,为什么用抽象工厂模式,其他设计模式,实现单例模式,单例是否一直存在,如何销毁
- 观察者模式,如何替代观察者模式
算法题:一个至多包含 3 种元素的数组,要求一次遍历完成排序,不申请额外的存储空间
百度
一面
- 算法题:二分查找元素第一次出现的位置,很快写完了,面试官又让优化了一下
- 算法题:选择排序,很快写完了
- AutoreleasePool的原理和实现 MRC下需要注意什么
- 属性修饰符 assign weak 区别,strong,copy
- tableview cell复用,复用池底层结构,猜的是哈希表,面试官说是二级的哈希表,我想到了关联对象的底层结构也是二级哈希表,说了一下
- category和extension的区别 讲了挺多,面试官说可以了
二面
二面是个女安卓面试官,基本全程都是我在讲(感觉女面试官还是比较好对付)
- 算法题 非递归实现快排
- 除了oc 还会什么语言,我说会点c、c++,她问了几个问题,我回答不是很好
- 操作系统相关,进程调度,进程通信
- 讲一下设计模式,我讲了半天,又提了一下SDWebimage的设计模式
- 讲一下看过的源码,讲了挺长时间SDWebimage
三面
得知二面过了以后,我以为三面是聊天,十分放松,后来看到三面的面试官,就知道有点不对劲,结果被一顿虐
- 长连接相关,我说http复用tcp..,他说只是理想情况下,实际不行,我说了心跳检测+自动重连,面试官问如何实现心跳检测,面试官也不太满意
- 发网络请求时如何验证证书,我说我一般用AFN,不太了解,面试官不满意(凉)
- 数据结构,如何解决哈希冲突
- 字典的底层数据结构
- 哪些底层结构是树实现的
还有一些问题忘记了