当前位置: 当前位置:首页 > 百科 > web前端笔试题及答案正文

web前端笔试题及答案

作者:焦点 来源:百科 浏览: 【大 中 小】 发布时间:2026-10-17 06:08:54 评论数:

web前端笔试题及答案

上周帮朋友公司筛前端简历,端笔收了47份,试题能进面试的及答不到8个。笔试环节刷掉的端笔人最多——不是题难,是试题基础太碎。我挑三道高频错题,及答直接拆开讲。端笔

第一题:闭包输出什么?试题

for (var i = 0; i < 5; i++) {  setTimeout(() => console.log(i), 100); }

答案:5 5 5 5 5。80%的及答人写0到4,错在没理解var是端笔函数级作用域。循环结束i已经变成5,试题五个定时器回调共享同一个i。及答改成let就输出0到4,端笔因为let每次迭代绑定新变量。试题这题考的及答不是背答案,是看候选人有没有真正跑过代码——我见过有人能背出答案,但问“为什么var是5”就卡壳。

第二题:事件循环顺序

console.log('A'); Promise.resolve().then(() => console.log('B')); setTimeout(() => console.log('C'), 0); console.log('D');

输出顺序是A D B C。很多人栽在把Promise当成同步代码。微任务(Promise.then)永远比宏任务(setTimeout)先执行,哪怕setTimeout延迟是0。有个细节:Promise构造函数里的回调是同步的,但.then才是微任务。这道题我通常追问一句:“如果再加一个process.nextTick呢?”Node环境下nextTick比Promise还早,浏览器里没这玩意儿。

第三题:手写防抖

这道题不是考算法,是考习惯。标准答案长这样:

function debounce(fn, delay) {  let timer = null; return function(...args) {  clearTimeout(timer); timer = setTimeout(() => fn.apply(this, args), delay); }; }

大多数候选人能写出前半段,但漏了this指向。如果内部用箭头函数,this就丢了;如果调用时不用apply,原函数的this会被window污染。我见过最离谱的写法是直接在返回函数里写fn()——连参数都不传。这题暴露的是实战经验,不是背代码能力。

说句实话,现在前端笔试题越来越卷。上周看到某大厂考“用CSS画一个三角形”,底下答主都在骂。但换个角度想,出题人想筛的不是会不会画,是能不能快速给出最简方案——border透明法一行搞定,伪元素法三行,clip-path虽然新但兼容性差。这种题反而能看出候选人的技术广度。

给准备笔试的人一个建议:别刷题库了。把MDN上Array、Object、Promise这三个章节的示例代码全部手写一遍,比刷200道题管用。我面试时发现,凡是能当场解释清楚“为什么这样写”的人,入职后代码review基本不用操心。