Webpack 面试笔试题(含详细答案)_第1页
Webpack 面试笔试题(含详细答案)_第2页
Webpack 面试笔试题(含详细答案)_第3页
Webpack 面试笔试题(含详细答案)_第4页
Webpack 面试笔试题(含详细答案)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

Webpack面试笔试题(含详细答案)适用场景:前端初级/中级面试、校招、内部技能考核题型分布:选择题10道+填空题5道+简答题6道+场景实操题2道考试时长:60分钟满分:100分一、单项选择题(每题3分,共30分)1.下列关于Webpack的核心定位,说法正确的是()A.专门的前端服务器框架B.模块打包工具,用于编译、整合前端资源C.CSS预编译工具D.JavaScript框架答案:B解析:Webpack是一款模块化打包工具,核心作用是分析项目模块依赖,将零散的JS、CSS、图片、字体等资源编译、打包、整合为浏览器可识别的静态资源,不属于服务器框架、预编译工具或前端框架。2.Webpack打包的入口文件默认是()A.index.htmlB.main.jsC.src/index.jsD.app.js答案:C解析:Webpack默认入口路径为src/index.js,可通过配置entry字段自定义入口文件或多入口规则。3.Webpack中,用于处理非JS、非JSON资源的核心配置是()A.entryB.outputC.module.rulesD.plugins答案:C解析:Webpack自身仅能识别JS和JSON文件,所有静态资源(CSS、图片、字体、Vue文件等)都需要通过module.rules配置loader进行解析转换。entry是入口、output是出口、plugins是插件,均不负责资源解析。4.以下哪个Loader用于解析CSS文件()A.babel-loaderB.css-loaderC.file-loaderD.url-loader答案:B解析:css-loader负责解析CSS文件中的@import、url()等语法;babel-loader用于编译ES6+语法;file-loader/url-loader用于处理图片、字体等静态资源。5.Webpack插件的执行时机是()A.仅打包开始前执行B.贯穿打包整个生命周期,可在不同阶段触发钩子C.仅打包结束后执行D.仅在资源解析阶段执行答案:B解析:插件基于Webpack生命周期钩子运行,覆盖打包初始化、模块解析、编译、封装、输出等全流程,可在任意阶段介入修改打包逻辑,功能远强于仅处理单个资源的loader。6.用于生成HTML入口文件、自动引入打包资源的插件是()A.CleanWebpackPluginB.HtmlWebpackPluginC.MiniCssExtractPluginD.DefinePlugin答案:B解析:HtmlWebpackPlugin可自动生成HTML文件,并将打包后的JS、CSS资源自动注入页面;CleanWebpackPlugin用于清空打包目录;MiniCssExtractPlugin用于抽离CSS为独立文件;DefinePlugin用于定义全局环境变量。7.关于Webpack热更新(HMR),下列说法错误的是()A.热更新无需刷新页面,即可更新模块代码B.可以保留页面原有状态,提升开发效率C.生产环境默认开启D.仅开发环境使用,生产环境需关闭答案:C解析:HMR(模块热替换)是开发环境专属优化功能,用于提升调试效率,生产环境打包时必须关闭,避免冗余代码和性能问题。8.Webpack中实现代码分割、按需加载的核心语法是()A.import静态导入B.ES6动态import()C.requireD.module.exports答案:B解析:Webpack支持通过ES6动态import()语法实现异步模块加载,自动完成代码分割,打包生成独立chunk,实现路由、组件按需加载,减小首屏打包体积。9.以下不属于Webpack优化手段的是()A.开启TreeShakingB.配置resolve别名缩短路径C.冗余重复引入第三方依赖D.开启缓存、拆分公共代码答案:C解析:重复引入第三方依赖会增大打包体积、降低打包速度,属于项目缺陷;其余选项均为Webpack常用性能优化方案。10.TreeShaking的作用是()A.压缩代码空格和换行B.剔除项目中未使用的冗余模块代码C.压缩图片静态资源D.合并所有打包文件答案:B解析:TreeShaking俗称“摇树”,基于ES6模块化(import/export)的静态语法特性,在生产打包时剔除未引用的无效代码,精简包体积,仅支持ES6模块,不支持CommonJS模块。二、填空题(每空2分,共20分)1.Webpack的四大核心概念是:入口、输出、______、______。答案:Loader、Plugin2.Loader的执行顺序是______执行,从后往前解析资源。答案:串行3.开发环境中,用于将CSS样式嵌入页面style标签的loader是______。答案:style-loader4.Webpack通过______配置实现路径别名,简化模块引入路径。答案:resolve.alias5.生产环境打包需要开启______模式,自动开启代码压缩、TreeShaking等优化。答案:production6.拆分多页面公共代码、避免重复打包的配置是______。答案:optimization.splitChunks7.监听文件变化、自动重新打包的命令是______。答案:webpackwatch8.Webpack中______用于定义全局常量,区分开发和生产环境。答案:DefinePlugin三、简答题(每题5分,共30分)1.简单说说Loader和Plugin的区别?参考答案:1)作用不同:Loader是模块转换器,仅负责解析、转换单个文件资源,把非JS资源转为Webpack可识别的模块;Plugin是打包增强器,贯穿打包全生命周期,可监听钩子、修改打包结果、新增打包功能。2)执行时机不同:Loader在模块解析阶段执行,粒度为单个文件;Plugin在打包各个生命周期阶段触发,粒度为整个打包流程。3)配置方式不同:Loader配置在module.rules中;Plugin配置在plugins数组中,需实例化调用。4)数量限制:一个文件可匹配多个Loader,串行执行;一次打包可配置多个插件,并行监听钩子。2.简述Webpack打包的基本流程?参考答案:1)初始化:读取webpack配置文件,合并默认配置,初始化插件实例;2)入口解析:从entry入口文件开始,递归遍历所有模块依赖;3)模块编译:根据module.rules匹配对应Loader,转换各类资源代码;4)依赖收集:梳理所有模块的依赖关系,构建模块依赖图谱;5)代码封装:将所有模块封装为chunk,根据配置进行代码分割、合并;6)资源输出:根据output配置,将打包后的文件输出到指定目录,插件完成收尾工作。3.为什么生产环境需要把style-loader替换为MiniCssExtractPlugin?参考答案:1)style-loader会将CSS样式以行内样式的方式插入页面style标签,打包后样式内嵌在JS中,首屏加载、渲染性能较差,仅适合开发环境快速调试;2)MiniCssExtractPlugin可以将所有CSS代码抽离为独立的.css文件,实现样式、脚本分离;3)独立CSS文件可实现浏览器单独缓存、并行加载,大幅提升生产环境页面渲染速度,同时支持CSS压缩、按需加载,符合线上性能优化要求。4.说说TreeShaking的使用条件和注意事项?参考答案:使用条件:1)必须使用ES6模块化语法(import/export),CommonJS的require动态语法不支持;2)必须开启production生产模式,开发模式默认不开启TreeShaking;3)代码不能包含动态导出、动态引入逻辑,需为静态可分析的模块依赖。注意事项:1)避免在模块中添加副作用代码,防止有效代码被误删除;2)第三方库如果采用CommonJS规范,无法被TreeShaking优化。5.Webpack热更新和普通页面刷新有什么区别?参考答案:1)刷新方式:普通刷新是整页重载,重新请求所有资源、重置页面状态;热更新是局部模块更新,仅替换修改的模块代码;2)状态保留:普通刷新会清空页面表单、弹窗、滚动位置等所有状态;热更新可保留页面原有运行状态;3)更新速度:热更新无需重新打包所有资源、无需重载页面,调试效率远高于整页刷新;4)适用场景:热更新仅用于开发调试,生产环境不生效。6.简述Webpack中resolve常用配置及作用?参考答案:1)resolve.alias:配置路径别名,简化复杂层级的文件引入,避免相对路径书写繁琐;2)resolve.extensions:配置文件后缀名,引入文件时可省略后缀,自动匹配对应文件;3)resolve.mainFiles:配置目录默认入口文件,访问目录时自动匹配指定文件名;4)resolve.modules:指定模块查找目录,优先从配置目录查找依赖,提升解析速度。四、场景实操题(每题10分,共20分)1.项目开发中出现打包后体积过大、首屏加载缓慢的问题,请写出至少5种Webpack优化方案,并说明作用。参考答案:1)开启TreeShaking:剔除项目未使用的冗余ES6模块代码,精简打包体积;2)公共代码分割:通过optimization.splitChunks拆分第三方依赖、公共组件代码,避免多页面重复打包,利用浏览器缓存;3)资源压缩:开启JS、CSS、图片压缩,去除代码空格、注释、冗余代码,压缩静态资源体积;4)抽离独立CSS文件:使用MiniCssExtractPlugin替代style-loader,样式脚本分离,并行加载;5)按需加载:使用动态import()实现路由、组件异步加载,拆分首屏无用代码,减小首屏包体积;6)配置路径别名+精简解析规则:减少模块查找耗时,提升打包速度,间接优化构建性能;7)开启构建缓存:配置cache缓存打包结果,二次构建无需重复解析未修改模块,提升打包效率。2.请写出一套基础的Webpack5开发环境核心配置(JS、CSS、HTML解析+热更新)。参考答案:javascript

constpath=require('path')

constHtmlWebpackPlugin=require('html-webpack-plugin')

module.exports={

//开发模式

mode:'development',

//入口文件

entry:'./src/index.js',

//输出配置

output:{

filename:'bundle.js',

path:path.resolve(__dirname,'dist')

},

//模块解析规则

module:{

rules:[

//解析JS,兼容ES6+语法

{

test:/\.js$/,

exclude:/node_modules/,

loader:'babel-loader'

},

//解析CSS

{

test:/\.css$/,

use:['style-loader','css-loader']

}

]

},

//插件配置

plugins:[

newHtmlWebpackPlugin({

template:'./public/index.html'

})

],

//开发服务器+热更新

devServer:{

static:path.resolve(__dirname,'dist'),

hot:true,//开启热更新

open:true,//自

温馨提示

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

评论

0/150

提交评论