备战九十,iOS面试题菜单,持续更新(题目及答案已上传Github)

Objective_C语言特性

(戳这里跳转到Github)

分类

扩展

代理(Delegate)

通知(NSNotification)

KVO (Key-value observing)

KVC(Key-value coding)

属性关键字

runloop

(戳这里跳转到Github)

RunLoop概念

RunLoop的数据结构

RunLoop的Mode

RunLoop的实现机制

RunLoop与NSTimer

RunLoop和线程

讲一下 Observer ?

autoreleasePool 在何时被释放?

解释一下 事件响应 的过程?

解释一下 手势识别 的过程?

解释一下 GCD 在 Runloop 中的使用?

解释一下 NSTimer。

AFNetworking 中如何运用 Runloop?

PerformSelector 的实现原理?

利用 runloop 解释一下页面的渲染的过程?

如何使用 Runloop 实现一个常驻线程?这种线程一般有什么作用?

为什么 NSTimer 有时候不好使?

PerformSelector:afterDelay:这个方法在子线程中是否起作用?为什么?怎么解决?

什么是异步绘制?

分类和类拓展的区别?

runtime

(戳这里跳转到Github)

objc在向一个对象发送消息时,发生了什么?

objc中向一个nil对象发送消息将会发生什么?

objc中向一个对象发送消息obj foo和objc_msgSend()函数之间有什么关系?

什么时候会报unrecognized selector的异常?

能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?

给类添加一个属性后,在类结构体里哪些元素会发生变化?

一个objc对象的isa的指针指向什么?有什么作用?

self class 与 super class

runtime如何通过selector找到对应的IMP地址?

_objc_msgForward函数是做什么的,直接调用它将会发生什么?

runtime如何实现weak变量的自动置nil?知道SideTable吗?

isKindOfClass 与 isMemberOfClass

使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么?

什么是method swizzling(俗称黑魔法)

Compile Error / Runtime Crash / NSLog…?

实例对象的数据结构?

类对象的数据结构?

元类对象的数据结构?

Category 的实现原理?

如何给 Category 添加属性?关联对象以什么形式进行存储?

Category 有哪些用途?

Category 和 Extension 有什么区别

说一下 Method Swizzling? 说一下在实际开发中你在什么场景下使用过?

如何实现动态添加方法和属性?

说一下对 isa 指针的理解, 对象的isa 指针指向哪里?isa 指针有哪两种类型?

Obj-C 中的类信息存放在哪里?

一个 NSObject 对象占用多少内存空间?

说一下对 class_rw_t 的理解?

说一下对 class_ro_t 的理解?

分类和类拓展的区别?

如何运用 Runtime 字典转模型?

如何运用 Runtime 进行模型的归解档

在 Obj-C 中为什么叫发消息而不叫函数调用?

分类和类拓展的区别?

说一下 Runtime 的方法缓存?存储的形式、数据结构以及查找的过程?

是否了解 Type Encoding?

Objective-C 如何实现多重继承?

Category 可不可以添加实例对象?为什么?

Obj-c对象、类的本质是通过什么数据结构实现的?

Category 在编译过后,是在什么时机与原有的类合并到一起的?

代码题(一)

代码题(二)

UI相关

(戳这里跳转到Github)

UIView与CALayer

事件传递与视图响应链

图像显示原理

UI卡顿掉帧原因

滑动优化方案

UI绘制原理

离屏渲染

Block相关面试题

(戳这里跳转到Github)

什么是Block?

Block变量截获

Block的几种形式

多线程

(戳这里跳转到Github)

进程

线程

进程和线程的关系

多进程

多线程

任务

队列

iOS中的多线程

GCD---队列

死锁

GCD任务执行顺序

dispatch_barrier_async

dispatch_group_async

Dispatch Semaphore

延时函数(dispatch_after)

使用dispatch_once实现单例

NSOperationQueue的优点

NSOperation和NSOperationQueue

NSThread+runloop实现常驻线程

自旋锁与互斥锁

内存管理

(戳这里跳转到Github)

内存布局

内存管理方案

MRC(手动引用计数)和ARC(自动引用计数)

循环引用

讲一下 iOS 内存管理的理解

使用自动引用计数应遵循的原则

ARC自动内存管理的原则

访问 __weak 修饰的变量,是否已经被注册在了 @autoreleasePool 中?为什么?

