新闻详情

新闻详情

首页 / 资讯中心 / 详情

用友秋招前端笔试全复盘:考点分布与避坑指南

发布时间:2026/9/1 13:23:37来源:尧图网络
用友秋招前端笔试全复盘:考点分布与避坑指南
2023年秋招我投了用友集团的前端岗笔试考完出来最大的感受是范围广但深度不算变态重点考的是“有没有认真做过项目、有没有啃过基础”而不是背多少偏题怪题。这篇文章就把我那次笔试的完整复盘整理出来包括题型分布、各模块考点、高频题目回忆、解题思路以及我在复习和考试过程中踩过的坑。无论你是准备投用友还是想参考一下国内大厂前端校招的笔试水平这篇都能给你一个比较清晰的坐标。先说结论用友前端笔试从题型到难度在国内企业服务类公司里属于比较典型的一套。它不像头部C端互联网大厂那样动辄四道Hard算法题压场也不像小公司那样只考八股文背诵而是选择题、编程题、简答题混合综合考察前端基础、工程化经验、计算机基础和业务理解能力。这种结构对项目经历比较扎实、但算法刷题量一般的同学反而比较友好。1. 用友秋招前端笔试整体拆解站在出题人的角度想问题1.1 考试形式和题目结构的复盘我参加的那场笔试是统一的在线测评全程双机位摄像头监考网页端答题总分和时间我记得是90分钟。整体题量在四五十道左右其中选择题占大头后面跟两道编程题中间或者最后夹杂几道简答/手写题目。不同的批次可能略有差异但大方向是一致的。时间分配是我觉得最需要提前心理建设的一点。90分钟里塞四五十道选择题加两道编程题如果每道选择题都纠结太久编程题很可能会写不完。我当时策略是选择题平均每题控制在1分钟上下遇到超过两分钟还没头绪的选项先标记跳过等编程题写完再回来补。这个策略帮我稳住了后面的编程题实际效果很好。题型分布大概长这样模块题量占比主要考察方向前端基础JS/CSS/HTML约35%-40%原型链、闭包、事件循环、布局、选择器优先级浏览器与网络约15%-20%缓存、跨域、渲染机制、HTTP状态码框架与工程化约20%-25%Vue/React原理、组件通信、打包工具、微前端数据结构与算法约2道编程题以常见算法题和业务场景模拟题为主计算机基础约10%网络协议、基础数据结构、操作系统常识开放/素质题少量项目经历、场景设计、职业规划1.2 用友这家公司对前端的独特要求用友是做企业服务软件的产品线涵盖了大型企业的ERP、财务、人力、供应链等系统这几年也在大力推YonBIP这类云平台。这类B端公司的前端开发和C端产品的思路差异很大在笔试里会有很明显的映射。C端产品前端关注的是性能指标、首屏体验、跨端适配、数据埋点这些而B端企业服务前端更看重组件化能力、表单中台、权限控制、复杂表格、可视化大屏、低代码/配置化页面搭建以及微前端这类可以支持大型系统拆分的架构方案。笔试里大量出现组件设计、状态管理、前端工程化相关题目就是这个原因。所以如果你准备投递用友这类企业服务公司复习的侧重点应该是背熟Vue/React的底层原理、吃透组件通信和状态管理的各种方案、对微前端有基本的认知同时把前端工程化里的分包、构建优化、环境配置这些理解到位。至于那些炫技型CSS动效、WebGL可视化之类的深挖题反而考得很少。2. 核心考点拆解JS基础、CSS与浏览器机制2.1 JS基础原型链、事件循环、闭包三件套JS基础这部分的题目说白了就是前端面试八股文里最经典的那几类。但用友的题有一个特点它不太直接问你“什么是闭包”而是给你一段代码让你判断输出结果或者让你补充一段代码来实现某种效果。这种考法其实比背概念更有区分度。我记得有一道题是考察事件循环和Promise执行顺序的类似这种结构console.log(start); setTimeout(() { console.log(timeout); }, 0); Promise.resolve().then(() { console.log(promise1); }).then(() { console.log(promise2); }); console.log(end);答案是start - end - promise1 - promise2 - timeout。这道题表面看是在考宏任务和微任务的执行顺序但如果你能准确说出来“微任务队列会在当前宏任务末尾清空而Promise的then的回调会进入微任务队列”这个底层机制这类题就不容易错。我当时复习时是把任务队列相关的机制完整梳理了一遍包括process.nextTick、async/await在微任务中的处理后来看到类似题目基本能秒出答案。原型链相关的题也考了核心就是原型链查找机制。比如实现一个instanceof的手写版本代码不复杂但要求你理解原型和原型链的关系。还有一类常考的是new操作符执行过程中发生了什么以及手写一个new的模拟实现这里有一个关键点很多人会漏就是构造函数如果返回了一个对象那么new表达式的值是这个对象而不是this。闭包题的出题方式也值得说一下。用友考了一道结合循环和异步的经典闭包陷阱题问的是用var声明循环变量时点击某个元素输出什么以及如何修复它。这个题目之所以高频是因为它同时考察了闭包、作用域、事件处理机制和异步延迟执行一道题能卡掉一部分基础不牢的人。2.2 CSS与布局经典布局题是送分题也是必考题CSS部分用友考得不难核心集中在三块布局、选择器优先级、盒子模型与BFC。其中布局题基本是必考的常见的就是两栏和三栏布局。我当时遇到的是要求实现一个左侧固定宽度、右侧自适应的两栏布局并且要求右侧内容区高度与左侧一致。这种题有至少四种解法float margin、flex布局、grid布局、绝对定位加left偏移。我建议至少掌握前两种因为面试官可能会追问flex和float在实现这种布局时有什么本质区别flex有没有兼容性问题在某些老版本浏览器里flex处理方案不如float稳定但在现代浏览器里它是最推荐的常规做法。BFC块级格式化上下文是另一类高频题。它通常不会直接考名词解释而是给你一个场景比如“子元素设置了margin-top结果父元素跟着一起位移了怎么解决”本质考的就是如何触发BFC。常用的触发条件包括设置overflow为hidden/auto、display: flex、display: inline-block、position: absolute/fixed等。这道题的排查思路其实在实际项目里也很有用遇到margin穿透或者浮动塌陷的问题第一时间就该想起BFC。2.3 浏览器机制缓存、跨域、渲染流程是重头戏浏览器相关的考点里HTTP缓存机制是用友非常喜欢考的。它通常给出几个字段Cache-Control、Expires、ETag、Last-Modified然后问你浏览器缓存的判断顺序以及强缓存和协商缓存的区别。复习的时候我建议把整个缓存链路整理成一张流程图浏览器发起请求先检查强缓存命中没有命中就直接用本地缓存没命中就发请求服务器通过ETag或Last-Modified判断协商缓存返回304或200。跨域问题也是必考项。用友的题考了JSONP的原理、CORS的配置方式以及postMessage在前端跨域通信里的使用场景。这里有一个特别注意点JSONP只能支持GET请求因为它的底层原理是动态创建script标签加载外部脚本而script标签的加载天然不受同源策略限制。这个细节很容易被忽略但答出来会显得你对跨域方案的边界条件理解得很清楚。浏览器渲染机制那道题是让我印象比较深的它给了一段HTML和CSS问回流和重绘分别发生在哪些步骤。这里有一个很重要的点display: none和visibility: hidden对回流重绘的影响是不同的。前者会元素从渲染树中移除触发回流和重绘后者只改变元素的可见性元素仍然占据空间所以只触发重绘。实际项目里做性能优化尽量用visibility替代display的切换或者用transform动画替代top/left位移动画都是为了减少回流次数。3. 框架与工程化Vue主导下的组件化和架构思维3.1 Vue 2/3核心机制响应式原理是绕不开的题眼用友的前端技术栈以Vue为主尤其在很多老项目里Vue 2的存量非常大但新项目已经普遍转向Vue 3了。所以笔试题目里Vue 2和Vue 3的内容都会涉及尤其是响应式原理的对比。关于这个考点我当时整理的核心差异是这样的Vue 2通过Object.defineProperty对数据进行劫持只能拦截对象属性的读取和修改无法监听新增属性和数组索引的变化所以才有Vue.set和$set这样的API来补充。Vue 3改用Proxy代理整个对象天然支持新增属性和索引访问的拦截同时配合Reflect保证原生的捕获器行为不出现偏差这也是Vue 3弱化$set的根本原因。下面是一个简化的响应式实现思路主要用来理解核心机制// Vue 3响应式核心的思路简化版 function reactive(obj) { return new Proxy(obj, { get(target, key, receiver) { // 依赖收集读取时记录谁在用这个值 track(target, key); return Reflect.get(target, key, receiver); }, set(target, key, value, receiver) { const result Reflect.set(target, key, value, receiver); // 依赖触发值变化了通知所有用这个值的地方更新 trigger(target, key); return result; } }); }笔试考到这种题一般不会让你手写完整源码但会让你判断“给一个对象新增属性后页面数据是否会更新”以及解释原因。懂了Proxy和Object.defineProperty的差异这类题就很稳。3.2 组件通信与状态管理一道场景题串起所有方案用友笔试里有一道场景设计题在一个后台管理系统中有一个父组件管理用户列表子组件负责展示用户详情兄弟组件负责筛选用户条件问有哪些组件通信方案各自的适用场景是什么。这种题就是考察你对组件通信全貌的掌握程度。常见的组件通信方式我整理了一个表格通信场景推荐方案适用说明父子组件props/$emitVue 2或defineProps/defineEmitsVue 3结构清晰适合单向数据流父子组件深层嵌套provide/inject适合祖先组件向所有后代组件提供数据兄弟组件/跨级组件事件总线Vue 2/mittVue 3适合简单场景组件数量少时使用全局状态Vuex / Pinia适合管理登录状态、权限信息、全局配置等跨应用postMessage、CustomEvent适合微前端架构下不同子应用通信我当时在回答这道题的时候额外提到了一个经验不要动不动就把所有通信都用全局状态管理来做很多只需要父子组件传值的场景用propsemit就够了。全局状态管理引入后如果滥用项目里会出现一堆“状态不知道从哪里来、在哪里被修改”的问题定位bug的成本会直线上升。在企业级B端项目里状态管理的核心作用是管理全局性的、跨组件的关键状态而不是替代组件通信。3.3 前端工程化打包优化、微前端、低代码平台工程化这块的题量明显比一般的C端公司笔试要多。用友毕竟是做企业级平台的它非常关心你有没有真正负责过一个大型前端项目的构建和维护。构建优化是必问的。问题一般是“你的项目首屏加载太慢如何排查和优化”。标准答案大概包括路由懒加载、UI组件库按需引入、第三方库拆包、启用CDN缓存、图片压缩、开启gzip压缩、代码分割等等。但如果只是背这些点大概率只能拿基础分。我建议准备一两个实际用过的优化案例比如我把某个大型表单页的包体从1.5MB优化到了400KB具体是怎么做按需引入的优化后首屏时间从3秒降到了1.5秒。这种有数据支撑的回答在面试环节会更占优势。微前端也是用友这类多系统集成型公司比较喜欢的考点。笔试里会以选择题形式考察多个前端应用如何实现统一登录、如何共享公共组件、子应用之间如何通信。这背后其实是一套完整的微前端架构包括主应用和子应用的注册机制、路由匹配规则、沙箱隔离策略以及公共依赖的上层抽取。如果之前没接触过微前端建议至少把single-spa和qiankun的核心概念过一遍理解它们是怎么做应用加载和JS沙箱隔离的。还有今年连续火起来的module federation方案它比qiankun更轻量是另一条值得了解的路线。低代码/配置化平台这个方向在笔试里不一定会出大题但选择题里会带一点“表单配置化渲染”的内容。毕竟用友的产品线里有大量表单和列表页面如果能实现配置化生成开发效率会高很多。我建议复习时了解一下动态表单和JSON Schema驱动的页面渲染方案对这类题会很有帮助。4. 算法与手写编程题高频题型与考场上的解法策略4.1 两道编程题的复盘数据结构题和业务场景题的组合用友笔试的两道编程题一道偏数据结构算法一道偏业务场景模拟难度大概是LeetCode中等偏下。这是我印象比较深的一个组合。第一道题我遇到的是“数组中第K个最大元素”。这题正常情况下用最小堆维护大小为K的堆堆顶就是答案或者直接用快速选择算法平均O(n)解决。我当时用JavaScript手写了快速选择因为JavaScript本身没有内置堆结构如果临时实现一个堆反而容易出错。这里提一个考场小技巧如果你对快速选择理解得不够透彻直接用sort排序然后倒序取第K个也是能过的虽然时间复杂度差一些但在笔试数据的规模下通常没问题。考试的目标是拿分不是炫技。第二道题是偏业务的模拟题给定一组员工数据包含姓名、部门、薪资要求按部门分组并在每个部门内按薪资降序排列输出每个部门薪资最高的员工信息。这道题本质就是考察数组API的熟练度和对象操作的严谨性用Array.prototype.reduce做分组再用sort排序逻辑清晰。不过这个题里有一个坑就是排序的稳定性。JavaScript的Array.prototype.sort在V8引擎中是稳定排序但如果你依赖“原顺序”来作为次级排序条件建议在比较函数里显式写好不要赌默认行为。另外边界情况——比如空数组、所有薪资相同、部门字段缺失——也要考虑进去。我在写的时候额外加了数据过滤和空值判断这种细节在业务场景模拟题里往往是加分项。4.2 手写题防抖节流、Promise.all、深拷贝除了编程题简答或手写题部分出现了三件套防抖节流、Promise.all、深拷贝。这三道题属于前端手写题的常青树基本每个认真准备过前端面试的人都会背但背和写对是两回事。防抖节流这道题关键点是理解两者的区别。防抖是在事件触发后等待一段时间再执行如果在这段时间内再次触发就重新计时节流是保证在一段时间内只执行一次。业务上典型场景搜索框输入用防抖页面滚动或窗口resize用节流。下面是我当时手写的版本// 防抖多次触发只执行最后一次 function debounce(fn, delay 300) { let timer null; return function (...args) { if (timer) clearTimeout(timer); timer setTimeout(() { fn.apply(this, args); timer null; }, delay); }; } // 节流一段时间内只执行一次 function throttle(fn, interval 300) { let last 0; return function (...args) { const now Date.now(); if (now - last interval) { last now; fn.apply(this, args); } }; }这里有一个细节很多人在手写防抖节流的时候忽略了this指向的处理。如果不做fn.apply(this, args)在对象方法里调用时this会丢失。笔试题如果考察到“能否正确处理this指向”这里就是切分水平的地方。Promise.all手写题的核心是并发处理与错误处理。关键点有三个返回一个Promise、所有输入Promise都成功才resolve且结果顺序要跟输入顺序一致、任意一个失败就直接reject。实现的时候要用一个计数器记录已完成的数量而不是用数组的length否则数组中间的空位会导致误判。深拷贝这道题看似基础但很多人在处理循环引用时翻车。常规做法是用WeakMap记录已经拷贝过的对象遇到重复引用时直接返回已有的拷贝避免无限递归。还需要区分数组、普通对象、Date、RegExp等常见类型。如果只是用JSON.parse(JSON.stringify(obj))遇到undefined、function、Symbol、循环引用都会出问题所以在笔试里这道题其实是在考察边界意识。4.3 算法复习的侧重点高频题型比刷题量更重要如果你时间有限我强烈建议算法复习围绕这几类展开数组和字符串操作、哈希表应用、双指针、链表、二叉树基础遍历、动态规划入门、排序算法复杂度。用友这类公司更看重你“会用数据结构和算法解决实际问题”而不是出竞赛级别的题目。另外刷题的时候尽量用JavaScript写不要用Python或Java刷完就跑了。因为很多公司的笔试系统里主语言是JavaScript你用其他语言写熟了到实际笔试时再切换到JS手写会有明显的生疏感。我当时就有这个教训前期刷题用Python特别顺手一到JS手写就卡壳后来强制自己所有题都用JS写两遍才慢慢适应。5. 计算机基础与开放类题目容易被忽视的得分项5.1 网络基础TCP、HTTP状态码和HTTPS握手计算机基础部分用友考得不算深但覆盖了不少网络协议的知识点。TCP的三次握手和四次挥手是常客HTTP状态码也有涉及。这些题目本身不复杂但我发现很多前端同学在这块是短板因为平时写业务代码根本接触不到底层网络细节。HTTP状态码建议把常见分类记住1xx是信息性状态码2xx表示成功3xx表示重定向4xx是客户端错误5xx是服务端错误。其中容易混淆的几个是301永久重定向和302临时重定向304协商缓存命中403禁止访问和404未找到的区别以及502和504的逻辑差异。这些选择题里会出现而且在实际项目联调接口时也经常用得上。HTTPS握手流程这道题考察点在对称加密和非对称加密如何配合。简单理解就是先用非对称加密协商出一个临时对称密钥之后通信都用对称加密兼顾了安全性和性能。如果你能把这个逻辑讲清楚分数基本就拿到了。5.2 数据结构与操作系统边缘考点数据结构部分没有考复杂算法主要是对栈、队列、二叉树这些基础概念的理解。比如栈的“后进先出”特性如何应用到函数调用栈和浏览器的“前进后退”功能队列的“先进先出”特性如何应用于任务队列。这类题目只要你大学课程没白学基本能答对。操作系统部分考了进程和线程的区别以及进程间通信的基本方式。这题对于前端同学来说可能有点偏但如果你了解浏览器的多进程架构答这类题其实不难。浏览器的每个标签页本质是一个进程渲染、GPU、网络等线程在进程内各司其职这个知识架构本身就是对进程线程关系最好的实践理解。5.3 行为面题目项目经历的呈现方式笔试里的开放题一般会让你写一两段关于项目经历的内容。问法大概是“简述一个你最熟悉的项目遇到的最大难点是什么如何解决的”。这道题看似随便写写就能过但它实际上是筛选人的关键题之一。因为笔试环节没有面试官追问你写的每一段话就是你这轮印象的全部来源。我的建议是使用STAR原则来组织情境Situation说明项目背景任务Task说明你的职责行动Action说清楚你具体做了什么技术选型和方案落地结果Result给出量化指标。比如“重构了三个核心表单页面通过封装通用表单组件和配置化方案将同类页面的开发周期从3天缩短到1天”。这种表述在面试官眼里会非常有说服力因为它的核心是“你有能力把复杂问题简化成可复用的方案”这恰恰是企业级B端场景最需要的能力。6. 经验复盘复习路线、考场策略与避坑指南6.1 复习时间线与核心资料如果从零开始准备这类B端公司前端笔试我建议至少留出四周时间。第一周用来梳理前端基础八股文包括JS、CSS、浏览器机制把自己最薄弱的模块先过一遍第二周集中刷框架题和工程化题Vue全家桶的底层原理要吃透第三周算法和手写题为主力扣按标签刷每天保证三到五题第四周进入模拟笔试状态找整套前端笔试题练手训练时间分配和手写代码的稳定性。资料方面前端八股文汇总、力扣热题100、Vue官方文档和源码解析文章是我认为性价比最高的三项。如果时间很紧宁可少刷一些偏题怪题也要把高频基础题反复做熟毕竟笔试里基础题的占比远大于困难题。6.2 考场上最容易踩的坑第一个坑是时间分配失衡。选择题里总有那么两三道比较偏容易让你较劲。我的做法是标记跳过绝不恋战。两道编程题的分值远高于几道选择题编程题写不出来选择题答得再好也是白搭。第二个坑是代码细节。在线笔试的代码编辑器一般不会给你完整的自动补全手写代码时语法错误很容易出。所以平时练习时尽量少依赖IDE的自动补全尤其是在写sort的比较函数、reduce的累加器和各种API的参数顺序时一个简单的拼写错误就会导致整个程序跑不通。第三个坑是审题不清。业务场景模拟题往往藏着一两个边界条件比如空值处理、排序稳定性、重复元素去重。很多同学题目看了一半就开始写写完才发现漏了要求返回去改又浪费时间。我建议先花两三分钟把题目彻底读透把输入输出的边界列出来再动手写代码。6.3 给下一届同学的建议用友笔试之后还有面试笔试只是第一关通过了之后还有一至两轮技术面和一轮HR面。技术面会围绕笔试里的薄弱点和项目经历展开追问比如你在笔试里写了“深拷贝”面试官就可能让你现场写一遍并追问循环引用怎么处理、Symbol属性要不要拷贝。所以笔试里出现过的题目考完之后一定要复盘把它变成自己能讲清楚的知识点否则面试时被追问答不上来反而暴露短板。HR面则更看重你的职业规划、稳定性、团队协作能力和对用友业务的了解程度。面试前建议花点时间上官网看一下用友的核心产品线了解它是做企业服务软件的公司明白这类公司的业务流程和技术形态面试时能聊出一些自己的理解会和其他候选人拉开差距。我个人在复盘这场笔试时最大的体会是这场笔试并没有故意刁难人它考察的每一项能力——JS基础、框架原理、工程化经验、算法的基本套路、项目中的问题解决能力——都是日常前端工作中真实会用到的东西。只要在校招季之前踏踏实实把基础打牢把项目经历真正做完做深通过这场笔试并没有想象中那么玄乎。希望这篇复盘能帮你在准备过程中少走一些弯路。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

