三年前端经验历时45天收获的面试题

451 阅读5分钟

铜三铁四, 难逃被动毕业。 面试了24家, 包含各大,中,小厂。 两个月终于上岸了。
程序员找工作真的太难了,要背八股文,刷算法题,复盘项目知识,各种流程,面试回答技巧 和 HR斗智斗勇,比高考还难。

HTML篇

  • meta 有哪些属性
  • HTML5 新标签使用过哪些
  • 不使用js 如何刷新页面?
  • 如何实现引导层?
  • seo TDK ?
  • 块级元素与内联元素区别
  • 图片撑开元素底部为什么有空白?如何解决

CSS 篇

  • flex: 1 是哪些属性的缩写
  • 如何实现一个瀑布布局
  • 画一个三角形
  • 画一个正六边形
  • rem em vw 移动端适配方案?
  • css 定位
  • BFC
  • 实现一个loading 加载动画 任意一种
  • 水平垂直居中方式
  • 盒模型?
  • css 选择器优先级
  • 如何实现元素高度是宽度的一半
  • 实现列表元素宽度自适应布局

基础篇

理论

  • 解释型语言与编译型语言区别?
  • 事件循环 (出现概率极其大)搞懂 宏任务和微任务
  • 浏览器渲染机制
  • script 标签 defer和async区别
  • 原型链说输出
  • es5 有哪些继承方式?优缺点?
  • this的指向?
  • 执行上下文和作用域
  • 判断数组的方法
  • 判断类型的方法
  • 基础类型和引用类型为什么要分别存放在栈和堆中
  • localstorage sessionStorage cookie 区别?
  • 闭包? 闭包的作用?
  • js 哪些会导致内存泄漏
  • 重排和重绘? 如何避免?
  • 垃圾回收机制
  • requestIdleCallback 和 requestFrameAnimation
  • 事件触发阶段 捕获 冒泡 目标
  • 如何解决小数精度问题? 0.1+0.2 !=0.3
  • 判断页面可见性
  • forEach 中断循环?为什么不能中断?
  • async/await 实现原理
  • es6 module 和 commonJS 区别
  • es5继承与es6 继承的区别
  • let const var
  • Map 与普通对象区别?
  • 箭头函数 和 普通函数区别?
  • es6 使用过哪些?
  • 输入一个url 之后发生了什么? (十之八九被问到)
  • 如何解决跨域
  • 跨域如何携带cookie
  • 浏览器两个tab 之间如何通信?
  • 说一下什么是堆

手写题

  • 手写call apply bind 各自应用场景有哪些?
  • 实现new
  • 节流 防抖
  • 深拷贝
  • 封装一个jsonp
  • 实现数组的reduce
  • 手写instanceof
  • 手写对象可迭代
  • 手写Promise Promise.all Promise.race
  • 实现一个flatten函数
  • 实现一个柯里化求和的函数 例如:curryingSum(1)(2)(3)()
  • 实现一个链式调用以及流程控制sleep 2s 后打印电脑 在等1s后打印手机
const playBox = new PlayBody('xiaoming')
playBox.start('xiaoming').sleep(2000).play('电脑').sleep(1000).play('手机')

  • 版本号比较大小 例如:4.2.1 > 3.2.0 > 2.3.0-rc > 2.3.0-beta > 2.3.0-alpha > 2.3.0
  • 判断一棵二叉树 是否是平衡二叉树?
  • 判断 二叉树是否是对称
  • 二叉树中序遍历
  • 二叉树的公共祖先节点
  • 判断链表是否有环
  • 查找链表的中间节点
  • 反转链表
  • 快速排序
  • 因式分解
  • 两数之和
  • 螺旋数组
  • 括号匹配
  • 数组去重
  • 查找数组中出现两次的元素
  • 数组索引随机
  • 数组中1到100 删除一个数 顺序打乱 如何查找
  • 顺序数组中查找元素 多个相同元素 查找最左最右的索引
  • 实现图片分个下载 1s无效应则为失败
  • 二维数组中查找元素
  • 广度优先遍历 对象嵌套

React篇

  • react diff ? 与 vue diff 比较?
  • react 和 vue 有哪些区别?
  • hash 和 history 区别 以及实现原理
  • hooks 和 class的区别,hook有哪些优化点 为什么设计hooks
  • react hook 如何避免组件重复渲染
  • useEffect 和 useLayoutEffect 区别
  • react如何触发组件更新
  • setState是异步还是同步
  • key 的作用
  • setState 之后发生了哪些
  • 如何立即获取改变后的状态
  • usestate为什么不能放条件判断中
  • mobx 实现原理
  • mobx 和 redux 区别?
  • 说一下react fiber 设计思想
  • react内部怎么区分多个usestate
  • React是如何在每次重新渲染之后都能返回最新的状态

Vue篇

  • vue diff
  • Vue3 的特点? 比vue2 有哪些优势
  • vue nextTick 实现原理
  • v-for 和 v-if 优先级
  • computed watch methods区别?
  • 父组件与子组件渲染顺序
  • v-model 实现原理
  • v-model 和 async修饰符区别
  • 组件通信方式有哪些?
  • 数据驱动原理
  • 组件中的data为什么是个函数
  • keep-alive 实现原理
  • template 中多次绑定一个相同状态 源码中如何处理
  • vue 事件如何绑定多个方法
  • new Vue 后发生了什么
  • 说一下各个生命周期干了什么
  • 模板编译过程
  • Vue3 为什么使用 Proxy Reflect
  • vue-loader 作用
  • vue 何时收集依赖
  • 虚拟DOM 作用
  • hash 模式下 如何 处理a标签锚点问题

webpack 篇

  • webpack常用loader和plugin
  • webpack 的构建过程
  • 优化构建过程的手段
  • webpack 处理代码优化方式
  • webpack 常用属性
  • loader和plugin区别
  • webpack 热更新原理
  • 打包优化 如何减少打包体积

网络篇

  • TCP 和 UDP 区别?
  • DNS 查找过程
  • TCP 为什么是三次握手 不是两次
  • 常见状态码
  • http缓存
  • http1.0 2.0 3.0 有什么不同
  • htt2.0多路复用的缺点
  • https 与http区别 https 为什么安全?
  • options 请求作用
  • cdn 缓存策略

设计模式篇

  • mvc和mvvm有什么区别?
  • 如何实现观察者模式
  • 工厂模式
  • 单例模式
  • 策略模式

TS 篇

  • TS 和 JS 比较
  • any void never unknown 区别?
  • interface 和 type 区别?
  • 泛型是什么? 使用场景
  • react 中 使用interface 和 PropType 区别

项目篇

  • 大文件上传
  • 长列表优化 虚拟列表如何实现
  • 首屏优化
  • ios 刘海屏问题如何解决
  • 页面有弹窗 页面随弹窗一起滚动问题
  • 安卓文字垂直居中问题
  • 资源预加载方案
  • 安卓键盘弹出遮住输入框问题
  • h5 与 客户端通信方式
  • 移动端适配方案有哪些
  • 如何实现页面多个主题颜色