前端面试知识汇总(不断更新)

HTML

  1. 预加载,懒加载,dns预解析

CSS

  1. css模块化处理
  2. position相关,bfc
  3. 垂直居中,flex相关
  4. 双飞翼和圣杯布局区别以及共同点
  5. 1px问题,rem,em,px
  6. 一个div块宽度不固定高度是宽度的一半
  7. 多个img并排会有间隙,怎么处理间隙问题 font-size:0

JS

  1. js基本
  2. 函数柯理化
  3. promise有哪些属性,如promise.all等,then的参数有几个,对应类型,为什么pending时,要将其放进setTimeout中
  4. 微任务,宏任务,eventLoop原理
  5. 实现一个LazyMan
  6. Cordova与H5交互原理
  7. promise,generator,async/await有什么区别
  8. 防抖截流
  9. 实现bind,call,apply
  10. forEach,for…in…,for…of…的区别
  11. script标签的defer和async属性
  12. require和import有什么区别
  13. 日期的api有哪些,array的api有哪些
  14. jsonp的原理
  15. 跨域相关,jsonp的script的回调是什么格式
  16. 数组扁平化,去重
  17. 原型链
    原型链
  18. 深浅拷贝,如何处理循环引用
  19. this指向
  20. 箭头函数和普通函数的区别?写法原型this可以new么?
  21. 变量提升,let const,函数提升优先于变量提升
  22. 手写一个发布订阅模式

Vue

  1. vue双向绑定原理(watcher是在什么时候执行的)
  2. Vue中是如何检测数组变化
  3. nextTick实现原理,为什么他可以拿到dom
  4. 虚拟dom,以及dom-diff
  5. vue-router原理(不用hash模式服务端如何配置)
  6. vue3做了哪些优化
  7. vue-key
  8. 父子组件生命周期的关系
  9. data为什么用return
  10. vuex核心概念,如何实现每个组件实例都有Store
  11. vue动态组件
  12. 服务端渲染
  13. 数组如何监控
  14. keep-alive缓存的是整个组件么
  15. 为什么Vue3.0要重写响应式系统
  16. 路由守卫是如何触发的,hash路由,history路由如何监听路由改变
  17. $on、$emit的实现
  18. 页面权限问题,路由权限
  19. v-model的实现
  20. 如何实现按需加载

React

  1. React原理以及相关

小程序

  1. 小程序的底层实现原理

TS相关

webpack

  1. webpack打包如何优化
  2. webpack配置项都有哪些
  3. 其中loader和plugin有什么区别,两者差异
  4. 有没有看过或者写过webpack的插件
  5. webpack如何处理循环应用,作用域相关

浏览器相关

  1. 强缓存和协商缓存&四级缓存
  2. 输入url到展示dom
  3. 内容安全策略cps
  4. 两个不同域的页面如何进行信息传递
  5. 如何判断webp可用
  6. cookie有哪些属性,分别表示什么
  7. content-type的类型
  8. https
  9. TCP三次握手四次挥手
  10. XSS、CSRF、中间人攻击
  11. 浏览器缓存–cookies、sessionStorage、localStorage、indexedDB

http相关

  1. https加密流程,http缓存
  2. 301和302区别
  3. http1,1.0,2.0
  4. 同时发起
  5. spdy协议
  6. dns缓存,查找顺序
  7. 多路复用,header压缩

计算机基础

  1. 线程和进程的区别
  2. 观察者模式与发布订阅者模式区别
  3. 七层网络,https运行在哪一层
  4. 大量数据的table怎么处理

算法

  1. 生成随机数组,洗牌算法
  2. 切割千分位
  3. 找出非降序数列的个数输入:[“cba”, “daf”, “ghi”]输出:1
  4. 找出绝对值最小的数字
  5. 一个正整数的所有质因数
  6. js实现链表
  7. 洗牌算法
  8. 爬楼梯,两数之和
  9. 给出一系列版本号,将版本号排序,用数组排序
  10. 链表的环?两个链表找出第一个相交的元素
  11. 数组展平:reduce,去重set,升序排序算法等
  12. 括号配对
  13. [-2000, …., +2000]的数组,找出所有和为8的一组数的位置
  14. 使用正则去掉字符的尾空格
  15. 排序算法以及其时间复杂度
  16. 设计模式哪些
  17. 二叉树的遍历
  18. 实现一个最大长度的无重复子串的返回,注意不是最大长度,是子串本身

手写代码

  1. 实现add(1)(2)(3)
  2. 手写函数柯里化
  3. promise手写

微前端

  1. qiankun的原理,如何做到主应用和子应用彼此隔离

个人相关

  1. 未来发展规划

相关代码

微任务宏任务

打印顺序

async function async1() {
    console.log("a");
    await  async2();
    console.log("b");
}

async function async2() {
   console.log( 'c');
}

console.log("d");

setTimeout(function () {
    console.log("e");
},0);

async1();

new Promise(function (resolve) {
    console.log("f");
    resolve();
}).then(function () {
    console.log("g");
});

console.log('h');