上海铂铭行汽车龙衍特种车工场:中国高端商务车定制与专用车制造商如何构建产品矩阵 2026/9/1 14:15:02

上海铂铭行汽车龙衍特种车工场:中国高端商务车定制与专用车制造商如何构建产品矩阵

摘要:依托龙衍特种车工场,上海铂铭行汽车有限公司正在不断完善高端商务车定制和专用车制造两大业务体系。公司拥有工信部公告专用车生产资质、国家高新技术企业及专精特新中小企业等基础,同时取得世界制造厂识别代号(WMI)LA9/BMH,并以丰田柯斯达、丰田海狮、红旗国悦等车型构建…

阅读更多 →
python的图论工业场景模拟第三十八篇:着色方案校验与违规修复,任务:校验已有的排班方案,若发现相邻任务同色(冲突),强制重新分配颜色,图建模说明:无向冲突图,图属性校验与修正。 2026/9/1 14:15:02

python的图论工业场景模拟第三十八篇:着色方案校验与违规修复,任务:校验已有的排班方案,若发现相邻任务同色(冲突),强制重新分配颜色,图建模说明:无向冲突图,图属性校验与修正。

着色方案校验与违规修复:排班撞车了,怎么自动"改颜色"? "调度员手排了 12 道工序的 3 班倒方案,交给我说你跑一下看看有没有冲突。我建了冲突图,把他的方案当成初始着色一校验——颜色 0 里塞了工序1 和…

