面试


2023-03-06 上次更新时间:10/12/2023, 8:13:11 PM 0

收集一些常见的面试题,大部分题目都能在本站找到答案。

# HTML

  • 如何理解html语义化?有什么优缺点吗?
  • 介绍下表单提交,和formData有什么关系?formData和原生的ajax有什么区别?
  • 关于 form 标签的enctype属性你有哪些了解?
  • 说说你对属性data-的理解。
  • 如何实现应用缓存?说说你对 manifest 的理解
  • HTML 文档中 DTD 的意义和作用
  • 你怎么理解HTML5?

# CSS

  • 介绍下 BFC、 IFC、 GFC 和 FFC 及其应用
  • css 重绘和重排有什么区别?哪些css属性会导致重绘和重排?
  • rem 和 flex 的区别?
  • css 的解析顺序?
  • css 如何开启 gpu 加速?
  • 分析比较 opacity: 0; visible: hidden; display: none; 优劣和使用场景。
  • ::before和:after中单冒号和双冒号的区别是什么,这两个伪元素有什么作用?
  • 请描述 margin 边界叠加是什么及解决方案
  • 什么是FOUC?你是如何避免FOUC的?
  • 说说 css 优先级
  • rgba()和opacity这两个的透明效果有什么区别?
  • 当一个元素被设置为浮动或定位后,它的display值会变成什么?
  • 对 flex 布局的了解
  • 介绍移动端适配1px方案
  • 介绍下position属性,position: sticky是什么

# JS基础

  • var、let 和 const 区别的实现原理是什么? 介绍下什么暂时性死区?
  • 变量提升和函数提升是什么?
  • var的变量提升底层原理是什么?
  • 全局作用域中,用 const 和 let 声明的变量不在 window 上,那到底在哪里?如何去获取?
  • 什么是防抖和节流?有什么区别?如何实现?
  • 介绍下深度优先遍历和广度优先遍历,如何实现?请分别用深度优先思想和广度优先思想实现一个拷贝函数?
  • 介绍下 JS 异步解决方案的发展历程以及优缺点。
  • call 和 apply 的区别是什么,哪个性能更好一些?
  • 冒泡排序如何实现,时间复杂度是多少,还可以如何改进?
  • 快排和冒泡原理?
  • js 的继承方案。说说各个继承方案的优缺点。
  • 堆和栈的区别?它们具体怎么存储(引用类型的存储)
  • 说说 js 内存机制 和 js 垃圾回收机制
  • 谈谈对闭包的理解,闭包优缺点,闭包实现,闭包使用场景
  • setInterval 需要注意的点?
  • 定时器为什么是不精确的?
  • setTimeout倒计时为什么会出现误差?如何校准?
  • 介绍宏任务和微任务
  • 使用 JavaScript Proxy 实现简单的数据绑定
  • 介绍下 Set、Map、WeakSet 和 WeakMap 的区别?
  • 造成内存泄漏的操作有哪些?
  • 在js中怎么捕获异常?应该在哪些场景下采用呢?
  • 你知道什么是AST吗?说说你对AST的理解,它的运用场景有哪些?
  • cmd和amd有什么区别?
  • commonjs和es6模块的区别。如何解决循环引用?
  • 严格模式的优缺点,主要表现是什么?
  • mvc,mvvm 原理,用 js 实现 mvvm。
  • 什么是rest参数,rest参数和arguments有什么区别
  • 请描述dom事件的流程,即从触发到结束的整个过程
  • 对原型链的理解,画一个经典的原型连接图
  • 浏览器渲染触发在EventLoop的哪个阶段,触发机制是怎么样的
  • ajax是同步还是异步,怎么样实现同步
  • 异步es5、es6、es7分别怎么样解决
  • 什么是事件冒泡和事件捕获以及事件委托
  • == 和 === 的区别,typeof null的结果是什么
  • 同步和异步的执行顺序
  • proto 和prototype分别是什么?在什么情况下_proto_ 和prototype的指向是同一个?
  • 对 class 理解,用es5 实现class,用原型写一个继承。
  • 讲讲promise的实现原理
  • promise 构造函数是同步进行还是异步进行?那么 then 方法呢?
  • promise 和 async 有什么区别?
  • 如何实现 promise.all 和 promise.finally
  • 介绍箭头函数和普通函数的区别,箭头函数特点,构造函数可以用new实例化,箭头函数可以吗?
  • 如何用 promise 包装 ajax
  • const和let的区别,可以改变const定义对象某个属性吗?let 产生的背景
  • 前端开发中用到哪些设计模式
  • 介绍下观察者模式和订阅-发布模式的区别,各自适用于什么场景

# Typescript 相关

  • TypeScript 的内置数据类型有哪些?
  • Interface 和 type 的区别
  • TypeScript 中的 any 类型和 unknown 类型有何不同?
  • 什么是类型断言
  • 为什么泛型在 TypeScript 中至关重要?它们如何发挥作用?
  • 继承在 TypeScript 中如何发挥作用?
  • keyof 和 typeof 的使用

