开源软件名称:liberalisman/iOS-InterviewQuestion-collection
开源软件地址:https://github.com/liberalisman/iOS-InterviewQuestion-collection
开源编程语言:
Objective-C
100.0%
开源软件介绍:
iOS-InterviewQuestion-collection(未完待续...)
最近在准备面试,所以自己边复习边整理,列出了一些自己复习的知识点。
后面的一些知识模块之所以没有延展开,是因为有的地方自己理解的还不到位,我还需要时间仔细整理。
这个仓库根据我的设想,我认为还远远没有完成,后续会不断更新,起初并不想写答案,但考虑到有的人需要,其次我自己写一个很简单的思路,起一个提示的作用,如果有想错的地方,也欢迎大家指正。
再次说明:所有的答案只写思路,不会长篇大论的验证,只起到提示作用。
欢迎大家提 PR!!!
推荐书目
- 1.《Effective Objective-C 2.0》- 读书笔记(进行中)
- 2.《Objective-C 高级编程》
- 3.《程序员的自我修养》
- 4.《图解HTTP》
- 5.《高性能iOS应用开发》
- 6.《算法图解》
- 7.《剑指Offer》
数据结构及算法
数据结构
- 1.数组 - 链接
- 2.字典 - 链接
- 3.链表 - 链接
- 4.树
- 5.栈
- 6.队列
- 7.哈希表
算法
常见概念
常见的摘要算法:
- HEX编码
- Base64
- MD5
- SHA1
- SHA256
- MAC算法
常见对称加密算法
常见的排序算法
- 快速排序 - 链接
- 堆排序
- 冒泡排序 - 链接
- 选择排序 - 链接
- 希尔排序
- 归并排序
常见的字符编码方法
- 1.ASCII
- 2.ISO-8859-1
- 3.GB2312
- 4.GBK
- 5.UTF-8
- 6.UTF-16
- 7.Unicode
推荐一个很好的算法总结 - 链接
常考算法题
- 1.字符串反转 - 链接
- 2.链表反转 - 链接
- 3.有序数组合并 - 链接
- 4.查找第一个只出现一次的字符 - 链接
- 5.查找两个子视图的共同父视图 - 链接
- 6.无序数组中的中位数 - 链接
- 7.两数之和为特定值 - 链接
- 8.求出数组中连续数字的和值 - 链接
- 9.白鼠与毒酒的算法问题 - 链接
- 10.在一个数组中找出前四个最大的数字。- 链接
- 11.假如有 10亿 条数据,每条数据的大小在 10k-100k 之间,我们有一台内存为 4G 的电脑,如何算出播放次数最多的一条微博?
- 12.如何打印一个矩阵?
- 13.如何验证一个
IP 地址的有效性?
- 14.栈中储存着一组无序的数字,不用遍历的方式,如何找出最小值?
- 15.二维数组查找一个值。
iOS 内存管理
- 1.讲一下
iOS 内存管理的理解?(三种方案的结合) - 链接
- 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.
BAD_ACCESS 在什么情况下出现? - 链接
- 19.讲一下
@dynamic 关键字?- 链接
- 20.
@autoreleasrPool 的释放时机?- 链接
- 21.
retain 、release 的实现机制?- 链接
- 22.能不能简述一下
Dealloc 的实现机制?- 链接
- 23.在
MRC 下如何重写属性的 Setter 和 Getter ? - 链接
- 24.在
Obj-C 中,如何检测内存泄漏?你知道哪些方式? - 链接
Runtime
- 实例对象的数据结构?- 链接
- 类对象的数据结构?- 链接
- 元类对象的数据结构? - 链接
- Obj-C 对象、类的本质是通过什么数据结构实现的? - 链接
- Obj-C 中的类信息存放在哪里? - 链接
- 一个 NSObject 对象占用多少内存空间?- 链接
- 说一下对 class_rw_t 结构体的理解?- 链接
- 说一下对 class_ro_t 的理解?- 链接
- Category 的实现原理? - 链接
- 如何给 Category 添加属性?关联对象以什么形式进行存储? - 链接
- Category 有哪些用途? - 链接
- Category 和 Class Extension 有什么区别?- 链接
- Category 可不可以添加实例对象?为什么? - 链接
- Category 在编译过后,是在什么时机与原有的类合并到一起的? - 链接
- 说一下 Method Swizzling? 说一下在实际开发中你在什么场景下使用过? - 链接
- Runtime 如何实现动态添加方法和属性? - 链接
- 说一下对 isa 指针的理解,对象的 isa 指针指向哪里? isa 指针有哪两种类型?(注意区分不同对象) - 链接
- 说一下 Runtime 消息解析。- 链接
- 说一下 Runtime 消息转发。- 链接
- 如何运用 Runtime 字典转模型?- 链接
- 如何运用 Runtime 进行模型的归解档?- 链接
- 在 Obj-C 中为什么叫发消息而不叫函数调用?- 链接
- 说一下 Runtime 的方法缓存?存储的形式、数据结构以及查找的过程?- 链接
- 是否了解 Type Encoding? - 链接
- Objective-C 如何实现多重继承? - 链接
Runloop
- 1.
Runloop 和线程的关系? - 链接
- 2.讲一下
Runloop 的 Mode ?(越详细越好) - 链接
- 3.讲一下
Observer ?(Mode中的重点) - 链接
- 4.讲一下
Runloop 的内部实现逻辑?(运行过程) - 链接
- 5.你所知的哪些三方框架使用了
Runloop ?(AFNetworking、Texture 等)
- 6.
autoreleasePool 在何时被释放? - 链接
- 7.解释一下
事件响应 的过程? - 链接
- 8.解释一下
手势识别 的过程? - 链接
- 9.解释一下
GCD 在 Runloop 中的使用? - 链接
- 10.解释一下
NSTimer ,以及 NSTimer 的循环引用。 - 链接
- 11.
AFNetworking 中如何运用 Runloop ? - 链接
- 12.
PerformSelector 的实现原理?- 链接
- 13.利用
runloop 解释一下页面的渲染的过程?- 链接
- 14.如何使用
Runloop 实现一个常驻线程?这种线程一般有什么作用?- 链接
- 15.为什么
NSTimer 有时候不好使?(不同类型的Mode)- 链接
- 16.
PerformSelector:afterDelay: 这个方法在子线程中是否起作用?为什么?怎么解决?- 链接
- 17.什么是异步绘制?- 链接
- 18.如何检测
App 运行过程中是否卡顿?
UIKit
- 1.
UIView 和 CALayer 是什么关系?- 链接
- 2.
Bounds 和 Frame 的区别? - 链接
- 3.
TableViewCell 如何根据 UILabel 内容长度自动调整高度?
- 4.
LoadView 方法了解吗?- 链接
- 5.
UIButton 的父类是什么?UILabel 的父类又是什么?- 链接
- 6.实现一个控件,可以浮在任意界面的上层并支持拖动?- 链接
- 7.说一下控制器
View 的生命周期,一旦收到内存警告会如何处理?- 链接
- 8.如何暂停一个
UIView 中正在播放的动画?暂停后如何恢复?- 链接
- 9.说一下
UIView 的生命周期?- 链接
- 10.
UIViewController 的生命周期?- 链接
- 11.如何以通用的方法找到当前显示的
ViewController ? - 链接
- 12.
setNeedsDisplay 和 layoutIfNeeded 两者是什么关系?- 链接
Foundation
- 1.
nil 、NIL 、NSNULL 有什么区别?- 链接
- 2.如何实现一个线程安全的
NSMutableArray ? - 链接
- 3.如何定义一台
iOS 设备的唯一性? - 链接
- 4.
atomic 修饰的属性是绝对安全的吗?为什么? - 链接
- 5.实现
isEqual 和 hash 方法时要注意什么?
- 6.
id 和 instanceType 有什么区别?- 链接
- 7.简述事件传递、事件响应机制。- 链接
- 8.说一下对
Super 关键字的理解。- 链接
- 9.了解
逆变 和 协变 吗?- 链接
- 10.
@synthesize 和 @dynamic 分别有什么作用?- 链接
- 11.
Obj-C 中的反射机制了解吗?- 链接
- 12.
typeof 和 __typeof ,__typeof__ 的区别? - 链接
- 13.如何判断一个文件在沙盒中是否存在?
- 14.头文件导入的方式? - 链接
- 15.如何将
Obj-C 代码改变为 C++/C 的代码?- 链接
- 16.知不知道在哪里下载苹果的源代码?- 链接
- 17.
objc_getClass() 、object_getClass() 、Class 这三个方法用来获取类对象有什么不同?
网络
- 1.
NSUrlConnect 相关知识。
- 2.
NSUrlSession 相关知识。
- 3.
Http 和 Https 的区别?为什么更加安全?- 链接
- 4.
Http 的请求方式有哪些?Http 有什么特性?- 链接
- 5.解释一下
三次握手 和 四次挥手 ?解释一下为什么是三次握手 又为什么是 四次挥手 ?- 链接
- 6.
GET 和 POST 请求的区别?- 链接
- 7.
HTTP 请求报文 和 响应报文的结构?- 链接
- 8.什么是
Mimetype ? - 链接
- 9.数据传输的加密过程? - 链接
- 10.说一下
TCP/IP 五层模型的协议? - 链接
- 11.说一下
OSI 七层模型的协议? - 链接
- 12.
大文件下载 的功能有什么注意点? - 链接
- 13.
断点续传 功能该怎么实现? - 链接
- 14.封装一个网络框架有哪些注意点? - 链接
- 15.
Wireshark 、Charles 、Paw 等工具会使用吗?
- 16.
NSUrlProtocol 用过吗?用在什么地方了? - 链接
- 17.如何在测试过程中
MOCK 各种网络环境? - 链接
- 18.
DNS 的解析过程?网络的 DNS 优化。 - 链接
- 19.
Post 请求体有哪些格式? - 链接
- 20.网络请求的状态码都大致代表什么意思?- 链接
- 21.抓包软件
Charles 的原理是什么?说一下中间人攻击的过程。- 链接
- 22.如何判断一个请求是否结束?- 链接
- 23.
SSL 传输协议?说一下 SSL 验证过程?- 链接
- 24.解释一下
Http 的持久连接?- 链接
- 25.说一下传输控制协议 -
TCP ?- 链接
- 26.说一下用户数据报协议 -
UDP ? - 链接
- 27.谈一谈网络中的
session 和 cookie ? - 链接
- 28.发送网络请求的时候,如果带宽
1M ,如何针对某些请求,限制其流量?
多线程
- 1.
NSThread 相关知识? - 链接
- 2.
GCD 相关知识? - 链接
- 3.
NSOperation 和 NSOperationQueue 相关知识? - 链接
- 4.如何实现线性编程? - 链接
- 5.说一下
GCD 并发队列实现机制?- 链接
- 6.
NSLock ?是否会出现死锁? - 链接
- 7.
NSContion - 链接
- 8.条件锁 -
NSContionLock - 链接
- 9.递归锁 -
NSRecursiveLock - 链接
- 10.同步锁 -
Synchronized(self) {// code} - 链接
- 11.信号量 -
dispatch_semaphore 。 - 链接
- 12.自旋锁 -
OSSpinLock 。 - 链接
- 13.多功能
|
请发表评论