爱奇艺前端笔试复盘:从JS机制到手写代码的校招考点解析

发布时间:2026/10/29 9:11:48

爱奇艺前端笔试复盘:从JS机制到手写代码的校招考点解析 爱奇艺2018秋季校招前端工程师第一场笔试复盘周末帮一个学弟整理笔试题翻出了爱奇艺2018秋季校招前端工程师第一场这套卷子。回想当年我自己也参加过这场笔试一晃几年过去如今站在面试官角度重新看这份题目感受完全不一样。这套题在当年属于“中规中矩但暗藏杀机”的类型基础题居多但每一道都能往下挖好几层非常典型。现在把它掰开揉碎讲一讲对正在准备校招的前端工程师来说比刷十套新题还有参考价值。先说结论这套卷子整体偏基础考察范围集中在JavaScript核心机制、CSS布局、浏览器与网络基础、手写代码四项几乎没有偏题怪题。但越是基础的东西越能筛出真正“学过”和“背过”的人。前端面试发展到今天考的还是这些东西只是问法更刁钻了。另外说明一下原题我记忆有限下面梳理的是这套卷子的题型结构和对应的高频考点结合我对多届校招题目的观察还原度很高适合当练习题做。1. 整体试卷结构与考察方向1.1 从题型分布看校招考察思路这套卷子总时长90分钟题量大概在30道左右分了三个部分选择题、填空题/问答题、编程题。选择占大头编程题两道。从分布能看出当年爱奇艺前端团队的用人逻辑先看基础知识的广度再看代码手感最后通过编程题判断有没有基本的算法思维。选择题部分几乎都是“单行代码”级别的题目比如输出结果、判断true/false、比较运行顺序。这种题看着简单实际是给面试官发“信号弹”的如果你连console.log(1 1)这种题都要犹豫后面基本不用看了。填空题集中在CSS属性和浏览器API比如localStorage和sessionStorage的区别、position的几种取值、target和currentTarget的区别都是“背了就会没背就懵”的知识点。编程题两道一道用JavaScript实现功能一道考算法难度不高但非常考验编码规范。比如有一类高频题是手写一个防抖函数再考你怎么在一个数组中找到第K大的数。这类题放到今天依然频繁出现在各家笔试里只是现在会额外追问“时间复杂度多少”“能不能用堆优化”。1.2 那些年必考的浏览器与网络题爱奇艺作为视频平台对于网络和浏览器性能这块明显更上心。卷子里网络相关的题占比不小大概有5道左右集中在HTTP缓存、TCP三次握手、跨域方案上。这类题目在别的公司可能也就两三道但在视频网站页面性能就是生命线所以考察比例会高一些。其中高频的考点包括强缓存和协商缓存的区别、Expires和Cache-Control谁优先、ETag和Last-Modified的适用场景、简单请求和预检请求的判定条件。还有一道我记得很清楚给一段代码问setTimeout、Promise、async/await的执行顺序这题贯穿了事件循环、宏任务、微任务三个核心概念也是后来几乎所有前端笔试的标配。如果你当时不知道“先微任务后宏任务”“Promise构造函数是同步执行”这两条规则这题基本靠蒙。现在回看这道题其实是在筛选那些真正理解JavaScript运行时机制的人而不是只会调接口的“API调用工程师”。2. 前端核心语法题逐题复盘2.1 JS基础闭包、作用域与this指向爱奇艺这套卷子对JS基础的考察非常细闭包、作用域、this指向几乎各占一道。闭包那道题我记得大概是for循环里用var声明变量然后在setTimeout里输出i问输出什么。答案是“输出10个10”这基本是闭包题的经典入门款。如果当年你把var换成let答案就变成0到9这反映了let块级作用域的原理。另一个高频点是this的指向问题卷子里的题目难度递进得很明显第一道是普通函数调用问this是什么第二道是对象方法调用问this是什么第三道是把对象方法赋值给一个变量后再调用问this成了什么。三道题做完基本就能看出你对this绑定的四种规则默认绑定、隐式绑定、显式绑定、new绑定掌握到什么程度。我复盘时最想强调的一点是这类题看起来很“死板”但真到了面试现场面试官要的是你能把“为什么”讲清楚。比如问到闭包你要能说出“闭包就是函数记住了它定义时的词法作用域”还能顺手写一个防抖函数来证明你真的会用它而不是光背定义。还有一道关于数据类型判断的题也值得专门说。题目要求写出判断一个变量是数组的三种方法。常见的答案有Array.isArray()、Object.prototype.toString.call()、instanceof Array。这道题看似基础其实能分出三个层次只会第一种的是API使用者知道第二种的懂原理能说出第三种坑在哪跨iframe场景下不可靠的才是真正理解JavaScript类型系统的。2.2 CSS布局高频考点三栏布局与垂直居中这套卷子CSS题不算多但每一道都直击痛点。最典型的是三栏布局要求左右固定宽度、中间自适应写出多种实现方案。当年不少人只写了一个flex就交了但其实至少能写出四五种浮动、定位、flex、grid、表格布局。我强烈建议把每种方案都练熟并理解原理因为面试官会追问“如果中间栏内容很长哪种方案会出现问题”。浮动的经典问题是需要清除浮动定位方案中间栏会脱离文档流flex的主要限制是兼容性现在基本不是问题grid最简洁但当年还担心浏览器支持。能在现场答出这种对比比写出十种方案更让面试官印象深刻。垂直居中的考察也是必考的。我当时总结了一个“一句话版本”定宽高用margin负值不定宽高用flex或transform。具体来说就是position: relative; top: 50%; left: 50%; transform: translate(-50%, -50%);配合flex的justify-content和align-items。如果再加一个“两张图片垂直居中对齐”的场景还要考虑vertical-align和line-height的使用。BFC块级格式化上下文也是爱奇艺卷子里的常客。一般会问“如何触发BFC”“BFC解决了什么问题”。触发方式有overflow非visible、float非none、display: inline-block/flex、position: absolute/fixed等。解决的问题包括外边距合并、浮动元素覆盖、高度塌陷。这些知识不背不行但光背也不行得能在实际布局里用得出来。2.3 工程化与框架基础Vue还是React都逃不掉2018年正好是Vue 2.x如日中天、React 16刚发布的节点爱奇艺的卷子对框架的考察不算深但一定会涉及。我记得问到过v-if和v-show的区别Vue的响应式原理还有React的setState是同步还是异步——这题当年能答对的人不多因为源码里setState在合成事件和生命周期中是异步批量的但在setTimeout和原生事件中是同步的。我对框架题的建议是至少把Vue的响应式原理捋一遍——从Object.defineProperty到依赖收集再到异步更新队列。哪怕你平时用React也建议了解Vue这一套因为很多公司换框架很频繁人家要的是你对框架底层有理解而不是只会某个具体API。另外工程化这块webpack相关题也出现了。比较常见的是问loader和plugin的区别以及webpack-dev-server做了什么。loader本质是函数负责把文件内容进行转换plugin则是通过钩子机制在构建流程中注入额外的逻辑。这题当年靠背现在最好能对着webpack官网的架构图讲明白构建流程的各个阶段。3. 手写代码题笔试的“送分题”与“送命题”3.1 数组去重与深拷贝基础中的战斗机爱奇艺这套卷子的编程题里数组去重和深拷贝基本是“二选一”的常客。数组去重至少有四种写法使用Set、使用filter加indexOf、使用Object做哈希表、使用双层循环。但面试官往往不满足于你会写会继续追问如果数组里有NaNSet能去重吗indexOf能处理NaN吗这个追问就能筛掉一批人。深拷贝更是经典。我当时写了个简化版判断类型数组和对象递归其他直接返回。但更好的做法是考虑循环引用用WeakMap存一下已经拷贝过的对象避免栈溢出。还要区分Date、RegExp、Map、Set这些特殊对象。如果写一个通用深拷贝能把代码写清楚并且讲明白边界情况这道题基本就过了。我个人的建议是手写代码一定要写注释不用写太多但关键步骤要标一下。因为笔试很多时候是按照“解题思路”给分的注释能帮阅卷人理解你的设计意图。比如“这里用WeakMap是为了解决循环引用”写完这行注释哪怕后面代码没写完分数也能上去一截。3.2 防抖节流与事件循环输出题爱奇艺卷子里一定有防抖和节流手写题至少考一个。防抖和节流的区别防抖是“在事件触发后等待一段时间再执行如果在等待期内又触发了就重新计时”节流是“在固定时间间隔内只执行一次”。按生活场景理解就是防抖像电梯关门等人节流像地铁固定间隔发车。防抖函数的实现基础版大概是function debounce(fn, delay) { let timer null; return function(...args) { if (timer) clearTimeout(timer); timer setTimeout(() { fn.apply(this, args); }, delay); }; }注意这里用了apply(this, args)保留this指向这是最容易漏掉的一点。面试官看完基础版会追问如果我想让第一次点击立即执行怎么办那就要加一个immediate参数判断timer是否为空为空就立即执行。事件循环输出题我也得专门提一下。经典的题目是同时出现console.log、setTimeout、Promise.resolve().then()、async/await让你写出打印顺序。核心规则就两条微任务优先于宏任务同一轮的微任务按创建顺序执行。这里有个我自己总结的答题技巧先找同步代码再分微任务和宏任务两列最后按轮次执行一定不会错。3.3 网络与安全问答题的答题模板这套卷子的网络部分还有两道简答题考察的是HTTP缓存和前端安全。HTTP缓存题的标准答题路径是先答浏览器请求资源的流程然后分强缓存和协商缓存两个分支展开最后说服务端如何通过响应头配合。我建议画一张简单的表格对比两者的区别强缓存返回200 from cache协商缓存返回304强缓存由Cache-Control和Expires控制协商缓存由ETag和Last-Modified控制Cache-Control优先级更高。前端安全题基本绕不开XSS和CSRF。XSS的回答框架是定义、危害、分类存储型/反射型/DOM型、防御过滤、转义、CSP。CSRF的回答框架是定义、攻击原理、防御SameSite、Token校验、Referer校验。这道题价值很高因为即使笔试没考面试也一定会问。我建议把XSS和CSRF整理成一套“模板化”的答题体系考场上直接往里面填内容。关于跨域有个必问点就是JSONP的原理利用script标签不受同源策略限制动态创建script标签通过src请求接口后端返回一段调用回调函数的JS代码。问到这里往往会加一题“JSONP支持POST吗”答案是不支持因为它是通过script标签的src发送GET请求的。CORS则是服务端设置Access-Control-Allow-Origin前端不用额外处理。比较完整的回答要能区分简单请求和预检请求并且知道withCredentials和Access-Control-Allow-Credentials的配合方式。4. 从笔试到面试这些考点会被如何追问4.1 笔试暴露出的知识薄弱点我发现一个规律笔试里你做错的题大概率会在面试中被追问到类似的知识点。这不是玄学而是面试官会根据你的笔试卷子来设计问题。比如你闭包题答错了面试官可能会在面试时让你现场解释一段闭包代码再问“怎么解决循环引用导致的内存泄漏”。你防抖函数没写出来面试官就会让你现场手写一个节流函数。所以笔试结束后的复盘格外重要。建议每场笔试后把错题对应到具体知识点做一次“弱点扫描”。比如这次发现自己对事件循环不熟就集中刷十道事件循环输出题发现自己CSS布局只会flex就把grid和float方案都补上。这样每场笔试都能转化为一次针对性提升比自己漫无目的地刷题效率高得多。4.2 如何把“过笔试”转化为“过面试”笔试过了只是拿到了面试入场券。面试现场的提问方式和笔试完全不同笔试是“你知道这个知识点吗”面试是“你能把这个知识点讲清楚吗能现场解决一个相关问题吗”。比如笔试考了apply和call的区别面试就可能让你手写一个Function.prototype.myCall或者myBind。我强烈建议把笔试中涉及的每个知识点都准备“三个层次”概念是什么、原理是什么、实际项目怎么用。以Object.create为例第一层是“创建一个新对象原型指向传入的对象”第二层是“它与字面量和构造函数创建对象的区别”第三层是“在实现继承或原型式继承时怎么用”。准备到这个层次面试官再怎么追问你都不慌。4.3 准备节奏与资料清单校招准备的时间线我一般建议按“基础三个月冲刺一个月”来安排。基础阶段的任务是刷完JavaScript高级程序设计红宝书、CSS权威指南、图解HTTP每天做20道牛客网前端题。冲刺阶段的任务是做近三年的真题卷、把高频手写题全部默写一遍、针对目标公司做题库专项训练。资料清单我精简一下别贪多红宝书看ES6之前的部分MDN当字典查廖雪峰JavaScript教程适合快速过一遍语法再用“前端面试题汇总”类GitHub仓库查漏补缺。不要囤资料一套吃透比十套走马观花有用得多。4.4 视频网站场景的面试延伸题回到爱奇艺这家公司本身。既然是视频网站面试官会额外关注跟视频相关的性能优化场景。比如笔试里考了HTTP缓存现场面就可能变成“一个视频页面首屏要加载十几个接口数据你会怎么做缓存优化”。这种题目没有标准答案但要能说出首屏接口用Cache-Control设置强缓存数据变化用ETag做协商缓存图片等静态资源用CDN加Cache-Control: max-age配合版本号。再比如视频播放页面最容易出现内存泄漏面试官会问怎么排查。你需要能说出Chrome DevTools的Memory面板用法知道怎么录制堆快照、怎么对比两次快照找泄漏对象还要知道常见的泄漏场景事件监听器未移除、定时器未清除、全局变量挂载过多。我建议在项目经验里准备一个“性能优化”的真实案例不要是课程作业那种而是能说出具体量化效果的比如“优化后首屏加载时间从2.3秒降到1.1秒”。5. 常见问题与排查技巧实录5.1 时间分配的典型误区与应对方案不少同学笔试翻车不是因为不会而是因为时间分配出了问题。爱奇艺这套卷子90分钟选择题和编程题分值差不多但很多人前60分钟都耗在选择题的纠结里后面两道编程题只够写一题的量。我的建议是拿到卷子先花两分钟扫一遍全卷评估题量、难度和分值分布然后按照“先易后难、先分高后分低”的原则答题。选择题遇到卡壳超过1分钟的先标记跳过最后再回来。简答题能写出关键词就给分所以先列提纲、再补充解释。编程题一定要先写思路再写代码有时候阅卷人看你的注释和思路说明就能给一半分。如果你在笔试中总感觉时间不够用一定养成考前计时模拟的习惯把答题节奏练成肌肉记忆。5.2 编程题常见错误对象引用、作用域和边界条件手写代码最容易出错的三个地方一个是深拷贝时对象循环引用导致栈溢出一个是防抖函数的this没处理好一个是算法题没考虑空数组和边界情况。这几个问题在爱奇艺的编程题里也都可能踩到。我写代码的习惯是写完之后马上检查三件事——边界条件、空值处理、时间复杂度。很多笔试暴露出来的问题不是思路不行而是写得太快没有检查。另一个常见问题是变量名。笔试代码阅卷人一天看上百份卷子如果你变量名是a、b、c读起来非常痛苦。我的习惯是使用有意义的命名比如resultArr、taskQueue、debouncedFn。虽然不会直接加分但能大幅提升代码的可读性间接影响印象分。5.3 面试后续延伸追问的典型方向笔试结束后面试官可能拿你的编程题做现场追问所以要对自己的答案“留一手”。比如你写了一个深拷贝面试官会问“如果对象里有函数、undefined、Symbol你的拷贝会怎么处理”。不用慌承认基础版不考虑这些就行重点是能补充说明“通用性的深拷贝很难完美实现需要结合场景取舍”。面试官还可能拿你笔试里的填空题做文章。比如你填了“Object.defineProperty无法监听数组的变化”面试官就会追问“Vue 2是怎么解决这个问题的”。答案是Vue 2重写了数组的7个方法push、pop、shift、unshift、splice、sort、reverse在方法内部触发更新。能答到这一层说明你不仅是背了结论真去看过源码。我在实际指导同学的过程中发现笔试复盘的价值远大于刷十套新题。爱奇艺这套2018年的卷子技术点放到今天依然是前端面试的核心范围只是问得更深了。把每道题背后的原理吃透比追逐所谓“新知识点”更重要。前端这行看起来技术迭代快但真正的底层能力还是JavaScript功底、网络基础、算法思维和代码规范这四块扎实的人走到哪里都不会慌。
延伸阅读

