资讯动态

前端两年经验跳槽面经:从简历准备到高频面试题拆解

发布时间:2026/8/30 9:21:54 来源:尧图企业网站定制
面试季跑完最后一轮的那一刻我坐在公司楼下的长椅上愣了好一会儿。回头看看这一个月的经历投了接近四十份简历做了十几场笔试面了八家公司的十几轮面试最后手里拿着两个offer说实话挺累的。但回头看这段经历最大的价值不在于拿到几个offer而在于把我之前两年的前端经验彻底打散重组了一遍。先说下我的背景普通二本毕业非科班转行在上一家公司待了两年做的是ToB管理系统的前端开发技术栈以Vue为主React只是断断续续写过一点。因为业务趋于稳定平时主要改改bug、调调样式一年下来代码量增长得很少进步曲线基本是平的。所以我动了换工作的念头目标很明确去一个业务增速快、技术氛围好的团队薪资能有一定的涨幅。这篇文章我会把从准备到拿offer的完整过程整理出来包括简历怎么写、知识点怎么复习、面试题怎么拆、项目怎么讲、手写题和算法题怎么练还有各种我踩过的坑。适合工作一到三年、准备跳槽的前端同学参考。1. 写在前面为什么离职、这一个月发生了什么先说说为什么待了两年就走。不是公司不好而是我能明显感觉到自己进入了一个舒适区。管理系统的业务逻辑就那么几套列表、表单、弹窗、详情改来改去都差不多。我每天都在用同样的写法交付需求不再有“这个技术难点要怎么攻克”的兴奋感。有次我打开自己三个月前写的代码发现和现在写的几乎没有区别那一刻我意识到如果继续这样下去再过两年我还是那个水平。离职的决定其实并不草率。我给自己定了一个周期一个月集中冲刺如果拿不到满意的offer就继续待着不裸辞。前两周用来系统复习后两周集中投递和面试。说实话边工作边面试确实累白天上班晚上复习到凌晨一两点的日子我这辈子都不想再来一次。但好处是经济上不用太焦虑心态也比较稳面挂了不至于慌乱。这一个月里我最深的感触是面试真的能把一个人逼出潜能的极限。以前模糊的、似懂非懂的知识点在面试的持续追问下全部现出原形。比如我一直以为自己懂vue的响应式原理但真正被问到“computed是怎么收集依赖的”的时候我才发现自己心虚得很。所以这篇面经本质上真的是用一段高强度面试攒出来的。2. 面试之前的准备工作很多准备跳槽的人容易犯一个错误简历还没改直接就去投了结果面一个挂一个。我这次吸取了这个教训花了不少时间在准备工作上事实证明效果很明显。2.1 简历别什么都往上面堆简历是敲门砖但也是很多人最容易翻车的地方。我见过把简历写得跟流水账一样的也见过只写技术名词不写结果的。说实话面试官在筛选简历时每份只停留十几秒你必须让他一眼扫到亮点。我改简历时遵循的规则是每个项目先描述业务背景再说自己负责的模块最后一定要写技术难点和业务成果。比如我写一个“基于Vue3的项目重构”时不是简单写“负责xx模块开发”而是写清楚旧项目存在什么问题维护成本高、首屏加载慢我做了什么方案组件拆分、路由懒加载、公共逻辑抽离最后带来了什么结果首屏时间从3.2秒降到1.8秒、代码量减少30%。这种写法面试官一眼就能看到你的思考链路也会顺着你的思路往下问问题反而更好准备。另外简历上写的技术栈要慎重。只写自己真的有把握的内容千万别为了显得厉害把“精通”两个字到处放。我这次去面试简历上写的技术栈都是自己真的用过的但就是这样也被追问了很多问题如果写了装出来的技术栈压力会更大。2.2 知识体系怎么用两个星期把八股文过一遍准备阶段时间最紧张。我把复习内容分成四块基础HTML/CSS/JS、框架Vue和React、工程化和浏览器原理、手写题与算法。每天给自己安排固定任务按知识点分类整理成笔记。基础部分重点复习的是原型链和继承、闭包、this指向、事件循环、Promise原理、深浅拷贝、防抖节流。这些属于高频中的高频被问到的概率几乎是100%所以不能只停留在“会背概念”层面一定要能写出来、能说出底层原理。框架部分我重新梳理了Vue3的响应式原理proxy和effect的关系、依赖收集与触发更新、computed和watch的区别、组件通信方式、diff算法的大致流程。React部分也准备了一些常见问题函数组件和类组件的区别、useEffect的依赖处理、虚拟DOM、Hooks的实现思想。工程化和浏览器部分重点看的是webpack的构建流程与loader/plugin机制、vite为什么快、浏览器渲染流程、回流与重绘、缓存策略、性能优化手段。这些不用特别深入但每个方向上都要有能说三分钟的储备。手势题和算法题我单独抽时间练这部分后面专门讲。2.3 项目复盘把流水账讲成技术方案简历和知识点准备完之后我还花了一天做项目复盘。具体做法是把简历上写的每个项目按照“背景-设计-实现-难点-成果”五段式整理成一份文档每个环节都预先想好面试官可能会追问什么。这个环节极其重要。因为面试官一定会挑一个你写得最多的项目进行深挖如果连自己写的项目都被问倒那基本是废的。我这次深挖最狠的是一个数据可视化大屏项目面试官从技术选型一路问到数据量大时怎么优化渲染性能再问到地图组件的适配方案差不多聊了四十分钟。还好我提前把每个环节都想过一遍这才稳住了。我还给每个项目准备了一个“如果重来你会怎么做”的答案这种问题看起来很开放其实是考察你有没有复盘能力。提前想好面试时就不会卡壳。3. 笔试和机试环节不刷题是真的会挂这两年前端面试的形式越来越多样除了纯聊天的技术面很多公司还会加笔试环节或者现场手写题。如果你平时不刷题这个环节非常容易翻车我身边就有朋友因为接连挂在在线写算法题而崩溃。3.1 算法题怎么准备我本身不是科班出身算法基础不算好。准备阶段我给自己定的策略是“高频优先”数组和字符串操作、双指针、哈希表、栈和队列、常见排序快排、归并、链表反转、二叉树层序遍历、简单动态规划爬楼梯、最大子数组和。这些题目在LeetCode上都有大量样例我每天至少刷十道从简单题开始有感觉了再上中等题。有些同学可能会问两年经验的面试官还会考算法吗我的回答是确实会尤其是略大一点的厂算法是筛人的硬性门槛。而且算法题不要求你AC全部但一定要有清晰的思路哪怕最后没写出来把思路讲出来也能拿一部分分。3.2 手写题高频的几十道题要烂熟除了算法题前端面试还有一大类必考题——手写实现。我的经验是这类题是可以通过短期背诵加理解快速突破的性价比非常高。以下是我遇到的最高频的手写题建议每位准备面试的同学都动手过一遍手写防抖和节流包括立即执行版本手写深拷贝要考虑到循环引用、Date、RegExp等类型手写Promise.all、Promise.race手写原生call、apply、bind手写new、instanceof手写发布订阅模式手写数组扁平化、去重、排序手写一个简易版Vue响应式数据劫持发布订阅3.3 线上编程环境注意事项这个点我要特别提醒一下很多公司的笔试用的是外部在线平台环境比较难用。我第一次线上面试就碰到一个平台代码编辑器没有代码补全缩进也容易乱我平时在本地IDE里写得流利的代码到了那个环境里各种别扭最后题目虽然会做但写得磕磕巴巴。所以我的建议是提前去牛客网或者公司指定的在线平台体验一下在线编辑器熟悉没有代码提示的情况下写代码的感觉。另外面试前一定要准备好摄像头和听筒的调试我遇到过面试官那边声音很小、自己这边麦克风没声音的尴尬情况。4. 高频面试题拆解与答题思路面试题是绝对绕不开的环节。两个小时的面试通常有一个小时都在围绕知识点做技术追问。我把自己遇到最多的题目整理一下并且附上答题思路希望对你有帮助。4.1 JS和浏览器基础这些题从来不让人省心JS基础题问得最多的第一个就是事件循环。我面试的一家面试官从一道输出顺序题开始“setTimeout、Promise、async/await、requestAnimationFrame混在一起请问输出顺序是什么”后来一路追问到宏任务和微任务的优先级、为什么微任务先执行、setTimeout为什么会有延迟。这种题没有捷径必须从事件循环的机制本身去理解把浏览器进程模型、任务队列、渲染帧之间的关系说清楚才算过关。第二类高频题是闭包和this指向。面试官会给一段代码让你说this指向谁然后追问如何改变this指向。这里千万要注意箭头函数和普通函数的区别以及new绑定、显式绑定call/apply/bind、隐式绑定、默认绑定这套优先级顺序。建议自己动手把每种绑定方式各写一个例子加深记忆。第三类是原型链和继承。面试官会问“new一个对象的时候发生了什么”然后延伸到原型链查找机制再到ES6的class和ES5继承的区别。我建议把原型链画成图放在笔记里面试前多看几遍形成肌肉记忆。浏览器的渲染流程和缓存也是高频。渲染流程的核心在“浏览器拿到HTML后怎么解析成页面”——构建DOM树、CSSOM、render树、布局、绘制、合成每一步的触发条件和优化手段都要知道。缓存方面要分清强缓存Expires、Cache-Control和协商缓存Last-Modified、ETag还要知道缓存在页面性能中的实际应用。4.2 框架Vue和React都要会一点虽然我只深入用过Vue但面试时好几个面试官都问了我React的问题。现在的前端市场很多团队是React栈如果完全不会淘汰概率很大。所以我在准备阶段专门补了React的基础知识。Vue方面的高频问题Vue2和Vue3响应式的区别Object.defineProperty vs Proxy、computed和watch的区别、虚拟DOM和diff算法、组件通信方式、v-for里的key到底有什么用。有个面试官追问得非常深“computed为什么有缓存它是怎么实现缓存的”这个题目需要你理解Vue的依赖收集和懒计算机制如果只是背概念很容易露馅。React方面的高频问题函数组件和类组件的区别、useState和useEffect的原理、虚拟DOM在React里是怎么工作的、key的作用、Hooks为什么不能写在条件语句里。我在答“Hooks为什么不能写在条件语句里”的时候记忆深刻面试官让我从实现原理去解释其实就是Hooks是按照数组或者链表顺序存储的如果条件执行会导致顺序错乱这个知识点一定要自己写一遍实现才能理解透彻。如果你面的是偏中高级的岗位还可能会被问到Vue和React的对比、各自适合什么场景。我的经验是不要站在某个框架的立场去贬低另一个重点讲清楚不同框架的设计哲学结合自己的实际项目经验去说。4.3 工程化和性能优化考验真功夫的地方工程化的考题这两年越来越多了。webpack的原理绕不开面试官会问“webpack的打包流程是怎样的”从配置解析、模块解析、构建模块、生成chunk、输出文件五个阶段来答顺便把loader和plugin的区别说清楚。loader本质上是一个转换模块代码的函数在模块加载阶段执行plugin则是在构建流程的各个生命周期节点触发的事件钩子。把这个说到位面试官基本就点头了。vite为什么快关键在“利用浏览器原生ES Module支持开发阶段不做打包按需加载模块”构建时用Rollup打包。这里面试官可能会追问“vite的开发依赖预构建是干什么的”答案是将第三方依赖如lodash转换为ESM格式并缓存在node_modules/.vite目录里减少浏览器请求数量。性能优化是很多面试官的重头戏。核心思路是先做性能评估用Lighthouse或Performance面板测数据再从网络层、渲染层、运行时三个维度来优化。网络层包括CDN、资源压缩、HTTP缓存、图片懒加载渲染层包括减少重排重绘、动画使用transform和opacity、懒加载和代码分割减少首屏JS体积运行时的重点是减少不必要的计算、长列表的虚拟滚动、大对象的内存释放。每一条都要能结合实际项目说效果比如我的Vue3重构项目就是把首屏时间优化了44%这就是很好的素材。4.4 场景题微前端、大文件上传、登录鉴权场景题是这两年面试的新趋势特别考察综合能力。我遇到过的几个场景题几乎都能在热搜词里看到影子。微前端是问得最多的一种。面试官会问“假设现在有一个老项目是单体的后台管理系统现在团队要支持多个子应用接入你会怎么设计”这个题目考察的点很多为什么用微前端独立部署、独立技术栈、团队自治、怎么做应用隔离JS沙箱、CSS隔离、怎么做通信全局状态、自定义事件、路由分发、主应用和子应用怎么集成。我用qiankun做过实际项目所以答得比较顺如果没有实践经验建议至少看一遍qiankun的文档和原理实现。Web Worker上传大文件也遇到过一次。面试官问的是如何实现一个断点续传、秒传的前端上传方案这个题目的核心是视频切片、用spark-md5计算文件哈希对切片做增量计算、并发上传多个切片可以用Promise.all限制并发数、切片上传完成后的服务端合并或使用Worker并行处理。我把用Worker做切片哈希计算的实践聊了一遍面试官还追问了Worker和主线程通信的性能问题因为用了ArrayBuffer转移对象数据零拷贝这个细节很加分。登录鉴权是另一个几乎必问的场景题token存在哪里localStorage、sessionStorage还是cookie各自的优缺点如果你的接口要求每次带token怎么处理过期刷新这里有个经典坑token存localStorage容易被XSS攻击拿到存cookie要防范CSRF更安全的方案是access_token存内存 refresh_token存httpOnly cookie但也更复杂要分场景来选。面试的时候记得把两种方案的取舍讲出来面试官会认为你有工程经验。5. 项目深挖面试官到底在听什么项目深挖是前端面试的重头戏很多时候一道项目题就能聊45分钟。我做了两个压轴项目一个是大屏数据可视化一个是系统重构。两个项目正好覆盖了不同的技术点面试官问起来也有得聊。5.1 讲项目的STAR法则讲项目最怕的就是平铺直叙“我做了权限系统用vue写的动态添加路由之类的。”这样说等于自曝其短面试官根本抓不到重点。一个可复用的讲法是STAR法则背景Situation——我当时遇到的是什么业务问题任务Task——我的目标是什么行动Action——我具体做了什么技术方案为什么这样做结果Result——最后的效果指标是多少。这个结构能帮你在讲故事时建立清晰的因果逻辑面试官顺着你的逻辑去追问时你也不容易乱。5.2 我准备的两个压轴项目大屏可视化项目的技术点非常丰富echarts的使用与定制、大数据量的渲染优化用canvas代替DOM、数据抽样、地图组件的适配、大屏的适配方案scale缩放和rem的取舍、WebSocket实时数据推送、SSE等。面试官特别喜欢问如果数据一秒更新一次图表怎么才能不闪烁重绘这就是个典型的实战问题需要用setOption的渐进更新方式而不是每次都new一个新的图表实例。系统重构项目则是我讲得最多的一个。背景是老项目是jQueryBootstrap写的维护成本越来越高技术栈老化。我的方案是先用微前端的方式在旧系统中嵌入新模块逐步替换最后再整个切换。这里面试官特别关注兼容期的数据通信和用户无感迁移我之前在qiankun的全局状态管理和登录态同步上做了不少活所以讲起来很充实。5.3 被追问心态崩了怎么办项目深挖的过程中面试官一定会不断追问。有时候问到某个知识点你确实不会这个时候千万不要编。我的处理方式是先承认“这个细节点我之前没有深入挖掘”然后立刻切换到相关且有把握的知识点“不过和它相关的xx我是这么处理的……”有次面试官问我大屏适配时flexible.js的源码实现细节我虽然知道它的核心原理但对setRemUnit里的具体写法记得不深于是我很坦诚地讲了实现思路并且补了一句“具体细节我可以确认后补充一份实现文档发给你”。事后我确实发了一封邮件附上源码分析面试官对我印象还挺好的。所以被追问不会不可怕关键是要诚实、有逻辑并且展示出你愿意去补齐知识的态度。6. 面试中的沟通技巧和防坑指南技术能力只是一部分面试中的沟通表现也很重要。我这里总结了几个在面试过程中学到的沟通技巧以及容易踩的坑。6.1 怎么回答“你最大的缺点”这个问题基本必问但好多人都答得很烂。有人说“我最大的缺点就是太追求完美”这种答案一听就是套路也有人说“我这人不擅长沟通”这种答案等于自杀。我的思路是说一个真实的、但不致命的缺点再补充自己正在用的改进方案。比如我说“我以前写代码很容易陷进细节里比如调样式调很久后来我会给每项开发任务定一个时间盒如果超过时间就主动寻求帮助或者先用兜底方案”。这样听起来既真实又积极面试官也容易接受。6.2 薪资谈判和offer比较薪资谈判是很多人不好意思提的话题但作为跳槽薪资涨幅其实就是跳槽的核心目的之一。我的经验是简历上写期望薪资时写一个比自己心理底线高15%左右的数字给HR留出还价空间。面试通过后HR通常会先问“你现在薪资是多少期望是多少”这时候千万不要只报税前月薪要把年终奖、公积金、补贴等综合福利算进去按年包报。offer比较方面除了薪资我还会看重技术栈匹配度、业务增速、团队的代码规范和培训机制。面试的时候可以反客为主问面试官几个问题团队现在最大的技术挑战是什么代码审查流程是怎样的新人进来一般怎么适应这些问题能帮你判断团队的真实水平也能让面试官觉得你是一个有思考的候选人。6.3 面试中的禁忌行为和必问问题我整理了面试中容易踩的坑尤其是在面试官视角下减分的做法简历上的项目和技术栈不匹配面试官对某个技术点一追问立刻语塞。回答问题没有结构性逻辑想到什么说什么长篇大论却没有重点。打断面试官说话尽量等面试官把问题完整说清楚再作答不确定要求时可以礼貌反问。对上一家公司或者同事有负面评价面试官会担心你入职后也会这么对待他们。没有准备“你有什么想问的”面试官问到这一环节时支支吾吾会让人觉得缺乏主动思考。反过来的加分项是边思考边回答答题用“这个问题可以从几个方面来看”来结构化表达遇到不会的题目实事求是同时给出自己的解决思路面试结束前准备两三个高质量的问题。这些细节加在一起能把你的综合印象分拉高不少。7. 复盘与建议一个月的面经之后的一些总结经验面完所有公司之后我花了一个周末做复盘把每轮面试的问题、我的回答、哪些答得不好全部整理了一遍。这个过程很痛苦尤其是看到自己挂在同一个知识点上两次但收获极大它直接帮我锁定了接下来需要补的技术短板。7.1 这一路踩过的坑这次求职过程中我自己踩过比较大的坑有几个单独分享一下第一太晚开始投简历导致时间利用率不高。我前面两周都在复习后两周才开始投递和面试导致好几家公司的流程重叠在一起面试时间几乎冲突有的甚至来不及参加挺浪费的。其实边复习边投递是可以并行的早点开始投哪怕先面两三家自己没那么想去的公司练练手拿真实面试当模拟效果比自己埋头复习好得多。第二没有提前准备完整的项目讲述稿。一开始面试时我讲项目是临场发挥讲得特别散经常聊着聊着跑偏。后来我把自己最核心的项目写成了两千字的讲述稿基本每一段都能说30秒以上面试时思路就清晰了很多。这一点强烈推荐各位提前做。第三忽略了系统设计类题目。我本身在业务系统上做了很多工但平时很少从“系统设计”的视角去思考问题导致面试官抛出“如果让你设计一个前端监控系统”这类题目时我只能零散地答几个点没有体系感。后来我恶补了监控系统的整体架构数据采集、日志上报、错误聚合、告警、可视化虽然只能现学现卖但面试时给人感觉专业多了。第四面试太多家导致精力分散。我投了将近40家最后实际面试了8家整体体感是同一个知识点讲了七八次之后确实熟练了但人也极度疲劳后面几场的状态明显不如前面。如果有想冲的目标公司建议把最重要的面试放在状态最好的时间点不要等到面了很多家之后才去面最想去的。7.2 给同样两年经验的同学一些建议如果你也处于两年经验、准备跳槽的阶段我想给你几个比较实在的建议第一不要把面试当成检验而要当成学习机会。面试官随口抛出的一个深入问题很可能就是你平时没注意到但应该掌握的重要知识点。每次面完之后把这些“知识盲区”补上一个月之后你会发现自己整个知识体系比之前扎实非常多。第二面试要准备“故事线”。两年经验的候选人面试官大概率不会要求你有非常深的架构能力但会很关注你的成长潜力和思考深度。所以准备面试时不仅要准备知识点更要准备“我是怎么从第一年做到第二年的”“我在项目里做了哪些主动改变”这类成长故事。第三简历上写的内容一定要能撑得住追问。我见过一个同学在简历上写“熟练使用React”结果被问到“Fiber是什么”的时候完全答不上来整个面试直接崩了。与其打包很多技术名词不如把真正掌握的几个方向写扎实哪怕只有一个难度较高的项目也能扛住面试官的深挖。第四保持好心态。面试挂掉是很正常的事情不要因为一两家失败就怀疑自己。我这次面一家挺心仪的公司二面挂在一个很边缘的CSS问题上当时挺失落的但现在回头想想正好帮我把CSS基础补扎实了后面的面试反而因此没再踩坑。写在最后这一个月高强度的面试让我彻底体验了一次什么叫“知识倒逼式成长”。从最初连自己项目里的细节都讲不流畅到最后几轮面试能轻松应对各种追问这个过程中的收获比我之前按部就班写一年代码还要多。我也越来越相信面试不只是用人单位挑选候选人更是双方在技术认知上的一次深度碰撞是前端开发里非常难得的复盘修炼场。最后再分享一个小技巧面试结束后的当天晚上无论结果如何我都要求自己花半小时把所有的题目和回答记录下来写进自己的面经笔记。这一份笔记不仅帮助我调整后续面试的策略等到下次跳槽时也会是我最宝贵的复习资料。建议准备换工作的同学也试着这样做别怕记录的时候发现自己回答得不好那恰恰是你成长最快的时候。祝看到这里的你也能在接下来的面试季节里拿到心仪的offer。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价