阿里—最新iOS面试题总结
关于面试题,可能没那么多时间来总结答案,有什么需要讨论的地方欢迎大家指教。主要记录一下准备过程,和面试的一些总结,希望能帮助到正在面试或者将要面试的同学吧。
阿里
一面
1、介绍项目
2、在KVO中,他是怎么知道监听的对象发生了变化?
3、字典的工作原理 ?怎100w个中是怎么快速去取value?
4、一个上线的项目,知道这个方法可能会出问题,在不破坏改方法前提下,怎么搞?
5、Block和函数指针的区别?
6、性能优化
7、YYModel和AF源码
8、如何自己设计json转model
9、架构
他们的面试官好像都爱问一下底层的东西,比如这次面试上来机会问我KVO的问题。 问题【1】,看着好像很吊的样子,仔细一样不去思考,可能还真不是太了解, 问题【2】,这个就是纯纯的数据结构的问题了。 问题【3】,这个就是iOS的runTime的问题了,要只要isa,和一些swizzling技术 问题【4】,就是看你了解有多广泛了。
二面
1、浅拷贝和深拷贝的区别
2、Block的循环引用、如何解决、原理
3、Block和delegate的比较
4、kvo的实现原理
5、Autorelease pool的实现原理
6、消息转发机制
7、线程死锁的四个条件
8、进程和线程的区别
9、持久化
10、事务的特征 中途还讨论了Masonry的约束应该写在哪里,我说应该写在layoutSubViews,他说会调用多次,然后争论了一会儿
三面
主要问了项目的一些东西 和给一些场景问我如何实现
自我介绍 介绍一些项目难点
主线程是相对于什么而言的
一张图片的内存占用大小是由什么决定的
索引的作用
索引的优缺点
在数组中找最小的k个数
淘宝下拉加载更多如何优化
淘宝页面发送HTTP请求的过程
介绍一下MVVM
知道哪些设计模式
三面面试官主要就聊了一些具体场景问题和一些基础,基础应该是没太大问题。
iOS面试--字节跳动最新iOS开发面试题
字节一面内容:
1、 自我介绍
2、 介绍一下简历中的一个项目
3、 面向对象的三个要素
4、 多态?
5、 Java,python,OC运行效率孰高?
6、 Property,其中copy如何?
7、 Property(nonatomatic, copy) NSMutableArray有什么问题
8、 Copy和MutableCopy的区别
9、 解释下类别,原理
10、解释下封装,重载;
11、 OC存在多重继承吗?
12、了解表视图吗,解释一下复用原理
13、说明一下表视图的滑动卡顿的优化方法
14、viewDidLoad和viewDidAppear的调用时机(一次和多次的区别);
15、页面间的传值方式有哪些(公有属性,公有方法和协议,block传值,通知,extern全局变量传值,NSUserDefault简单数据存储传值);
16、通知和delegate的区别?
17、 通知的发送和接收是否在同一线程?
18、HTTP和HTTPS区别?
19、OC中多线程一般有几个方案?
20、了解NSURLConnection和Session吗?
21、说一下NSURLSession具体的实现原理
22、http的头部的几个码。;
23、编程题:实现一个二叉树的倒置。
字节二面内容:
1、老虎吃羊问题。(博弈论,老虎要吃羊,假设所有老虎是理智的,即首先为了生存,其次为了饱腹,老虎吃了羊后会变成羊,同样会被其他老虎吃掉。现在,N只老虎和1只羊,请问N为多少时,老虎们会吃羊。动态规划问题,奇数吃,偶数不吃。)
2、青蛙跳格子,斐波拉契数列;青蛙跳格子,斐波拉契数列;
3、熟悉使用什么框架?
4、如果让你自己实现SDWebImage的二级存储机制,你如果实现?
5、@autorelease{ NSString s;}和NSString s;有什么区别?
6、说一下你对autorelease的理解。
7、说一下对于http的理解?
8、http的返回状态码有了解吗?
9、为什么说http是无状态的?
10、为什么不用原生的APNS技术实现呢?
11、了解GCD吗?
12、说一下dispatch_group_t和dispatch_barrier_sync的区别吗?
13、了解NSOperation吗?
14、了解NSOperationQueue吗?
字节三面内容:
1、 算法题:求只有三项元素的数组中的顺序排列,时间复杂度要求O(n);
2、 说一下你对OC程序编译和连接方面的理解?
3、 说一下内存管理相关的操作?
4、 说一下响应链的原理?
5、 追问:hitTest有尝试过重写吗?
6、 http, session和cookie有了解过吗;
7、 线程和队列的关系?
8、 CALayer和UIView了解吗?
团—最新iOS面试题总结
关于面试题,可能没那么多时间来总结答案,有什么需要讨论的地方欢迎大家指教。主要记录一下准备过程,和面试的一些总结,希望能帮助到正在面试或者将要面试的同学吧。
美团
一面
1、简历上写的项目问了一遍,然后开始问知识点。
2、volley的源代码,在图片缓存部分讨论了挺长时间,http中缓存机制,
3、视觉控制器的生命周期
4、数据库
5、多线程(NSTread、NSOPeration、GCDA+block)
6、http协议get post的区别
7、手机适配一些方案
8、真机调试、项目上线注意事项
9、静态方法是否能被重写 这些大概聊了1个半小时,开始的时候还有些紧张,慢慢聊开了,就好多了,面试官的语速有点快,老是需要面试官重复一遍,我也不经意间语速也变快了,不过能看出来面试官还是很厉害的。
二面
1、id和nill代表什么(nill和NULL的区别)
2、向一个nill对象发送消息会发生什么?
3、http中的同步和异步
4、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 之类的问题。
三面
1、iOS是如何进行资源管理的。
2、Python比较重要的几个特性
3、网络五层结构,每一层协议,由于我网络不是很好,还问了一些其他的问题(例如MAC地址和ip地址的区别等)。
先谈了下前两面的感受和问题,又和面试官聊到了单例和全局变量的区别。 Block和Protocol的区别,Block是为了解决什么问题而使用的。 iOS 的设计模式。iOS 为什么没有类似于 Java 和 C 之类的 “Builder” 的构造模式。 冒泡、插入、快速排序的平均时间复杂度和最坏时间复杂度。
堆排序。 有时间复杂度为 O(n) 的排序吗? 最近从 stackOverFlow 上解决过的问题,读过的开源框架,读过的书,业余兴趣,最有成就感的事情。
iOS视频课程
资料领取
pan.baidu.com/s/1hhsNVSqJ… 提取码:aw5h