2026校招Web前端笔试真题(含详细答案解析)_第1页
2026校招Web前端笔试真题(含详细答案解析)_第2页
2026校招Web前端笔试真题(含详细答案解析)_第3页
2026校招Web前端笔试真题(含详细答案解析)_第4页
2026校招Web前端笔试真题(含详细答案解析)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026校招Web前端笔试真题(含详细答案解析)适用场景:互联网大厂/中小厂校招前端笔试、应届生自测复习考试时长:90分钟满分:100分题型分布:选择题(30分)、填空题(20分)、简答题(30分)、编程题(20分)一、单项选择题(共10题,每题3分,共30分)1.以下关于HTML5新特性说法错误的是()A.新增语义化标签header、footer、sectionB.新增localStorage、sessionStorage本地存储C.新增onclick鼠标点击事件D.新增canvas绘图、video视频标签答案:C解析:onclick是传统HTML原生事件,不属于HTML5新增特性。HTML5核心新增点为语义化标签、本地存储、多媒体标签、绘图能力、表单新属性等。2.CSS中,以下选择器优先级最高的是()A.类选择器.boxB.ID选择器#wrapC.标签选择器divD.通配符选择器*答案:B解析:CSS优先级规则:!important>行内样式>ID选择器>类/伪类/属性选择器>标签选择器>通配符选择器。3.以下不属于JavaScript基本数据类型的是()A.StringB.NumberC.ArrayD.Undefined答案:C解析:JS基础数据类型(原始类型):String、Number、Boolean、Undefined、Null、Symbol、BigInt。Array属于引用数据类型(复杂类型)。4.关于var、let、const说法正确的是()A.var存在块级作用域B.let可以变量提升且不报错C.const声明的变量不可修改D.let、const存在块级作用域,不存在变量提升答案:D解析:var只有函数、全局作用域,无块级作用域;let/const有块级作用域,存在暂时性死区,不支持变量提升访问;const声明的基本类型值不可修改,引用类型的属性可修改。5.以下事件流阶段顺序正确的是()A.目标阶段=>捕获阶段=>冒泡阶段B.捕获阶段=>目标阶段=>冒泡阶段C.冒泡阶段=>目标阶段=>捕获阶段D.捕获阶段=>冒泡阶段=>目标阶段答案:B解析:浏览器事件流完整流程:先从外层向内层事件捕获,到达触发元素后为目标阶段,再从内层向外层事件冒泡。6.原生AJAX中,代表请求成功完成的readyState值是()A.1B.2C.3D.4答案:D解析:readyState状态码:0(未初始化)、1(请求建立)、2(请求接收)、3(响应加载中)、4(请求完成,响应就绪)。7.以下关于Vue响应式原理说法正确的是()A.Vue2基于Proxy实现响应式B.Vue3基于Object.defineProperty实现响应式C.Vue2无法监听数组下标和新增对象属性的变化D.Vue3不支持双向绑定答案:C解析:Vue2核心为Object.defineProperty,无法监听数组下标修改、对象新增/删除属性;Vue3改用Proxy,解决了上述缺陷,全面支持响应式监听。8.清除定时器的方法对应正确的是()A.clearTimeout清除setIntervalB.clearInterval清除setIntervalC.clearTimer清除定时器D.removeTimeout清除setTimeout答案:B解析:原生JS定时器对应规则:setTimeout对应clearTimeout、setInterval对应clearInterval,无其他清除定时器方法。9.以下哪种方式可以实现跨域()A.普通ajax直接请求不同域名接口B.CORS后端设置允许跨域响应头C.修改前端JS域名D.关闭浏览器缓存答案:B解析:浏览器同源策略限制不同域名、端口、协议的请求跨域,常用合法跨域方案:CORS、JSONP、代理服务器、WebSocket等。10.React中,以下关于useState说法错误的是()A.是React函数组件的状态管理HookB.修改状态的方法是异步更新C.可以直接修改state原值实现更新D.状态更新会触发组件重新渲染答案:C解析:React状态不可直接修改,必须通过setState/useState返回的更新函数修改,直接修改原值不会触发组件渲染更新。二、填空题(共5题,每题4分,共20分)1.CSS三种布局方式分别是标准流、浮动、定位。2.阻止事件冒泡的原生JS方法是event.stopPropagation(),阻止默认事件的方法是event.preventDefault()。3.ES6中新增的遍历数组方法中,可中断遍历的是for...of,不可中断的是forEach。4.浏览器从输入网址到页面渲染完成,核心流程依次是:DNS解析、TCP连接、HTTP请求响应、页面解析渲染、资源加载。5.Vue中computed是计算属性,基于依赖缓存,多次访问只执行一次;watch是侦听器,监听数据变化执行回调,无缓存。三、简答题(共3题,每题10分,共30分)1.简述浏览器缓存机制,区分强缓存和协商缓存参考答案:浏览器缓存是前端性能优化的核心手段,用于减少重复网络请求、加快页面加载速度,分为强缓存和协商缓存两类,优先级从高到低为:强缓存>协商缓存。(1)强缓存无需向服务器发送请求,直接读取本地缓存,返回状态码200(frommemorycache/fromdiskcache)。控制字段:Cache-Control(max-age优先级最高)、Expires(旧版,基于本地时间,存在误差)。(2)协商缓存强缓存失效后,浏览器携带缓存标识向服务器发送请求,由服务器判断资源是否更新。资源未更新则返回304,使用本地缓存;资源更新则返回200和新资源。控制字段:-标识对比:Last-Modified/If-Modified-Since(基于文件修改时间)-指纹对比:ETag/If-None-Match(基于文件内容哈希,精度更高,优先级更高)2.讲讲JS原型和原型链的理解参考答案:JS是基于原型的面向对象语言,所有引用类型(对象、数组、函数)都拥有原型,核心作用是实现属性和方法的共享,节省内存。1.核心概念-每个函数都有prototype(显式原型),挂载共享方法和属性;-每个实例对象都有__proto__(隐式原型),指向构造函数的prototype。2.原型链当访问对象的属性或方法时,自身不存在该属性/方法,就会通过__proto__向上查找对应的原型对象,层层向上回溯,直到找到Ototype,最终终点为null,这条查找链路就是原型链。3.核心特点-所有普通对象最终都继承自Ototype;-原型上的方法被所有实例共享,不会重复创建;-可以通过原型扩展内置方法(如数组、字符串自定义方法)。3.简述Vue生命周期及常用钩子函数的使用场景参考答案:Vue生命周期是组件从创建、挂载、更新、销毁的完整过程,每个阶段对应专属钩子函数,用于在特定时机执行自定义逻辑。1.创建阶段(组件初始化,未挂载页面)-beforeCreate:实例刚创建,无法获取data、methods,几乎不用;-created:实例创建完成,可获取data、调用方法,常用于初始化接口请求、数据初始化。2.挂载阶段(组件渲染到页面)-beforeMount:挂载前,模板已编译完成;-mounted:挂载完成,DOM渲染完毕,常用于操作DOM、初始化定时器、监听事件。3.更新阶段(数据变化触发视图更新)-beforeUpdate:数据更新后,视图重新渲染前;-updated:视图更新完成,可获取更新后的DOM。4.销毁阶段(组件卸载)-beforeUnmount:组件销毁前,常用于清除定时器、解绑事件、取消接口请求,防止内存泄漏;-unmounted:组件销毁完成,DOM已移除。四、编程题(共1题,20分)题目:手写防抖函数(debounce)需求说明:1.触发高频事件后,延迟指定时间执行回调;2.若延迟时间内再次触发事件,重置计时;3.支持立即执行和延迟执行两种模式;4.返回可取消的防抖函数。参考答案代码(可直接运行):javascript

