2019 iOS面试题总结(题目及答案已上传Githup)

Objective_C语言特性

一、分类
二、扩展
三、代理(Delegate)
四、通知(NSNotification)
五、KVO (Key-value observing)
六、KVC(Key-value coding)
七、属性关键字

runloop

一、RunLoop概念
二、RunLoop的数据结构
三、RunLoop的Mode
四、RunLoop的实现机制
五、RunLoop与NSTimer
六、RunLoop和线程

runtime

  • 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…?
  • 代码题(一)
  • 代码题(二)

####UI相关

一、UIView与CALayer
二、事件传递与视图响应链
三、图像显示原理
四、UI卡顿掉帧原因
五、滑动优化方案
六、UI绘制原理
七、离屏渲染

Block相关面试题

一、什么是Block?
二、Block变量截获
三、Block的几种形式

多线程

一、 进程
二、 线程
三、 进程和线程的关系
四、 多进程
五、 多线程
六、任务
七、队列
八、iOS中的多线程
九、GCD---队列
十、死锁
十一、GCD任务执行顺序
十二、dispatch_barrier_async
十三、dispatch_group_async
十四、Dispatch Semaphore
十五、延时函数(dispatch_after)
十六、使用dispatch_once实现单例
十七、NSOperationQueue的优点
十八、NSOperation和NSOperationQueue
十九、NSThread+runloop实现常驻线程
二十、自旋锁与互斥锁

内存管理

一、内存布局
二、内存管理方案
三、MRC(手动引用计数)和ARC(自动引用计数)
四、循环引用

算法面试题

1、不用中间变量,用两种方法交换A和B的值
2、求最大公约数
3、模拟栈操作
4、排序算法
5、折半查找(二分查找)
6、集合结构 线性结构 树形结构 图形结构
7、数据结构的存储
8、单向链表\双向链表\循环链表
9、二叉树/平衡二叉树
10、过河经典问题,超详细解析
11、字符串反转
12、有序数组合并
13、HASH算法
14、查找两个子视图的共同父视图
15、求无序数组中的中位数

网络相关

一、请求报文和响应报文
二、HTTP的请求方式
三、HTTP的特点
四、HTTPS和HTTP的区别
五、HTTPS的连接建立流程
六、对称加密和非对称加密
七、分别用C语言、python、GCDAsyncUdpSocket来实现UDP通信
八、利用python实现Udp通信demo
九、iOS端基于UDP的简易聊天demo

性能优化

1.基本概念
2.怎么检测离屏渲染:
3.怎么检测图层混合:
4.光栅化
5.入门级
6.中级
7.高级

75道程序员逻辑思维面试题

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

猜你喜欢

转载自blog.51cto.com/14121524/2412956
今日推荐