一年的 iOS 工作经验,在此分享一下此次面试 字节、阿里、腾讯、快手、美团、小米、猿辅导的经验
一、二、三面的面试题个大厂侧重点不一样,所以把所有被面的题汇总在一起可以系统的进行学习
内推会比自己海投要靠谱,成功率偏高,可联系我VX:ZFei_Yu!
复习材料
一面的知识点主要考基础知识,由浅到深的问
网络相关:
HTTP 与 HTTPS 的区别三次握手,为什么需要三次,四次挥手,为什么需要四次DNS 协议中间人攻击模式的流程对称加密与非对称加密,具体如何体现设计模式:
知道哪些设计模式,说出的越多越好挑一个自己最熟悉的设计模式讲讲如何实现(最好不要讲观察者模式)专业相关:
动/静态库的区别,该如何选择OC 中的属性修饰符的区别(weak 与 assign,copy 与 strong 以及 mutableCopy, atomic 与 nonatmoicd 以及线程安全问题)static 与 class 关键字 的区别对 RunLoop 的理解,基本作用,与线程的关系,有哪些事件,其中包含哪些 Mode,各个 Mode 都有什么作用,在滑动屏幕的时候 Mode 是如何切换的Runtime 机制的理解,在 iOS 中有哪些具体的应用消息转发的具体流程,对象(object)、类(class)、方法(method)这几个的结构体的具体组成,以及元类的特性KVO 与 KVC 的理解, KVC 中搜索成员名的顺序关联对象的使用及原理进程和线程的区别block 的实现原理,block 是不是一个对象,会结合具体代码考察 block 捕获变量、__block 的作用、存储等知识点OC 中 Category 的实现原理,以及重名方法的调用顺序及原因类加载流程,父/子/分类中 load 方法的执行顺序,init 方法的执行顺序视图圆角的实现,是否会造成离屏渲染,离屏渲染产生的原因,离屏渲染代价高的原因,还有哪些情况会造成离屏渲染,圆角实现的其他方法可以如何实现一个三角形的 button事件响应和手势识别,事件传递的顺序,优先级,响应者链的实现,hitTest方法理解及使用UIView 和 CALayer 的关系,各自的作用与区别定时器有哪几种实现方式,各自的优缺点和使用场景JSON 序列化和反序列化整个面试经历中,遇到的算法以及自己没有遇到的但是觉得很重要易考的算法都有整理出来,具体见文档:
算法整理
如果自己简历有提到过会使用 Swift 语言进行开发,那么下面的知识点都很重要
Swift 中的 Runtime 机制,与 OC 中的 Runtime机制的对比Class 和 Struct 的区别理解 Swift 值类型的写时复制defer 的用法inout 输入输出参数什么是高阶函数static 和 class 的区别自定义模式匹配模式Swift 与 Objective-C 的联系与区别?Swift 比 Objective-C 有什么优势?Swift 是面向对象还是函数式的编程语言?请说明并比较以下关键词:Open, Public, Internal, File-private, Private请说明并比较以下关键词:strong, weak, unowned说说 Swift 为什么将 String,Array,Dictionary 设计成值类型?Swift mutating 关键字的使用?OC 和 Swift 中的 enum 的区别