//防抖函数封装

functiondebounce(fn,delay,immediate=false){

lettimer=null;

//返回防抖函数

constdebounceFn=function(...args){

//每次触发清空之前的定时器

if(timer)clearTimeout(timer);

//立即执行模式:首次触发立即执行,后续延迟内触发不重复执行

if(immediate&&!timer){

fn.apply(this,args);

}

//延迟执行

timer=setTimeout(()=>{

//非立即执行模式,延迟后执行回调

if(!immediate){

fn.apply(this,args);

}

timer=null;

},delay);

};

//取消防抖,清空定时器

debounceFn.cancel=function(){

clearTimeout(timer);

timer=null;

};

returndebounceFn;

}

//测试示例

functionhandleInput(val){

console.log('输入内容:',val);

}

//生成防抖函数,延迟500ms执行

constdebounceInput=debounce(handleInput,500);

//模拟输入框高频触发

debounceInput('1');

debounceInput('12');

debounceInput('123');

//取消防抖示例

//debounceInput.cancel();

核心思路解析:1.利用闭包保存定时器标识,确保多次触发共享同一个定时器;2.每次触发事件先清除原有定时器,实现重置计时的效果;3.通过immediate参数区分立即执行和延迟执行场景,适配搜索框、窗口缩放等不同业务;4.增加cancel方法,支持手动取消防抖,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论