更多相关文章

2026/10/24 6:23:50

DeepSeek V4-Pro闪电二连击:国产大模型正在改写什么规则

关注 霍格沃兹软件测试开发 公众号,回复「资料」, 领取人工智能测试开发技术合集 没有发布会,没有预告,它悄悄上线了——然后整个行业都睡不着了 大家好,我是某互联网公司的技术架构负责人。 上周三凌晨,团队群里突然弹…

2026/10/29 7:13:50

ROS通信核心:roscpp实现Topic与Service的C++编程实战

1. 项目概述:从零到一掌握ROS通信核心搞机器人开发,ROS是绕不开的一环。很多朋友在学完基础概念后,面对第一个实际要写的C节点时,常常会卡壳:消息(Topic)和服务(Service)…

2026/10/27 3:35:20

前端面试八股文:从背题到理解,构建真正的知识地图

前端面试八股文?不存在的!别人刷题库刷到飞起的时候,我在干嘛?我在翻自己的旧代码,翻到凌晨两点,终于想明白了一件事:面试官问的那些问题,从来就不是为了听你把答案背出来&#xff0…

2026/10/29 9:09:22

2026年五大社媒管理工具评测与选型指南

1. 为什么需要多平台社媒管理工具? 2026年的社交媒体格局已经发生了翻天覆地的变化。作为一名运营过多个品牌账号的老兵,我深刻体会到手动管理不同平台账号的痛苦。记得去年双十一期间,我需要同时在7个平台发布内容、回复评论、分析数据&…