# Vue 有关

  • v-if 和 v-show 的区别
  • v-for 为什么要加上 key,有什么作用?v-for 为什么不能跟 v-if 一起使用。
  • v-if、v-show、v-html 的原理是什么,它是如何封装的
  • computed 是如何实现的?它和 watch 的区别
  • 介绍下 vue 的事件,它是挂载在哪里的?
  • vue 在 v-for 时给每项元素绑定事件需要用事件代理吗
  • 父子组件生命周期钩子执行顺序是什么?
  • 子组件为什么不可以修改父组件传递的 prop?
  • 什么是高阶组件?高阶组件和普通组件的区别
  • 如何自定义一个 v-model
  • 谈一谈 nextTick 原理
  • 什么是动态组件和异步组件
  • 什么是 MVVM?MVVM 和 MVC 的区别
  • vue 中 MVVM 分别代表什么
  • 说一下组件化
  • 聊聊 Vue 的双向数据绑定,Model 如何改变 View,View 又是如何改变 Model 的
  • Vue 的响应式原理中 Object.defienProperty 有什么缺陷?
  • data 中为什么要 return 一个函数
  • Visual Dom 真的比原生 dom 操作快吗?谈谈你的想法
  • React 和 Vue 的 diff 时间复杂度从 O(n^3) 优化到 O(n) ,那么 O(n^3) 和 O(n) 是如何计算出来的?
  • vue 渲染大量数据时应该怎么优化?
  • vue 如何优化首页的加载速度?vue 首页白屏是什么问题引起的?如何解决呢?
  • vue 是如何对数组方法进行变异的?例如 push、pop、splice 等方法
  • vue-router 里的<router-link>标签和<a>标签有什么区别?
  • 路由模式:hash、history 模式的区别?
  • 什么是动态路由,如何实现懒加载?
  • 为什么 Vuex 的 mutation 和 Redux 的 reducer 中不能做异步操作?
  • 双向绑定和 vuex 是否冲突?
  • 聊聊 Redux 和 Vuex 的设计思想
  • 如何让基于 Vue.js 的应用支持 SEO 优化?
  • 用 Vue 实现一个无限滚动的长列表,你会如何实现?
  • Vue.js 框架如何实践服务端渲染方案?

# React 有关

  • React和vue的区别?
  • JSX如何判断条件和渲染列表?
  • React事件为什么要bind this?
  • React父子组件如何通讯?
  • setState为何使用不可变值?
  • setState是同步还是异步?
  • setState什么时候会合并state?
  • React组件生命周期,父子组件生命周期?
  • React函数组件和class组件有何区别?
  • 什么是React非受控组件?
  • 什么场景需要用到React Portals?
  • 是否用过React Context?
  • React如何异步加载组件?
  • React常见性能优化有哪些?
  • 什么是React高阶组件?
  • 什么是React Render props?
  • 组件公共逻辑如何抽离?
  • ajax应该放在哪个生命周期?
  • 什么是函数式编程?
  • 介绍下vdom和diff
  • JSX本质是什么?
  • react合成事件
  • setState和batchState
  • 组件渲染过程
  • 描述Redux单项数据流
  • Redux action 如何处理异步
  • 简述Redux中间件原理

# Webpack有关

  • 前端为何要进行构建和打包?
  • module、chunk、bundle分别什么意思,有何区别?
  • loader 和 plugin 的区别
  • 常见 loader 和 plugin 有哪些?
  • babel 和 webpack 的区别?
  • 如何产出一个lib?
  • babel-runtime 和 babel-polyfill的区别?
  • webpack 如何实现懒加载?
  • 为什么 Proxy 不能被 polyfill?
  • webpack 常见性能优化手段
  • webpack构建流程概述

# 网络类

  • 介绍下浏览器跨域
  • 怎么去解决跨域问题
  • jsonp方案需要服务端怎么配合
  • Ajax发生跨域要设置什么(前端)
  • 加上CORS之后从发起到请求正式成功的过程
  • xsrf跨域攻击的安全性问题怎么防范
  • 网站SEO怎么处理
  • 介绍下HTTP状态码
  • 403、301、302是什么?
  • 缓存相关的HTTP请求头
  • 介绍HTTPS
  • HTTPS怎么建立安全通道
  • 网络的五层模型
  • HTTP和HTTPS的区别
  • HTTPS的加密过程
  • 介绍SSL和TLS
  • 介绍DNS解析
  • 浏览器从输入url到页面加载的全过程

# 场景类

  • 介绍下前端加密的常见场景和方法
  • 前端安全有关
  • 知道什么是图片防盗链吗?防盗链怎么实现呢?
  • 前端性能优化
  • webpack项目太大了如何优化
  • 对用户体验做过什么优化
  • 遇到过兼容性问题吗?如何处理
  • 前端缓存方案
  • 如何优化 spa 首屏加载速度慢问题(白屏)?
  • 前端性能统计的指标有哪些?
  • 前端持久化的方式
  • 长列表怎么优化?
  • 图片懒加载如何实现?( vue-lazyloader 实现原理)
  • 文件上传如何做断点续传
  • 基于 react 设计一个 todolist(组件结构,redux state 数据结构)
  • 基于 vue 设计一个 购物车(组件结构,vuex state 数据结构)

# 手写题

  • 防抖和节流。参考
  • 手写 call、apply、bind。
  • 函数柯里化的实现. 参考
  • 手动实现深拷贝。 参考
上次更新时间: 10/12/2023, 8:13:11 PM