公司动态

爱奇艺iOS校招全流程复盘:从基础到工程实战的面试指南

📅 2026/8/31 18:32:04
爱奇艺iOS校招全流程复盘:从基础到工程实战的面试指南
站在2018年的秋招节点爱奇艺的iOS工程师岗位绝对算得上不少移动端求职者的重点关注对象。当时视频类App正处于移动端流量争夺的白热化阶段爱奇艺自身的iOS端功能迭代速度非常快从播放器内核优化到客户端架构升级对iOS工程师的要求也相当明确既得有扎实的基础功底又得具备快速跟进业务落地的工程能力。这篇复盘我会按照真实的校招流程从简历筛选、在线笔试到多轮技术面试把当时考察的题型、追问方式以及技术点背后的出题意图拆开揉碎来讲希望能给准备大厂移动端岗位的同学一些参考。先说一个整体感受2018年爱奇艺校招iOS方向的题目风格偏向“基础 工程实践”双线并行不太会出那种偏门到不行的冷知识点反而非常喜欢在一个看似常规的问题上不断深挖比如追问到系统底层实现、内存管理的边界case、多线程下的数据竞争细节等。这其实和视频类App的业务特点密不可分——长时间播放、弱网切换、复杂UI嵌套、动态更新这些真实业务场景决定了面试官更偏爱那些既能说清原理又能用工程手段解决问题的候选人。1. 招聘流程与考察模型的整体认知1.1 为什么爱奇艺的校招值得专门复盘爱奇艺作为头部视频平台其iOS客户端的规模和复杂度在当时的行业里是数一数二的。周活跃用户量级大、在线时长长、播放场景横跨Wi-Fi和蜂窝网络这些特点决定了iOS端要处理的远不止普通App的“页面展示 网络请求”而是涉及播放器内核集成、视频缓存策略、广告SDK兼容、弹幕渲染性能、跨端动态化方案等一系列高难度问题。正因为业务复杂度高爱奇艺校招的考点也往往比普通互联网公司更贴近真实工程环境很能反映一个候选人的iOS综合能力。我当时参加的是秋季校招的第一场整体流程分为网申与简历初筛、在线笔试、技术一面、技术二面、HR面。从投递简历到收到offer约耗时三周左右节奏算是比较紧凑的。和许多大厂一样爱奇艺的iOS校招名额不算多但胜在流程清晰、反馈及时如果某个环节被淘汰一般也会在较短时间内收到通知不会出现“泡池子”迟迟没消息的情况。1.2 岗位JD背后隐藏的能力要求回顾当时的JD描述有几条写得非常具有指向性“扎实的计算机基础熟悉iOS平台相关技术” —— 这句话基本就是在说操作系统、网络、数据结构这些CS底层知识必须过关而iOS层面至少要熟练掌握OC语言特性和UIKit框架。“有良好的代码习惯熟悉Git等版本控制工具” —— 对应届生来说这一点更多是考察实习项目或开源项目的代码规范性会不会写清晰的commit信息、如何维护分支都能反映工程素养。“有音视频、直播、图像处理经验者优先” —— 视频类公司的典型偏好。如果简历上有相关项目面试官追问的深度会明显不一样。“具备良好的沟通能力和团队协作精神” —— 在技术面试中这一点通常通过“你如何描述一个复杂技术问题”来考察面试官会关注你能否把问题拆解清楚、表达是否结构化。说白了爱奇艺要的不是只会写页面的iOSer而是能在复杂业务场景下快速定位问题、兼顾性能与稳定性的工程师。明白了这一点复习方向自然就有了基础要深工程能力要实表达要清晰。2. 简历准备与笔试环节的经验复盘2.1 简历初筛项目描述怎么写才能过筛爱奇艺这样的公司秋招简历量非常大HR和面试官停留在一份简历上的时间不会超过两分钟。这意味着简历上的项目经历必须一眼就能让面试官看出“你会什么”和“你做到了什么程度”。我当时的做法是采用STAR法则组织每条项目经历并且用数字量化结果。比如单纯写“负责首页信息流的开发”基本等于没写。但如果写成“负责首页信息流的UI搭建与性能优化通过复用Cell、减少离屏渲染等方案将滑动帧率从45帧提升到58帧”效果就完全不同。数字能瞬间建立信任感也方便面试官在后续提问时有的放矢。另一个非常关键的细节是简历上写到的每一个技术点都必须经得起深挖。我当时在简历里提到了“使用Runtime做了AOP埋点”面试官很快追问了“AOP的实现原理”“Method Swizzling的注意事项”“Category能否添加属性”等问题。如果只是停留在“会用”的层面很容易被连续追问打穿。所以简历上的项目宁可少而精也不要什么都往上面堆。2.2 在线笔试高频题型与答题策略2018年爱奇艺在线笔试的题型大致分为四类单选题、多选题、填空题、两道编程题。整体时间比较紧张单选多选部分涉及的知识面很广包括OC语法细节、内存管理、数据结构、操作系统、网络等编程题则偏向字符串处理、数组操作以及链表类问题。单选题和多选题里有一些很典型的知识点至今记忆犹新Objective-C中消息发送机制objc_msgSend的查找流程以及消息转发涉及的方法。ARC与MRC的区别以及__weak、__strong修饰符的作用时机。链表反转的迭代和递归两种实现方式的时间复杂度和空间复杂度对比。TCP三次握手和四次挥手过程中各状态的含义。快速排序和归并排序在平均、最坏情况下的时间复杂度和空间复杂度。做题策略上我给的建议是先做编程题再做选择题。因为编程题分值高、确定性大而选择题部分知识点细碎如果卡在某道题上很容易浪费时间。编程题尽量选取自己最有把握的思路来写比如链表题能用迭代就不写递归避免因为边界条件疏忽导致部分用例失败。3. 技术面试全流程逐环节复盘3.1 电话面试基础知识和项目经历的初筛通过笔试后大约一周我收到了技术一面的通知是电话面试。整体时长约40分钟围绕两部分展开简历上的实习项目 iOS基础知识。面试官对项目的追问非常细致基本是逐行代码级别的。比如我当时提到了“用GCD实现线程安全的缓存”面试官立刻追问了几个问题dispatch_barrier_async和dispatch_sync的区别是什么为什么需要barrier如果同时有多个读和一个写用dispatch_barrier_async和使用NSLock相比性能和安全性各有什么优劣这些问题考察的不仅是API的使用更是对并发模型的理解深度。基础知识部分问了几个方向分类Category和扩展Extension的区别是什么分类中可以添加属性吗添加的属性能否自动生成setter和gettercopy和strong修饰符在什么情况下有区别为什么NSString属性通常用copy_weak和_strong的实现原理__weak是如何在被释放时自动置nil的电话面试整体节奏偏快没有太多思考缓冲时间。我的经验是听到问题后先快速在脑中列出可能的答案方向分点表达即使某一点不够深入也要让面试官看到一个结构化的思考过程。这比支支吾吾半天说了一个点要好得多。3.2 技术一面UI与内存管理的深挖现场技术一面是现场面面试官是iOS端的一线研发工程师。整个面试时长约1小时氛围专业但不压抑面试官会根据回答的深度动态调整难度。这一面集中考察了UI布局、事件传递、内存管理和性能优化四个方向。开场问题是“你如何理解UIStackView在什么场景下你会使用它”这个问题很有代表性因为UIStackView在iOS 11之后才逐渐被广泛使用如果你用过面试官会追问具体布局场景如果没用过就需要从AutoLayout的原理角度去解释。我结合自己项目中使用UIStackView实现标签列表的经验说明了它如何简化约束管理、减少约束冲突同时又坦言它的局限性——在列表高度动态变化、需要缓存frame的场景下反而可能带来性能损耗。接着面试官问了一个很经典的题目“从点击屏幕到UIView收到touch事件这中间发生了什么”这个问题需要从事件传递的完整链路来回答系统进程通过mach port将触摸事件分发到App进程由SpringBoard接收再通过UIApplication传递到UIWindow通过hitTest层层寻找最合适的view最终调用touchBegin等方法。更深的层面还要解释为什么要设计这样的传递链以及日常开发中哪些问题与此相关比如TableView的Cell点击区域过小、在子View上添加了透明遮罩导致无法点击等。内存管理部分面试官抛出了几个进阶问题autoreleasepool在什么时候创建和释放主线程RunLoop与自动释放池的关联是什么在ARC下dealloc里需要注意什么如何检测循环引用Instruments的Leaks工具原理是什么其中关于RunLoop与自动释放池的关系面试官追问得很细在kCFRunLoopBeforeWaiting和kCFRunLoopBeforeExit这两个时机自动释放池分别做了什么操作如果某个RunLoop连续处理了大量事件内存峰值会出现在哪里这些问题单靠死记硬背是答不出来的需要真正理解RunLoop的运行机制。性能优化部分的问题围绕离屏渲染展开什么是离屏渲染哪些操作会触发离屏渲染cornerRadius配合masksToBounds为什么会影响性能如何优化我把项目中遇到的一个列表卡顿case和当时的优化方案使用UIBezierPath绘制圆角、复用带圆角的背景图做了详细说明面试官比较认可。技术一面结束后约两天我收到了技术二面的通知。3.3 技术二面多线程、网络与架构设计的综合面技术二面的面试官应该是客户端团队的资深工程师或Leader问题层级明显更高不再局限于某个API怎么用而是在考察系统设计和问题定位能力。二面一开始问了几个多线程的必考题多线程有哪些实现方式各自的应用场景是什么在实际项目中你倾向于用哪种如何保证线程安全除了加锁还有哪些手段DispatchQueue如何实现串行底层的队列数据结构是什么当问到线程安全时面试官追问了一个非常实际的场景“如果需要在多个线程中同时读写一个可变字典你会怎么做”常规回答是“加锁”。但面试官继续追问“使用pthread_mutex、NSLock、synchronized分别有什么区别如果你既要保证线程安全又要保证较高的读取性能读写锁和dispatch_barrier你如何选择”这些问题考察的深度已经逼近真实工程的性能边界了。网络部分的一道题给我留下了很深印象“在视频App中如果一个用户的网络在Wi-Fi和4G之间频繁切换播放器的请求可能会遇到什么问题你会如何从客户端层面优化”这个题目非常接地气本质在考察HTTPS连接复用、TCP连接断开时的错误处理、DNS缓存以及重试策略。我当时的回答思路是监听网络状态变化切换时主动取消失败请求、重置连接池、必要时重新建立带鉴权信息的HTTP请求同时利用当前网络参数动态调整视频流的清晰度或加载策略减少用户感知的卡顿。架构设计部分面试官给了一道开放式题目“如果让你设计一个轻量级的网络图片加载库你会怎么设计需要考虑哪些问题”这类问题考察的不仅是iOS知识更是工程抽象能力。需要考虑的点包括图片解码放到子线程、内存缓存与磁盘缓存的层级设计、多图请求的优先级控制、避免重复请求的NSCache策略、URL和图片文件的映射规则、取消机制等。我在回答时从分层设计的角度切入下载层、缓存层、解码层、UI回显层每层各司其职并且留出接口方便替换。二面整体偏难考察的已经不是一个“会写iOS的人”而是“能解决问题的人”。面试官会刻意把问题抛到一个模糊场景中看你是否能在短时间内理清思路给出可落地方案。4. iOS高频考点深度拆解与答题范文4.1 内存管理从ARC到RunLoop的完整链路内存管理是爱奇艺iOS面试中绝对的高频区域。我建议按照“原理 - 实现 - 场景 - 排查”的递进方式进行复盘。原理层面要理解自动引用计数ARC的核心思想编译器在合适的位置自动插入retain、release、autorelease让对象生命周期清晰可控。这里需要理解几个关键方法retain引用计数加1。release引用计数减1减到0时调用dealloc。autorelease延迟释放加入当前的自动释放池。实现层面有两个点是重中之重。第一是__weak的实现它依赖于Runtime层的SideTable在对象被释放时通过objc_clear_deallocating将弱引用表中指向该对象的所有指针都置为nil从而避免悬垂指针。第二是自动释放池的底层结构它本质上是一个栈结构每个AutoreleasePoolPage是一个双向链表节点通过push和pop管理对象释放的边界。场景层面一个常考case是在for循环中大量创建临时对象应该注意什么如果在主线程的RunLoop中处理大量事件自动释放池的Pop时机如何影响内存峰值正确做法是在循环内部手动添加autoreleasepool把临时对象的内存占用控制在局部范围内。排查层面面试官常问“如果App内存持续增长你会如何排查”思路是这样的先用Instruments的Allocations观察内存增长曲线定位内存增长的时间点再用Leaks检测是否有泄漏对象对于非泄漏但持续增长的情况要重点怀疑缓存器是否有无界增长比如图片缓存、网络请求缓存、日志写入等。我实际项目中就遇到过一个问题某个页面的图片请求没有做URL去重导致同一张图片在多线程下被多次下载并缓存内存和网络带宽都被浪费了排查方向就是从Leaks没有发现泄漏、但Allocations稳定上升开始的。4.2 多线程与数据安全并发场景下的边界case多线程部分爱奇艺的面试题非常喜欢结合真实业务场景。比如“视频评论区如果有多张图片并行加载你会如何设计并发任务的控制”这个问题背后考察的就是GCD队列、NSOperationQueue以及信号量的使用。关于并发有几个核心点是必须掌握的串行队列和并行队列的区别以及各自的使用场景。sync和async的排列组合会产生什么效果主队列调用sync到主线程为什么会导致死锁。dispatch_group和dispatch_semaphore在多任务依赖场景下的用法。NSOperationQueue与GCD相比有哪些更高层的能力比如任务依赖、最大并发数控制、取消操作。数据安全方面面试官特别爱问原子属性和非原子属性。atomic只能保证属性本身的读写安全不能保证业务逻辑的线程安全。比如一个可变数组类型的属性即使声明为atomic在多线程环境下执行addObject:仍然可能出问题因为atomic只对getter和setter方法的调用加锁并不会对整个可变数组的操作加锁。正确做法是对数组的访问统一加锁或者使用并发队列配合barrier做读写分离。我在项目中有一个印象很深的坑为了提升性能把某个属性从atomic改成了nonatomic结果在极端情况下出现了崩溃。原因是多个线程同时读取和重置一个回调Block导致Block释放和调用发生了竞争。后来通过dispatch_barrier_async实现了一个类似读写锁的逻辑才彻底解决。这类case建议准备一两个面试时讲出来非常有说服力。4.3 RunLoop在实际开发中的应用场景RunLoop是2018年前后iOS面试中的大热门因为它在很多底层机制中扮演核心角色但日常开发中又不会显式使用属于“面试爱问、工作少见”的知识点。爱奇艺的面试官自然也绕不开它。需要掌握的核心链路是RunLoop是一个事件循环通过mach_msg接收事件没有事件时睡眠有事件时唤醒处理。它的运行模式RunLoopMode包括DefaultMode、TrackingMode和CommonModes等。日常开发中最常见的应用是在UIScrollView滚动时如果某个Timer需要持续回调就必须把Timer加入CommonModes否则滚动过程中Timer会暂停。关于Timer还有一个高频追问NSTimer在子线程上运行需要注意什么子线程默认没有开启RunLoopTimer需要设置到RunLoop的某个模式下才能被触发。而GCD的timer则不需要依赖RunLoop直接由系统在指定的队列上执行这解释了为什么很多高性能场景改用dispatch_source_t实现定时任务。RunLoop还有一个常被忽略的应用利用CFRunLoopObserver监控主线程卡顿。在BeforeWaiting和Exit状态之间记录时间戳如果超过阈值就汇报这是很多APM工具的底层原理。面试时如果能提到这个应用场景会让面试官觉得你对RunLoop的理解不局限于背诵而是真的能关联到工程实践。4.4 网络与数据持久化HTTP、HTTPS与本地存储视频类App对网络能力的要求远超普通应用。爱奇艺面试中网络部分占比较大重点集中在HTTPS连接过程、缓存策略、DNS优化和弱网处理四个方面。HTTPS方面的高频考点是TLS握手流程要能说出客户端和服务端如何交换证书、如何协商对称加密密钥以及SSL Pinning的作用和实现方式。校招候选人如果能在回答中体现出对中间人攻击原理的理解会很加分。缓存策略方面需要掌握HTTP缓存头的基本语义Cache-Control、Expires、Last-Modified、ETag等。在iOS开发中更常被问到的是NSURLCache的机制以及如何针对不同接口配置不同的缓存策略。比如视频封面这类不常变的资源可以设置较长缓存时间而评论数这类实时性较强的接口则基本不用缓存。数据持久化部分的常考题包括NSUserDefaults适合存什么Keychain的应用场景SQLite和Core Data各自的优劣我当时被问到一个比较实际的问题如果一个App需要记录用户最近观看的500条历史记录并且要求支持模糊搜索标题你会用什么存储方案比较合理的方案是用SQLite为标题字段建立索引并通过LIKE语句的左侧通配符注意索引失效的问题来优化查询。4.5 性能优化与卡顿排查的实战方法论视频类App的页面性能直接影响用户留存。面试中关于性能优化的提问往往不局限于理论而是会给出一个具体场景要你提出排查和优化方案。最经典的一个问题是“如果在滚动一个图片较多的列表时出现卡顿你会从哪些角度排查和优化”一般可以从这几个层面拆解主线程是否做了耗时操作比如文件读写、JSON解析、图片解码是否都放到了主线程。是否存在离屏渲染比如设置圆角与阴影时是否使用了产生离屏渲染的方式。Cell的复用机制是否正确dataSource方法里是否频繁创建新对象。列表项的高度计算是否做了缓存无约束计算量大不大。图片的尺寸是否超过控件尺寸大图加载时有没有降采样。排查工具方面可以用Instruments的Time Profiler查看主线程的耗时函数用Core Animation的Debug菜单查看离屏渲染的黄色标记用Leaks检测内存泄漏。我在实践中发现很多“卡顿”问题并不是单一原因造成的而是多个因素叠加。比如图片解码在主线程做一次加上Cell复用逻辑里频繁创建NSDateFormatter叠加起来就可能导致掉帧。所以排查的时候不要只看一个点要按图索骥地逐层排除。优化方案里有几个公认有效的手段使用UIGraphicsBeginImageContextWithOptions对图片做降采样用UIBezierPath的方式绘制圆角高度缓存通过UITableViewDelegate的estimatedHeightForRowAtIndexPath配合计算缓存实现频繁使用的对象通过复用池管理避免反复创建。5. 从面试真题看视频类App的业务侧重5.1 播放器相关的隐藏考点爱奇艺的iOS面试有一个特点虽然JD上没有明说但面试官很关注候选人对播放器相关领域的理解。毕竟视频类公司的核心就是播放体验。面试中如果聊到项目里的视频播放器面试官一般会追问几个方向如何实现视频预加载AVPlayer的缓存机制是什么样的播放失败时如何处理网络错误如何协调播放器与业务页面之间的生命周期特别是最后一个问题实际工程中经常遇到视频正在播放用户滑走了页面如果播放器没有正确暂停和释放轻则声音还在播放重则导致内存暴涨甚至崩溃。合理的做法是将播放器的生命周期和页面控制器的生命周期绑定在viewWillDisappear、viewDidDisappear中做暂停和释放并在dealloc时移除所有通知监听。对校招同学来说即使没有做过播放器相关开发建议也提前了解AVFoundation框架的基础类比如AVPlayerItem的播放状态监听、AVPlayerLayer的渲染方式以及AVAssetResourceLoaderDelegate在自定义缓存方案中的使用。这些知识即便面试时没被问到写进项目经历里也是巨大的加分项。5.2 动态化与跨端方案在面试中的出现概率2018年正值React Native和Weex等跨端方案火热爱奇艺的iOS面试中对动态化和跨端开发也表现出一定的关注度。面试官有可能问你对跨端开发的看法以及是否了解JSPatch或React Native的原理。这类问题的考察重点不是“你会不会用某个框架”而是“你是否理解原生和跨端之间的边界”。需要清醒地认识到跨端方案在业务开发效率上有优势但性能和原生体验始终存在差距。特别是在视频播放这类性能敏感的场景里核心播放器往往仍然是原生实现跨端页面承载的更多是业务展示层。面试时如果能把这个问题分析得客观全面反而容易给面试官留下好印象。5.3 用户行为埋点与数据上报的设计思路视频App有非常强烈的数据驱动需求因此埋点方案也是面试中可能涉及的考察点。面试官可能会问如果让你设计一套App内统一的埋点SDK你如何实现要点包括事件模型的抽象、缓存策略、上报时机的选择、网络状态判断、以及数据的批量压缩上报。我当时的思路是将埋点信息定义为统一的事件对象包含事件名、参数、时间戳和页面上下文上报时先写入本地数据库避免影响主线程和主流程启动时或到达指定条数、指定时间间隔时批量上传上传失败时要有重试机制和流量控制避免对主业务网络造成冲击。6. 备战策略与避坑清单6.1 复习方向上最容易犯的三个错误结合我和身边很多求职者的经验iOS校招备战中比较容易走偏的地方主要有三个。第一只刷面试题不看源码。很多同学喜欢背《iOS面试题合集》能说出weak的底层实现但问到他项目里为什么会出现循环引用、用什么工具排查时却答不上来。面试官很容易分辨你是“理解后能灵活运用”还是“纯背诵”。比较务实的做法是把面试题当成一个索引每个问题都追到源码或官方文档去验证一遍。第二忽略操作系统和网络等基础学科。iOS岗位虽然是客户端方向但大厂的面试几乎不限制在移动端技术栈。TCP拥塞控制、进程与线程的关系、虚拟内存与物理内存的映射这些计算机基础知识的题目出现频率非常高。即便面试官当场不直接提问这些知识也会成为你理解iOS机制的内功。第三项目复盘不够深入。很多同学写项目经历时只写结果不写过程导致面试被问到“你做这个方案时有没有考虑过其他替代方案”时无言以对。因此每个写在简历上的项目至少要按照技术选型思考、实现难点、性能对比、优化前后数据等维度做一次限时演练。6.2 临场面试的沟通技巧与心态调整技术面试不仅是“答题”更是一场技术沟通。面试官提出一个问题本质上是在给你机会展示你的知识深度和思维路径。一个非常实用的技巧是先说结论再展开细节。比如被问到“怎么优化tableView滑动卡顿”可以先说“我会从主线程耗时、离屏渲染、Cell复用、图片解码和高度计算五个方面排查”然后再逐项展开。这样面试官能第一时间知道你的分析框架也更容易跟随你的思路。当遇到不会的题目时不要硬编答案。坦诚说“这块我没有深入实践过”之后把自己能理解的部分说清楚也是一种有效回答。面试官更在意的是你在面对未知问题时有没有分析线索而不是能否给出完美答案。比如被问到“如何用Instruments分析内存泄漏”时如果没实际用过可以这样说“我目前只了解了基本操作但根据我的理解它应该是通过记录对象分配和释放的信息来寻找只分配未释放的对象的……”这种表达方式能体现出能力和诚实的平衡远比硬编答案要可信。6.3 终面与HR面如何展示自己的匹配度终面通常是技术Leader或总监级面试这一轮的考察重点不再是具体知识点了而是思维格局、业务理解和潜力判断。面试官可能会问“你觉得视频App未来还有什么可以创新的方向”、“如果让你设计一个新功能你会怎么设计”这类开放式问题。回答的关键是不必拘泥于细节而要多展示从用户价值出发的思考过程说明你的方案能解决什么真实痛点、需要哪些技术支撑、如何衡量效果。HR面相对轻松但也不能掉以轻心。HR会考察你的求职动机、团队协作能力、以及对加班和业务压力的预期。诚实表达自己的职业规划同时展示出对这个行业和这份工作的热情通常就能顺利通过。我当时还被问到“除了爱奇艺你还在面试哪些公司如何选择”这类问题。用真诚的态度说明自己看重技术成长、业务规模和发展方向同时不要贬低其他公司就显得比较得体。7. 我在整个过程中的经验和总结复盘完整场爱奇艺秋招iOS岗位的流程我最大的体会是大厂校招并非不可逾越但需要有针对性的准备。所谓“针对性的准备”不是收集一百道面试题来背而是真正吃透iOS核心知识点并把自己做过的每一个项目都盘到滚瓜烂熟。面试官考察的不是你会不会某个API而是你是否具备独立解决复杂工程问题的能力。第二个很深刻的感受是视频类公司的面试题紧扣业务场景从播放器、缓存、弱网到埋点这些问题背后反映的是真实业务中每天都在发生的痛点和挑战。如果你能在校招阶段就理解这些业务场景对技术选型的牵引作用不仅面试时更加从容入职后也能更快进入状态。最后一个想分享的小建议无论面试哪家公司都记得准备一个“反向提问”的环节。面试官问你“有什么想问我的”时不要浪费时间问薪酬福利而是问团队的技术栈、iOS端的业务复杂度、团队目前面临的挑战、对新人有哪些培养计划等。这些问题既能让面试官感受到你的诚意也能帮你判断这家公司是否真的适合自己。希望这份复盘能对正在准备iOS校招的同学有所启发。面试是一条没有捷径的路把每一项基础知识、每一个项目细节都吃透offer自然会来。