Web 前端面试总结
四月 01, 2020
注册登录是怎么实现的
1 | 1.登陆注册要做成受控组件,组件定义state,和表单绑定 |
项目中遇到什么困难,怎么解决的?
1 | 1.react中配置二级路由 地址变化 但是界面不更新 |
后台管理系统和普通 App 面向用户的区别
1 | toB和toC的项目 |
正则表达式
1 | \d 匹配数字 \D 匹配非数字 \w 匹配数字字母下划线 \W 匹配非数字字母下划线 |
Ajax
1 | 我对 ajax 的理解是,它是一种异步通信的方法,通过直接由 js 脚本向服务器发起 http 通信,然后根据服务器返回的数据,更新网页的相应部分,而不用刷新整个页面的一种方法。 |
js 延迟加载的方式
1 | js 的加载、解析和执行会阻塞页面的渲染过程,因此我们希望 js 脚本能够尽可能的延迟加载,提高页面的渲染速度。 |
模块化开发的理解
1 | 我对模块的理解是,一个模块是实现一个特定功能的一组方法。在最开始的时候,js 只实现一些简单的功能, |
js 的几种模块规范
1 | js 中现在比较成熟的有四种模块加载方案: |
AMD 和 CMD 规范的区别?
1 | 它们之间的主要区别有两个方面。 |
ES6 模块与 CommonJS 模块、AMD、CMD 的差异
1 | 1.CommonJS 模块输出的是一个值的拷贝, |
requireJS 的核心原理
1 | require.js 的核心原理是通过动态创建 script 脚本来异步引入模块,然后对每个脚本的 load 事件进行监听,如果每个脚本都加载完成了,再调用回调函数 |
js 的原理(运行机制)
1 | 首先js是单线程运行的,在代码执行的时候,通过将不同函数的执行上下文压入执行栈中来保证代码的有序执行。 |
arguments 的对象
1 | arguments对象是函数中传递的参数值的集合。它是一个类似数组的对象,因为它有一个length属性, |
V8 引擎的垃圾回收机制
1 | v8的垃圾回收机制基于分代回收机制,这个机制又基于世代假说,这个假说有两个特点,一是新生的对象容易早死,另一个是不死的对象会活得更久。基于这个假说,v8 引擎将内存分为了新生代和老生代。 |
垃圾回收机制的两种方法
1 | 现在各大浏览器通常用采用的垃圾回收有两种方法:标记清除、引用计数。 |
会造成内存泄漏的操作
1 | 1.意外的全局变量 |
ECMAScript(ES)
1 | ECMAScript 是编写脚本语言的标准,ECMA(European Computer Manufacturers Association)规定一下他的标准,因为当时有java语言了,又想强调这个东西是让ECMA这个人定的规则,所以就这样一个神奇的东西诞生了,这个东西的名称就叫做ECMAScript。 |
ES2015(ES6)新特性
1 | 块作用域 |
ES2016(ES7)新特性
1 | 求幂运算符(**) |
ES2017(ES8)新特性
1 | async await |
ES2018(ES9)新特性
1 | 异步迭代 |
ES2019(ES10)新特性
1 | 行分隔符(U + 2028)和段分隔符(U + 2029)符号现在允许在字符串文字中,与JSON匹配 |
ES2020(ES11)新特性
1 | 私有变量 |
var,let 和 const 的区别
1 | 1.var声明的变量会挂载在window上,而let和const声明的变量不会: |
var 和 let 在 for 循环的一些不同表现
1 | 在var中执行的时候: |
箭头函数
1 | 箭头函数表达式的语法比函数表达式更简洁 |
模板字符串
1 | 模板字符串是在 JS 中创建字符串的一种新方法。我们可以通过使用反引号使模板字符串化。 |
对象解构
1 | 对象解构是从对象或数组中获取或提取值的一种新的、更简洁的方法 |
Set 及应用场景
1 | 一、创建Set对象实例 |
Proxy
1 | Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器” |
函数式编程
1 | 函数式编程(通常缩写为FP)是通过编写纯函数,避免共享状态、可变数据、副作用 来构建软件的过程。数式编程是声明式 的而不是命令式 的,应用程序的状态是通过纯函数流动的。与面向对象编程形成对比,面向对象中应用程序的状态通常与对象中的方法共享和共处。 |
高阶函数
1 | 首先高阶函数肯定是函数,不同的是输入的参数和返回的值这两项中的一项必须是函数才能叫高阶函数。 |
为什么函数被称为一等公民
1 | 在JavaScript中,函数不仅拥有一切传统函数的使用方式(声明和调用),而且可以做到像简单值一样: |
. new 操作符的实现
1 | 1、创建一个空对象 {} |
回调函数?回调函数有什么缺点
1 | 回调函数是一个匿名函数,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码。可以让异步代码同步执行。 |
instanceof 的原理
1 | instanceof 可以正确的判断对象的类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的 prototype。 |
设计模式
1 | 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 |
js 的基本数据类型、值是如何存储的
1 | JavaScript一共有8种数据类型 |
&& 、||和!! 运算符
1 | && 叫逻辑与,在其操作数中找到第一个虚值表达式并返回它,如果没有找到任何虚值表达式,则返回最后一个真值表达式。它采用短路来防止不必要的工作。 |
js 的数据类型的转换
1 | 在 JS 中类型转换只有三种情况,分别是: |
js 内置对象
1 | js 中的内置对象主要指的是 |
null 和 undefined 的区别
1 | 首先 Undefined 和 Null 都是基本数据类型,这两个基本数据类型分别都只有一个值,就是 undefined 和 null。 |
{}和[]的 valueOf 和 toString 的结果
1 | {} 的 valueOf 结果为 {} ,toString 的结果为 "[object Object]" |
js 的作用域和作用域链
1 | 作用域: |
js 创建对象的方式
1 | 我们一般使用字面量的形式直接创建对象,但是这种创建方式对于创建大量相似对象的时候,会产生大量的重复代码。但 js和一般的面向对象的语言不同,在 ES6 之前它没有类的概念。但是我们可以使用函数来进行模拟,从而产生出可复用的对象创建方式,我了解到的方式有这么几种: |
对 this、call、apply 和 bind 的理解
1 | 1、在浏览器里,在全局范围内this 指向window对象; |
什么是 DOM 和 BOM
1 | DOM指的是文档对象模型,它指的是把文档当做一个对象来对待,这个对象主要定义了处理网页内容的方法和接口。 |
三种事件模型
1 | 事件 是用户操作网页时发生的交互动作或者网页本身的一些操作,现代浏览器一共有三种事件模型。 |
事件委托(代理)
1 | 本质上是利用了事件冒泡的机制。 |
事件传播
1 | 事件传播有三个阶段: |
DOM 操作
1 | (1)创建新节点 |
数据检测类型判断
1 | 检测方法4种 |
原型/原型链
1 | 原型: |
prototype、proto、constructor 三者的关系
1 | 1、prototype: |
constructor 与 class 的区别
1 | 传统的javascript中只有对象,没有类的概念。它是基于原型的面向对象语言。 |
构造函数与普通函数的区别
1 | 1. 返回值类型的区别: |
跨域出现的原因/解决方法
1 | 原因:由于浏览器的同源策略,即属于不同域的⻚面之间不能相互访问各自的⻚面内容。 |
闭包原理/优点/缺点/使用场景
1 | 闭包原理:定义在一个函数内部的函数(函数嵌套函数),闭包就是将函数内部和函数外部连接起来的一座桥梁。 |
内存泄漏
1 | 1、意外的全局变量 |
promise/async&await
1 | Promise是es6新增的,异步编程的一种解决方案,用来取代回调函数和事件,比传统的解决方案——回调函数和事件——更合理和更强大。 |
promise.all 和 promise.race
1 | Pomise.all的使用 |
Generator
1 | Generator 的中文名称是生成器,它是ECMAScript6中提供的新特性。 |
堆/栈
1 | 1、堆——引用类型地址传递 |
深/浅拷贝及方法
1 | 深/浅拷贝针对的是引用类型 |
set 和 map
1 | Set:它类似于数组,但是成员的值都是唯一的,没有重复的值。 |
宏任务和微任务
1 | js 是单线程执行的,js中的任务按顺序一个一个的执行,但是一个任务耗时太长,那么后面的任务就需要等待,为了解决这种情况,将任务分为了同步任务和异步任务,而异步任务又可以分为微任务和宏任务 |
js 异步操作
1 | 1、定时器都是异步操作 |
表单只能输入数字
1 | 正则 type number |
Proxy 和 Reflect
1 | Proxy用于修改某些操作的默认行为,即对编程语言层面进行修改,属于“元编程”,Proxy意思为“代理”,即在访问对象之前建立一道“拦截”,任何访问该对象的操作之前都会通过这道“拦截”,即执行Proxy里面定义的方法 |
Proxy 常用的拦截方法
1 | get(target,name,property)方法 |
浏览器优化
1 | 减少请求数量 |
请求头
1 | Accept(艾可塞克特) |
static 有什么特性
1 | new出来一个实例对象是否带有static属性 static用ES5怎么写 |
async await
1 | 同步还是异步 |
$.ajax 中 async:false 的阻塞和 await 这种阻塞有什么区别
1 | 没区别 |
怎么携带 cookie 发送给后端
1 | 设置请求头 请求头中携带cookie |
对象浅拷贝在 react 中用到哪些地方,为什么
1 | 为什么在react中要使用浅拷贝 |
ajax、axios、fetch 之间的详细区别以及优缺点
1 | 1.jQuery ajax |
回流/重绘 | 防抖/节流
1 | 回流: |
减少重绘和回流的方式
1 | CSS |
事件循环 Event Loop
1 | Event Loop 即事件循环 |
同步异步的区别
1 | 在js中,所有任务都分为同步任务和异步任务两大类。同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。 |
数据请求设置请求数据格式 Content-Type
1 | 1.浏览器默认的 application/x-www-form-urlencoded(url因扣得的) |
数组扁平化
1 | 1. reduce |
如何扩展数组,让他拥有新的方法
1 | Array.prototype.push.apply(a,b) |
class 中 super 作用是什么
1 | es5 的继承是先创建子类的this,然后将父类的方法添加到子类的this上去; |
xss 攻击和 csrf 攻击是什么
1 | 1、CSRF(Cross-site request forgery):跨站请求伪造。 |
webapp 和小程序有什么区别
1 | 首先,微信小程序已经提供了一套 view, data, model, router 层的开发工具, |
react 优缺点
1 | 优点: |
react 生命周期
1 | 16版本: |
redux 流程 redux 的原理
1 | view用actionCreator(酷睿A特)创建一个action,里面可能包含一些数据 |
redux 中间件
1 | 在action 和 store 之间执行中间件 |
redux-thunk|异步 action
1 | 首先检查参数 action 的类型,如果是函数的话,就执行这个 action 函数, |
redux-saga|集中处理异步 action
1 | redux-saga可以将异步action和普通action区别开来,控制器与更优雅的异步处理 |
redux 与 react-redux 的关系
1 | redux是独立的应用状态管理工具。它是可以独立于react之外的。如果我们需要在react当中运用它,那么我们需要手动订阅store的状态变化,来对我们的react组件进行更新。react-reudx这个工具,就帮我们实现了这个功能,我们只需对store进行处理,react组件就会有相应的变化。 |
react-reudx
1 | 1. UI组件|显示页面?? (破森特逊弄) |
DVA 与 CRA 相比的优点
1 | dva: |
flux
1 | flux 是 react 中的类似于 vuex 的公共状态管理方案,它是 Facebook 官方给出的应用架构,利用数据的单向流动的形式对公共状态进行管理。现已不推荐使用。 |
React 中 keys 的作用
1 | key是react用于追踪哪些列表被修改、被添加或者被移出的辅助标识。 |
react 新特性和 diff 算法
1 | render |
setState 概述,同步异步
1 | 1. 两个参数及用法 |
react 合成事件
1 | 1. 合成事件原理 |
react 路由传参和读参
1 | 1.params |
redux 和 mobx(类似双向数据绑定)区别
1 | 1. 组成部分 |
react 组件通信 5 种
1 | 1.父组件向子组件通信 |
组件按需加载
1 | (实现方式,需要的依赖)懒加载 |
组件销毁
1 | componentWillUnmount |
Ant D 中 input 输入框三个属性怎么实现
1 | onChange输入框内容改变时候回调 value输入的内容 defaultValue输入框默认值 |
Hooks
1 | 为什么使用hook |
react useState() Hook
1 | 1.使用 useState() 进行状态管理 |
高阶组件 HOC
1 | 1.名词解释/作用 |
拖拽封装思路
1 | 重点: |
数据请求封装思路
1 |
自定义 hook 封装过组件吗
1 | 1.将Hello组件和App组件中共用的逻辑放在统一的自定义hook中写 |
react 和 vue 的区别
1 | 相同点: |
react 的 class 组件,没有 class 的时候怎么写
1 | React.createClass |
生命周期 钩子函数用 es5 怎么定义
1 | protoType.componentDidMount |
虚拟 dom 和 diff 算法
1 | 虚拟 dom 相当于在 js 和真实 dom 中间加了一个缓存,利用 dom diff 算法 避免了没有必要的 dom 操作,从而提高性能 |
react Native
1 | React Native(内特服)能在手机上创建原生应用,React在这方面处于领先位置。使用JavaScript, CSS和HTML创建原生移动应用,这是一个重要的革新。Vue社区与阿里合作开发Vue版的React Native——Weex也很不错,但仍处于开发状态且并没经过实际项目的验证。 |
react-router(路由)原理
1 | react-router依赖基础 - history |
react-router-dom 和 react-router 的区别
1 | 写法上的区别: |
react 路由模式
1 | 我们一直在使用的路由方式是BrowserRouter,也就是浏览器的路由方式,其实React还有几种路由方式: |
react 路由配置
1 | 1、引入路由包 |
react 路由(router)实现异步加载
1 | react-router,官网文档给出的是用webpack的bundle-loader |
react 原理
1 | 1. setState |
react 的 connect 高阶组件实现, 如何在全局中取得 store
1 | 连接React组件与 Redux store。 |
react 的 connect 实现原理
1 | 首先connect之所以会成功,是因为Provider组件: |
react-router3 和 react-router4 的区别
1 | 一、V3或者说V早期版本是把router 和 layout components 分开 |
react 中获取真实的 dom 节点
1 | 使用ref属性获取Dom元素后,再使用原生javascript获取内容 |
react 是什么层面上的框架
1 | React框架本身和我们常用的JavaScript MVC框架,如:AngularJS,Backbone,Ember等,没有直接的可比性。 |
react 数据流
1 | React遵循从上到下的数据流向,即单向数据流。 |
react 数据一定要在 DidMount 里获取更新的原因
1 | componentDidMount方法中的代码,是在组件已经完全挂载到网页上才会调用被执行,所以可以保证数据的加载。 |
react 中的受控组件和非受控组件
1 | 受控组件 |
react 中的 ref 的 3 种方式
1 | 方式1: string类型绑定 |
react 中的 static(静态方法)
1 | 静态方法和 React 没有直接关系,React 的组件都是继承自 React.Component 这个类,静态方法属于类本身。 |
react 的 props 与 state 的区别
1 | props: |
混合开发
1 | 1. 混合开发是介于webapp和原生app之间的一种应用,它同时具有webapp可以跨平台的特性,也具备原生app可以进行安装使用的特性 |
小程序
对于路由的触发方式以及页面生命周期函数如下:
路由方式 | 触发时机 | 路由前页面 | 路由后页面 |
---|---|---|---|
初始化 | 小程序打开的第一个页面 | onLoad, onSHow | |
打开新页面 | 调用 API wx.navigateTo 或使用组件 |
onHide | onLoad, onShow |
页面重定向 | 调用 API wx.redirectTo 或使用组件 |
onUnload | onLoad, onShow |
页面返回 | 调用 API wx.navigateBack 或使用组件 |
onUnload | onShow |
Tab 切换 | 调用 API wx.navigateBack 或使用组件 |
各种情况请参考下表 | |
重启动 | 调用 API wx.reLaunch 或使用组件 |
onUnload | onLoad, onShow |
页面跳转触发的生命周期,其实还是存在问题的,并非官方所说的那样。
1 | SwitchTab的跳转BUG |
get 与 post 的区别
1 | 1.提交方式 |
react 父组件通过 ref 获取不到子组件的解决方案
1 | 在子组件中 |
React PureComponent 和 Component 区别
1 | React.PureComponent 与 React.Component 几乎完全相同,但 React.PureComponent 通过prop和state的浅对比来实现 shouldComponentUpate()。 |
react 中调用 setState 之后发生
1 | React会将当前传入的参数对象与组件当前的状态合并,然后触发调和过程,在调和的过程中,React会以相对高效的方式根据新的状态构建React元素树并且重新渲染整个UI界面. |
SPA 和 MPA 的异同
1 | 单页应用(SinglePage Application,SPA) |
TS
1 | TS好处: |
TS 中 interface 和 type 的区别
1 | 在ts中,定义类型由两种方式:接口(interface)和类型别名(type alias) |
Webpack
1 | webpack打包react vue,与自己的源代码分离使用splitchunks |
flex 布局
1 | flex是由 flex-grow:1父容器在主轴上还有多少剩余空间, |
实现导航的吸顶效果
1 | 设置css:fixed固定定位 |
less 的 hover 简写
1 | a{ |
CSS 伪类 ::after,before 的应用场景
1 | ::before和::after必须配合content属性来使用, |
CSS 权重的计算
1 | 权重叠加 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0,1,0,所以不会存在10个div能赶上一个类选择器的情况 |
http
1 | http2.0,https连接, |
http 对称加密非对称加密
1 | 对称密钥加密是指加密和解密使用同一个密钥的方式,一方通过密钥将信息加密后,把密文传给另一方,另一方通过这个相同的密钥将密文解密,转换成可以理解的明文 |
WebSocket 和 http 有什么区别
1 | socket是传输控制层协议,webSocket是应用层协议 |
错误调试工具
1 | F12 断点 错误附近输出打印 火狐中的firebug IE开发者工具 Emmet |
http 状态码
1 | 200 OK 请求成功。一般用于GET与POST请求 |
HTTP 和 HTTPS 的区别
1 | HTTP是超文本传输协议,信息是明文传输的,HTTPS是具有ssl/tls加密传输协议。 |
浏览器的缓存机制
1 | 什么是浏览器缓存 |
浏览器的强缓存和协商缓存
1 | 这里说的缓存是指浏览器(客户端)在本地磁盘中对访问过的资源保存的副本文件。 |
不能被缓存的请求
1 | 1. HTTP信息头中包含Cache-Control:no-cache,pragma:no-cache(HTTP1.0), |
用户行为对缓存的影响
1 | qq、fire fox 、safari 、chrome 这几个浏览器的访问同一个页面,不同的浏览器在 F5 刷新的时候 ,同一个文件 qq 、fire fox 浏览器会返回 `304 Not Nodified`,在请求头中不携带 `Expires/Cache-Control`; 而 chrome 和 safari 刷新的时候,会返回 `200 from cache`, 没有真正发起请求,走强缓存。可见不同的浏览器反馈是不一致的,所以下面表格中"F5刷新"时 `Expires/Cache-Control` 会无效我认为是存在一定争议的。而 Ctrl + F5 强制刷新的时候,会暂时禁用强缓存和协商缓存。 |
eslint 规则
1 | Eslint 是一个JavaScript验证工具,有了它可以让你的编辑器像ide一样进行一些静态的错误提示功能. |
git
1 | (版本回退是什么命令,哪个命令查看已删除的提交commitId) |
node.js
1 | 1.Node不是一个后端语言,但是它可以做类似后端语言的功能 |
TS 语法
1 | TypeScript具有类型系统,且是JavaScript的超集。它可以编译成普通的JavaScript代码。 |
linux 命令
1 | pwd:输入pwd命令,Linux会输出当前目录。 |
CSS3 新特性
1 | 1 圆角边框:border-radius |
HTML5 h5 新特性
1 | 1 语义化标签 section aside header nav |
标准盒模型与怪异盒模型区别
1 | 标准盒模型一个块的总宽度= width + margin(左右) + padding(左右) + border(左右) |
CSS3 弹性盒
1 | 弹性盒 display:flex(父元素添加) |
CSS 元素居中
1 | 1.使用margin进行固定长度的偏移 |
CSS 几种定位的区别 relative, absolute, fixed
1 | 1、相对定位position:relative;参考物是自己,不脱离文档流(初始位置仍然占据空 间),top:100px; 给正值是向该容器的中心点移动; |
div 外边距重叠的原因及解决办法
1 | 情况一: |
px,em,rem,pt 的区别
1 | 1、px实际上就是像素,用px设置字体大小时,比较稳定和精确 |
CSS 的 BFC
1 | 1、什么是BFC BFC(Block formatting context)直译为“块级格式化上下文”。 |
兼容问题
1 | 1)css浏览器兼容问题(比如设置元素透明度,ie浏览器使用滤镜实现,filter |
移动端适配
1 | 1.Media Queries 通过查询设备的宽度来执行不同的 css 代码,最终达到界面 的配置 |
什么是 CSS 预处理器?优点是什么
1 | css预处理器用一种专门的编程语言,进行web页面样式设计,然后在编译成正常的css文件, |
0.5px 线怎么实现(单边框 0.5px)
1 | 方式一:border + border - img + 线性渐变linear-gradient |
CSS 布局 - 左侧宽度固定,右侧自适应
1 | 方法一: |
CSS 布局 - 左右侧宽度固定,中间自适应
1 | 1、绝对定位布局:position + margin |
webpack 打包优化 怎么减少打包时间
1 | 多进程打包 - 速度分析 |
继承的 6 种方式
1 | 1.原型链继承 |
阻止冒泡和取消默认事件(默认行为)
1 | 防止事件捕获和冒泡: |
作用域和作用域链
1 | 变量的作用域无非就是两种: |
遍历数组的方式
1 | 1.for循环 |
数据分页
1 | 前端的话,定义一个新的数组for循环判断,有个公式,计算起始页和终止页的。 |
数组排序
1 | 1. 普通数组排序 |
数组合并
1 | 1、concat |
数组方法
1 | push,在数组末尾添加一位或多位元素 |
数组去重
1 | 使用ES6 Set |
for…of 原理
1 | for...of 是ES6引入用来遍历所有数据结构的统一方法。 |
遍历对象的方式
1 | 第一种: |
map 与 filter 和 forEach 的区别
1 | map 与 filter 区别: |
面向对象编程
1 | 面向对象编程: |
window.onload 与 document.ready 的区别
1 | 1.执行时间 |
this
1 | this代表函数运行时,自动生成的一个内部对象,只能在函数内部使用, |
<!DOCTYPE>
1 | <!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前。 |
CSS position 属性
1 | absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。 |
js 的解构
1 | 解构定义:允许按照一定模式,从数组和对象中提取值,对变量进行赋值。 |
js 实现轮播图思路
1 | 1.图片移动实现原理: |
js 数组和对象的扩展
1 | 1.Array.from()方法用于将对象转为真正的数组(类数组转数组) |
js 提升
1 | 一、提升(Hosting) |
比较 redux 和 vuex 的区别
1 | redux和vuex的区别 |
CSS display 属性
none | 此元素不会被显示。 |
---|---|
block | 此元素将显示为块级元素,此元素前后会带有换行符。 |
inline | 默认。此元素会被显示为内联元素,元素前后没有换行符。 |
inline-block | 行内块元素。(CSS2.1 新增的值) |
list-item | 此元素会作为列表显示。 |
run-in | 此元素会根据上下文作为块级元素或内联元素显示。 |
compact | CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。 |
marker | CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。 |
table | 此元素会作为块级表格来显示(类似 table),表格前后带有换行符。 |
inline-table | 此元素会作为内联表格来显示(类似 table),表格前后没有换行符。 |
table-row-group | 此元素会作为一个或多个行的分组来显示(类似 tbody)。 |
table-header-group | 此元素会作为一个或多个行的分组来显示(类似 thead)。 |
table-footer-group | 此元素会作为一个或多个行的分组来显示(类似 tfoot)。 |
table-row | 此元素会作为一个表格行显示(类似 tr)。 |
table-column-group | 此元素会作为一个或多个列的分组来显示(类似 colgroup)。 |
table-column | 此元素会作为一个单元格列显示(类似 col) |
table-cell | 此元素会作为一个表格单元格显示(类似 td 和 th) |
table-caption | 此元素会作为一个表格标题显示(类似 caption) |
inherit | 规定应该从父元素继承 display 属性的值。 |
CSS 选择符
1 | CSS选择符 |
CSS 中 link 和@import 的区别
1 | link属于HTML标签,@import是CSS提供的 |
CSS 中 display:none、visibility:hidden 和 opacity:0;的区别
1 | display:none;隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢。 |
CSS 中 rgba()和 opacity 的透明效果区别
1 | rgba()和 opacity 都能实现透明效果,但最大的不同是 opacity 作用于元素,以及元素内的所有内容的透明度; |
CSS 的外边距重叠
1 | 在 CSS 当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距。 |
CSS 清除浮动
1 | 清除浮动主要是为了解决父元素因为子元素浮动引起的内部高度为0的问题。 |
CSS3transition 过渡和 animation 动画的区别
1 | animation属性类似于transition,他们都是随着时间改变元素的属性值, |
前后端开发中数据是怎么交互的
1 | web后端和前端是怎么连接的? |
cookie 的理解
1 | cookie又叫会话跟踪技术,是由web服务器保存在用户浏览器上的小文本文件,它可以记录用户ID、密码、浏览过的网页、停留的时间等信息。当用户再次来到该网站时,网站通过读取cookie,得知用户相关信息,就可以做出相应的动作,如在页面显示欢迎用户标语,或者让用户不用输入ID、密码就直接登录等等。如果用户清理了cookie,那么用户曾登录过的网站信息就没有了。 |
输入网址到呈现网页发生的过程
1 | a.域名解析 |
浏览器渲染原理及流程
1 | 1. 浏览器会将HTML解析成一个DOM树,DOM 树的构建过程是一个深度遍历过程: |
浏览器本地存储
1 | HTML5中的Web Storage包含了两种存储方式,sessionStorage和localStorage。 |
cookie,localStorage,sessionStorage 区别
1 | 介绍 |
hash 值获取方式
1 | 可以通过window.location.hash获取hash值 |
document.write 和 innerHTML 的区别
1 | document.write会重绘整个页面 |
进程和线程的区别
1 | 一个程序至少有一个进程,一个进程至少有一个线程 |
babel 原理
1 | Babel 是一个通用的多功能 JavaScript 编译器,但与一般编译器不同的是它只是把同种语言的高版本规则转换为低版本规则,而不是输出另一种低级机器可识别的代码,并且在依赖不同的拓展插件下可用于不同形式的静态分析。(静态分析:指在不需要执行代码的前提下对代码进行分析以及相应处理的一个过程,主要应用于语法检查、编译、代码高亮、代码转换、优化、压缩等等) |
DVA 工作流程
查看评论