“记一下近大半个月的面试,后面继续补充内容跟答案css
先放个图放松一下html
答:HTML5 API盘点前端
答:盒子模型分为两种:IE盒子模型,标准盒子模型。 IE盒子模型 box-sizing:border-box;他的宽高为border+padding+content。 标准盒子模型:box-sizing:content-box;;他的宽高就是content的宽高。vue
答:全称:block format context(块级格式化上下文)。是一个独立不干扰外界也不受外界干扰的盒子。 建立bfc的经常使用方式有:position:absolute;display:inline-block;float:left/right;overflow:hidden; BFC布局规则: 1.内部的Box会在垂直方向,一个接一个地放置。 2.Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠 3.每一个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,不然相反)。即便存在浮动也是如此。 4.BFC的区域不会与float box重叠。 5.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。 6.计算BFC的高度时,浮动元素也参与计算。html5
答:比较多,能够自行百度react
答:before,after CSS3 特性 建议看一遍,深究的话看公司需求。webpack
答:连接同上css3
答:连接同上web
答:浏览器为何有两种事件机制,是由于各个浏览器的差别问题,在IE使用的是事件冒泡,其余浏览器则是事件捕获。面试
答:bind,apply,call是放在Function.prototype上
答:第三个参数是默认事件在冒泡阶段执行,默认为false,true则为在捕获阶段执行。
答:Promise
答:个人理解是在外层函数内部经过return 一个内层函数将外层函数内部的执行上下文保存到外部引用。tips:不管什么时候声明新函数并将其赋值给变量,都要存储函数定义和闭包,闭包包含在函数建立时做用域中的全部变量,相似于背包,函数定义附带一个小背包,包里存储了函数定义建立时做用域中的全部变量。
答:这个文章看一遍就懂。这一次,完全弄懂 JavaScript 执行机制
答:比较简单. 解锁多种JavaScript数组去重姿式
答:经常使用的 1. arr instanceof Array 2.Object.prototype.toString.call(arr) 3.Array.isArray(arr)
答:基本类型:
tips:
引用类型:Object
答:JS的防抖与节流
答:
实现一个监听器 Observer:对数据对象进行遍历,包括子属性对象的属性,利用 Object.defineProperty() 对属性都加上 setter 和 getter。这样的话,给这个对象的某个值赋值,就会触发 setter,那么就能监听到了数据变化。
实现一个解析器 Compile:解析 Vue 模板指令,将模板中的变量都替换成数据,而后初始化渲染页面视图,并将每一个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变更,收到通知,调用更新函数进行数据更新。
实现一个订阅者 Watcher:Watcher 订阅者是 Observer 和 Compile 之间通讯的桥梁 ,主要的任务是订阅 Observer 中的属性值变化的消息,当收到属性值变化的消息时,触发解析器 Compile 中对应的更新函数。
实现一个订阅器 Dep:订阅器采用 发布-订阅 设计模式,用来收集订阅者 Watcher,对监听器 Observer 和 订阅者 Watcher 进行统一管理。
借个图(来自书籍 深刻浅出Vue.js):
答:
computed: 是计算属性,依赖其它属性值,而且 computed 的值有缓存,只有它依赖的属性值发生改变,下一次获取 computed 的值时才会从新计算 computed 的值;
watch: 更多的是「观察」的做用,相似于某些数据的监听回调 ,每当监听的数据变化时都会执行回调进行后续操做;
运用场景:1.当咱们须要进行数值计算,而且依赖于其它数据时,应该使用 computed,由于能够利用 computed 的缓存特性,避免每次获取值时,都要从新计算;
2.当咱们须要在数据变化时执行异步或开销较大的操做时,应该使用 watch,使用 watch 选项容许咱们执行异步操做 ( 访问一个 API ),限制咱们执行该操做的频率,并在咱们获得最终结果前,设置中间状态。这些都是计算属性没法作到的。
答:借图
答:可根据我的状况简述。
1.数据双向绑定2.虚拟dom3.组件化系统4.vue生态5.市场
MVVM 是 Model-View-ViewModel 的缩写 Model: 表明数据模型,也能够在Model中定义数据修改和操做的业务逻辑。咱们能够把Model称为数据层,由于它仅仅关注数据自己,不关心任何行为 View: 用户操做界面。当ViewModel对Model进行更新的时候,会经过数据绑定更新到View ViewModel: 业务逻辑层,View须要什么数据,ViewModel要提供这个数据;View有某些操做,ViewModel就要响应这些操做,因此能够说它是Model for View. 总结: MVVM模式简化了界面与业务的依赖,解决了数据频繁更新。MVVM 在使用当中,利用双向绑定技术,使得 Model 变化时,ViewModel 会自动更新,而 ViewModel 变化时,View 也会自动变化。
答:
解析器(parser)的做用是将 模板字符串 转换成 element ASTs。
优化器(optimizer)的做用是找出那些静态节点和静态根节点并打上标记。
代码生成器(code generator)的做用是使用 element ASTs 生成 render函数代码(generate render function code from element ASTs)。
解析器(parser)的原理是一小段一小段的去截取字符串,而后维护一个 stack 用来保存DOM深度,每截取到一段标签的开始就 push 到 stack 中,当全部字符串都截取完以后也就解析出了一个完整的 AST。
优化器(optimizer)的原理是用递归的方式将全部节点打标记,表示是不是一个 静态节点,而后再次递归一遍把 静态根节点 也标记出来。
代码生成器(code generator)的原理也是经过递归去拼一个函数执行代码的字符串,递归的过程根据不一样的节点类型调用不一样的生成方法,若是发现是一颗元素节点就拼一个_c(tagName, data, children) 的函数调用字符串,而后 data 和 children 也是使用 AST 中的属性去拼字符串。最后拼出一个完整的 render 函数代码。
借图(easyhappy vue模板编译原理):
答:keep-alive 是 Vue 内置的一个组件,可使被包含的组件保留状态,避免从新渲染 ,其有如下特性:
1.通常结合路由和动态组件一块儿使用,用于缓存组件;
2.提供 include 和 exclude 属性,二者都支持字符串或正则表达式, include 表示只有名称匹 配的组件会被缓存,exclude 表示任何名称匹配的组件都不会被缓存 ,其中 exclude 的优先级比 include 高;
3.对应两个钩子函数 activated 和 deactivated ,当组件被激活时,触发钩子函数 activated,当组件被移除时,触发钩子函数 deactivated。
答:
答:
答:
答:
答:
答:
答:
答:
答:
答:
答:
答:
答:
答:
答:是用; 来拼接
答:
答:
答:
答:
答:先非对称加密,后对称加密
答:
答:这里能够贴个很厉害的人的总结!
从输入URL到页面加载的过程?如何由一道题完善本身的前端知识体系!
答:
答:
答:
答:
答:
答:
答:
答:
答:
答:
答:不打广告,能够买一下修言大佬的小册,写的好
答:
答:我这个真的不是很了解,最近买了修言大佬的掘金小册,恶补一下,顺便贴一些最近再看的好文
答:
答:
答:
面试也是总结的过程,也是对本身知识的梳理,经过面试进行查漏补缺,对本身的知识水平有一个认知,向大厂靠近。
因为本人技术能力所限,若是相关错误请及时与我联系修改,谢谢!
本文使用 mdnice 排版