拓冰建站拓冰建站
首页 / 资讯中心 / 正文

奇安信秋招前端笔试题解析:安全厂商最看重的基础与漏洞防护

2020年奇安信秋招前端方向的试卷2我是在笔试截止前一个半小时才点开链接的当时心态比较放松结果做完之后反而印象很深。怎么说呢这份试卷不像一般互联网公司那样把八股文背熟就能拿高分它在基础题之外塞了不少安全厂商才会关心的东西。如果你是准备校招前端岗尤其是投安全类、政企服务类公司的前端岗位这套题很值得认真过一遍。里面的知识点放在2026年看也依然不过时反而因为这几年供应链安全、前端漏洞被重视这些内容更值钱了。这篇文章我会把试卷的考点结构、每类题目的答题思路、安全方向的加分答法、以及我当时踩过的坑完整整理出来。内容量比较大建议先收藏然后对着目录挑自己薄弱的部分精读。1. 试卷整体布局与出题风格分析1.1 一份安全厂商把前端题考出了什么味道先说结论奇安信这份前端试卷整体难度在中上水平覆盖面很广但它的重点不在偏难怪而在基础是否扎实有没有安全敏感度。和阿里、字节那种动辄让你手写 Promise.all、实现一个 mini Vue 的试卷不同奇安信2020年秋招前端方向试卷2更多在考三件事你对前端基础HTML/CSS/JavaScript/网络的理解是否成体系你在编码过程中有没有考虑边界条件、异常输入、安全问题你对安全类漏洞XSS、CSRF、路径遍历、SQL注入等在Web前端的表现有没有基本概念。这其实反映出安全类公司的前端岗位特点你写出的页面可能影响的是政府客户、金融机构、大型企业一旦出现 XSS 漏洞或越权访问那就是安全事故。所以他们在笔试题里会有意识地用场景题去试探你是否具备安全编码的直觉。我当时拿到试卷第一反应是这不就是一份前端八股文加安全科普的混合体吗但做完之后我意识到恰恰是这种混合风格能区分出背题党和真正写过项目并且思考过为什么的人。1.2 考点分布与各模块占比参考根据我做题时的记忆这份试卷大致可以分成以下几个模块我结合当年讨论群里同学们的反馈整理了一个考点占比参考模块大致占比典型考点HTML/CSS 基础15%语义化标签、盒模型、BFC、flex 布局JavaScript 核心30%事件循环、闭包、原型链、异步编程、手写代码浏览器与网络15%缓存策略、HTTP 状态码、浏览器渲染流程安全相关25%XSS、CSRF、路径遍历、输入校验、CSP框架与工程化10%Vue/React 生命周期、组件通信、构建工具理解开放题5%项目描述、性能优化思路注意安全相关占了四分之一这个比重在别家互联网公司的前端试卷里很少见。这意味着如果你投的是奇安信这类安全厂商复习时需要额外准备 Web 安全基础而不是只刷 LeetCode 和 Vue 源码。2. 基础技术考点详解从HTML到JavaScript的核心题2.1 HTML与CSS考点别在这种题目上丢分试卷里 HTML/CSS 的题目不算难但很考察你有没有真正理解标准。我印象比较深的几个考点第一个是语义化标签。题目会给出一段结构混乱的 HTML让你用合适的语义化标签重构并解释为什么要用headernavmainarticleasidefooter而不是一堆div。这种题很多人觉得简单其实答好不容易。你需要从三个层面答可访问性屏幕阅读器依赖语义化标签理解页面结构SEO搜索引擎爬虫对有语义的标签更友好代码可维护性团队其他人看到标签就能猜到内容作用。第二个是盒模型计算。题目大概长这样一个宽度为 300px 的元素设置了padding: 20px; border: 5px solid; box-sizing: content-box;问实际占位宽度是多少。答案很简单300 20×2 5×2 350px。关键是你要解释清楚 content-box 和 border-box 的区别以及什么时候用哪种更合适。我当时在回答里补了一句全局设置 border-box 可以降低布局心智负担但要注意第三方组件样式可能会被影响这属于加分细节。第三个是 BFC块级格式化上下文。它会问你如何触发 BFC以及 BFC 有哪些作用。触发方式包括overflow: hidden、float: left/right、position: absolute/fixed、display: inline-block/flex/grid等。作用有三个核心清除浮动、防止 margin 塌陷、阻止元素被浮动元素覆盖。刷过面经的同学基本都能答出来但要拿高分得补充现代布局中 flex/grid 已经取代了大量 BFC hack 的需求但理解 BFC 能帮你排查老旧项目中的样式 bug。CSS 部分还有个 flex 布局题通常是让你用 flex 实现一个经典布局左侧固定 200px右侧自适应。核心代码是父容器display: flex左侧width: 200px; flex-shrink: 0右侧flex: 1。注意flex-shrink: 0这一点很容易漏不加的话宽度不够时左侧会被压缩。2.2 JavaScript核心题事件循环、闭包与原型链JavaScript 部分是整张试卷的重头戏题型以选择、简答和手写代码为主。我挑几个典型题目展开说。事件循环是必考的。它通常会给你一段代码让你写出输出顺序类似console.log(script start); setTimeout(function() { console.log(setTimeout); }, 0); Promise.resolve().then(function() { console.log(promise1); }).then(function() { console.log(promise2); }); console.log(script end);正确答案是script start、script end、promise1、promise2、setTimeout。答题时要画清楚宏任务和微任务的执行顺序同步代码先执行微任务在每一个宏任务结束后清空promise.then 属于微任务setTimeout 属于宏任务。这里有个细节值得补充Promise.resolve().then的回调是微任务而new Promise(executor)里的 executor 是同步执行的这两者经常被混淆。闭包的考点也很经典。题目通常会问什么是闭包闭包有什么作用有什么缺点然后让你写出一个用闭包实现私有变量的例子。function createCounter() { let count 0; return { increment() { count; return count; }, decrement() { count--; return count; }, getCount() { return count; } }; } const counter createCounter(); console.log(counter.increment()); // 1 console.log(counter.increment()); // 2 console.log(counter.getCount()); // 2我建议把闭包的作用答全数据私有化、柯里化、函数工厂、在循环中保存变量快照。缺点也要提可能导致内存常驻如果闭包引用了较大的对象且没有被释放会造成内存泄漏。原型链的题目通常是给一个对象问obj.__proto__、Constructor.prototype、Object.getPrototypeOf()之间的关系。还会考 instanceof 的原理遍历右侧构造函数的 prototype 对象看是否存在于左侧对象的原型链上。这类题目没有捷径只能把原型链的图盯熟。我自己的记忆方法是一句话实例的__proto__指向构造函数的prototype构造函数的prototype的__proto__指向Object.prototypeObject.prototype的__proto__是null。2.3 手写代码题边界条件是分水岭手写题是前端笔试拉开差距的地方。奇安信这份试卷里有几个手写题难度中等但边界条件很坑。第一个是手写防抖和节流。基础的写法很多同学都能写出来但要注意细节。function debounce(fn, delay) { let timer null; return function(...args) { if (timer) clearTimeout(timer); timer setTimeout(() { fn.apply(this, args); }, delay); }; }这里有个容易忽略的点fn.apply(this, args)里的this必须保留否则在对象方法上使用防抖时this会丢失。第二个是手写深拷贝。注意它不只是让你用JSON.parse(JSON.stringify(obj))因为这么考就没意思了。出题人期望你写出一个能处理基本类型、数组、普通对象、Date、RegExp并且能解决循环引用的版本。我当时的实现思路是用 WeakMap 存储已拷贝的对象遇到循环引用时直接返回缓存。function deepClone(obj, map new WeakMap()) { if (obj null || typeof obj ! object) return obj; if (obj instanceof Date) return new Date(obj); if (obj instanceof RegExp) return new RegExp(obj.source, obj.flags); if (map.has(obj)) return map.get(obj); const clone Array.isArray(obj) ? [] : {}; map.set(obj, clone); for (const key of Object.keys(obj)) { clone[key] deepClone(obj[key], map); } return clone; }写完之后我特意在试卷旁边注释了Object.keys不会遍历继承属性Symbol 类型的 key 用Object.getOwnPropertySymbols单独处理。虽然可能超纲但能让阅卷人看到你的知识深度。第三个是数组去重。常规答法是[...new Set(arr)]但如果题目补充了一句要求兼容对象数组那就要小心了。对象数组按引用去重通常没意义需要按某个唯一字段去重。这部分我会在后面的常见问题里专门展开。3. 安全方向考点奇安信笔试中最特别的25%3.1 XSS与CSRF前端安全必考双雄安全类公司笔试前端方向XSS 和 CSRF 如果不出那基本是不可能的。奇安信更是一道题都没落下而且考查方式不是简单的名词解释而是给你一段代码让你找出漏洞并说明修复方案。先看 XSS。题目一般会给出这样的代码const userInput getUrlParam(name); document.getElementById(welcome).innerHTML 欢迎你 userInput;漏洞点一目了然用户输入未经任何处理直接拼进 innerHTML攻击者可以通过?namescriptalert(document.cookie)/script执行任意脚本。修复方案要分层来答第一层对输入进行编码把、、、、转义为 HTML 实体第二层优先使用textContent替代innerHTML从源头避免 HTML 注入第三层设置 CSP内容安全策略限制脚本来源即使被注入也无法加载外部恶意脚本。如果你只是答过滤一下或者用正则替换那基本只能拿一半分。出题人想看的是你有没有完整的纵深防御意识。再来看 CSRF。题目会问什么是 CSRF它和 XSS 有什么区别如何防御CSRF 的核心是利用浏览器自动携带 Cookie 的特性。攻击者构造一个恶意页面诱导用户点击浏览器会自动带上用户的登录态向目标站点发送请求。因为请求来自受信任的浏览器服务器无法区分这是用户主动操作还是攻击者伪造的。防御方案有三个主流方向校验 Referer/Origin 头拒绝来自非白名单域名的请求使用 CSRF Token在请求中加入随机的 token服务器端校验关键操作使用自定义请求头比如X-Requested-With: XMLHttpRequest因为跨域请求无法自定义头部。这里有个容易混淆的点XSS 是我信任了用户的输入CSRF 是我信任了用户的浏览器。前者攻击代码注入到页面里执行后者是伪造用户身份发起请求。把这两个概念区分清楚面试官印象分会高不少。3.2 路径遍历和输入验证安全厂商的特色考题很多前端同学做奇安信的题会死在这一块因为普通互联网公司真的不考路径遍历。但是对安全厂商来说Web 攻击面里路径遍历Path Traversal太常见了所以它出现在前端试卷里也不奇怪。题目大概是这样的你写了一个文件预览功能把用户传入的文件相对路径拼到静态资源服务器地址上比如const path req.query.filePath; const fullPath /var/www/files/ path;如果用户传入../../../../etc/passwd然后 Node.js 后端直接拼接路径读取文件那就能读到系统敏感文件。作为前端虽然你只是拼接 URL但你要能识别出这种风险。答题要点包括路径遍历的本质是对输入校验不严导致攻击者可以通过../跳出预期目录前端需要在入口处拦截包含..的路径以及%2e%2eURL 编码后的点号、%252e双重编码等变体更可靠的做法是服务器端规范化路径后再做前缀检查不能只依赖前端过滤可以提到使用path.normalize()和path.resolve()把路径转换成绝对路径然后判断是否以允许的根目录开头。当时这道题我还答了一个思路用白名单校验而不是黑名单过滤。因为黑名单很难覆盖所有编码变体而白名单直接把允许的路径模式写死不匹配的直接拒绝更安全。输入验证的题目也和这个相关。它会问如何设计一个安全的登录表单前端涉及的考点包括前端不能只做非空校验还要对邮箱格式、密码强度做预校验密码不能在前端做加密后传给后端因为前端加密不是真正的加密只是混淆必须依赖 HTTPS对用户输入的长度做限制防止超大 payload 打垮后端登录接口要加验证码或频率限制防止暴力破解前端不要拼 SQL、拼 shell 命令统一使用参数化查询。这些内容单独看是安全知识的科普但结合奇安信的业务背景它们恰恰是入职后写内部后台系统时天天会遇到的问题。3.3 安全厂商前端笔试的加分答法我总结一下安全厂商的前端笔试里代码题只要沾边安全的都有一种加分答法。比如题目只是让你实现一个图片上传组件。普通答法是讲 FormData、进度条、缩略图预览、大文件断点续传。但是安全向的加分答法会额外提到上传前要做文件类型校验除了看后缀名还要读取文件头魔数Magic Number判断真实类型防止绕过后缀检查上传接口要限制文件大小和并发数量预览时使用URL.createObjectURL而不是FileReader性能更好而且对内存更友好如果服务端预览是直接拼接文件名拼接 URL需要考虑路径穿越问题。再比如让你实现一个富文本编辑器普通人只聊 contenteditable 和 document.execCommand加分答法会提到 XSS 的富文本绕过问题粘贴进来的内容不能直接渲染需要做白名单标签过滤保存时要对 HTML 进行清洗sanitize展示时要执行 CSP。这种答题思路的核心是把安全思维嵌入到每一个功能设计里而不是把安全当作一个独立模块。这个习惯也确实帮我后来在工作里少踩了不少坑。4. 框架与工程化考点Vue、React和性能优化怎么答4.1 Vue/React相关题目生命周期与组件通信2020年秋招时Vue 2 还是主流React 16.8 也已经普及了 Hooks。奇安信的试卷在框架方面考得不算深主要停留在是否真的用过这个层面。Vue 的题目通常是让你简述 Vue 2 的生命周期以及created和mounted的区别。这题的关键是答出每个生命周期适合做什么生命周期钩子适合做的事不适合做的事beforeCreate初始化非响应式数据拿不到 this.datacreated请求接口、初始化数据操作 DOM因为 DOM 还没挂载mounted操作 DOM、初始化图表库长时间同步逻辑会阻塞首屏渲染beforeDestroy清理定时器、解绑事件访问响应式数据created和mounted的区别要讲清楚created时模板还没渲染成 DOMthis.$el拿不到mounted时组件已经挂载到页面上this.$el可以拿到。所以如果需要初始化 echarts 这类依赖 DOM 的库必须在 mounted 里做。组件通信的题也比较常规问你父子组件、兄弟组件、跨层级组件怎么通信。答案是分层的父传子用 props子传父用$emit兄弟组件用事件总线或者状态管理跨层级用 provide/inject 或 Vuex。如果面试官要求手写代码一般写一个$emit触发父组件事件的例子就够了。React 的题目大概率会围绕 Hooks 展开比如useEffect依赖数组的作用以及useCallback和useMemo的区别。核心考点是useEffect的依赖数组为空时回调只在挂载后执行一次依赖数组变更是浅比较引用类型要特别注意。useCallback缓存函数引用useMemo缓存计算结果别把两者搞混。我当时在这类题目上花的时间不多因为框架题只要用过基本都能答。真正拉开差距的是下一节提到的性能和浏览器原理题。4.2 浏览器渲染与性能优化一道题能答出三个层次浏览器相关的题目一般是从输入 URL 到页面显示中间发生了什么这道题能考出一个人对前端理解的深度也很能反映日常写代码时有没有全局观。第一层答法是八股文标准版DNS 解析、建立 TCP 连接、发送 HTTP 请求、服务器返回 HTML、浏览器解析 HTML 生成 DOM 树、解析 CSS 生成 CSSOM 树、合并生成渲染树、布局、绘制。这一层能拿基础分。第二层要补充细节比如DNS 查询有本地缓存和递归查询现在还用上了 DoHDNS over HTTPSTCP 连接在 HTTPS 下要先做 TLS 握手HTML 解析过程中遇到script标签会阻塞渲染所以脚本要加defer或asyncCSS 默认不会阻塞 DOM 解析但会阻塞渲染因为渲染树需要 CSSOM现代浏览器有预加载扫描器preload scanner会提前发现资源并下载。第三层要结合实际业务场景说明页面性能瓶颈在哪里、怎么优化。我当时用了一个对比示例一个首屏必须显示图片的页面img标签上没加loadinglazy也没配宽高结果图片加载导致布局偏移CLS严重页面在弱网下白屏时间很长。优化方案是图片用 CDN 并开启 WebP 格式按屏幕尺寸做多分辨率适配核心图片预加载非核心图片懒加载。还有一道性能优化题让我印象很深题目是一个页面加载了 20 个第三方 SDK导致首屏时间从 1.2 秒变成 3.8 秒如何排查和优化我的答题思路分四步优先用 Performance 面板看网络瀑布图找出哪些 SDK 是渲染阻塞的确认哪些 SDK 是首屏必需的非必需的异步加载用浏览器原生能力替代部分第三方 SDK比如用 IntersectionObserver 替代 lazy-load 库聚合多次请求多个 SDK 如果功能相似只保留一个或者用服务端拼包的方式减少请求数。效果是首屏时间可以压回 1.5 秒以内。这道题说白了就是在考你有没有真实做过性能优化而不是只会背减少 HTTP 请求、启用压缩、使用 CDN这三板斧。4.3 构建工具与组件库工程化基础题工程化方面奇安信的试卷没有考 Webpack 源码级配置更多是问概念和常用的优化手段。比如问你Webpack 打包速度慢你会从哪些方向优化常规答法是先分层次优化 loader 范围用include限定 src 目录排除 node_modules使用cache-loader或持久化缓存二次打包提速明显开启thread-loader或parallel-webpack并行构建使用DllPlugin预编译不常变动的依赖包但要注意它现在已经不是最推荐的方案了开发环境用devServer的hot: true减少全量编译。要注意的是如果试卷时间已经到了2022年之后最好补充 Vite 的思路开发阶段用原生 ESM 按需编译避免 Webpack 冷启动和热更新慢的问题。2020年的时候 Vite 还算新东西提一句我关注到 Vite 可以解决 Webpack 开发服务器的瓶颈就已经很出彩了。组件库的问题热词里有前端组件库。它一般会问你们项目里是怎么封装组件库的或者让你设计一个可复用的弹窗组件Modal需要考虑哪些问题设计弹窗组件的答案框架可以这样搭Props 设计visible、title、width、footer、closeOnClickModal、confirmLoading事件设计confirm、cancel、open 后的事件插槽设计允许自定义内容、底部按钮区、标题功能细节点击遮罩是否关闭、是否支持 Esc 关闭、弹窗出现后 body 滚动是否锁定、弹窗的层级管理、多弹窗共存时的 z-index 处理无障碍焦点陷阱focus trap关闭后焦点是否回归到触发元素。如果是在安全厂商面试可以额外补充弹窗中的富文本内容需要清洗防止 XSS按钮的 loading 状态要防止用户重复提交。5. 笔试实战经验时间分配与常见坑5.1 时间分配与答题顺序策略奇安信这套试卷正常水平做完大概需要 90 到 120 分钟。我当时花了 110 分钟左右其中选择题 20 分钟简答题 40 分钟手写代码题 30 分钟开放题 20 分钟。一个很实用的策略是先做选择题尤其是那些一眼就能确认答案的题用最短的时间拿下基础分。然后做简答题优先答你熟悉的知识点把能拿的分先拿到。手写代码题放在中间偏后因为它最耗时间而且一旦卡住很容易影响心态。最后留充足时间给开放题因为开放题往往是最能体现工程经验的值得多写几句。我强烈建议不要在一道选择题上纠结超过 3 分钟。2020年我有个同学就栽在了一道关于 HTTP 状态码的题上他反复怀疑自己是记错了 304 还是 301结果花了 10 分钟后面手写题时间不够最后把debounce都写错了。这种损失非常不值得。判断题里还有一种常见坑题目问let和var的区别选项里有一项说let 可以在声明之前使用。这是错的let 存在暂时性死区TDZ声明之前访问会报 ReferenceError。而var声明之前访问到的是 undefined。这类题就是用来筛掉基础不牢的人。5.2 常见问题与排查技巧实录我在做这套题和复盘其他人的反馈时收集了一些容易出错的地方整理成速查表题目/考点容易踩的坑参考答案要点事件循环题忘记await后面是微任务但需要额外宏任务切换async function体内await会暂停await Promise.resolve 后面的代码属于微任务深拷贝只处理普通对象没考虑 Date/RegExp/循环引用用 WeakMap 缓存引用特殊类型单独处理路径遍历只知道过滤..没考虑 URL 编码变体服务端规范化后用白名单前缀校验防抖节流丢失this指向用fn.apply(this, args)保留HTTP 缓存混淆强制缓存和协商缓存Cache-Control: max-age是强制缓存ETag/Last-Modified是协商缓存Promise忘记 executor 同步执行new Promise((resolve) console.log(1))会立即打印 1flex 布局固定栏没加flex-shrink: 0防止被压缩右侧自适应区域用flex: 1Vue 生命周期在 created 里操作 DOM 拿不到元素created 适合初始化数据DOM 操作放 mountedXSS 修复只做输入过滤没做输出编码和 CSP纵深防御输入编码 优先 textContent CSP数组去重对象用Set直接去重对象数组无效按唯一字段手动去重或先序列化再 Set除了这张表还有一个值得单独说的数组去重看起来是最简单的题但碰到对象数组就翻车了。比如你有这样一个数组const arr [ { id: 1, name: Alice }, { id: 2, name: Bob }, { id: 1, name: Alice } ];直接[...new Set(arr)]是没用的因为 Set 比较的是引用两个对象即使内容相同也认为是不同的。正确做法是按 id 字段去重const map new Map(); arr.forEach(item map.set(item.id, item)); const uniqueArr [...map.values()];这里有个陷阱Map的 key 如果传对象那还是按引用比较必须传基本类型字段。我当时看到一个同学写的是map.set(item, item)那和不去重没区别。这种细节就是在考你是不是真的写过代码。5.3 安全向附加题CSP配置与上报思路热词列表里反复出现奇安信代码卫士路径遍历说明现在的安全团队对前端代码质量检查已经非常关注了。如果这套试卷放到今天来出很可能会增加 CSP 配置和异常上报的题目。CSPContent Security Policy是防御 XSS 的最后一层防线。它的配置方式是在 HTTP 响应头里加一个字段或者用meta标签指定。简单的配置长这样Content-Security-Policy: default-src self; script-src self cdn.example.com; style-src self unsafe-inline这段配置的意思是所有资源默认只能从本站加载脚本可以加载本站和 CDN 域名样式允许本站和内联样式。如果页面里有人插入了一个https://evil.com/x.js浏览器会直接拦截并报错。如果你在做这套题的时候能主动提到 CSP 的线上配置技巧比如开发环境要用unsafe-inline生产环境必须收紧那显然比只答用 CSP 防止 XSS高一个段位。另一个安全厂商比较喜欢问的附加方向是前端错误上报。因为安全事件通常是从异常行为开始的。怎么做前端错误监控答案可以包括用window.onerror捕获未处理的 JS 错误拿到 message、source、lineno、colno、error 对象用unhandledrejection捕获 Promise 异常对错误对象做序列化因为 Error 的属性默认不可枚举需要手动提取 name、message、stack上报时带上用户操作上下文路由、组件名、HTTP 请求参数脱敏后、浏览器信息采样率控制错误上报不能全部上报否则高并发场景下上报接口会被打爆一般取 10% 并做 hash 去重。当时我看到试卷里有一道开放题假设你负责的前端项目在客户现场经常白屏你如何排查这道题我答了六个步骤先分环境客户环境 vs 内网环境、看浏览器版本兼容性、看控制台报错、看接口请求是否被拦截客户网络策略可能导致接口不可达、看资源是否加载失败尤其本地部署的项目静态资源路径可能不对、最后用远程日志定位。这套思路其实就是前端异常排查的标准流程放在安全厂商语境下还要额外关注是否有安全策略拦截了某些请求。6. 给准备校招前端岗的同学刷题之外的建议聊完具体的考题再聊一点更重要的东西。奇安信这份试卷包括其他安全厂商的前端笔试题本质上都在传递一个信号他们缺的不是会写页面的人而是写代码时自带安全敏感度的前端。那这种安全敏感度怎么培养我给你两条实际可操作的建议。第一条把你的个人项目加一些安全改造。比如你写了一个博客系统把其中的评论功能做一个 XSS 过滤和输出编码把文件上传功能加上类型校验和大小限制用 CSP 头保护一下页面。做完这些简历上就可以写实现前端安全加固这几个字面试时也能拿出真实案例来讲比你背十遍什么是 XSS有用得多。第二条刷前端面试题时把边界条件当成一等公民。很多笔试手写题能写出来是基本分能处理边界条件是加分项能解释为什么这么处理边界条件是高分项。比如写一个深拷贝同步说出循环引用问题写一个防抖主动说明 this 绑定的坑写一个上传组件主动提到超时重试和大文件分片。这些细节加在一起阅卷人对你的评价就是一个层次。关于复习资料我建议不要只看面经面经只能帮你查漏不能建立知识体系。你还是要花两周时间把《JavaScript高级程序设计》里的原型、闭包、异步、事件循环这几章重新过一遍再用一周时间补一下 Web 安全基础推荐的入门路线是OWASP Top 10 的每个漏洞都看一下漏洞描述和修复方案配合 ctf-wiki 上的 Web 入门题做两三道。当然2020年这套试卷已经有点年头了现在的笔试难度和考点肯定有变化。但有一点始终不变基础扎实、代码规范、有工程意识的人不管面试哪家公司拿到 offer 的概率都比只会背题的人高很多。最后再分享一个我自己实际踩过的坑。笔试的时候我有一道手写题写得很顺手防抖节流、深拷贝、数组去重全都写得很流畅但我栽在一个我没当回事的简单考点上HTTP 状态码 301 和 302 的区别。我当时想当然地写301 是临时重定向302 是永久重定向正好搞反了。这直接导致笔试排名降了一截。所以我想跟各位说的是刷题的时候别只刷难题基础概念反而要多默写几遍因为你最容易在心里写我知道可一旦要落到笔头上模糊的记忆就是致命的。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门