总结了100道初中级前端面试题,趁着假期尽情的卷吧。

531 阅读5分钟

虽然金三银四已经过了,虽然今年大环境不是特别好,但是八股文该背还是要背的,在这给大家总结了100道初中级前端面试题,在这个假期,尽情的卷吧,这篇文章没有只提供了题目,没有提供答案,如果大家需要答案,到时候可以开一个git仓库。让我们开始吧:

理论题

  1. 浏览器重绘、重排
  2. html5新增特性
  3. localStroage、sessionStroage、cookie的区别
  4. css3新增特性
  5. px、rpx、rem、em的区别
  6. 子元素如何相对于父元素垂直水平居中
  7. 如何实现两边宽度固定,中间宽度自适应布局
  8. 如何实现一个div和屏幕一样宽高
  9. 如何实现一个div宽度和高度都和屏幕宽度一致
  10. 如何实现一个三角形
  11. css盒子模型
  12. css样式优先级
  13. 什么是BFC?BFC的布局规则是什么?如何创建BFC?BFC应用?
  14. flex布局常用属性
  15. js数据类型?如何检测数据类型?
  16. 闭包是什么?闭包的应用场景?
  17. 解释原型和原型链
  18. 解释this指向
  19. new关键字是什么?new的过程做了哪些操作?
  20. 解释作用域、作用域链、变量提升、函数提升
  21. js事件循环机制?常见的微任务和宏任务?
  22. 改变this执行的方法
  23. 防抖和节流是什么?应用场景?
  24. 深拷贝和浅拷贝?如何实现深拷贝?
  25. es6新增特性
  26. 箭头函数和普通函数的区别?哪些场景不能使用箭头函数?
  27. Promise解决了什么问题?
  28. Promise.all、Promise.race、Promise.any、Promise.allSettled用法和区别
  29. 解释async和await?如何使用?和Promise的区别
  30. async能不能单独使用?await能不能单独使用?
  31. async和await如何纠错?
  32. es6新增的模块化?export和export default的区别?
  33. es6新增的模块化和common.js模块化的区别?
  34. export导出的数据能不能修改?module.exports能不能修改?为什么?
  35. 常见网络状态码
  36. 封装过axios吗?如何封装的?项目是如何处理请求的?
  37. vue常见指令
  38. v-if和v-show区别和使用场景
  39. class和style如何绑定
  40. computed和watch的区别
  41. 如何实现v-model和组件自定义v-model
  42. vue2的生命周期
  43. 父子组件生命周期执行顺序
  44. nextTick是干什么的?
  45. vue2种为什么data是一个函数
  46. vue2组件传值
  47. vue3组件传值
  48. keep-alive和使用场景?keep-alive会增加哪些生命周期
  49. vue3和vue2的区别
  50. vue和react的区别
  51. v-for为什么要加key
  52. vue2如何给对象新增属性?为什么?
  53. vue2能不能检测数组的变化?
  54. vue的修饰符有哪些
  55. 插槽有几种?怎么使用?
  56. vue2和vue3分别怎么样抽离相同逻辑
  57. vue2响应式原理
  58. vue3响应式原理?和vue2有哪些区别
  59. 父组件可以监听到子组件的生命周期吗
  60. 什么是虚拟dom
  61. 虚拟dom的优点
  62. vue-router有几种模式?有什么区别?
  63. 路由传值
  64. 路由守卫
  65. 路由实现原理
  66. vuex有几部分构成?分别是什么作用?
  67. 如何理解vuex模块化
  68. vuex实现原理
  69. 使用了哪些vue的组件库?封装过组件没有?
  70. 封装组件的思想和原则
  71. react组件如何传值
  72. react常用hooks函数
  73. useCallback和useMemo怎么使用和区别
  74. 自己封装过hooks函数没有
  75. 微信小程序和vue的区别
  76. 微信小程序组件生命周期和常用api
  77. 微信小程序登录流程
  78. 微信小程序组件传值
  79. uni-app和vue的区别
  80. uni-app踩过哪些坑
  81. 项目优化
  82. 跨域是什么?如何解决跨域?
  83. 浏览器输入url到页面显示发生了什么?

编码题

  1. 手写防抖函数
  2. 手写节流函数
  3. 手写深拷贝
  4. 数组去重
  5. 数组扁平化
  6. 手写发布订阅函数
  7. 以下代码输出什么
var a = {n: 1}
var b = a
a.x = a = {n: 2}
console.log(a)
console.log(b)
  1. 以下代码输出什么?如何修改代码保证按顺序输出?如何修改代码每隔1秒按顺序输出?
for (var i = 0; i < 3; i++) {
  setTimeout(() => {
    console.log(i)
  }, 1000)
}
  1. 以下代码输出什么?
console.log(1)
setTimeout(() => {
  console.log(2)
  new Promise((resolve) => {
    console.log(3)
    resolve()
  }).then(() => {
    console.log(4)
  })
})
new Promise((resolve) => {
  console.log(5)
  resolve()
}).then(() => {
  console.log(6)
})
console.log(7)
setTimeout(() => {
  console.log(8)
}, 0)
console.log(9)
  1. 有以下数组,将*移到数组最后面并保证其他元素顺序不变
let arr = ['*', '1', '*', '*', '2', '*', '3', '4']
  1. 找出一个字符串出现次数最多的字符及出现的次数,例如hello, l是出现最多的并出现了2次
  2. 求两个数组的交集,如
let arr1 = [1,2,3]
let arr2 = [2,3,4]
输出[2,3]
  1. 使用vue或者react任意一种框架实现一个button组件,支持
    1. 自定义type
    2. 自定义size
    3. disabled
    4. 圆角
    5. 朴素按钮
    6. 点击事件
  2. 使用vue或者react任意一种框架实现一个input组件,支持
    1. 输入框类型,如密码框
    2. 自定义size
    3. disabled
    4. placeholder
    5. 原生input的所有事件
  3. element-plus头像Avatar组件基础上实现头像组合功能,具体效果参考头像组合功能
  4. 使用vue3实现antd列表组件
  5. 使用vue3实现antd评论组件