ARC 的 retainCount 怎么存储的?

简要说一下 @autoreleasePool 的数据结构?

__weak 和 _Unsafe_Unretain 的区别?

为什么已经有了 ARC ,但还是需要 @AutoreleasePool 的存在?

__weak 属性修饰的变量,如何实现在变量没有强引用后自动置为 nil ?

说一下对 retain,copy,assign,weak,_Unsafe_Unretain 关键字的理解。

ARC 在编译时做了哪些工作

ARC 在运行时做了哪些工作?

函数返回一个对象时,会对对象 autorelease 么?为什么?

说一下什么是 悬垂指针?什么是 野指针?

内存管理默认的关键字是什么?

内存中的5大区分别是什么?

是否了解 深拷贝 和 浅拷贝 的概念,集合类深拷贝如何实现

BAD_ACCESS 在什么情况下出现?

讲一下 @dynamic 关键字?

autoReleasePool 什么时候释放?

retain、release 的实现机制?

能不能简述一下 Dealloc 的实现机制

在 MRC 下如何重写属性的 Setter 和 Getter?

在 Obj-C 中,如何检测内存泄漏?你知道哪些方式?

算法面试题

(戳这里跳转到Github)

不用中间变量,用两种方法交换A和B的值

求最大公约数

模拟栈操作

排序算法

折半查找(二分查找)

集合结构 线性结构 树形结构 图形结构

数据结构的存储

单向链表\双向链表\循环链表

二叉树/平衡二叉树

过河经典问题,超详细解析

字符串反转

有序数组合并

HASH算法

查找两个子视图的共同父视图

求无序数组中的中位数

网络相关

(戳这里跳转到Github)

请求报文和响应报文

HTTP的请求方式

HTTP的特点

HTTPS和HTTP的区别

HTTPS的连接建立流程

对称加密和非对称加密

分别用C语言、python、GCDAsyncUdpSocket来实现UDP通信

利用python实现Udp通信demo

iOS端基于UDP的简易聊天demo

UDP的特点

UDP的报文结构

UDP差错检测

TCP的特点和报文结构

三次握手

四次挥手

可靠数据传输

流量控制

拥塞控制

DNS

DNS服务器

DNS解析过程

DNS记录和报文

DNS解析安全问题

Cookie

Session

Cookie 和Session 的区别:

网络层和传输层的区别

IP协议

IP数据报分片

IPv4编址

IPv6数据报格式

从IPv4到IPv6的迁移

性能优化

(戳这里跳转到Github)

基本概念

怎么检测离屏渲染:

怎么检测图层混合:

光栅化

入门级

中级

高级

如何提升 tableview 的流畅度?

如何有效降低 APP 包的大小?

日常如何检查内存泄露?

什么是 离屏渲染?什么情况下会触发?该如何应对?

如何高性能的画一个圆角?

如何优化 APP 的电量?

Animation

(戳这里跳转到Github)

简要说一下常用的动画库。

请说一下对 CALayer 的认识

CALayer 的 Contents 有几下几个主要的属性

设计模式

(戳这里跳转到Github)

编程中的六大设计原则?

如何设计一个图片缓存框架?

如何设计一个时长统计框架?

如何实现 App 换肤(夜间模式)?

数据安全及加密

(戳这里跳转到Github)

简述 SSL 加密的过程用了哪些加密方法,为何这么作?

RSA非对称加密

75道程序员逻辑思维面试题(戳这里跳转到Github)

持续更新中,记得收藏关注哦!.....

更新时间:2019年6月26号(添加网络相关面试题)

更新时间:2019年6月27号(完善网络相关面试题)

更新时间:2019年6月29号15:09(添加内存管理方面面试题)

更新时间:2019年6月29号16:10(添加Runtime相关面试题)

更新时间:2019年6月29号16:29(添加Runloop相关面试题)

更新时间:2019年7月1号13:45(添加性能优化相关面试题)

更新时间:2019年7月2号20:42(添加设计模式相关面试题)

更新时间:2019年7月2号20:57(添加数据安全及加密相关面试题)

更多面试题和学习书籍文档,可以添加QQ群:551346706 !已经上传群文件和百度网盘,加群自己下载即可!

如果对你有帮助,希望你们记得给这个小哥哥一点点辛苦费!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券