最近正在准备面试,所以自己边复习边整理,列出了一些自己复习的知识点.
后面的一些知识模块还没有延展开,因为有的地方自己理解的还不到位,我还需要时间仔细整理。
欢迎大家提PR!
- 1.《Effective Objective-C 2.0》
- 2.《Objective-C 高级编程》
- 3.《程序员的自我修养》
- 4.《图解HTTP》
- 5.《高性iOS应用开发》
- 6.《算法图解》
- 7.《剑指Offer》
数据结构和算法这一块正在看,这周会整理出一些常见的算法题。
- 1.
@autoreleasrPool的释放时机? - 2.自动引用计(
ARC)数应该遵循的原则? - 3.
ARC自动内存管理的原则? - 4.访问
__weak修饰的变量,是否已经被注册在了@autoreleasePool中?为什么? - 5.
ARC的retainCount怎么存储的? - 6.
AutoreleasePool数据结构? - 7.
__weak和_Unsafe_Unretain的区别? - 8.为什么已经有了
ARC,但还是需要@AutoreleasePool的存在? - 9.
__weak属性修饰的变量,如何实现在变量没有强引用后自动置为nil? - 10.说一下对
retain,copy,assign,weak,_Unsafe_Unretain关键字的理解。 - 11.
ARC在编译时做了哪些工作? - 12.
ARC在运行时做了哪些工作? - 13.函数返回一个对象时,会对对象
autorelease么?为什么? - 14.说一下什么是
悬垂指针?什么是野指针? - 15.内存管理默认的关键字是什么?
- 16.内存中的5大区分别是什么?
- 17.简要说一下自动引用计数的数据存储结构?
- 18.简要说一下
@autoreleasePool的数据结构?
- 1.实例对象的数据结构?
- 2.类对象的数据结构?
- 3.元类对象的数据结构?
- 4.
Category的实现原理? - 5.如何给
Category添加属性? - 6.如何运用
Runtime字典转模型? - 7.如何运用
Runtime进行模型的归解档? - 8.说一下
Method Swizzling? 说一下在实际开发中你在什么场景下使用过? - 9.如何实现动态添加方法和属性?
- 10.说一下对
isa指针的理解, 对象的isa指针指向哪里?(注意区分不同对象) - 11.
Obj-C中的类信息存放在哪里? - 12.一个
NSObject对象占用多少内存空间? - 13.说一下对
class_rw_t的理解? - 14.说一下对
class_ro_t的理解? - 15.说一下
Runtime消息解析。 - 16.说一下
Runtime消息转发。 - 17.说一下对
runtime的理解。(主要讲一下消息机制,是对上述的总结)
- 1.
Runloop和线程的关系? - 2.讲一下
Runloop的Mode?(越详细越好) - 3.讲一下
Observer?(Mode中的重点) - 4.讲一下
Runloop的内部实现逻辑?(运行过程) - 5.你所知的哪些三方框架使用了
Runloop? - 6.举例说明
Runloop有哪些实际应用?(autoreleasePool、事件响应、手势识别、GCD、NSTimer、界面刷新、网络请求、PerformSelector等) - 7.如何使用
Runloop实现一个常驻线程?这种线程一般有什么作用? - 8.为甚么
NSTimer有时候不好使?(不同类型的Mode) - 9.
PerformSelector:afterDelay:这个方法在子线程中为什么不起作用?该怎么解决? - 10.利用
runloop解释一下页面的渲染的过程?
- 1.
NSUrlConnect相关知识。 - 2.
NSUrlSession相关知识。 - 3.
Http和Https的区别?为什么更加安全? - 4.
Https的加密过程?(SSL加密、现已到TLS) - 5.解释一下
三次握手和四次挥手?也可以说网络连接的过程) - 6.
GET和POST请求的区别? - 7.
HTTP请求报文 和 响应报文的结构? - 8.什么是
Mimetype? - 9.数据传输的加密过程?
- 10.说一下
TCP/IP五层模型的协议? - 11.说一下
OSI七层模型的协议? - 12.
大文件下载的功能有什么注意点? - 13.
断点续传功能该怎么实现? - 14.封装一个网络框架有哪些注意点?
- 15.
Wireshark、Charles、Paw等工具会使用吗? - 16.
NSUrlProtocol用过吗?运载什么地方了? - 17.如何在测试过程中抹蜜各种网络环境?
- 18.网络的
DNS优化。
- 1.
NSThread相关知识? - 2.
GCD相关知识?(栅栏函数、Group、定时器、信号量、队列类型、任务派发方式、快速迭代、延迟处理) - 3.
NSOperation和NSOperationQueue相关知识?(最大并发数、线程依赖) - 4.如何实现线性编程?(异步转为同步的几种方式)
- 5.说一下
GCD并发队列实现机制? - 6.多线程中的各类锁?
- 1.
NSLock - 2.
NSContion - 3.
NSContionLock - 4.
NSRecursiveLock - 5.
Synchronized(self) {// code} - 6.
dispatch_semaphore - 7.
OSSpinLock - 8.
pthread_mutex
- 1.
- 7.如何确保线程安全?
- 1.什么是
MVC? - 2.什么是
MVVM? - 3.什么是
MVP? - 4.什么是
CDD? - 5.有没有做过项目的组件化?
- 6.还了解哪些项目架构?
- 1.通知
NSNotification。 - 2.键值监听
KVO。 - 3.代理
Delegate。 - 4.匿名函数
Block。(__block的解释以及在ARC和MRC下有什么不同、内存管理、自动截取变量、处理循环引用)
- 1.Sqlite3 (不同版本的APP,数据库结构变化了,如何处理? )
- 2.FMDB (
Sqlite3的封装) - 3.Realm
- 4.NSKeyArchieve
- 5.Preperfence
- 6.Plist
- 7.CoreDate
- 8.Keychain
- 9.UIPasteBoard(感谢 lilingyu0620 同学提醒)
- 1.观察者模式
- 2.代理委托模式
- 3.单例模式
- 4.类工厂模式
- 5.外观模式
- 6.中介者模式
- 7.访问者模式
- 8.装饰模式 等.....
- 1.Git
- 2.Svn
- 3.CocoaPods
- 4.Carthage
- 5.Fastlane
- 6.Jenkins
- 1.RSA非对称加密
- 2.AES对称加密
- 3.DES加密
- 4.Base64加密
- 5.MD5加密
- 6.解析
SSL加密的过程用了哪些加密方法,为何这么作?
- 1.YYKit
- 2.SDWebImage
- 3.AFNetworking
- 4.SVProgressHub 等......
- 1.如何提升
tableview的流畅度? - 2.如何使用
Instruments进行性能调优?
- 1.无痕埋点
- 2.APM(应用程序性能监测)
- 3.Hot Patch(热修补)
- 1.
UIView和CALayer是什么关系? - 2.
Bounds和Frame的区别? - 3.
nil、NIL、NSNULL有什么区别? - 4.如何实现一个线程安全的
NSMutableArray? - 5.如何定义一台
iOS设备的唯一性? - 6.如何高性能的画一个圆角?
- 7.
load和Initialize的区别? - 8.
Designated Initializer的规则? - 9.
App编译过程有了解吗? - 10.
JS和Native交互。 - 11.使用
atomic一定是线程安全的吗? - 12.
LoadView方法了解吗? - 13.说一下对
APNS的认识? - 14.实现
isEqual和hash方法时要注意什么? - 15.
UIButton的父类是什么?UILabel的父类又是什么? - 16.实现一个控件,可以浮在任意界面的上层并支持拖动?
- 17.解释一下
copy关键字涉及的方方面面,说的越全越好。 - 18.说一下控制器的生命周期,一旦收到内存警告会如何处理?
- 19.简述事件传递、事件响应机制。