iOS 2020社招面试经验

it2024-12-17  11

一年的 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 序列化和反序列化

二面

APP 的启动流程异步绘制的实现远离Hook 与 Method Swizzling(方法交换)是否使用过,具体原理与过程描述 ARC 的工作原理,使用的数据结构,做了哪些优化weak 的实现原理,为什么不会引用计数+1AutoreleasePool 的实现原理,需要结合具体的源码的方法解释,整个执行过程、数据结构等RunLoop 中哪些状态类型,各个类型如何切换及作用对 iOS 中的多线程是否了解,具体有哪些多线程方案,GCD 与 Operation 对比以及优缺点,GCD 串/并行、同/异步 的执行顺序(会结合具体的代码考察),GCD 中的 barrier 的特性iOS 中的线程锁有哪些,对 DispatchSemaphore 的使用与理解是否看过一些开源项目的源码,例如:AFNetWorking、Masonry、SDWebImage等,SDWebImage 会考察加载图片的流程,Masonry 会考察其中链式调用、不会造成内存泄漏的原因等,AFNetWorking 会考察各个版本之间的差异和优化点

三面

iOS 中的卡顿检测,如何检测,检测到如何上报,各大厂都有哪些成熟的框架,以及实现原理平时开发中是否有遇到过让自己影响特别深的问题,简单讲讲,最后是怎么解决的,对自己有什么启发最近在看什么新技术么,进展如何工作有没有遇到让自己觉得特别厉害的同事,让自己特别崇拜,觉得自己跟他的差距在哪儿,觉得他身上有哪些有点值得自己去学习工作中、业余时间是怎么学习的,学习方式及时间分配

算法:

整个面试经历中,遇到的算法以及自己没有遇到的但是觉得很重要易考的算法都有整理出来,具体见文档:

算法整理

Swift 相关的面试问题(重要)

如果自己简历有提到过会使用 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 的区别
最新回复(0)