iOS开发 常备的面试题合集

一、Runtime

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

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

说一下对 class_rw_t 的理解?

说一下对 class_ro_t 的理解?

说一下对 isa 指针的理解

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

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

实例对象的数据结构?

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

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

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

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

类对象的数据结构?

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

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

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

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

isKindOfClass 与 isMemberOfClass

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

Category 有哪些用途?

Category 的实现原理?

_objc_msgForward函数是做什么的

[self class] 与 [super class]

代码题 一

代码题 二

二、Runloop

为什么 NSTimer 有时候不好使?

AFNetworking 中如何运用 Runloop?

autoreleasePool 在何时被释放?

PerformSelector 的实现原理?

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

RunLoop的Mode

RunLoop的实现机制

RunLoop和线程

RunLoop的数据结构

RunLoop概念

RunLoop与NSTimer

讲一下 Observer ?

解释一下 NSTimer

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

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

什么是异步绘制?

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

三、Objective_C语言特性

KVC(Key-value coding)

KVO (Key-value observing)

分类、扩展、代理(Delegate)

属性关键字

通知(NSNotification)

四、Animation

请说一下对 CALayer 的认识。

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

五、Block

Block的几种形式

Block变量截获

什么是Block?

六、UI相关

七、多线程

进程、线程

多进程、多线程

任务、队列

iOS中的多线程

GCD---队列

死锁

GCD任务执行顺序

dispatch_barrier_async

dispatch_group_async

Dispatch Semaphore

延时函数(dispatch_after)

使用dispatch_once实现单例

NSOperationQueue的优点

NSOperation和NSOperationQueue

NSThread+runloop实现常驻线程

自旋锁与互斥锁

八、内存管理

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

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

循环引用

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

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

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

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

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

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

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

内存管理方案

内存布局

讲一下iOS内存管理的理解

讲一下@dynamic关键字?

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

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

retain、release的实现机制?

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

BAD_ACCESS在什么情况下出现?

autoReleasePool什么时候释放?

ARC自动内存管理的原则

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

ARC在编译时做了哪些工作

ARC的retainCount怎么存储的?

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

__weak和_Unsafe_Unretain的区别?

九、设计模式

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

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

编程中的六大设计原则?

十、数据安全及加密

RSA非对称加密

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

十一、数据结构与算法

iOS开发 数据结构

iOS 算法面试题(一)

iOS 算法面试题(二)

十二、网络相关

HTTP协议

HTTPS、对称加密、非对称加密

一个基于UDP的简单的聊天Demo

UDP的特点、UDP的报文结构及差错检测

TCP、三次握手、四次挥手、代码实现

可靠数据传输、流量控制(滑动窗口)、拥塞控制

DNS

Cookie和Session

IP协议、IP数据报分片、IPv4编址、网络地址转换(NAT)

IPv6、从IPv4到IPv6的迁移

十三、性能优化

iOS 性能优化面试题

光栅化

日常如何检查内存泄露?

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

如何提升tableview的流畅度?

如何优化APP的电量?

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

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

如何检测离屏渲染?

怎么检测图层混合?

你可能感兴趣的:(iOS开发 常备的面试题合集)