Fork me on GitHub

题目

https://cdn.pixabay.com/photo/2016/11/18/12/14/owl-1834152__340.jpg

大公司

搜狗

  • 1.iOS应用的文件目录都是什么?缓存文件存在哪个文件里?它的上一层是什么?
  • 2.SDWebImage图片处理原理?
  • 3.SDWebImage在iOS9 3dtouch下出现的问题?
  • 4.NSArray和NSMutableArray在Copy和MutableCopy下的内存是怎样的?
  • 5.用户下载一个图片,图片很大,需要分成很多份进行下载,使用GCD应该如何实现?使用什么队列?
  • 6.现有两个人和一张桌子,两个人依次在桌子上放硬币,硬币不能叠放、立着,若一方找不到放的位置则失败。若你在玩这个游戏,设计一个算法必赢。
  • 7.现有n个物品和一个体积为V的包,每件物品的体积是ci,价格是wi,现在请你往包中放,每件物品只能放一次,怎么放能让包的价格最大。

百度

  • 1.Delegate 、Notification和KVO比较各自的优缺点
  • 2.在一个UI的正中间实现一个正方形的红色视图有几种方式?
  • 3.手触碰到屏幕的时候,响应机制是怎样的?第一响应者是谁?追问 UIView和UIResponse的关系是什么?
  • 4。UIViewController的生命周期是什么?追问 UIViewController 只alloc而没用到的时候,UIViewController 的view是否加载了?如果没有加载那什么时候加载?
  • 5.直接用UILabel和自己用DrawRect画UILabel,哪个性能好?为什么?哪个占用的内存少?为什么?
  • 6.AFNetworking是否支持ipv6?
  • 7.项目采用64位,为什么要用64位?怎么修改成64位?i386是什么?他们有什么关系?
  • 8.iOS的应用程序有几种状态?追问,退到后台代码是否可以执行?双击home键,代码是否可以执行?
  • 9.一般使用的图标内存为多大?比如200×300的图片,内存应该占用多少比较合理?
  • 10.说说你对内存泄漏的看法,追问,block为什么容易引起内存泄漏?
  • 11.[object copy]是浅拷贝还是深拷贝?为什么是浅拷贝?copy是实现了哪个协议?
  • 12.Images.xcassets和直接用图片有什么不一样?

阿里

阿里三面

  • 1.dSYM你是如何分析的?
  • 2.多线程有哪几种?你更倾向于哪一种?
  • 3.单例弊端?
  • 4.如何把异步线程转换成同步任务进行单元测试?
  • 5.介绍下App启动的完成过程?
  • 6.比如App启动过慢,你可能想到的因素有哪些?
  • 7.0x8badf00d表示是什么?
  • 8.怎么防止反编译?
  • 9.说说你遇到到的技术难点?
  • 10.说说你了解的第三方原理或底层知识?

阿里p6一面

  • 1.介绍下内存的几大区域?
  • 2.你是如何组件化解耦的?
  • 3.runtime如何通过selector找到对应的IMP地址
  • 4.runloop内部实现逻辑?
  • 5.你理解的多线程?
  • 6.GCD执行原理?
  • 7.怎么防止别人动态在你程序生成代码
  • 8.YYAsyncLayer如何异步绘制?
  • 9.优化你是从哪几方面着手?

淘宝P6

  • 1.查找字符串算法
  • 2数组匹配算法
  • 3.代码文件编译生成过程,编译和链接有什么区别,链接做了什么事情
  • 4.用C语言实现一个通知流程
  • 5.A B 线程执行到一半去执行C线程,用OC和C各自怎么实现。
  • 6.用过GCD什么方法
  • 7对什么技术比较感兴趣
  • 8.tableview怎么优化,优化后还是感觉卡怎么办
  • 9.怎么定位到野指针的地方。如果还没定位到,这个对象被提前释放了,怎么知道该对象在什么地方释放的
  • 10.ARC的实现原理,什么情况下用MRC比ARC好
  • 11.懂视频技术吗
  • 12.16进制的FF + 2后 等于什么 有哪几种情况?

口碑p6-7

  • 1.Nsstring栈空间占了多少?
  • 2.SD最大支持多少个下载数?
  • 3.yykit如何异步渲染?
  • 4.runtime动态创建一个类,需要注意什么?
  • 5.runloop和线程有和关系?
  • 6.你平时做过什么有技术难点的东西,然后解决难点
  • 7.你是如何学习iOS,看什么网站,列举几个国外的学习网站?
  • 8.技术架构如何搭建?
  • 9.还有一个很长字符串,你用什么算法搜索到abc的位置?
  • 10.字符串如何预处理?
  • 11.https和ssl在握手方向有什么区别?