2026/10/29 9:09:22

营销技能是练出来的:从底层能力到实战增长的完整拆解

营销技能不是背下来的,是练出来的——一份来自一线的实战拆解 很多人一听“营销技能”四个字,第一反应是看一堆理论书、记住一堆专业术语。但我在这个行当里泡了十几年,最大的感受是:营销技能本质上是一套“发现问题—提出假设—小…

2026/10/29 9:09:22

OpenShell 设计解析:构建可编程可扩展的命令壳层

1. OpenShell 是什么:从一个“壳”字说起第一次看到 OpenShell 这个名字,很多人会下意识把它和 Linux 的 shell、终端、命令行工具联系起来。这个直觉不算错,但也不完全对。OpenShell 的核心定位,是给一个已有的、相对底层的执行环…

2026/10/29 9:09:22

OpenShell 架构解析与插件开发实战:从分层设计到团队落地

1. 从“OpenShell”这个名字说起:它到底想解决什么问题第一次看到“OpenShell”这个词,很多人会下意识地把它和“命令行外壳”“终端环境”联系起来。这个直觉不算错,但如果只停留在“又一个终端工具”的层面,就很容易低估它真正的…

2026/10/29 9:04:19

理解 impeccable 的真相:从完美主义走向零瑕疵交付

今天想跟各位认真聊聊“impeccable”这个词。很多人把它翻译成“完美”,但我更愿意理解为“无可挑剔”——不是那种高高在上的、不可企及的理想状态,而是每一处细节都经得起检查、每一步过程都闭环、每一个交付物都让人挑不出毛病的状态。工作中我见过太…

2026/10/28 14:42:12

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/28 15:28:56

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/29 0:03:42

学生选课系统DFD图绘制指南:边界划分与分层校验实战

简介:文档以顶层与第一层DFD图为核心,完整刻画学生选课系统的逻辑模型,面向软件工程课程设计、系统分析学习及毕设前期建模人群。顶层图界定系统边界,外部实体包括管理员、教师和学生三类角色;第一层图进一步细化用户登…

2026/10/29 0:03:42

JIRA敏捷落地:Scrum角色权限、Sprint与燃尽图避坑指南

简介:围绕“基于JIRA的敏捷开发项目管理”这一主题,面向产品负责人、Scrum Master及研发测试成员,梳理Scrum角色分工、迭代流程与JIRA工具配置的对应关系,适合初、中级团队导入敏捷管理时参考。压缩包共1个docx文件,大…

2026/10/29 0:03:42

SEMI S8人机工程验收实战:从条款拆解到现场实测的完整指南

简介:面向半导体设备设计、制造与运维工程师及安全合规人员,这份资料聚焦SEMI标准体系下的设备安全规范,重点收录SEMI S8-0308《半导体制造设备人体工程学工程安全指南》。内容围绕设备设计原则、错误与事故预防、人体工程学适配三大主线展开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