浏览器
浏览器渲染原理
分为 页面加载过程、浏览器渲染过程
页面加载过程
---> 输入域名
- DNS解析得到ip
- 向ip发出请求
- 服务器收到、处理并返回请求
- 浏览器得到返回结果
浏览器渲染过程
- 解析html生成dom树
- 解析css生成css规则树
- 解析js操作dom和css
- 浏览器引擎通过dom树和css规则树得到render树
- 然后计算每个Frame 的位置,这又叫layout和reflow过程。
注意
渲染过程中,如果遇到<script>就停止渲染,执行 JS代码。GUI渲染线程与JS引擎线程为互斥关系。
浏览器有GUI渲染线程与JS引擎线程,为了防止渲染出现不可预期的结果,这两个线程是互斥的关系。
cookie的属性
name:字段名
value:cookie的值
domain:可以访问到此coockie的域名
path:可访问的页面路径
ecpires/max-age 超时时间
size:cookie的大小
httpOnly:true,不能用document.cookie来访问cookie,只有在http请求头中才会有带有cookie信息
secure:是否只能通过https来传递此cookie
DOM
事件捕获 事件冒泡 事件委托,给动态生成的dom每一个添加事件监听
捕获过程 目标过程 冒泡过程
[Object].addEventListener("name_of_event", fnHandler, bCapture);
bCapture 为true 捕获型,false为冒泡型
阻止传播 stopPropagation
DOM的事件对象与ie事件对象的最主要的不同点是什么
Ie 是冒泡型事件 dom 是先捕获再冒泡
html
doctype
doctype用于告诉浏览器以什么规范来解析文档
如果doctype没有声明或者格式错误会导致浏览器以混杂模式解析
混杂模式以向后兼容的方式以避免站点无法工作
严格模式以浏览器支持的最高标准解析
新特性 新标签
h5
- 语义化标签
- 拖拽和释放api
- 表单控件calendar data time email url search
- websocket geolocation webworker
- localstorage 和 sessionstorage
- canvas
- geolocation
- audio 和 video
css3
- rgba
- text-shadow
- border-radius、box-shadow
- 盒子模型
- ie盒模型 将padding和border包含到content内 实际宽度=width
- 标准盒模型 实际宽度=width+2padding+2border
- background-size和background-origin background-clip 裁剪图像 可用于自适应布局
- linear-gradient 和 radial-gradient 渐变
- transition 过渡
- animation 动画
- ::selection 伪元素
- 媒体查询
- transform 2、3d转换
- border-image
js
数据类型
基本数据类型:number undefined null boolean string 存在栈内
引用数据类型:object array function data 栈内存地址 堆中存值
typeof的值有number、boolean、string、symbol、object、undefined、function 七种值 其他类型都返回 object
[] instanceof Array //true
// 但是
let a = 2
a instanceof Number //false
模块化
构造函数
this
js继承
js原型链
js防抖节流
闭包
深浅拷贝
Promise
什么是回调地狱
同步和异步的区别
同步:一件事做完在做下一件事
异步:规划要做一件事,但不立即去做,先做别的事情
get和post性能有区别吗
箭头函数的特点
- 没有prototype属性
- 不能用call aplly bind改变this指向
- this指向外层函数
- 没有argument对象
js性能优化
- 资源加载优化,浏览器渲染相关
- 合理合并http请求
- 合理设置http缓存
- dns预解析
- 懒加载
- ===全等
- 垃圾回收,内存泄漏
- 防抖和节流/回流和重绘
垃圾回收
标记清除、引用计数
webpack原理
css
盒子模型
垂直居中
position
flex
css 画个圆
回流和重绘
什么是BFC,怎么开启BFC,具体应用场景
vue
v-show v-if的区别
父子组件通信 props $emit
兄弟组件通信 bus
双向数据绑定原理
数据劫持 object.defineProperty
数据代理
发布和订阅的模式
vue-router原理
虚拟DOM,为什么要引入虚拟DOM
diff算法
vue中怎么实现继承 extend
vuex的实现
网络
关于原生ajax
跨域
- jsonp
- nginx
- node中间件
jsonp跨域原理
利用 <script> 标签没有跨域限制
- 创建script标签,请求地址复制给src
- 服务器收到请求,然后做特殊处理
- 客户端接到返回数据执行回调函数
axios底层
状态码
- 200 成功
- 300+ 重定向
- 404 找不到
- 400 请求错误
- 408 服务器超时
- 500 服务器错误
- 504 网关超时