HTML + CSS
- 什么是 BFC ?如何触发?有何特点?如何解决 margin“塌陷”?
- CSS 如何出来溢出?说一下 overflow 不同值的区别。
- 三栏布局有什么实现方式?
- css calc 属性作用是什么?主要用于解决什么问题?
- 有一个固定长宽div,怎么实现在屏幕上垂直水平居中
- 描述一下渐进增强(progressive enhancement)和优雅降级(graceful degradation)
- iframe 有哪些优点?哪些缺点?用它来解决过什么问题?
- Google Chrome 如何支持大小小于 12px 的文字?
- 描述一下 css 盒子模型
- HTML5 的特性有哪些?
- CSS3 的特性有哪些?
- 如何实现水平居中?
- 如何实现垂直居中?
- 如何实现双圣杯布局?
- CSS 中选择器的优先级?
- CSS 权重如何计算?
- HTML5 input 元素 type 属性有哪些?
- CSS 中哪些属性可继承,哪些不可以
- CSS 单位中 px、em 和 rem 的区别?配合 font-size 如何计算?(移动端适配方案)
- 如何画一条 0.5px 的线
- 隐藏一个元素有哪些方法?display: none 与 visibility: hidden 与 opacity: 0 之间的区别?
- position 的值有哪些,分别有什么特点?
- 什么是浮动,浮动会引起什么问题,有何解决方案?
- line-height 和 height 的区别
- 设置一个元素的背景颜色,背景颜色会填充哪些区域?
- inline-block、inline 和 block 的区别;为什么 img 是 inline 还可以设置宽高
- 什么是重绘?什么是回流?如何减少?如何让文档脱离文档流?
- box-sizing 的作用,如何使用?
- 如何实现清除浮动
- css 动画如何实现
- 如何实现在某个容器中居中的?
- 如何改变一个 DOM 元素的字体颜色?
- 相对布局和绝对布局,position:relative 和 obsolute。
- 什么是弹性盒子 flex 布局?
- 什么是 rem 布局?
- less 和 scss 有什么区别?
- ::before 和::after 中双冒号和单冒号的区别?
- CSS3 新增伪类,以及伪元素?
- 响应式布局实现方案?
- link 标签和 import 标签的区别?
- transition 和 animation 的区别?
- 说一下块元素、行元素、置换元素
- 多行元素的文本省略号如何实现?
- Doctype 作用? 严格模式与混杂模式如何区分?它们有何意义?
Javascript
- javascript 的数据类型有哪些?
- javascript 有哪些引用类型?
- 如何判断 javascript 的数据类型?
- 怎么判断两个对象相等?如何判断空对象?
- 0.1 + 0.2 为什么不等于 0.3 ?(解释原理)
- 强制类型转换、隐式类型转换分别是什么,列举场景说明。
- 创建函数的几种方式?
- javascript 创建对象的几种方式?
- 列举宿主对象、内置对象、原生对象并说明其定义。
- === 和 ==的区别?
- null,undefined 的区别
- 什么情况下会返回 undefined 值?
- 如何区分数组和对象?
- 多维数组如何降维?
- 怎么获取当前日期(年-月-日 时:分:秒)?
- 什么是类数组(伪数组),如何将其转化为真实的数组?
- 如何遍历对象的属性?
- 如何给一个按钮绑定两个 onclick 事件?
- 变量提升是什么?与函数提升的区别?
- 什么是作用域链?如何延长?
- 如何实现数组的随机排序?
- dom 节点的 Attribute 和 Property 有何区别?
- dom 结构操作怎样添加、移除、移动、复制、创建和查找节点?
- 什么是事件冒泡,它是如何工作的?如何阻止事件冒泡?
- 什么是事件捕获,它是如何工作的?
- 如何让事件先冒泡后捕获?
- JavaScript 动画和 CSS3 动画有什么区别?
- dom 的事件模型
- 事件三要素是什么?
- 获取元素位置?
- 如何绑定事件,如何解除事件?
- 对事件委托的理解
- setTimeout 和 setInterval 的区别及用法是什么?
- 用 setTimeout 来实现 setInterval
- document.write 和 innerHTML 的区别?
- 元素拖动如何实现,原理是怎样?
- 什么是重绘(repaint)?什么是回流(reflow)?如何最小化重绘和回流?
- 延迟加载的方式有哪些?
- 垃圾回收机制有哪些?具体怎么如何执行?
- 什么是内存泄漏 ?
- 数组遍历的方法有哪些,分别有什么特点,性能如何 ?
- ES5 和 ES6 的区别,ES6 新增了什么?
- ES6 的继承和 ES5 的继承有什么区别?
- var、let、const 之间的区别?暂时性死区如何理解?
- Class、extends 是什么,有什么作用?
- 什么是 JS 闭包
- 说一下类的创建和继承,列举一下你所知道的继承方式
- 如何解决异步回调地狱
- 说一下图片的懒加载和预加载
- mouseover 和 mouseenter 的区别
- new 操作符做了哪些事情
- 改变函数内部 this 指针的指向函数(bind,apply,call 的区别),内在分别是如何实现的?
- JS 的各种位置,比如 clientHeight, scrollHeight, offsetHeight ,以及 scrollTop, offsetTop, clientTop * 的区别?
- 异步加载 JS 的方法
- Ajax 解决浏览器缓存问题
- 节流和防抖
- eval 是做什么的
- 对象深拷贝的简单实现
- 实现 JS 中所有对象的深度克隆(包装对象,Date 对象,正则对象)
- 实现一个 once 函数,传入函数参数只执行一次
- 将原生的 ajax 封装成 promise
- JS 监听对象属性的改变
- 如何实现一个私有变量,用 get 可以访问,不能直接访问
- 怎么控制一次加载一张图片,加载完后再加载下一张
- 如何实现 sleep 的效果(es5 或者 es6)
- Function.proto(getPrototypeOf)是什么?
- 箭头函数中 this 指向
- 数组常用方法有哪些
- 数组去重有哪些方法?
- 如何去除字符串首尾空格
- 说说你所知道的 JS 语言特性?
- 如何判断一个数组?
- JS 的全排列
- 谈谈你所理解的跨域,为什么会有这个问题?如何解决?
- null == undefined 输出什么?null === undefined 呢?
- 什么是按需加载
- 简单介绍一下 symbol
- 介绍一下 promise,及其底层如何实现
- JS 原型链,原型链的顶端是什么?Object 的原型是什么?Object 的原型的原型是什么?
- promise+Generator+Async 的使用
- JS 中 string 的 startwith 和 indexof 两种方法的区别
- JS 字符串转数字的方法
- 平时是怎么调试 JS 的
- 怎么获得对象上的属性
- async 和 await 具体该怎么用?
- 知道哪些 ES6,ES7 的语法
- promise 和 await/async 的关系
- JS 加载过程阻塞,解决方法。
- JS 对象类型,基本对象类型以及引用对象类型的区别
- 轮播的实现原理?假如一个页面上有两个轮播,你会怎么实现?
- 解释一下 JS 的事件循
- Localstorage、sessionStorage、cookie 的区别
- 解释一下 HTML5 Drag API
- 解释一下 webworker
- {} 和 [] 的 valueOf 和 toString 的结果是什么?
- 三种事件模型是什么?
- 介绍一下 V8 隐藏类
- AMD 和 CMD 规范的区别?说一下 CommonJS、AMD 和 CMD?
- 谈谈 JS 的运行机制
Vue生态
- 说说你对 Vue 的理解,有何优缺点?
- Vue 和 React 有什么不同?
- 什么是虚拟 DOM?
- 描述下 vue 的生命周期有哪些?分别做了什么事情?
- watch 怎么深度监听对象变化
- 删除数组用 delete 和 Vue.delete 有什么区别?
- watch 和 computed 有什么区别?
- v-for 没有 key 会发生什么问题?
- 谈谈 Vue 双向绑定原理
- v-model 是什么?有什么用呢?
- 在 vue 项目中如何引入第三方库?有哪些具体操作方法?
- Vue3.0 里为什么要用 Proxy API 替代 defineProperty API?
- Vue3.0 编译做了哪些优化?
- Vue3.0 新特性 —— Composition API 与 React.js 中 Hooks 的异同点
- Vue3.0 是如何变得更快的?dom diff 算法有何优化?
- vue 要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
- vue 在 created 和 mounted 这两个生命周期中请求数据有什么区别呢?
- 说说你对 Proxy 的理解。
- Vue3.0性能提升主要是体现在哪些方面?
- vue3有哪些新的组件?
- Vue2.0 和 Vue3.0 有什么区别?
- Composition Api 与 Options Api 有什么不同?
- 对Vue项目你做过哪些性能优化?
- Vue组件通信的方式有哪些?
- Vue常用的修饰符有哪些?
- Vue中的$nextTick有什么作用?底层如何实现?
- v-show和v-if有什么区别?
- 有用过keep-alive吗?它有什么作用?
- 如何实现一个虚拟DOM吗?
- 为什么data属性是一个函数而不是一个对象,具体原因是什么?
- Vue2的初始化过程你有过了解吗,做了哪些事情?
- Vue3初始化的一个大概流程?
- vue3响应式api如何编写?
- 在Vue项目中你是如何做的SSR渲染?
计算机网络
- 什么是 Ajax,Ajax 都有哪些优点和缺点?
- 请介绍一下 XMLHTTPrequest 对象及常用方法和属性
- Ajax 的实现流程是怎样的?
- Ajax 接收到的数据类型有哪些,数据如何处理?
- 封装好的 Ajax 里的常见参数及其代表的含义
- Ajax 注意事项及适用和不适用场景
- 常见的 HTTP 状态码以及代表的意义
- 301 302 303 状态码的区别?
- 什么是同源策略
- 为什么会有跨域的问题出现,如何解决跨域问题
- Get 和 Post 的区别以及使用场景
- 解释 jsonp 的原理
- HTTP 与 HTTPS 的区别
- 简述 web 前端 Cookie 机制,并结合该机制说明会话保持原理
- 你知道的 HTTP 请求方式有几种
- 谈谈你理解的 RESTFUL 规范
- 解释一下三次握手是什么,具体流程。变为二次握手会发生什么问题?
- TCP 和 UDP 分别是什么?
- WebSocket 的实现和应用。
- 一个图片 url 访问后直接下载怎样实现?
- 说一下 http2.0
- 补充 400 和 401、403 状态码
- fetch发送2次请求的原因
- 对 HTML 语义化标签的理解
- Cookie 和 session 的区别
- 强缓存 和 协商缓存 区别?什么时候用哪个 ?本质是?
- cache-control 的值有哪些
- 谈谈 304 状态码
- 什么是 CDN,以及如何优化?
- DNS是什么
- 什么是四层、七层网络模型?
网络安全
- 什么是 xss 攻击及如何防范
- 什么是 ddox 攻击及如何防范?
- 什么是 csrf 攻击及如何防范?
前端工程化
- 如何理解前端模块化、前端组件化,二者有何区别?
- 如何理解前后端分离?
- webpack
- 有自己配置过 webpack 吗?如果需求是多页面与单页面并行,需要如何配置?
- Webpack 的优点是什么?
- Webpack 的构建流程是什么?从读取配置到输出文件这个过程尽量说全
- 说一下 Webpack 的热更新原理
- 有哪些常见的 Loader?他们是解决什么问题的?
- Loader 和 Plugin 的不同?
- 如何利用 Webpack 来优化前端性能
- 是否写过 Loader 和 Plugin?描述一下编写 loader 或 plugin 的思路?
- 使用 Webpack 开发时,你用过哪些可以提高效率的插件?
- 什么是长缓存?在 Webpack 中如何做到长缓存优化?
- 如何提高 Webpack 的构建速度?
- 怎么实现 Webpack 的按需加载?什么是神奇注释?
- Babel 的原理是什么?
- 如何写一个 babel 插件?
- rebase 与 merge 的区别?
- git reset、git revert 和 git checkout 有什么区别 ?
- webpack 和 vite 区别(模块化与流的区别)
- webpack文件指纹策略:hash chunkhash contenthash
性能优化
- 做过哪些前端性能优化相关的事情?
- 要加载大量图片,你有哪些方法优化方案?
- 列表无限滚动,数据越来越多,页面卡顿,如何解决?
- for(let i=0;i<1000000;i++){console.log(i)} 如何优化?
- 谈谈你是如何判断网站的性能的?
- 解释一下,性能指标 FP FCP FMP,如何查看 。
- 谈谈浏览器的渲染过程,DOM 树和渲染树的区别。
- 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么。
- 什么是SPA单页面应用,首屏加载你是如何优化的
移动 web 开发
- 知道 PWA 吗
- 移动布局方案
- Rem 布局及其优缺点
- 讲讲 viewport 和移动端布局
- 移动端适配 1px 的问题
- 移动端性能优化相关经验
- 移动端兼容性
- 小程序
- 2X 图 3X 图适配
- 图片在安卓上,有些设备模糊问题
- 固定定位布局键盘挡住输入框内容
- click 的 300ms 延迟问题和点击穿透问题
- 防止手机中页面放大和缩小
- px、em、rem、%、vw、vh、vm 这些单位的区别
- 移动端适配- dpr 浅析
- 移动端扩展点击区域
- 上下拉动滚动条时卡顿、慢
- 长时间按住页面出现闪退
- webkit mask 兼容处理
- transiton 闪屏
研发流程
- 技术设计
- 设计文档需要涵盖哪些部分?
- 代码规范
- 谈谈 eslint
- 谈谈 commit message 规范
- 研发协同(Git)
- git 的基本使用方法
- git 工作流程
- 需要合并别人代码进来
- 需要切换分支
- 我们如何使用 git 和开源的码云或 github 上面的远端仓库的项目进行工作呢
- git、github、gitlab 三者之间的联系以及区别
- github 和码云的区别
- 提交时发生冲突,你能解释冲突是如何产生的吗?你是如何解决的
- 如果本次提交误操作,如何撤销
- git 修改提交的历史信息
- 如何删除 github 和 gitlab 上的文件夹
- 如何查看分支提交的历史记录?查看某个文件的历史记录呢
- git 跟 svn 有什么区别
- 我们在本地工程常会修改一些配置文件,这些文件不需要被提交,而我们又不想每次执行 git status 时都让这些文件显示出来,我们该如何操作?
- git fetch 和 git merge 和 git pull 的区别。
- 如何把本地仓库的内容推向一个空的远程仓库
- 测试
- 单元测试如何做?
- 如何解决联调依赖问题?
- 提测阶段bug 和 线上bug 解决过程有和区别?
- 发布上线
- 流水线如何搭建
- 对 Docker 理解
- pm2 与 docker 有何区别?
Nodejs
- 对 Node.js 有没有了解,它有什么特点,适合做什么业务
- Node 和 前端项目怎么解决跨域的
- Node 的优点是什么?缺点是什么
- commonJS 中的 require/exports 和 ES6 中import/export 的区别是什么
- 简述同步和异步的区别,如何避免回调地狱,Node 的异步问题是如何解决的
- dependencies 和 devDependencies 两者区别
- 描述一下从接到 url 开始,到逻辑处理,到DB查询,到返回结果,整个过程是怎么处理的?
- 谈谈你对 Koa 和 Express 的理解,二者的区别是?
- 谈谈对 egg 和 nest.js 的理解,二者的区别是?