腾讯

腾讯二面

  • 1.编译过程做了哪些事情;
  • 2.字典大致实现原理;
  • 3.block和函数指针的理解;
  • 4.一般开始做一个项目,你的架构是如何思考的?
  • 5.你了解的UIKit结构?

腾讯三面

  • OC你了解的锁有哪些?在你回答基础上进行二次提问;
  • 追问一:自旋和互斥对比?
  • 追问二:使用以上锁需要注意哪些?
  • 追问三:用C/OC/C++,任选其一,实现自旋或互斥?口述即可!
  • 内存泄漏可能会出现的几种原因,聊聊你的看法?
  • 追问一:非OC对象如何处理?
  • 追问二:地图类内存若泄漏,如何处理?
  • 追问三:若常用框架出现内存泄漏如何处理?
  • 容错处理你们一般是怎么做的?
  • 项目开始容错处理没做?如何防止拦截潜在的崩溃?

其他

  1. notification是同步还是异步?和delegate相比有什么区别,效率呢?
  2. 关键字static const的作用
  3. 简述一下CALayer和UIView的关系
  4. 如何让程序进入后台继续相应服务.
  5. 至少写出五种常用的设计模式,说说他们在什么情况下会用到
  6. 简述UITableViewController的DataSource和Delegate的用途.
  7. AFN、 SDWebImage底层实现?
  8. 分别描述委托(protocol),target,通知(notification)的区别和使用方式.
  9. 类别的作用?继承和类别在实现中有何区别?类别和类扩展的区别.
  10. UIView和CALayer的区别?
  11. 简述事件传递和响应者链?
  12. 当键盘出现的时候,如何让UITextField自动上移,说说你的做法。
  13. 你在项目中用过哪些数据持久化的方法,并说明为什么用这个.
  14. 说一下你对iOS App安全的理解。
  15. NSOperation 怎么使用?
  16. import 跟#include、@class有什么区别?#import\<> 跟 #import””又什么区别?
  17. 属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?
  18. 对于语句NSString*obj = [[NSData alloc] init]; ,编译时和运行时obj分别是什么类型?
  19. 谈谈对KVO, 和 KVC的理解?
  20. 谈谈什么是”懒加载”, 应用场景是什么?
  21. 如果使用sqlite, 大批量的插入数据, 需要做哪些优化?
  22. 线程和进程的区别?
  23. 简述UITableView的重用机制?
  24. self.跟self->什么区别?
  25. 简述@protected ,@private,@public,@package,各有什么含义作用?
  26. 写一个标准宏MIN,这个宏输入两个参数并返回较小的一个?
  27. 面向对象的三大特征,并作简单的介绍
  28. 如何实现APP的本地化?
  29. 控制器之间的传值方式有哪些?
  30. 有没有写过自定义的控件?

其他2

原链接https://www.jianshu.com/p/79c9a8b9b313

  • 1、如何令自己所写的对象具有拷贝功能?
  • 2、说说你理解weak属性?
  • 3、题目:Swift mutating关键字的使用?
  • 4、UIView和CALayer是什么关系?
  • 5、下面的代码输出什么?
  • 6、@synthesize 和 @dynamic 分别有什么作用?
  • 7、动态绑定
  • 8、Category(类别)、 Extension(扩展)和继承的区别
  • 9、为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
  • 10、id和NSObject*的区别
  • 11、如何令自己所写的对象具有拷贝功能?
  • 12、使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题?
  • 13、用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
  • 14、UIView和 CALayer是什么关系?
  • 15、static有什么作用?

底层:

  • 16、main()之前的过程有哪些?
  • 17、KVO基本原理?
  • 18、Swift 下的如何使用 KVC?
  • 19、:Swift有哪些模式匹配?
  • 20、objc在向一个对象发送消息时,发生了什么?
  • 21、静态库的原理是什么?你有没有自己写过静态编译库,遇到了哪些问题?
  • 22、runloop是来做什么的?runloop和线程有什么关系?主线程默认开启了runloop么?子线程呢?
  • 23、不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建
  • 24、不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建)
  • 25、OC完整的消息转发机制+代码实现【暴击】
  • 26、以+ scheduledTimerWithTimeInterval…的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决?
  • 27、如何手动触发一个value的KVO
  • 28、如何对定位和分析项目中影响性能的地方?以及如何进行性能优化?
  • 29、串行并行,异步同步的区别?
  • 30、线程是什么?进程是什么?二者有什么区别和联系?
  • 31、RunLoop是什么?
  • 32、假设有一个字符串aabcad,请写一段程序,去掉字符串中不相邻的重复字符串,即上述字符串处理之后的输出结果为:aabcd
    @autoclosure(自动闭包)
  • 34、iOS app启动如何优化?
  • 35、swift面试题:
  • 36、怎样防止反编译?
  • 37、UITableView性能优化,超实用

