百度面试题

160 阅读3分钟

忽然发现一篇面试的好文章 juejin.cn/post/695791…
文中的面试题来源于上文,只是在这里补充答案,仅供大家学习

一面

webpack 中 hash、 chunkHash 与 contentHash 区别;

hashchunkHashcontentHash
变更机制就是说只要构建编译过程中只要一个文件修改了,则整个项目的hash值都会统一改变根据入口entry配置文件来分析其依赖项并由此来构建该entrychunk,并生成对应的hash由文件内容产生的hash值,内容不同产生的contenthash值也不一样
影响范围整个项目当前入口文件最终打包出来的js文件针对当前文件的内容
编译结果整个项目的hash值是一样的,一变全变当前文件及依赖hash值一样当前文件有自己的hash,常用于图片和css(默认配置)

参考地址:www.jianshu.com/p/6d81adb31…

写过 webpack 的 loader 和 plugin 么;

loaderplugin
定义webpack 只能理解 JavaScript 和 JSON 文件,这是 webpack 开箱可用的自带能力。loader 让 webpack 能够去处理其他类型的文件,并将它们转换为有效 模块,以供应用程序使用,以及被添加到依赖图中。loader 用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。包括:打包优化,资源管理,注入环境变量。
白话将A文件进行编译成B文件,比如:将A.less转换为A.css,单纯的文件转换过程。基于事件机制工作,会监听webpack打包过程中的某些节点,执行广泛的任务
职能让webpack能够处理非js文件(自身只支持js和json)打包优化、压缩、资源管理,注入环境变量。
举例css-loader、style-loader、postcss-loader、sass-loaderuglify-webpack-plugin、clean-webpack-plugin、babel-polyfill
  • entry:一个可执行模块或者库的入口。
  • chunk:多个文件组成一个代码块。可以将可执行的模块和他所依赖的模块组合成一个chunk,这是打包。
  • loader:文件转换器。例如把es6转为es5,scss转为css等
  • plugin:扩展webpack功能的插件。在webpack构建的生命周期节点上加入扩展hook,添加功能。

编写loader和plugin暂时不会

webpack 处理 image 是用哪个 loader,限制成 image 大小的是...;

webpack 将 css 合并成一个;

webpack 的摇树对 commonjs 和 es6 module 都生效么,原理是;

实现一下「模版字符串」功能;

const template = '我叫{{name}},今年{{age}}岁。'
const context = {
  name: 'zhenjianyu',
  age: 26
}

function render(template, context) {
  Object.keys(context).forEach(key => {
    template = template.replace(new RegExp(`{{${key}}}`, 'g'), context[key])
  })
  return template
}

console.log(render(template, context))

实现一下 Promise.all (Promise 不用写);

怎么实现响应式布局的;

css flex 的各个属性值;

css 动画 animation 各个时间值含义;

css 如何实现让一个元素旋转并横向移动,如果只用一个 css 属性;

less 与 sass 区别,技术选型时如何取舍;

ES6 symbol 如何使用以及使用场景;

ES6 Proxy 如何使用以及使用场景,说说 Reflect;

generator 有什么应用场景;

async await 如何实现的;

git reset 与 revert 区别,revert 多个 mr 改如何处理;

git 如何撤回 add 后的内容;

http2 与 http1.1 区别,了解 http3 么,说说;

tcp 与 udp 的区别;

还问了简历相关的一些问题(例如:性能优化、E2E 测试相关的);

二面

手写在 给定的 n 个数中随机取出 m 个数,要求等概率;

手写一下防抖节流函数;

设计实现一个「星级评分」组件;

说说 http 缓存;

call、apply、bind 三者的区别,如何实现 bind;