阅读更多 →
Umi-OCR离线OCR怎么上手:3分钟跑通,批量识别免费用 2026/9/1 14:15:02

Umi-OCR离线OCR怎么上手:3分钟跑通,批量识别免费用

Umi-OCR离线OCR怎么上手:3分钟跑通,批量识别免费用 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置…

阅读更多 →
Next AI Draw.io:3 分钟上手的 AI 自然语言画图工具 2026/9/1 14:15:02

Next AI Draw.io:3 分钟上手的 AI 自然语言画图工具

Next AI Draw.io:3 分钟上手的 AI 自然语言画图工具 【免费下载链接】next-ai-draw-io A next.js web application that integrates AI capabilities with draw.io diagrams. This app allows you to create, modify, and enhance diagrams through natural languag…

阅读更多 →
CCR配置备份与灾难恢复完整指南:如何备份CCR配置、配置丢失怎么恢复 2026/9/1 14:15:02

CCR配置备份与灾难恢复完整指南:如何备份CCR配置、配置丢失怎么恢复

CCR配置备份与灾难恢复完整指南:如何备份CCR配置、配置丢失怎么恢复 【免费下载链接】claude-code-router One local control plane for every AI agent: route across models, fuse new capabilities, orchestrate tools, and stay fully in control. 项目地址: …

阅读更多 →
GSD动态模型路由完整指南:如何按任务复杂度自动切换最便宜的模型 2026/9/1 14:12:02

GSD动态模型路由完整指南:如何按任务复杂度自动切换最便宜的模型

GSD动态模型路由完整指南:如何按任务复杂度自动切换最便宜的模型 【免费下载链接】gsd-2 A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time autonomously without losing…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