线程:

  • 37、 不要阻塞主线程
  • 38、谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?
  • 39、进程和线程的区别?同步异步的区别?并行和并发的区别?
  • 40、ViewController生命周期
  • 41、iOS 中的多线程
  • 42、内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?谁申请,谁释放
  • 43、dispatch_barrier_async的作用是什么?
  • 44、如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)
  • 46、http与https的区别?
  • 47、服务器能否知道APNS推送后有没有到达客户端的方法?
  • 48
    • 1.什么方式可以看到上架App的头文件?
    • 2.阅读过哪些框架的源码?能说说它的架构方式吗
  • 49、iOS iAP内购审核可能失败的问题
  • 50、IAP内购中虚拟货币导致审核无法通过的问题?

群分享

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
写一个标准宏 MIN
四中持久化处理方式
OC如何实现多继承 具体怎么做
设计模式有哪些 有什么优缺点
Animation 如何开始 和结束动画的
排序有哪些 有什么优缺点 写出两个


Property 内部操作是怎样的
继承类的实例 isa 指向哪里
Sqlit 事务操作
代码添加约束有哪几种 什么区别
代理在哪里进行了强引用
View 和 layer 设置透明度有什么区别
ViewA 的透明度是 0.5 添加到 ViewB 之后
ViewB 的透明度是多少
Flatbuffer 和 json 传输 区别在哪

提示操作无效的内存地址报警的过程 线程间通信的几种方式和优缺点 如何手动触发 kvo 和实现原理 View 动画过程中如何获取实时位置、presentationLayer 属性可以获取动画过程中的状态 常用的 gcd api 以及作用 Sync get main函数前 函数内 函数后各打印一个字母 写出打印顺序 Swift中 struct class 区别 和分别的应用场景 界面有多个动态视图时 Masonry 如何布局

各种加密的具体实现以及区别
Httphttps 区别以及内部处理的区别
Http 字典请求和图片上传请求的区别
包头包含哪些内容
又问我网络请求的时候 传进去的字典 内部怎么处理的

其他题目

0x01

  • 题目1、举例两个遇到过印象深刻的外网Crash,并介绍如何发现、定位、解决;
  • 题目2、举例两个性能问题的优化,并介绍如何发现、定位、解决以及原理;
  • 题目3、介绍Objective-C的Runtime机制,并介绍在业务实际应用的例子;
  • 题目4、苹果是如何保证iPhone只安装来自App Store的App?
  • 题目5、你的App如何同后台进行通信?其通信过程包括哪些步骤;
  • 题目6、你有1元、5元、7元三种硬币,求一种方法,用最少的硬币凑出m元;(m∈[100, 1000])
  • 题目7、产品希望实现一个功能,将10~100张图片直接拼成1个视频,你会如何实现?

其他

Objective-C weak 的底层实现

  • weak的底层实质是Runtime维护了一个weak表(hash表,字典),其key是所指对象的地址,value是一个数组(数组中的元素是weak指针的地址)
  • 在赋值weak时,实现检查对象地址是否为有效地址(是否是weak指针等),如果有效,系统会使用对象的地址去weak表中获取数组(如果没有就创建数组,同时把数组和对象的地址关联起来)然后把weak指针的地址添加到数组中,其中不会对对象的引用计数做加1操作,在对象回收时使用其地址去weak表中获取数组,同时把数组中的值赋值为nil(所以weak在对象回收时自动置nil),然后清除此键值对。其中具体的操作可以参考链接1
  • 疑问1 :weak对象在由对象1换为对象2时,底层是怎么处理的,待补充

Block

Block是怎么样持有self是

使用block时,其底层是把block相关的代码转换为对象的形式,同时对象会有一个属性持有self,使用如果self持有了block,block底层又会持有self就会导致内存泄露

Block 中为什么不可以访问Block外面的临时C语言数组

是由于C语言的数组操作特性问题。

- END -
关注微信公众号,发现更多精彩

文章作者:梁大红

特别声明:若无特殊声明均为原创,转载请注明,侵权请联系

版权声明:署名-非商业性使用-禁止演绎 4.0 国际