面经
- 介绍一下OC的内存管理方式
- arc下有什么需要手动管理内存管理的场景.(有可能是C函数, CF框架)
- 既然都是自动管理内存了, 那么strong, weak修饰符有什么用?
- 我们如何去声明一个只读的变量?
@proto
修饰符做了什么
weak
最常用的场景是什么?
- 为什么代理和
block
需要用weak
.
- 所有
self
都应该用weak
是吗?
block
能够修改作用域外的变量?
__block
修饰符有什么作用?
- 全局变量需要用
__block
修饰吗
autoreleasePool
的使用场景
main
函数的有一个appdelegate
, 为什么要在这里使用?
- 一个类代码里非常大, 有什么分的方式可以做优化?
- 分类里面可以添加自己的属性吗?
- 如果我有需求, 必须要在分类里添加属性要怎么办?
- 添加属性的全局表, 生命周期是怎么样的?
- 随便说一句SQL
OC
里面持久化数据的方式?
- 除了数据库, 有轻量化的一点的吗?
- 网络请求返回一个
json
, 如何转成dictionary
- 他对我们的数据结构有什么要求吗?
- 在OC里面如何对一个
dictonary
进行归档
NSCoding
协议有什么用?
- OC里面有一个类叫
NSCache
, 它和NSDictonary
有什么区别?
- 假设说现在有一个需求, 商品有很多图片, 新建一个商品的有20张图, 控制并发量为5.上传成功之后来一个全局通知.
NSOperation
可以实现吗?怎么实现?
OC
里面的锁有哪几种?
- 各种锁之间的区别是什么?
app
运行在runloop
是什么关系, 线程和runloop
有什么关系?
- 你们那边做依赖包管理, 是
pod
吗?
install
和update
的区别是什么?
- 已经列在
podfile.lock
文件中的库,它会下载podfile.lock
文件中标明的精确的版本,而不去检查是否有新的可用版本。对于没有列在podfile.lock
文件中的库,它会去看Podfile
文件中标明的版本,例如 pod 'MyPod', '~>1.2',如果没标明默认下载最新的
- 执行
pod update
命令,会在所有Podfile
中的库试着更新到最新的
pod
更新的版本是怎么判断?
pod
如何依赖本地的一些工程?
- 我自己懵逼了, 其实就是本地
path
, 但是库我理解错了. 所以我说的是pod spec
的一些东西.
git
常用的指令?
- 提交回滚的指令是什么?
- 设计模式哪些比较熟悉? 工厂, 观察者, 中介者?
- 单例比较熟悉吧? 单例的实现方式?
- 系统类有哪些是通过单例的设计模式去实现的?
- 类簇是什么?
- 类簇实际上是Foundation framework框架下的一种设计模式,它管理了一组隐藏在公共接口下的私有类。
NSNumber
下面.
NSMutableArray
和NSArray
进行allocWithZone:
或者构造方法的时候, 调用的都是___immutablePlaceholderArray和___mutablePlaceholderArray
类型的, 外部打印的形式为__NSPlaceholderArray
. 最终是在init
的时候, 进行了__NSArrayI
和 __NSArrayM
的对象.
- 也就是上面的工厂模式
- 最近有在看什么新的知识吗?
- 网络请求常用的
post
和get
的区别是什么?
GET
一个数据包, POST
一个header
包, 一个body
包。
GET
与POST
都有自己的语义,不能随便混用。
- 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
- 并不是所有浏览器都会在
POST
中发送两次包,Firefox
就只发送一次。
- 原文
总结
总体来说答的正常, 标注答案的, 都是聊的不是很好的, 要么就会没听懂, 要么就是转不过来.