网易iOS校招提前批笔试考点复盘与备考攻略 📅 发布时间:2026/9/1 6:29:15 👁 浏览次数: 网易2023校招提前批的iOS开发工程师岗位笔试应该是很多移动端方向同学今年秋招的第一场硬仗。我前段时间刚把这场笔试完整复盘了一遍整理了考点分布、题型套路和一套可以直接照抄的备考路线今天抽空写出来分享给准备投大厂iOS岗的学弟学妹也顺便给自己留一份存档。这篇文章不打算只讲“考了哪些题”这种一次性信息而是想帮你搞清楚一件事网易这类互联网公司的校招笔试到底在用什么标准筛选iOS方向的候选人。把这个问题想明白了你后面无论投哪家路子都是通的。1. 提前批笔试整体情况先搞清这场考试在考什么很多同学拿到笔试通知的第一个动作就是疯狂刷LeetCode手速是练上去了但一进笔试系统就懵了——怎么还有那么多选择题怎么还有简答题怎么一道算法题都没见到这就是典型的“没搞清规则就上场”。1.1 网易校招提前批 iOS 岗的笔试定位与时间安排网易的提前批笔试一般安排在7月底到8月中旬具体时间以邮件和短信通知为准。相比正式批提前批的笔试更偏向“圈定种子选手”流程更短、面试节奏更快有些部门甚至笔试通过后一周内就会约面。从岗位定位看iOS开发工程师提前批要求候选人具备扎实的计算机基础、iOS平台开发经验以及一定的工程落地能力。这里有个很容易被忽略的点网易的笔试不是纯刷人而是分级。它不会要求你把所有题目都做对但会根据你的得分把候选人分为“免面试直接实习”、“进入面试”、“进入备选池”几档。所以你要做的不是满分而是尽可能多地踩中得分点。1.2 笔试平台与题型分布网易这几年校招笔试一般用的是自研或第三方在线笔试系统摄像头监控、屏幕录制、禁止跳出页面这些常规操作都有。题型上我的体感分布大概是这样的题型数量分值占比考察方向单选题15-20题20%-25%计算机基础、Objective-C/Swift基础、iOS框架常识多选题5-8题10%-15%边界情况判断、多知识点组合考察编程题2-3题40%-50%算法与数据结构、字符串/数组/树相关简答题/设计题1-2题15%-20%iOS内存管理、架构设计、问题排查思路这个分布不一定每年完全一样但大方向是固定的。这里要提醒一句别把宝全押在编程题上。我见过很多同学整份试卷算法题写得漂亮但选择题错了一半最后总分反而被拉下去。笔试系统是按总分排名的每一类题都值得认真对待。1.3 考核能力模型不只是刷题还看工程思维网易对校招iOS候选人的考察我个人总结下来是三角模型基础扎实计算机通用知识、平台熟悉iOS特性与框架、工程素养排查问题与架构设计的能力。为什么强调工程素养因为笔试不仅仅筛“会写代码的人”还要筛“能干活的人”。比如简答题里给你一段内存泄漏的代码让你分析或者问你“App启动流程中从main函数到第一个页面渲染完成了哪些事”这些题目没有标准答案但能看出你有没有真正做过项目、调试过问题。后面我会细讲怎么在这些题目上拿分。2. iOS 方向核心考点拆解算法、语言、系统三线并进2.1 算法与数据结构校招笔试的硬通货网易笔试的编程题难度大约在LeetCode中等偏上不会刻意出难题但会在常见题上加一些变形。我复盘下来出现频率最高的几类是字符串处理类回文串判断、字符串匹配、括号匹配、最长公共子串这类题考察的是对边界条件的敏感度。数组与双指针有序数组合并、三数之和、滑动窗口最大值双指针是移动端笔试最高频的技巧没有之一。二叉树与递归层序遍历、最近公共祖先、路径总和注意题目经常不给完整树结构需要自己构建。动态规划入门不是那种偏难怪的DP更多是背包问题、打家劫舍、股票买卖这类模板题。这里有个关键心得笔试编程题不要追求最优解要追求“能通过全部测试用例”的解。网易的判题系统会给多组测试用例包含边界情况。你写出O(n²)的解法可能能过大部分用例但一旦数据量上来就超时判题系统会直接告诉你“部分通过”。所以备考时至少要知道每个高频题型的标准解法和时间复杂度不能只知道暴力解。2.2 Objective-C 与 Swift 语言基础语法背后是内存管理网易的笔试选择题里语言基础占了很大一块。这里想特别强调它考察的绝对不是“这个API怎么拼”这种死记硬背而是语言底层机制。以Objective-C为例以下几个点几乎年年考属性关键字组合atomic、strong、weak、copy、assign各自由什么场景线程安全与性能如何取舍。这题不是考你会不会背而是考你有没有理解“atomic 并不保证对象操作安全只保证属性的存取安全”。Block 与循环引用给一段用了self的 Block 代码问会不会泄漏、怎么解决。要答上__weak、__strong的组合用法以及weak-strong dance的适用场景。消息发送与转发机制objc_msgSend的流程、resolveInstanceMethod、forwardingTargetForSelector、methodSignatureForSelector这些方法什么时候被调用作用是什么。Swift 方面重点准备值类型与引用类型、逃逸闭包、协议与泛型、可选类型底层实现这几个方向。笔试不会考你SwiftUI的具体用法但会考struct和class在拷贝时的行为差异这是区分“用过 Swift”和“懂 Swift”的试金石。2.3 操作系统与计算机网络容易被忽略的送分点很多iOS方向的同学对操作系统和网络不太上心觉得“我又不做后端学这个干嘛”。但笔试里这两块占比不低而且相对算法题来说更容易拿分属于性价比极高的送分区域。操作系统高频考点进程与线程的区别iOS中GCD队列对应到操作系统的调度模型是怎样的。死锁产生的四个必要条件以及如何避免。虚拟内存与页面置换App闪退时常见的EXC_BAD_ACCESS底层是什么原因。计算机网络高频考点TCP 三次握手和四次挥手为什么要四次。HTTP 与 HTTPS 的区别SSL/TLS 握手的大致流程。GET 与 POST 的区别注意不是“GET 有长度限制”这种谣言而是语义和幂等性上的差异。我备考时把计算机网络只复习了三次握手、HTTP报文结构、HTTPS加密流程三大块结果笔试里确实碰到了。这部分别丢分真的可以在总分里帮你拉开不少差距。2.4 iOS 框架与架构设计拉开差距的关键区域这是网易iOS岗笔试最体现区分度的部分。选择题和简答题里会涉及RunLoop 与 TimerNSTimer在滑动UIScrollView时为什么不准应该怎么处理常驻线程怎么实现这些题目考察的是对RunLoop运行模式Default、Tracking、Common的理解。内存管理与 AutoreleasePool自动释放池什么时候创建、什么时候销毁__autoreleasing修饰符作用历史版本的 MRC 到 ARC 的迁移逻辑。UIStackView 与 Auto LayoutiOS 11 之后的布局特性、UIStackView在动态增删子视图时的约束更新时机这是个很新的考点说明出题人会跟着系统版本走。iOS 架构模式MVC、MVVM、MVP 的差异与适用场景双向绑定怎么实现。网易的面试官明显希望候选人不是“只会搭界面”而是能讲清楚数据流和职责边界。WebView 与 Native 交互JavaScriptCore、WKScriptMessageHandler 的使用以及 WKWebView 的内存问题。这里给一个建议别只背概念要想“这个机制在实际开发中解决过我的什么问题”。比如UIStackView不是为了替代 frame 布局而是为了解决动态界面中约束计算复杂的问题RunLoop不是为了面试装逼而是为了理解SDWebImage在滑动时为什么能优化图片加载。笔试简答题没有标准答案但阅卷人一定能看出来你有没有真实开发体感。3. 编程题的实战拆解从读题到通过用例的完整路径3.1 编程题常见套路与解题模板编程题时间紧、分值高最怕的是思路不清就开始敲代码。这里分享一个我实战中总结的四步法每一步都有明确目标可以把做题过程变得像一个流水线。第一步读题划出输入输出边界。先把题目中“参数范围”、“时间限制”、“空值处理”这些关键字圈出来。比如题目说数组长度不超过10^4那O(n²)解法基本可以放弃至少得设计O(n log n)的算法。第二步写测试用例手工跑一遍。不要急着写代码先在注释里写三个用例正常输入、边界输入、空输入。这三个用例能帮你确认自己的理解没有跑偏也能在最后验证代码时直接派上用场。第三步选数据结构定复杂度。根据用例规模确定用什么数据结构——需要快速查找用哈希表需要有序用二叉堆需要维护窗口用双端队列。这一步决定了代码主框架。第四步编码做一次纸面走查。写完后不要直接提交先手工把你的测试用例代入代码逻辑走一遍往往能发现不少笔误。这个流程看起来步骤多但熟悉之后每题能节省5-10分钟因为减少了“写完发现思路错了”再重来的代价。3.2 边界条件与复杂度意识一个真实案例的教训笔试编程题最常见的失分点就是边界条件而不是算法本身。我想用一道“字符串压缩”题来复盘——这类题看起来简单实际上坑很深。题目大概是给一个字符串把连续重复字符压缩成“字符次数”的形式比如aaabbc转成a3b2c1。暴力做法很简单遍历一次就行。但判题系统里有一堆坑输入为空字符串时输出应该是什么有些题是空串有些题要求原样返回。单个字符出现一次要输出a1还是a不同题目要求不同。字符串长度极大时拼接String会不会造成性能问题在 Python 里连续可能没问题在 Java 里每次拼接都会产生新对象。我当时就栽在“单个字符输出格式”这个边界上一个用例没过扣了不少分。从那以后我养成了习惯每次写完算法题先检查所有数组索引的上下界、空值、长度1的情况这三类边界检查几乎能覆盖90%的隐藏用例。3.3 笔试环境下的 Debug 技巧本地没问题提交就错在线笔试系统最常见的痛点是本地IDE跑得好好的粘贴进笔试系统就报错或用例失败。这里有几个实用的排查顺序可以帮你快速定位问题。先查输入输出格式。笔试系统通常用标准输入输出stdin/stdout但有些同学用本地IDE的测试模板最后打印了额外的调试信息导致解析失败。提交前一定检查有没有多余的print、有没有把调试数据混进输出。再查类名和方法签名。有些平台要求主类名固定为Main有些要求方法名和参数类型跟题目严格一致。LeetCode刷多了的人最容易在这里翻车——LeetCode只让你写核心方法但笔试平台要求完整读入和输出。最后查内存和超时。在线判题系统会限制内存和CPU时间。如果你用了递归但没处理深度或者循环里用了超高复杂度的操作就会超时。这时候优先考虑用迭代替代递归或者加缓存做记忆化搜索。这几点听起来简单但每场笔试都会有一批人因为这些低级问题被淘汰。把检查项列成清单提交前一分钟逐项过一遍效率很高。4. 笔试题型逐个击破单选、多选、简答的答题策略4.1 选择题的排错法不是在猜是在做排除选择题是最容易在“似懂非懂”之间丢分的题型。很多iOS方向同学复习时喜欢背结论比如“weak 修饰的变量在对象释放后自动置为 nil”但笔试选项里会出现一个看似正确、实则混淆的表述“weak 修饰的变量在对象释放后自动向对象发送 release 消息”——这就是挖坑。我的应对方法是把选择题当成判断题来做逐个选项分析把确定的错误选项划掉。具体操作是看到“一定”、“必须”、“只能”这类绝对化词大概率是错的因为工程问题通常存在多种解法。看到两个选项内容互相矛盾其中一个往往是对的。涉及数值或系统版本时回忆你实际开发中遇到过的行为而不是背文档。比如“iOS 11.0 及以上支持”这类描述通常考核你对系统适配边界的认知。做选择题时宁可在不确定的题上花2分钟做排除也不要凭着第一感觉直接选。因为单选题选错就零分多选题更是少选不得分准确率比速度重要。4.2 简答题的踩分点把设计过程写出来网易iOS笔试的简答题一般会让你“分析一段代码的问题”或“设计一个模块方案”很多同学在这种题上只会写一两句话比如“这里循环引用了”得分自然很低。这里分享一个踩分点框架现象描述 → 原因分析 → 解决方案 → 延伸思考四个层次写全分数基本能拿满。以内存泄漏分析题为例现象描述ViewController持有了一个BlockBlock内部又使用了self导致dealloc不执行。原因分析self被Block强引用Block又被self的属性强引用形成引用环。解决方案在Block外声明__weak typeof(self) weakSelf self;在Block内再转成__strong使用防止在回调执行过程中对象被提前释放。延伸思考哪些场景下使用weak-strong dance仍然不够比如延时操作中对象可能已经被释放需要考虑是否要做空值判断或取消操作。你看第4层延伸思考才是真正拉开差距的地方因为它体现出你不只是背了解决方案而是理解了这个方案的限制。简答题的答题框一般很大别舍不得写按这个框架展开写满。4.3 时间分配提前批笔试最容易犯的错我见过不少同学做笔试题的顺序是先做编程题卡住了死活不出来最后选择题乱蒙简答题空白。这种策略是最亏的。我的建议是反着来先快速浏览全卷把能拿的分先拿到手。具体的时间分配方案可以参考时间段任务说明前5分钟浏览全卷快速判断编程题难度标记必做的2题5-30分钟做选择题用排除法不确定的题先标记跳过30-40分钟做简答题按踩分点框架写满抢性价比最高的分40-80分钟做编程题先做简单题再做难的保证每道题都有思路最后10分钟检查检查输出格式、边界条件、有无遗漏题编程题卡在15分钟以上还没有完整思路时果断先放弃去做其他题。你卡住的题别人大概率也卡住但选择题和简答题的失分是真正拉开差距的地方。5. 备考路线与资料清单一个月从投简历到上考场如果你拿到笔试通知才开始复习时间只有7-15天那我推荐下面这条高强度路线。如果时间更充裕可以每阶段多花一周做深入项目复盘。5.1 第一阶段刷完高频算法题建立肌肉记忆算法题不需要追求数量追求“每个高频题型有一道能秒杀的模板题”。我推荐的必刷清单是数组类两数之和、三数之和、最大子数组和、合并区间字符串类最长回文子串、无重复字符的最长子串、字符串相加链表类反转链表、合并两个有序链表、环形链表二叉树类二叉树层序遍历、二叉树最近公共祖先、路径总和动态规划类爬楼梯、打家劫舍、最长递增子序列这15道题建议每天刷3-4道关键不是刷完而是刷到能闭着眼写出核心逻辑。笔试时时间紧张你不可能临场想思路必须是看到题目类型就直接映射到解法模板。5.2 第二阶段iOS 八股文与源码阅读八股文虽然被很多人吐槽但校招笔试确实在考。建议准备一份自己的问答笔记每个知识点用“一页纸”总结定义、底层原理、使用场景、常见坑。以下是我整理的iOS笔试高频八股清单可以直接按这个列表查漏补缺OC消息发送机制和 forwarding 流程ARC 下的内存管理规则、weak 的实现原理SideTable、弱引用表Block 的类型全局、栈、堆与捕获变量的规则RunLoop 的 source0/source1/timer/observer 事件源GCD 队列类型、死锁案例、信号量与组队列KVO/KVC 底层实现、KVO 自动触发与手动触发App 启动过程、dyld 加载流程、load 与 initialize 的调用时机类扩展Extension与分类Category的区别分类如何加载方法iOS 沙盒目录结构UserDefaults 与 Keychain 的差异WKWebView 与 UIWebView 对比以及内存问题的处理方式这10个点几乎覆盖了网易笔试选择题和简答题70%的iOS方向考点。每个点不用读源码看完但至少要知道它解决了什么问题和同类方案相比有什么优劣。5.3 第三阶段模拟笔试与错题复盘考前2-3天一定要做至少一次完整模拟笔试。不要挑单道题做要完整掐时间、用笔试平台牛客、赛码等做一套题。这个过程的目的有三个第一适应电脑写代码的环境。很多人平时用IDE有自动补全和编译提示笔试系统没有连方法签名都得手打速度会明显变慢。第二训练时间分配。模拟时你会发现编程题比自己预估的更耗时这时候你需要决定哪些题要取舍形成自己的策略。第三建立错题库。模拟笔试后的复盘比做题本身重要。把每道错题的原因归为三类知识点不熟、边界条件遗漏、读题不仔细。然后针对最多的一类做专项强化。5.4 我被问过、也最后悔没有提前准备的几件事最后想分享几个我总结出来的“考前容易忽略、考后非常后悔”的点这几个点不一定是高分点但确实是让人丢分的地方。第一个是没有提前验证笔试环境的兼容性。我之前用Safari打开笔试链接结果页面提示需要切换Chrome换浏览器又花了5分钟。建议笔试前一天就把浏览器装好、摄像头权限打开、网络环境测一遍。第二个是简答题没有控制字数。我第一场笔试简答题写嗨了一道题写了600多字挤占了后面编程题的时间。后来才明白简答题是按踩分点给分不是按字数给分。写清四个层次就行不用凑篇幅。第三个是没有复习自己简历上写的方向。网易笔试比较务实有可能会考察你简历里提到的技术栈。我在简历里写了“熟悉CoreBluetooth蓝牙开发”结果简答题真的出了一道蓝牙状态管理的场景题。如果你简历里写了某个方向笔试前一定要把这个方向的基础概念过一遍不然很容易在细节上露馅。6. 从笔试到面试考完之后的几件小事笔试结束后不要干等结果先把下面几件事做了对你后续面试帮助非常大。把笔试题目整理成文档。趁记忆还新鲜把选择题中不确定的题目、编程题的解决思路、简答题的答题框架都记录下来。网易笔试题目有时候会漏到面试环节面试官可能会问“你当时笔试这道题为什么这么答”。针对薄弱点做专题复习。笔试后一般有3-7天的等待期这时候不需要全面铺开只需根据笔试暴露出的问题做定向补强。比如我发现自己对多线程死锁的题老是绕不清就用一整天把GCD死锁、线程锁、信号量全部重新整理了一遍。准备项目复盘和自我介绍。笔试通过后很快就会约面试面试大概率会问“你在项目中遇到过最棘手的问题是什么”这种问题不是即兴发挥能答好的需要提前把项目的技术难点、排查过程、最终的方案效果写成一页纸。我个人在实际操作中的体会是校招笔试只是一个门槛不是擂台。它的核心目的不是让你考满分而是让公司以最低成本筛掉基础不过关的候选人。所以备考的性价比排序是先保证选择题正确率再拿稳简答题踩分点最后用编程题冲刺高分。你不需要每道题都会但你会的题务必拿满。最后再分享一个小技巧笔试过程中如果编程题实在毫无思路可以写一个暴力解法并在代码注释里写明“数据量小时可通过”。很多判题系统即使超时也会先跑小数据用例暴力解至少能帮你拿到部分用例的分数好过交白卷。希望你顺利通过笔试咱们面经见。