关于面试

框架类:

vue 原理

webpack 

  plugin

webpack整体是一个插件架构,所有的功能都以插件的方式集成在构建流程中,通过发布订阅事件来触发各个插件执行。webpack核心使用Tapable 来实现插件(plugins)的binding(绑定)和applying(应用)。

Compiler 模块是 webpack 的支柱引擎,它通过 CLI 或 Node API 传递的所有选项,创建出一个 compilation 实例。它扩展(extend)自 Tapable 类,以便注册和调用插件。大多数面向用户的插件首先会在 Compiler 上注册。

   配置项: entry、output、module( loader )、plugins、devServer、resolve、devtool、optimization

css:

盒模型、js 获取对应宽高

// 通过DOM节点的 style 样式获取
// 只能获取行内样式,不能获取内嵌的样式和外链的样式
element.style.width/height;

// 
window.getComputedStyle(element).width/height;

// 
element.getBoundingClientRect().width/height;

包裹性

BFC

垂直水平居中

安卓、ios 行高问题

布局 - 圣杯布局

es6:

promise

class super

js:

原始类型 => 装箱拆箱 => 对象构造 => new 操作符 => 箭头函数、普通函数区别 => 闭包

js线程 => 事件循环 => 异步执行顺序

浏览器绘制页面 => 重绘重排

闭包 => 垃圾回收

面向对象

深拷贝

require 、import 区别

  • require是‘运行时加载‘,只有在代码真正运行的时候才会去加载对应需要的东西,所以不能做到编译时就把想加载的模块加载进来,即不能做到编译时静态化
  • import是编译时调用,所以必须放在文件开头

 JS编译解析的流程

1. 语法分析,生成抽象语法树(AST)和执行上下文:

    生成 AST 需要经过两个阶段:
        第一阶段是分词(tokenize),又称为词法分析
        第二阶段是解析(parse),又称为语法分析

2. 预编译,解释器 lgnition 生成字节码

3. 解释执行,第一次执行,解释器 lgnition 通常会一行行执行代码,解释过程中,若发现一段代码被重复执行多次,即为热点代码,则 编译器 TurboFan 会把该段热点的字节码编译为机器码,再次执行这段被优化的代码时,只需要执行编译后的机器码就可以了,这样就大大提升了代码的执行效率。这就是 即时编译(JIT)

设计模式

Class => prototype

node.js:

koa、中间件

http:

安全:xss、跨域

原文地址:https://www.cnblogs.com/_error/p/12696849.html