
1. 题型分布与考察重点解析1.1 客观题的整体结构单选、多选与判断360校招前端技术岗的客观题我当年考的时候是一套在线笔试系统题型主要分成三类单选题、多选题、判断题。整体题量大概在40到50道之间考试时间60到90分钟具体每年会有微调。客观题部分核心考察的不是你项目做得有多花哨而是基础扎不扎实、边界情况想得全不全。单选题一般占大头通常20到25道每道题考察一个独立的知识点比如下面哪个不是HTTP缓存相关的请求头、console.log(1 1)输出什么。这类题难度不大但考察面很广从HTML标签语义到浏览器渲染机制全覆盖。多选题是失分重灾区通常8到12道每题至少有两个正确选项多选、少选、错选都不得分。这类题目特别喜欢在哪些属于ES6新增特性、哪些操作会导致浏览器回流这种列举型知识点上做文章。说实话能把这部分题目做对的人基础是真的扎实因为多选题要求你对知识有完整的认知边界而不是模糊地知道大概。判断题相对简单一般5到8道但陷阱也不少经常在说法过于绝对这种地方挖坑。比如CSS的position属性值absolute的元素会脱离文档流这种题表面看是对的但如果选项里加一个完全、总是这样的绝对化词答案往往就是错的。提示客观题真正的难点不在单道题有多难而在于覆盖范围太广。前端知识点更新快校招客观题又喜欢考新旧结合需要在备考时兼顾经典基础JS原型链、闭包和现代特性ES2020后的新API、CSS新特性。1.2 高频考点权重分析哪些知识点出镜率最高根据我刷过的360历年真题和面经加上和几个进面同学的交流客观题的考点权重基本有个稳定的分布规律。JavaScript基础永远是第一大户能占30%到35%。这里面包含数据类型、作用域与闭包、this指向、原型与继承、事件循环、Promise、数组方法等都是重点中的重点。浏览器与网络是第二大块占20%到25%考察点是浏览器渲染流程、回流与重绘、HTTP与HTTPS区别、HTTP缓存机制强缓存与协商缓存、跨域解决方案、Web存储方案Cookie、localStorage、sessionStorage、IndexedDB等。这块内容360比较喜欢和实际场景结合考比如用户打开页面时从输入URL到页面完全展示中间经历了哪些过程这种综合性题目。CSS布局与页面样式占15%左右重点是盒模型、BFC块级格式化上下文、flex布局和grid布局、层叠上下文与z-index、CSS选择器优先级、居中方案、移动端适配rem、vw、媒体查询。需要特别注意的是360的CSS题不算特别难但考得很细腻比如margin: 0 auto为什么能水平居中它在flex容器里还有效吗这种稍微偏一点的就容易翻车。前端框架及其原理占10%到15%Vue和React都会涉及但深度不会太深主要集中在响应式原理、虚拟DOM与diff算法、生命周期、组件通信方式、key的作用、Hooks常见坑等。这里很少考源码级别但概念理解要到位。数据结构与算法基础占10%左右不考复杂的算法题更多是基础理论比如时间复杂度计算、常见排序算法的稳定性与复杂度对比、栈和队列的区别、二叉树遍历方式等。这部分是基本功但很多非科班的前端候选人容易忽略。HTML基础、性能优化、工程化、安全等零散知识点分摊剩下10%到15%包括HTML5新特性、语义化标签、script标签的defer与async区别、前端性能优化手段、webpack打包原理、XSS与CSRF攻击及防护方式等。1.3 为什么校招客观题这么设计考察的到底是什么搞清楚360为什么这样设计客观题比单纯刷题更有价值。客观题本身有天然的筛选逻辑。客观题靠统一的机器阅卷能在第一轮快速筛掉基础不过关的候选人。技术岗位校招投递量动辄上万份只靠人工筛简历和面试成本太高。客观题作为线上笔试的第一关用一套标准化题目谁能进下一轮完全由分数说话公平且高效。客观题能有效考察知识面的广度。前端开发者的日常工作远远不只是写页面你需要理解JS执行机制来排查线上性能问题需要理解HTTP缓存来优化加载速度需要理解浏览器渲染原理来减少页面卡顿。题目覆盖面广本质是在测试候选人是否形成了完整的前端知识体系还是只停留在会用框架写页面的层面。最后客观题里的大量边界情况比如假值比较、类型转换、作用域提升其实在考察候选人的思维缜密度和严谨性。写代码最怕的就是边界情况没考虑到客观题就是通过这种小陷阱来预判你写代码时是不是一个细心的人。这一点在后续面试的算法题和项目深挖环节会再次被验证。2. 核心考点深度剖析从原理到答题套路2.1 JavaScript基础闭包、原型链、this、事件循环JS基础是客观题的绝对主力而且360的出题风格是看着简单但必须真正理解才能答对。闭包几乎每年必考考点集中在三个方向。第一个方向是闭包的定义和特性让你判断下面哪个代码片段使用了闭包。第二个方向是经典循环陷阱比如用var声明循环变量循环里创建函数并输出循环变量最后结果是全是最后一次循环的值因为你创建的函数引用的是同一个变量。如果改用let或者在每次循环中用IIFE包裹就能保留每个循环的值。第三个方向是内存泄漏闭包导致变量无法被回收问你怎么解决。答题时核心抓住一点闭包的本质是函数 函数能访问的外部变量只要内部函数引用了外部变量并保持该引用就形成了闭包。原型与原型链也是高频区。经典的题目是给定一个构造函数Person通过new Person()创建实例p问p.proto、Person.prototype、Person.__proto__三者之间的关系。这类题要想全做对必须理清几个关键点实例的__proto__指向构造函数的prototype构造函数的__proto__指向Function.prototype因为构造函数是Function的实例Person.prototype的__proto__指向Object.prototypeObject.prototype的__proto__是null。建议备考时在纸上把这条链画清楚比死记硬背有效得多。出题人还特别喜欢在new、Object.create、class继承这几种创建对象的方式之间做对比核心都是在考察原型链的引用关系。this指向问题是另一种经典考法。记住一个简单原则this指向取决于函数调用方式而不是定义方式。普通函数调用时this指向全局对象在浏览器里是window严格模式下是undefined对象方法调用时this指向该对象new调用时this指向新创建的对象箭头函数没有自己的this它继承外部作用域的thiscall、apply、bind可以显式绑定this。360的题不会直接问你this是什么而是给你一段嵌套函数或回调函数的代码问你输出什么例如setTimeout、addEventListener、对象方法回调里this的指向。事件循环Event Loop这几年热度一直居高不下360客观题也基本年年涉及。核心考点是同步代码、微任务Promise.then、MutationObserver、queueMicrotask、宏任务setTimeout、setInterval、I/O、UI渲染的执行顺序。题目一般是给你一堆代码问输出顺序需要你在脑子里模拟事件循环的执行过程。这里有一个重要的细节Promise构造函数本身是同步执行的只有它的then回调才是微任务。所以new Promise((resolve) { console.log(1); resolve(); }).then(() console.log(2)); console.log(3);的输出顺序是1、3、2。这种题刷多了就会发现万变不离其宗先同步、再微任务、后宏任务每执行完一个宏任务就清空一次微任务队列。2.2 浏览器工作原理与网络协议渲染、缓存与跨域这一块360考得很有深度已经不是停留在概念背诵层面了而是要求理解整个流程。浏览器渲染流程的经典综合题是从输入URL到页面展示发生了什么。答案要点包括DNS域名解析本地缓存解析到服务器递归查询→ 建立TCP连接三次握手→ 发送HTTP请求 → 服务器处理并返回响应 → 浏览器解析HTML构建DOM树 → 解析CSS构建CSSOM树 → 合并形成渲染树 → 布局Layout→ 绘制Paint→ 合成Composite。出题人经常把其中一个环节抠出来细问比如CSS会阻塞DOM解析吗、script标签会阻塞页面渲染吗。这里要记住CSS不会阻塞DOM树的构建但会阻塞渲染树的构建所以CSS加载会阻塞页面首次渲染script标签不带defer/async会阻塞DOM解析因为JS可能操作DOM。这也是为什么推荐把CSS放head、JS放body底部、或给script加defer的原因。回流与重绘是一对经典组合。回流Reflow是当页面元素的几何属性发生变化宽高、位置、字体大小等时浏览器需要重新计算元素的几何位置重绘Repaint是当元素外观发生变化颜色、背景、visibility等而不影响布局时浏览器只需要重新绘制。回流的代价比重绘大得多因为回流往往会引起父元素和兄弟元素的连锁反应。多选题哪些操作会触发回流的常见正确选项包括增删改DOM元素、改变浏览器窗口大小、修改元素宽高或位置、获取offsetWidth/offsetHeight等布局属性。这里有个坑很多开发者不理解为什么读取布局属性也会引发回流其实是因为浏览器为了返回准确的数值必须强行重新计算一遍布局强制同步布局。所以高频读写布局属性的代码往往是性能杀手客观题就喜欢考这种反直觉但合理的知识点。HTTP缓存机制也是必考点需要把强缓存和协商缓存的完整链路搞明白。强缓存指的是浏览器在缓存有效期内直接使用本地缓存不发请求到服务器相关头字段是Expires和Cache-Control。Cache-Control的优先级更高而且可以用max-age指定缓存秒数。协商缓存指的是浏览器带着缓存标识向服务器发起请求由服务器判断缓存是否有效相关头字段是Last-Modified/If-Modified-Since和ETag/If-None-Match。ETag的优先级高于Last-Modified因为ETag能精确到内容变化而Last-Modified只能精确到秒。答题时要记清楚强缓存命中返回200from disk cache协商缓存命中返回304。出题人特别喜欢在Cache-Control的取值上做文章比如no-cache和no-store的区别很多人觉得两者差不多实际上no-cache是可以用缓存但每次使用前必须验证no-store是完全不使用任何缓存。跨域是前端绕不开的话题客观题主要考察跨域的几种常见方式。JSONP利用script标签不受同源策略限制的特性只支持GET请求CORS通过服务器设置Access-Control-Allow-Origin来允许跨域现代方案最推荐PostMessage用于两个window之间的跨域通信WebSocket天然支持跨域Nginx反向代理和Node中间件代理是通过服务端转发去规避跨域。考试时要注意区分哪些方案需要后端配合、哪些方案只支持特定场景。360也比较喜欢考预检请求即非简单请求例如携带自定义Header或使用PUT/DELETE方法会先发送一次OPTIONS请求问这个OPTIONS请求是干什么用的。2.3 CSS与页面布局盒模型、BFC、flex与居中CSS客观题虽然占比不算最高但考得都很细节而且这些细节恰恰是平时写业务容易忽略的。标准盒模型和IE盒模型是基础中的基础。标准盒模型box-sizing: content-box中width只包含内容区contentpadding和border在width之外IE盒模型box-sizing: border-box中width包含content、padding和border。给定一个div的width、padding、border问实际占用的宽度这是最朴素的考法。另外还会考box-sizing: border-box的实用场景典型的就是两栏布局左侧定宽右侧自适应右侧设置width: 100%时border-box能避免溢出。BFC块级格式化上下文是CSS知识里的高级基础。考点通常是哪些方式能创建BFCoverflow不为visible比如hidden、auto、scroll、float不为none、position为absolute或fixed、display为inline-block/flex/grid/table-cell等。以及BFC解决了什么问题清除浮动带来的父元素高度塌陷、阻止外边距重叠margin collapse、阻止浮动元素覆盖正常元素。我备考时总结过一个规律题目说如何让两个相邻元素的margin不叠加选BFC题目说父元素包含浮动子元素但高度塌陷了用BFC解决题目说左边浮动、右边正常定位被覆盖了给右边创建BFC。flex布局是360的必考内容但难度一直都是理解概念即可。需要熟练掌握flex容器属性的作用flex-direction主轴方向、justify-content主轴对齐、align-items交叉轴对齐、flex-wrap是否换行、align-content多行下的交叉轴对齐。以及flex子项属性的含义flex-grow放大比例、flex-shrink缩小比例、flex-basis初始主轴尺寸。flex: 1等价于flex: 1 1 0%这个问题出现频率极高。还有一道题我印象很深问一个flex容器内有两个子元素第一个flex: 2第二个flex: 1容器宽度600px无padding和border两个子元素分别占多宽答案是400px和200px但要注意如果子元素有默认的min-width: auto限制如果内容比flex-basis大按内容撑开实际结果会和理论值不同。这个细节考倒了很多人。CSS居中方案是个综合型考点360喜欢在请选出可以水平和垂直居中元素的方式这种多选题目里考。水平居中比较简单文本用text-align: center块级元素用margin: 0 autoflex容器用justify-content: center。垂直居中复杂一些常见方案flex容器align-items: center最简单position: absolute加top: 50%和transform: translateY(-50%)脱离文档流position: absolute四边为0加margin: auto需要明确宽高grid布局的place-items: center。做题时要小心margin: 0 auto能否实现垂直居中这种细节答案是不行auto只能处理水平方向垂直方向需要其他手段。层叠上下文和z-index也是容易出错的地方。核心考点是z-index只在定位元素position非static或flex子项等特定条件下生效z-index大的覆盖小的如果两个元素在同一个父容器下父容器z-index不同的情况下比较是自上而下的层级关系而不是全局比较。题目经常给出父容器A的z-index是1父容器B的z-index是2A内一个子元素z-index是999B内一个子元素z-index是1问最终谁在上面——答案还是要看父容器B在上面因为子元素所在的图层不能脱离父容器去和另一个父容器下的元素比。这种题一开始可能有点绕画个层级树就清楚了。2.4 ES6与前端框架基础新特性、响应式与虚拟DOMES6新特性是客观题的稳定出题点多选题比重很大。let/const与var的区别是基础let和const有块级作用域、不存在变量提升实际是暂存死区、不允许重复声明const声明时必须初始化且不能重新赋值但对象内部的属性可以修改。Promise是高频考点需要掌握状态机pending、fulfilled、rejected、状态不可逆、then链式调用、catch捕获、finally始终执行、Promise.all与Promise.race的区别。async/await是Promise的语法糖核心是await会暂停函数执行直到Promise settle。解构赋值、模板字符串、展开运算符、箭头函数、Map与Set、Class语法也都在考察范围内。360偶尔会考一些相对冷门的新特性比如可选链?.、空值合并??、BigInt、Object.fromEntries、Array.flat、String.replaceAll等。这些特性不难但如果你备考时只看老八股可能连选项里出现的是什么都搞不清楚。我的建议是把ES2015到ES2022的主要新特性过一遍不用全部深度掌握但看到选项至少知道它是什么。前端框架的客观题360偏向考原理理解而非API背诵。Vue的响应式原理是重点Vue 2用Object.defineProperty拦截数据读写Vue 3改用Proxy代理整个对象。题目经常问为什么Vue 3改用Proxy答案要点是Proxy能拦截对象属性的新增和删除defineProperty做不到、能拦截数组索引操作和length变化defineProperty对数组有局限、性能更好Proxy是懒代理defineProperty需要递归遍历所有属性。Vue的nextTick原理也常考本质是DOM更新是异步的nextTick在数据变化后、DOM更新完成后执行回调。React的知识点集中在虚拟DOM和diff算法。虚拟DOM的本质是一个JS对象结构描述真实DOM树。diff算法的时间复杂度是O(n)核心策略是同层比较不跨层级比较、不同类型的元素直接替换、同类型元素通过key来复用和比对。key的作用几乎是必考题——key用于识别列表项的身份帮助diff算法判断哪些节点可以复用、哪些需要移动或删除。使用index作为key在列表发生变化时会导致组件状态错乱这也是常见的踩坑点。React Hooks的题也有些出现比如useEffect的依赖数组、useState的异步更新等但难度不大。框架题有一个共同的备考思路不要只记API要理解API背后的设计原因。比如Vue为什么要用虚拟DOM因为操作真实DOM太贵JS层面操作对象很便宜而且虚拟DOM让框架能够跨平台web、小程序、原生应用。理解了为什么客观题不管从哪个角度提问你都能接住。2.5 数据结构与算法基础复杂度计算与常见结构客观题里的算法部分虽然占比不大但属于送分题和送命题并存。送分的是基础理论比如链表、栈、队列、哈希表、二叉树这些数据结构的特征送命的是时间复杂度计算和排序算法对比稍不注意就选错。数据结构基础题常见的出法有问哪个数据结构是先进后出栈哪种操作在数组头部插入的时间复杂度是O(n)哈希表解决冲突的方式有哪些开放地址法、链地址法二叉树的前序遍历顺序根左右完全二叉树和满二叉树的定义区别。这些题目没有技巧就是把数据结构教材的前几章老老实实过一遍。排序算法是客观题里比较喜欢考的一个点但360不考手写代码主要考时间复杂度和稳定性。“快速排序平均时间复杂度O(nlogn)、最坏O(n^2)”“归并排序时间复杂度O(nlogn)、稳定、需要O(n)额外空间”“堆排序时间复杂度O(nlogn)、不稳定、原地排序”这几个结论要滚瓜烂熟。稳定性对比稳定排序冒泡、插入、归并、基数不稳定排序选择、快速、希尔、堆也是常见考点。可以这样快速记忆不稳定排序中的快选希堆四个字其他常见的都是稳定排序。时间复杂度的计算题一般是给一段简单代码让你判断复杂度。例如两层嵌套for循环内层循环变量和外层有关问复杂度是多少。这类题不用真的运行用等差数列求和或者等比数列求和的思路推理即可。比如外层循环i从0到n内层循环j从0到i总执行次数是012...n n(n1)/2所以复杂度是O(n^2)。遇到递归代码比如斐波那契数列的朴素递归时间复杂度是O(2^n)空间复杂度是O(n)。这些经典结论建议背熟考场上能省不少时间。3. 典型例题演练与解题思路3.1 高性价比的JS基础题类型转换与作用域陷阱JS的隐式类型转换是客观题里的常客。我整理几道典型题目做过一遍之后这个知识点的套路基本就能掌握了。题目一console.log([] ![])的结果是什么答案是true。原理是进行隐式转换![]是false所以变成[] falsefalse转成0[]转成 再转成0所以0 0为true。做这类题时要记住一个判断顺序有布尔值先转成数字对象先转成原始值调用valueOf再调用toString字符串和数字比较时字符串转数字。题目二console.log(1 2 3)和console.log(3 1 2)的结果分别是什么答案是33和312。运算符从左到右执行第一次是数字相加得3遇到字符串后转成字符串拼接得到33第二次第一个操作数就是字符串全部按字符串拼接得到312。这里容易踩的坑是有人会误以为3 1 2等于33其实不是因为是从左到右依次执行的。题目三typeof的返回值判断typeof null、typeof []、typeof function(){}分别是什么答案是object、object、function。null的类型是object这是JS语言的历史bug数组的类型是object函数返回function。客观题偶尔还喜欢考typeof NaN答案是number。作用域的典型考法比如这段代码var a 1; function foo() { console.log(a); var a 2; } foo();输出结果是undefined。因为var声明会被提升到函数作用域顶部但赋值不会提升。所以实际上执行的是var a; console.log(a); a 2。这类题考的是变量提升但很多候选人只记住了var有变量提升却忽略了提升后赋值仍然停留在原位置这一关键点。还有一种比较狠的考法结合let的暂存死区var a 1; if (true) { console.log(a); let a 2; }这段代码会直接报错因为let声明在块级作用域中不会提升到全局但在声明之前访问会触发ReferenceError暂存死区。很多人以为会输出1实际上在let声明之前的同作用域访问该变量不会向外层作用域查找这就是暂存死区的含义。3.2 容易踩坑的浏览器与网络题缓存与跨域细节浏览器与网络这块题目看着都眼熟但正确率往往不高因为细节太多了。缓存类的典型多选题以下哪些HTTP响应头与浏览器缓存有关选项通常包括Cache-Control、Expires、Last-Modified、ETag、Access-Control-Allow-Origin、Set-Cookie。正确答案是前四个。这里要小心很多人看到Set-Cookie就联想到存储就选了但Set-Cookie是设置Cookie的响应头跟缓存机制没有直接关系。Access-Control-Allow-Origin是CORS跨域相关的响应头也容易混淆。强缓存命中时浏览器返回的状态码是什么答案是200并且会标注from disk cache或from memory cache。很多人答成304但304是协商缓存命中时服务器返回的状态码不是浏览器直接本地使用的状态码。强缓存命中时压根不会发请求给服务器自然谈不上服务器返回304。跨域类的题目也喜欢设置一些似是而非的选项比如跨域时Cookie能否携带答案是取决于是否设置withCredentialsXHR或credentialsfetch并且服务器需要相应设置Access-Control-Allow-Credentials为true。还容易考JSONP支持POST请求吗答案是不支持因为JSONP是通过动态创建script标签实现的script标签只能发GET请求。有一道题我记得特别清楚以下哪种方法不能解决跨域问题选项里除了明确的方案外还有一个干扰项是使用Nginx将两个域名的请求代理到同一个服务端。这个其实是可以解决跨域的因为代理转发后浏览器看到的是同源请求。另一个干扰项是使用iframe嵌入目标页面来操作父页面的DOM这个某种程度上可以通信但仍然受同源策略限制不能直接跨域操作DOM除非配合postMessage或window.name等技巧。所以正确答案往往是这个。考试时看到直接、完全这类绝对化表达的选项要多留一个心眼。3.3 需要画图思考的CSS布局题BFC、flex与层叠CSS题最忌讳凭空想象建议在草稿纸上画出来。特别是层叠上下文和flex分配这类题目画图是最快的解题路径。比如有这样一个flex题目容器宽度600px有三个子元素flex-basis分别是100px、200px、100pxflex-shrink分别是1、2、3问每个子元素收缩多少宽度。总基础宽度是400px容器宽度600px空间充足不需要收缩所以三个子元素分别还是100px、200px、100px。但如果容器宽度改成200px总基础宽度400px超出部分200px需要按收缩比例分配总权重 100×1 200×2 100×3 800各元素收缩量分别为200×(100×1/800)25px、200×(200×2/800)100px、200×(100×3/800)75px。这类题考场上是需要动笔算的光靠心算容易出错。BFC的经典判断题下面哪种方式不能创建一个BFC选项overflow: hidden能、display: flex能、position: relative不能、float: left能。正确答案是position: relative因为它不像absolute和fixed那样会创建BFCrelative不会脱离文档流也不创建新的格式化上下文。这几个选项经常在一起出现是把BFC创建条件和position属性绑在一起考。层叠上下文题目也是画图题。比如父元素P1的z-index是1包含子元素C1的z-index是99父元素P2的z-index是2包含子元素C2的z-index是1。问C1和C2谁在上面。答案是C2。因为C1的z-index再大它所在的层叠上下文P1整体的层叠级别低于P2C1无法跨出父元素去和C2比较。画一个P2层级 P1层级所以P2内部所有内容都在P1内部所有内容之上的图一目了然。多列布局也是客观题常客。典型的两栏布局左侧固定200px右侧自适应你会选哪种实现方式flex布局的左侧flex: 0 0 200px右侧flex: 1肯定对float布局的左侧float: left右侧margin-left: 200px也对position: absolute的左侧absolute固定右侧margin-left: 200px也对grid布局的grid-template-columns: 200px 1fr也对。这种题经常设置为多选关键是要知道每种方案的适用条件和潜在问题比如float方案要处理父元素高度塌陷absolute方案父元素需要设置position: relative或更高层级。3.4 考察算法思维的笔试题复杂度与数据结构应用客观题里的算法题大部分都是概念对比型不需要完整手写代码但对算法思维的要求并不低。“以下哪个排序算法在最坏情况下的时间复杂度是O(n^2)”选项是快速排序、归并排序、堆排序、冒泡排序。正确答案是快速排序和冒泡排序前者最坏情况是基准选取不当导致每次只划分出一个元素后者无论什么情况都是O(n^2)。归并排序和堆排序的最好、最坏、平均时间复杂度都是O(nlogn)。这种题在多选时容易漏选冒泡因为很多人认为冒泡是O(n^2)就一定是错的没意识到题目问的是哪些是O(n^2)。在一个单向链表中删除指定节点的平均时间复杂度是多少如果只给你这个节点本身没有前驱节点引用那么需要遍历到该节点的前驱时间复杂度O(n)。如果给你的是链表头和要删除的值还是O(n)。只有双向链表删除给定节点时才是O(1)。这类题容易答错是因为面试和笔试场景中大家习惯写链表删除节点是O(1)但那是针对双向链表或已知前驱的情况。客观题往往不会明说这些前提需要你自己判断。哈希表的题目最常见的是哈希表查找的平均时间复杂度是多少答案是O(1)。但要小心题目加一个在极端情况下的限定极端情况下大量哈希冲突会退化成O(n)。还有一种考法哈希表解决冲突的方法有哪些选项可能包括链地址法正确、开放定址法正确、再哈希法正确、二分查找法错误。这一题是纯概念题背下来就行。二叉树的题更多是遍历顺序。比如已知前序遍历是ABDCE中序遍历是DBAEC问后序遍历是什么。这种题需要根据前序中序还原二叉树。前序的第一个节点A是根节点在中序中找到A左边DB是左子树右边EC是右子树继续递归前序中B是左子树的根D在B的左边所以D是B的左子节点前序中C是右子树的根E在C的左边所以E是C的左子节点。还原出来的树结构后序遍历就是DBECA。这类题操作性强建议多做几道找手感。4. 备考策略与实战心得4.1 三轮复习法从扫盲到真题模拟针对360前端客观题我总结了一套三轮复习法实测下来效率很高。第一轮是全面扫盲时间大约一周到十天。核心任务是把前端基础知识完整过一遍不要追求深度但要确保没有盲区。推荐按这个顺序过HTML基础与语义化 → CSS盒模型/布局/定位 → JavaScript核心数据类型、作用域、闭包、原型、this、事件循环 → ES6新特性 → 浏览器渲染原理与HTTP → 前端安全与性能优化 → Vue/React基础原理 → 数据结构与算法基础。每一块用两天左右边看边记笔记不要只过眼睛。刷题目前可以先用一些在线的前端基础题库练手把错题记录下来。第二轮是专项突破时间一周左右。根据自己的第一轮错题情况对薄弱环节进行针对性强化。如果事件循环的题老错就专门收集事件循环练习题做到看到代码就能立刻写出输出顺序如果BFC相关概念模糊就集中看BFC原理的文章动手画BFC的布局图。专项突破阶段最重要的是知其所以然不懂的原理一定要查资料搞懂否则换一个问法还是不会。第三轮是真题模拟时间三到五天。找近三年的360校招真题牛客网上大部分都有以及字节、腾讯、阿里的同级别前端客观题严格按考试时间限制模拟笔试。模拟的时候一定要写答题卡上的顺序和时间分配比如单选题每道不超过1分钟多选题每道1.5到2分钟判断题每道30秒。模拟后认真复盘重点看错题是知识点不会还是审题不仔细。如果是后者复盘时要特别标注考场上这类错误是可以通过读题技巧避免的。4.2 客观题的高效刷题方式错题本与知识卡片刷题不是为了刷数量而是要追求每刷一道题掌握一类知识点。我建议建立自己的错题本但不要手抄整道题而是记录知识点 错误原因 正确思路三要素。比如这样一条知识点变量提升与暂存死区错误原因以为let没有提升所以输出外层变量正确思路let声明之前的同作用域访问会触发暂存死区不会向外层作用域查找记录的时候用自己最容易理解的语言尽量简短。复盘的时候只看错题本比翻厚厚的学习资料高效得多。知识卡片适合用来记忆容易混淆的知识点。比如强缓存与协商缓存一张卡回流与重绘一张卡Vue2与Vue3响应式区别一张卡常见排序算法复杂度对比一张卡。卡片上用表格或对比列表呈现信息正反面分别是问题和答案。在通勤、排队这种碎片时间拿出来翻一翻记忆效果很好。模拟考试后的复盘同样需要技巧。不要只改答案建议把每道题都过一遍即使是做对的题也看一下选项里的干扰项有没有你不理解的。比如强缓存那道题你答对了Cache-Control但你注意到旁边的干扰项Set-Cookie了吗如果你不确定Set-Cookie是干什么用的说明的知识体系还是有漏洞顺手补上。很多时候一套题能带出三到五个你没完全掌握的知识点这才是真题最有价值的地方。4.3 考场上的时间分配与答题技巧客观题考试时间看着宽裕但如果你在个别难题上卡太久后面会非常赶。我给自己定的时间预算是单选题25道每题1分钟一共25分钟多选题10道每题2分钟一共20分钟判断题8道每题30秒一共4分钟。剩余时间用来复查拿不准的题目。实际执行时遇到思考超过1分半还没思路的题先标记跳过最后再回来做。多选题是失分重灾区我的策略是宁少选不错选。虽然360的多选题少选不得分但至少不会因为你多选了一个错误选项而判错——实际上在部分评分规则中少选可能有一定分值各系统不同。大多数校招笔试都是多选、错选、少选不得分所以这个策略要谨慎。这种情况下只有当你对一个选项非常有把握时才选它拿不准的选项宁可不选。但也要小心如果题目明确写至少有两个正确选项你只选一个明确正确的人虽然没丢分但肯定也拿不到分。核心还是把知识点本身弄扎实。判断题要注意绝对化表述。几乎每个判断题里都会有一两个选项用上一定、总是、完全、所有这类词大概率是错的。比如所有CSS属性都可以做动画就是错的部分CSS属性无法插入过渡动画position: fixed的元素一定相对于浏览器窗口定位也是错的如果祖先有transform会改变包含块。遇到这类题优先找反例。还有一个小技巧答题顺序可以先做判断题再做单选题最后做多选题。判断题短平快能快速进入状态单选题面广适合热身多选题难度最大放在最后做能保证前面不丢分。这个顺序不绝对但我觉得对大部分人来说是合理的选择。5. 客观题之外从笔试到面试的衔接准备5.1 客观题成绩与面试的关联逻辑360的校招流程一般是网申投递 → 在线笔试 → 技术面试通常两到三轮→ HR面 → offer。客观题成绩决定了你能否收到面试邀请但它和面试表现的关系并不是笔试高分面试稳过这么简单。客观题分数高只能说明你的基础知识体系完整、应试能力强。但面试环节考察的是深度思考和实际解决问题的能力比如面试官会追着你的项目问你在项目里是怎么优化首屏加载的如果只是背了拆包、按需加载、图片懒加载这些答题模板却说不清楚自己项目里到底用了什么、效果如何、为什么这样选面试官很快就能判断出你是在背答案还是真的有实战经验。反过来客观题分数一般但也有机会靠面试翻盘。我身边有个同学笔试客观题做得很一般但面试时拿着一个自己做的开源项目把底层原理讲得头头是道最终也拿到了offer。所以备考客观题要认真但不要把它当成唯一的生死线。5.2 边刷客观题边补充的面试储备客观题中涉及的知识点其实都是面试深挖题目的素材库。我建议在刷每一道客观题时问自己一个问题如果面试官让我现场画一下这个流程我能画出来吗比如刷到浏览器渲染流程的题就顺手在白纸上画一遍从输入URL到页面展示的完整链路并标出每一步涉及的关键技术点。刷到Vue响应式的题就想一想如果用代码实现一个极简的响应式系统应该怎么做。刷到HTTP缓存的题就画一下首次访问、强缓存命中、协商缓存命中三种情况下的请求时序图。这样刷题就不只是刷题而是同时在为面试做准备。推荐额外准备两块内容一是你简历上出现的所有技术点都必须准备一个项目里怎么用的的实例二是准备一个自己遇到的一个有技术挑战的问题如何排查和解决的案例这是面试官百问不厌的题型提前打磨好能省去现场组织语言的时间。5.3 经典面试追问从客观题到开放题的思维升级客观题里有一个很好用的备考技巧——把选择题主动改成问答题。每做完一道选择题可以口头回答为什么这个选项是对的、如果去掉题目中的某个条件答案会怎么变比如flex: 1等价于flex: 1 1 0%这道题可以追问自己flex: 1和flex: auto有什么区别前者flex-basis是0%后者flex-basis是auto。所以flex: 1表示在空间分配时完全不考虑子元素内容大小全部按比例分配flex: auto会先用内容大小作为基础的尺寸再按比例分配剩余空间。这个区别会直接影响布局结果比如都设置为flex: 1的两个元素如果内容宽度差异大flex: auto的布局结果会更偏向内容大的那个而不是均分。这种思考深度就是面试官在开放题环节想听到的。同样刷到哪些操作会触发回流时可以追问自己如果必须读取offsetWidth才能得到元素真实宽度有没有办法减少强制同步布局的次数答案是优先在循环外统一读取、使用class一次性修改样式、或者用requestAnimationFrame把读取操作集中到下一帧。这样想一遍面试时如果被问到性能优化你就能给出有层次、有观点、有实践经验的回答而不是干巴巴背模板。5.4 常见问题与避坑清单备考和考试过程中有几个高频问题需要特别注意这里整理成一份避坑清单第一个问题是花太多时间在偏难怪题上。前端知识点无限多校招客观题的重点却很明确就是基础、基础、还是基础。如果你花三天时间去搞懂某个冷门CSS属性的兼容性性价比极低。建议优先把高频考点吃透冷门知识看到了扫一眼有个印象即可。第二个问题是忽视多选题的训练。很多人刷题只刷单选题觉得多选题太难了结果考场上一做多选就崩。多选题目其实是检验知识边界的最好方式建议备考时把单选练习题主动转成多选思维合上答案自己列出所有可能正确的选项再对照解析。第三个问题是笔试时没有规划时间。校招笔试系统一般都能看到倒计时但很多人在前面的难题上花了太多时间导致后面简单题没有时间做。建议严格按照4.3节说的时间预算答题先易后难不确定的题目做标记全部做完后再回头看。第四个问题是忽略环境测试。360的在线笔试系统和大多数校招系统一样考前会有环境测试环节。不要跳过确认浏览器版本、摄像头、网络都正常否则笔试中途断网或浏览器不兼容十分被动。6. 写在最后客观题备考的核心心法备考360前端客观题我个人最大的体会是它考的绝大部分知识不是临时抱佛脚能背出来的而是平时写代码、查资料、踩坑时一点点积累下来的。校招客观题最大的价值其实是逼着你在短时间内把前端知识体系系统地重新梳理一遍。如果你现在时间充足我的建议是别急着刷题先认认真真把前端基础教材吃透。如果你时间已经很紧张了那也别慌用前面说的三轮复习法先过知识点、再专项突破、最后真题模拟按部就班执行完全来得及。还有一个小技巧想分享给大家做题的时候把每一道题都当成一次查漏补缺的机会而不是验证自己有多厉害的检验。做对了不骄傲做错了反而值得高兴因为你找到了一个知识薄弱点可以立刻补上。这种心态在备考中非常关键能让你保持持续学习的动力。毕竟校招笔试不是终点而是进入下一关的入场券真正的挑战还在后面的技术面试。把基础打牢后面不管是算法面、项目面还是HR面你都会从容很多。