备战九十,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 !已经上传群文件和百度网盘,加群自己下载即可!

原文地址:https://blog.51cto.com/14121524/2416410

时间: 2024-08-28 03:22:41

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

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对

前端笔试题总结---持续更新

写在前面:.... 1字符串逆序 function reverse(str){ return str.split("").reverse().join("");//直接用函数 var str1="";//从后向前输出 for(var i=str.length-1;i>=0;i--){ str1+=str[i]; } return str1; var len=str.length;//字符串原地逆序 for(var i=0;i<len;

阿里笔试题(2015)持续更新中

第一次做阿里笔试题,除了ACM题之外从来没有做过校招网络题呀,完全是裸考,总体感觉吧,对于我来说,感觉时间不够用,不是题不会,感觉时间紧,大脑很混乱,总结这一次的笔试题 废话不多说,直接上题和答案 平均每个人逗留时间为20分钟,那么开场前20分钟一共来了400人,且有20个人逗留时间已经到,但他们不一定出去,注意是平均时间,所有博物馆最少应该容纳500人 双向循环列表,从任何一个元素开始可以遍历全部元素 先和后面的元素相连 s->next=p->next; p->next->pre

iOS系列教程 目录 持续更新...

  前言: 听说搞iOS的都是高富帅,身边妹子无数.咱也来玩玩.哈哈. 本篇所有内容使用的是XCode工具.Swift语言进行开发. 我现在也是学习阶段,每一篇内容都是经过自己实际编写完一遍之后,发现什么问题百度都弄完了才整理发出来的. 如果还是有遗漏的问题,请各位及时批评指出~ 基础篇: iOS系列 基础篇 01 构建HelloWorld,剖析并真机测试 iOS系列 基础篇 02 StoryBoard 故事板文件 iOS系列 基础篇 03 探究应用生命周期 iOS系列 基础篇 04 探究视图生

有干货的面试题 (持续更新)

(持续更新到找到工作...) 单点登录系统(SSO)(采用JWT + RSA) 阐述:用户只需要登录一次就可以访问所有相互信任的应用系统,实现无状态登录 流程: 我们首先利用RSA生成公钥和私钥,私钥保存在授权中心,公钥保存到 Zuul网关 和 各个服务 用户请求登录,服务端验证,将查询到的用户部分信息存入 JWT 使用私钥对 JWT进行签名加密 返回 JWT 给客户端 用户访问服务( 携带JWT ) 网关验证通过放行 到达微服务,微服务直接使用公钥解析 JWT 获取其中的用户信息 如何判断是否

面试题笔记:实现Nginx Upload 模块 功能上传文件。

linux服务器开发测评题目———————————————————————————— 搭建一个nginx服务器,能完成文件上传功能.主要构成有: <1> 用于测试服务器上传功能用的前端html页面 <2> nginx web服务器,包括了文件上传功能模块,注意配置好配置文件 <3> 对于上传成功的文件,给前端返回upload successfully信息 动手搭建完成后,针对上面的几点要求截几张图,同时把前端html页面,nginx配置文件,和假如需要使用的业务逻辑代码

iOS开发之网络编程--5、NSURLSessionUploadTask+NSURLSessionDataDelegate代理上传

前言:关于NSURLSession的主要内容快到尾声了,这里就讲讲文件上传.关于文件上传当然就要使用NSURLSessionUploadTask,这里直接讲解常用的会和代理NSURLSessionDataDelegate一起搭配实现文件上传功能.另外,下面使用的文件上传思路是和NSURLConnection中本人之前的随笔<iOS开发之网络编程--使用NSURLConnection实现文件上传>提到的上传思路是一样的,都是要将请求信息拼接起来,然后传入到请求里进行上传.这个拼接过程是必要的,但

ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结

相册 iphone的相册包含摄像头胶卷+用户计算机同步的部分照片.用户可以通过UIImagePickerController类提供的交互对话框来从相册中选择图像.但是,注意:相册中的图片机器路径无法直接从应用程序访问,只能通过终端用户去选择和使用相册图片 应用程序包 应用程序包可能会将图像与可执行程序.Info.plist文件和其他资源一同存储.我们可以通过本地文件路径来读取这些基于包的图像并在应用程序中显示它们. 沙盒 借助沙盒,我们可以把图片存储到Documents.Library.tmp文

[iOS AFNetworking框架实现HTTP请求、多文件图片上传下载]

简单的JSON的HTTP传输就不说了,看一个简单的DEMO吧. 主要明白parameters是所填参数,类型是字典型.我把这部分代码封装起来了,以便多次调用.也许写在一起更清楚点. #pragma mark - JSON方式post提交数据 - (void)postJSONWithUrl:(NSString *)urlStr parameters:(id)parameters success:(void (^)(id responseObject))success fail:(void (^)(