美团面试
一面算法
一、简历上写的项目问了一遍,而后开始问知识点。数据库
二、volley的源代码,在图片缓存部分讨论了挺长时间,http中缓存机制,json
三、视觉控制器的生命周期设计模式
四、数据库数组
五、多线程(NSTread、NSOPeration、GCDA+block)缓存
六、http协议get post的区别安全
七、手机适配一些方案性能优化
八、真机调试、项目上线注意事项服务器
九、静态方法是否能被重写
这些大概聊了1个半小时,开始的时候还有些紧张,慢慢聊开了,就好多了,面试官的语速有点快,总是须要面试官重复一遍,我也不经意间语速也变快了,不过能看出来面试官仍是很厉害的。
二面
一、id和nill表明什么(nill和NULL的区别)
二、向一个nill对象发送消息会发生什么?
三、http中的同步和异步
四、MVC 和 MVVM 的区别。
用 MVVM 实现一个业务。VC 是入口,VC1 显示 “省” 的列表,VC2 显示省关联的 “市” 的列表,VC3 显示市关联的 “县” 的列表。VC 到 VC1,VC1到 VC2,VC2 到 VC3,VC3 再跳转到 VC。相关点在于如何设计 ViewModel 和 Model ,以及 VC3 到 VC。
如何编写单元测试,好比写了一个网络库,如何测试该网络库,用例怎么写的更全面一些。
代码从 Git 上拉下来到生成 .ipa 都有哪些过程,期间都生成了什么文件。
最近读过哪些书,看过哪些框架,有什么收获。
谈到 JSPatch,问 JSPatch 是如何处理 Block 的。
本身擅长的地方。
遇到过什么样的挫折。
新增二面被问到的问题:若是没有instruments,该如何检测memory leak, zombie object 之类的问题。
三面
一、iOS是如何进行资源管理的。
二、Python比较重要的几个特性
三、网络五层结构,每一层协议,因为我网络不是很好,还问了一些其余的问题(例如MAC地址和ip地址的区别等)。
先谈了下前两面的感觉和问题,又和面试官聊到了单例和全局变量的区别。
Block和Protocol的区别,Block是为了解决什么问题而使用的。
iOS 的设计模式。iOS 为何没有相似于 Java 和 C 之类的 “Builder” 的构造模式。
冒泡、插入、快速排序的平均时间复杂度和最坏时间复杂度。
堆排序。
有时间复杂度为 O(n) 的排序吗?
最近从 stackOverFlow 上解决过的问题,读过的开源框架,读过的书,业余兴趣,最有成就感的事情。
阿里
一面
一、介绍项目
二、在KVO中,他是怎么知道监听的对象发生了变化?
三、字典的工做原理 ?怎100w个中是怎么快速去取value?
四、一个上线的项目,知道这个方法可能会出问题,在不破坏改方法前提下,怎么搞?
五、Block和函数指针的区别?
六、性能优化
七、YYModel和AF源码
八、如何本身设计json转model
九、架构
他们的面试官好像都爱问一下底层的东西,好比此次面试上来机会问我KVO的问题。
问题【1】,看着好像很吊的样子,仔细同样不去思考,可能还真不是太了解,
问题【2】,这个就是纯纯的数据结构的问题了。
问题【3】,这个就是iOS的runTime的问题了,要只要isa,和一些swizzling技术
问题【4】,就是看你了解有多普遍了。
二面
一、浅拷贝和深拷贝的区别
二、Block的循环引用、如何解决、原理
三、Block和delegate的比较
四、kvo的实现原理
五、Autorelease pool的实现原理
六、消息转发机制
七、线程死锁的四个条件
八、进程和线程的区别
九、持久化
十、事务的特征
中途还讨论了Masonry的约束应该写在哪里,我说应该写在layoutSubViews,他说会调用屡次,而后争论了一下子
三面
主要问了项目的一些东西 和给一些场景问我如何实现
自我介绍 介绍一些项目难点
主线程是相对于什么而言的
一张图片的内存占用大小是由什么决定的
索引的做用
索引的优缺点
在数组中找最小的k个数
淘宝下拉加载更多如何优化
淘宝页面发送HTTP请求的过程
介绍一下MVVM
知道哪些设计模式
三面面试官主要就聊了一些具体场景问题和一些基础,基础应该是没太大问题。
头条
一面
自我介绍
项目相关
怎么自定义导航跳转
谈谈runtime的理解
KVC的用途
使用method swizzling要注意什么?(进行版本迭代的时候须要进行一些检验,防止系统库的函数发生了变化)
谈对引用计数的理解
谈谈runloop的理解
runloop有哪些状态
autoreleasepool的使用场景
TableView优化,怎么减小卡顿
copy assign retain weak关键词
JSON转Model
代码布局
多屏幕适配
HTTP2
HTTP请求头和响应头
Cookie
NSCache
本身设计一个缓存器
怎么实现LRU
SDWebImage
二叉树先序遍历(递归和非递归)
二面
MVC的一些缺点
讲一讲其它架构
你知道哪些编码方式
算法字符串翻转
多线程的方式和它们的区别
队列和线程的关系
一道线程安全的题
有哪些锁
属性的关键字
assign能够用于OC对象吗
copy和strong的区别
weak如何实现自动赋nil
为何不可变对象要用copy
assing可使用在对象中吗
Pod update和pod install的区别
layoutIfNeeded和setNeedsLayout的区别
抓包工具抓取HTTPS的原理
isEquel和hash的关系
bitmap的结构
可变数组的实现原理
如何hook一个对象的方法,而不影响其它对象
如何避免if else
自旋锁和互斥锁的区别
三面
介绍项目,主要介绍本身强项一点的地方
数组cop后里面的元素会复制一份新的吗
数组的浅拷贝与深拷贝
TCP为何是三次握手和四次挥手
头条一直都是视频面,并且是一条龙服务。整体来讲感受不错,反正主要就是须要基础足够扎实,
百度
一面
一、iOS基础知识
二、Python基础知识,大概是多线程,线程安全,集合类,JVM,类相关知识等。
三、iOS一些源码的阅读
四、优秀的第三方框架源码阅读
五、GLSurfaceView的相关知识,OpenGL,Shader,绘制流程。
六、询问当前作的项目,以及到具体的实现和优化。
七、多进程间的通信,Binder机制。
八、询问看过哪些框架源码,EventBus,Volley讲了一下。
二面
一、Delegate 、Notification和KVO比较各自的优缺点
二、在一个UI的正中间实现一个正方形的红色视图有几种方式?
三、手触碰到屏幕的时候,响应机制是怎样的?第一响应者是谁?追问 UIView和UIResponse的关系是什么?
四、UIViewController的生命周期是什么?追问 UIViewController 只alloc而没用到的时候,
五、UIViewController 的view是否加载了?若是没有加载那何时加载?
直接用UILabel和本身用DrawRect画UILabel,哪一个性能好?为何?哪一个占用的内存少?为何?
六、AFNetworking是否支持ipv6?
七、项目采用64位,为何要用64位?怎么修改为64位?i386是什么?他们有什么关系?
八、iOS的应用程序有几种状态?追问,退到后台代码是否能够执行?双击home键,代码是否能够执行?
九、通常使用的图标内存为多大?好比200×300的图片,内存应该占用多少比较合理?
十、说说你对内存泄漏的见解,追问,block为何容易引发内存泄漏?
十一、[object copy]是浅拷贝仍是深拷贝?为何是浅拷贝?copy是实现了哪一个协议?
十二、Images.xcassets和直接用图片有什么不同?
三面
全是问得iOS方面的问题,问得真的很细,须要基础很扎实,对各个机制真的足够理解,否则确实有点难回答。
一、内存管理方面的
二、多线程
三、各类队列
四、线程锁
五、MVVM
就是考察一下我iOS方面的能力究竟是否有水分吧。问得很细,确实须要基础足够扎实才行。
腾讯
一面
一、介绍一下实习的项目,任务分工,作了哪些工做?介绍实习内容
二、网络相关的:项目里面使用到什么网络库,用过ASIHTTP库吗
三、断点续传怎么实现?须要设置什么?
四、在杭州HTTP请求服务器响应快,可能离服务器距离近,而在深圳访问就很慢很慢,会是什么缘由?若是用户投诉,怎么分析这个问题?
五、HTTP请求的哪些方法用过?何时选择get、post、put?
六、TCP创建链接的过程,断开链接的过程,为何是四次握手?
七、项目里面的数据存储都用了哪些?知道iOS里面有哪些数据存储方法?何时该用哪些方法存储?
八、MVVM如何实现绑定
九、block和通知的区别,分别适用什么场景
十、算法。连续问了好几个,都是数组,层层递进的,可是我忘了,只记得最后是找出数组
十一、中重复的数字
十二、进程和线程的区别
1三、程序在运行时操做系统除了分配内存空间还有什么
1四、进程间通讯的方式
1五、如何检测应用是否卡顿
1六、发布出去的版本,怎么收集crash日志?不使用bugly等第三方平台或者这些第三方平台是怎么收集crash日志的?
1七、在block里面使用_property会形成循环引用吗?怎么解决?除了使用self->_property,可使用valueforkey来访问吗 在block里面能够修改它的值吗setvalueforkey?能够修改它的值,能够用valueforkey来解决,显式的的使用self,block外先持有self的弱引用。
二面
一、OC中对象的结构
二、多态
三、Ping是什么协议
四、知道MTU吗
五、ARC和MRC的本质区别是什么?
六、NSThread,GCD,NSOperation相关的。开启一条线程的方法?线程能够取消吗?
七、子线程中调用connection方法,为何不回调?由于没有加入runloop,执行完任务就销毁了,因此没有回调。
八、MVC和MVVM的区别
九、了解哪些设计模式
十、存一个通信录,包括增删改查,用什么数据结构
十一、autorelease变量何时释放?手动添加的是大括号结束的时候释放,系统自动释放是在十二、当前runloop循环结束的时候
1三、那子线程中的autorelease变量何时释放?
1四、子线程里面,须要加autoreleasepool吗
1五、GCD和NSOperation的区别?
1六、项目里面遇到过死锁吗?怎么解决?数据库访问原本就是线程安全的,不会形成死锁啊。什么是死锁?
1七、Viewcontroller的生命周期?
1八、在init方法里面,设置背景颜色,会生效吗 会生效。为何会?
1九、WWDC2016公布了哪些新特性?对苹果系列的最新特性有关注吗
20、看过哪些源码,讲讲思路
2一、两个链表找第一个相同结点
2二、字符串旋转
2三、找链表的倒数第k个结点
2四、把一个链表比某个值大的放在左边,比它小的放在右边
2五、二叉树的中序遍历,非递归
此文章源自第三方转载