1,盒模型

1.1,ie 盒模型算上 border、padding 及本身(不算 margin),规范的只算上本身窗体的大小 css 设置办法如下:

/* 规范模型 */box-sizing:content-box ;/*IE 模型*/box-sizing:border-box ; 

1.2,几种取得宽高的形式

  • dom.style.width/height:这种形式只能取到 dom 元素内联款式所设置的宽高,也就是说如果该节点的款式是在 style 标签中或外联的 CSS 文件中设置的话,通过这种办法是获取不到 dom 的宽高的。
  • dom.currentStyle.width/height:这种形式获取的是在页面渲染实现后的后果,就是说不论是哪种形式设置的款式,都能获取到。但这种形式只有 IE 浏览器反对。
  • window.getComputedStyle(dom).width/height:这种方的原理和 2 是一样的,这个能够兼容更多的浏览器,通用性好一些。
  • dom.getBoundingClientRect().width/height:这种形式是依据元素在视窗中的相对地位来获取宽高的。
  • dom.offsetWidth/offsetHeight:这个就没什么好说的了,最罕用的,也是兼容最好的。

1.3,拓展 各种取得宽高的形式

  • 获取屏幕的高度和宽度(屏幕分辨率):
    window.screen.height/width
  • 获 取 屏 幕 工 作 区 域 的 高 度 和 宽 度 ( 去 掉 状 态 栏 ) :
    window.screen.availHeight/availWidth
  • 网页全文的高度和宽度:
    document.body.scrollHeight/Width
  • 滚动条卷下来的高度和向右卷的宽度:
    document.body.scrollTop/scrollLeft
  • 网页可见区域的高度和宽度(不加边线):
    document.body.clientHeight/clientWidth
  • 网页可见区域的高度和宽度(加边线):
    document.body.offsetHeight/offsetWidth

1.4,距重叠解决方案(BFC) BFC 原理

  • 外部的 box 会在垂直方向,一个接一个的搁置 每个元素的 margin box 的右边,与蕴含块 border box 的右边相接触(对于从做往右的格式化,否则相同)
  • box 垂直方向的间隔由 margin 决定,属于同一个 bfc 的两个相邻 box 的 margin 会产生重叠
  • bfc 的区域不会与浮动区域的 box 重叠
  • bfc 是一个页面上的独立的容器,里面的元素不会影响 bfc 里的元素,反过来,外面的也不会影响里面的
  • 计算 bfc 高度的时候,浮动元素也会参加计算 创立 bfc ? float 属性不为 none(脱离文档流)
  • position 为 absolute 或 fixed
  • display 为 inline-block,table-cell,table-caption,flex,inine-flex ? overflow 不为 visible
  • 根元素 demo
2,居中办法

程度方向上

针对 inline, 内联块 inline-block, 内联表 inline-table, inline-flex 元素及img,span,button 等元素

.text_div{text-align:center;}不定宽块状元素居中.text_div{margin:0 auto;//且须要设置父级宽度} 

通过给父元素设置 float,而后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left: -50% 来实现程度居中。

.wrap{float:left;position:relative;left:50%;clear:both;}.wrap-center{left:-50%;} 

垂直居中

  • 单行内联(inline-)元素垂直居中
    通过设置内联元素的高度(height)和行高(line-height)相等,从而使元素垂直居中。
.text_div{height: 120px;line-height: 120px;} 
  • 利用表布局
.father {display: table;}.children {display: table-cell;vertical-align: middle;text-align: center;} 
  • flex 布局
.center-flex {display: flex;flex-direction: column;//高低排列justify-content: center;} 
  • 相对布局形式

已知高度

.parent {position: relative;}.child {position: absolute;top: 50%;height: 100px;margin-top: -50px;} 

未知高度

.parent {position: relative;}.child {position: absolute;top: 50%;transform: translateY(-50%);} 

垂直程度居中依据上方联合

flex 形式.parent {display: flex;justify-content: center;align-items: center;}grid 形式.parent {height: 140px;display: grid;}.child {margin: auto;} 
3,css 优先级确定
  • 每个选择器都有权值,权值越大越优先
  • 继承的款式优先级低于本身指定款式
  • !important 优先级最高 js 也无奈批改
  • 权值雷同时,凑近元素的款式优先级高 程序为内联样式表(标签外部)> 外部样式表(以后文件中)> 内部样式表(内部文件中)
4,如何革除浮动

不分明浮动会产生高度塌陷:浮动元素父元素高度自适应(父元素不写高度时,子元素写了浮动后,父元素会产生高度塌陷)

  • clear 革除浮动(增加空 div 法)在浮动元素下方增加空 div,并给该元素写 css 款式:{clear:both;height:0;overflow:hidden;}
  • 给浮动元素父级设置高度
  • 父级同时浮动(须要给父级同级元素增加浮动)? 父级设置成 inline-block,其 margin: 0 auto 居中形式生效
  • 给父级增加 overflow:hidden 革除浮动办法
  • 万能革除法 after 伪类 清浮动(当初支流办法,举荐应用)
.float_div:after{content:".";clear:both;display:block;height:0;overflow:hidden;visibility:hidden;}.float_div{zoom:1} 
5,link @import 导入 css

(1)link 是 XHTML 标签,除了加载 CSS 外,还能够定义 RSS 等其余事务;@import 属于CSS 领域,只能加载 CSS。

(2)link 援用 CSS 时,在页面载入时同时加载;@import 须要页面网页齐全载入当前加载。

(3)link 无兼容问题;@import 是在 CSS2.1 提出的,低版本的浏览器不反对。

(4)link 反对应用 Javascript 管制 DOM 去扭转款式;而@import 不反对。

6, ["1", "2", "3"].map(parseInt)

首先, map 承受两个参数, 一个回调函数 callback, 一个回调函数的 this 值,其中回调函数承受三个参数 currentValue, index, arrary;而题目中, map 只传入了回调函数--parseInt.。其次, parseInt 只承受两个两个参数 string, radix(基数).

本题了解来说也就是 key 与 index

所以本题即问 parseInt('1', 0);parseInt('2', 1);parseInt('3', 2);

parseInt(string, radix)

string 必须,要被解析的字符串。
radix 可选,示意要解析的数字的基数。该值介于 2 ~ 36 之间。

如果省略该参数或其值为 0,则数字将以 10 为根底来解析。如果它以 “0x” 或 “0X” 结尾,将以 16 为基数。

7,浅拷贝和深拷贝
  • 浅拷贝
// 第一层为深拷贝Object.assign()Array.prototype.slice()扩大运算符 ... 
  • 深拷贝
JSON.parse(JSON.stringify()) 

递归函数

function cloneObject(obj) {  var newObj = {} //如果不是援用类型,间接返回  if (typeof obj !== 'object') {    return obj  }  //如果是援用类型,遍历属性  else {    for (var attr in obj) {      //如果某个属性还是援用类型,递归调用      newObj[attr] = cloneObject(obj[attr])    }  }  return newObj} 
8,数组去重的办法

1)ES6 的 Set

let arr = [1,1,2,3,4,5,5,6]let arr2 = [...new Set(arr)] 

2)reduce()

let arr = [1,1,2,3,4,5,5,6]let arr2 = arr.reduce(function(ar,cur) {  if(!ar.includes(cur)) {    ar.push(cur)  }  return ar},[]) 

3)filter()

// 这种办法会有一个问题:[1,'1']会被当做雷同元素,最终输出[1]let arr = [1,1,2,3,4,5,5,6]let arr2 = arr.filter(function(item,index) {  // indexOf() 办法可返回某个指定的 字符串值 在字符串中首次呈现的地位  return arr.indexOf(item) === index}) 
9,cookie、localStorage、sessionStorage的区别和应用?

cookie:是存储在本地的数据,有时候也用cookies,通常通过加密,利用最经典的就是判断注册用户是否曾经登录过该网站。
localStorage:仅在客户端保留(即浏览器),不参加和服务器的通信;没有工夫限度,即便浏览器敞开,数据仍然存在;

创立和拜访localStorage:   1)、设置数据:   var forgetData = {   phone:vm.phone   };   localStorage.setItem("forgetData",JSON.Stringfy(forgetData)); //forgetData是存储在localStorage里边的本地数据;JSON.Stringfy(forgetData)是将数据转化为字符串格局;     获取数据:   vm.forgetData=JSON.parse(localStorage.getItem("forgetData")); //将字符串转化为JSON化;   2)、设置:localStorage.name = "zhao";      获取:localStorage.name  //zhao       localStorage.setItem(key,value);//设置数据       localStorage.getItem(key);//获取数据       localStorage.removeItem(key);//删除单个数据       localStorage.clear();//革除所有localStorage的数据       sessionStorage:当用户的浏览器窗口敞开时,数据会被革除; 

共同点:都是保留在浏览器端,且同源的。

区别:

cookie数据始终在同源的http申请中携带9即便不须要),即cookie在浏览器和服务器之间来回传递;cookie数据还有门路的概念,能够限度cookie只属于某个门路下。存储大小限度也不同,cookie数据大小不能超过4K,同时因为每次http申请都会携带cookie,所以cookie只能保留很小的数据。
sessionStorage和localStorage不会主动把数据发给服务器,只在本地保留,尽管也有大小限度,然而要比cookie大得多,能够达到5M或者更大。

数据有效期不同,
sessionStorage仅在以后浏览器窗口敞开前无效,不能长久保留;
localStorage:始终无效,浏览器窗口敞开也始终保留;
cookie:只在cookie设置的过期工夫之前保留,即便浏览器窗口敞开。

作用域不同,
sessionStorage在不同浏览器窗口的数据不能共享,即便是同一个页面;
localStorage在所有的同源窗口中都是共享的;
cookie也是在同源窗口中共享的

10、ajax申请时get和post的区别?

get:从服务器上获取数据,传送数据量小,安全性低,申请会被缓存,缓存是针对URL进行缓存的,get申请参数间接加在URL地址前面,一种参数组合就会产生一种URL的缓存,反复的申请后果是雷同的;

post:向服务器发送数据;传送数据量大,申请不会被缓存,参数封装在二进制的数据体中,服务器也不会记录参数,绝对平安,所以波及用户隐衷的数据都要用post传送

11、常见状态码

2结尾 (申请胜利)示意胜利解决了申请的状态代码

200 (胜利) 服务器已胜利解决了申请。 通常,这示意服务器提供了申请的网页。
201 (已创立) 申请胜利并且服务器创立了新的资源。
202 (已承受) 服务器已承受申请,但尚未解决。
203 (非受权信息) 服务器已胜利解决了申请,但返回的信息可能来自另一起源。
204 (无内容) 服务器胜利解决了申请,但没有返回任何内容。
205 (重置内容) 服务器胜利解决了申请,但没有返回任何内容。
206 (局部内容) 服务器胜利解决了局部 GET 申请。

3结尾 (申请被重定向)示意要实现申请,须要进一步操作。 通常,这些状态代码用来重定向

300 (多种抉择) 针对申请,服务器可执行多种操作。 服务器可依据请求者 (user agent) 抉择一项操作,或提供操作列表供请求者抉择。
301 (永恒挪动) 申请的网页已永恒挪动到新地位。 服务器返回此响应(对 GET 或 HEAD 申请的响应)时,会主动将请求者转到新地位。
302 (长期挪动) 服务器目前从不同地位的网页响应申请,但请求者应持续应用原有地位来进行当前的申请。
303 (查看其余地位) 请求者该当对不同的地位应用独自的 GET 申请来检索响应时,服务器返回此代码。
304 (未修改) 自从上次申请后,申请的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305 (应用代理) 请求者只能应用代理拜访申请的网页。 如果服务器返回此响应,还示意请求者应应用代理。
307 (长期重定向) 服务器目前从不同地位的网页响应申请,但请求者应持续应用原有地位来进行当前的申请。

4结尾 (申请谬误)这些状态代码示意申请可能出错,障碍了服务器的解决

400 (谬误申请) 服务器不了解申请的语法。
401 (未受权) 申请要求身份验证。 对于须要登录的网页,服务器可能返回此响应。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到申请的网页。
405 (办法禁用) 禁用申请中指定的办法。
406 (不承受) 无奈应用申请的内容个性响应申请的网页。
407 (须要代理受权) 此状态代码与
408 (申请超时) 服务器等待申请时产生超时。
409 (抵触) 服务器在实现申请时发生冲突。 服务器必须在响应中蕴含无关抵触的信息。
410 (已删除) 如果申请的资源已永恒删除,服务器就会返回此响应。
411 (须要无效长度) 服务器不承受不含无效内容长度标头字段的申请。
412 (未满足前提条件) 服务器未满足请求者在申请中设置的其中一个前提条件。
413 (申请实体过大) 服务器无奈解决申请,因为申请实体过大,超出服务器的解决能力。
414 (申请的 URI 过长) 申请的 URI(通常为网址)过长,服务器无奈解决。
415 (不反对的媒体类型) 申请的格局不受申请页面的反对。
416 (申请范畴不符合要求) 如果页面无奈提供申请的范畴,则服务器会返回此状态代码。
417 (未满足期望值) 服务器未满足"冀望"申请标头字段的要求。

5结尾(服务器谬误)这些状态代码示意服务器在尝试解决申请时产生外部谬误。 这些谬误可能是服务器自身的谬误,而不是申请出错

500 (服务器外部谬误) 服务器遇到谬误,无奈实现申请。
501 (尚未施行) 服务器不具备实现申请的性能。 例如,服务器无奈辨认申请办法时可能会返回此代码。
502 (谬误网关) 服务器作为网关或代理,从上游服务器收到有效响应。
503 (服务不可用) 服务器目前无奈应用(因为超载或停机保护)。 通常,这只是临时状态。
504 (网关超时) 服务器作为网关或代理,然而没有及时从上游服务器收到申请。
505 (HTTP 版本不受反对) 服务器不反对申请中所用的 HTTP 协定版本。
12,挪动端触摸事件

①touchstart:当手指触碰到屏幕的时候触发
②touchmove:当手指在屏幕上滑动的时候触发
③touchend:当手指来到屏幕的时候时候触发
④touchcancel 事件:当零碎进行跟踪触摸的时候触发(这个事件很少会用,个别不做深入研究)。电话接入或者弹出信息等其余事件切入 event:

(1)touches:示意以后跟踪的触摸操作的 touch 对象的数组。
(2) targetTouches:特定于事件指标的 Touch 对象的数组。
(3) changeTouches:示意自上次触摸以来产生了什么扭转的 Touch 对象的数组。 每个 touch 对象蕴含的属性
(4) clientX:触摸指标在视口中的 x 坐标。
(5) clientY:触摸指标在视口中的 y 坐标。
(6)identifier:标识触摸的惟一 ID。
(7) pageX:触摸指标在页面中的 x 坐标。
(8) pageY:触摸指标在页面中的 y 坐标。
(9)screenX:触摸指标在屏幕中的 x 坐标。
(10) screenY:触摸指标在屏幕中的 y 坐标。
(11) target:触目标 DOM 节点指标。

13,生命周期

总共分为8个阶段创立前/后,载入前/后,更新前/后,销毁前/后。

  • 创立前/后: 在beforeCreate阶段,vue实例的挂载元素el和数据对象data都为undefined,还未初始化。在created阶段,vue实例的数据对象data有了,el还没有。
  • 载入前/后:在beforeMount阶段,vue实例的$el和data都初始化了,但还是挂载之前为虚构的dom节点,data.message还未替换。在mounted阶段,vue实例挂载实现,data.message胜利渲染。
  • 更新前/后:当data变动时,会触发beforeUpdate和updated办法。
  • 销毁前/后:在执行destroy办法后,对data的扭转不会再触发周期函数,阐明此时vue实例曾经解除了事件监听以及和dom的绑定,然而dom构造仍然存在

(1)什么是vue生命周期

Vue 实例从创立到销毁的过程,就是生命周期。也就是从开始创立、初始化数据、编译模板、挂载
Dom→渲染、更新→渲染、卸载等一系列过程,咱们称这是 Vue 的生命周期。

(2)vue生命周期的作用是什么

它的生命周期中有多个事件钩子,让咱们在管制整个Vue实例的过程时更容易造成好的逻辑。

(3)vue生命周期总共有几个阶段

能够总共分为8个阶段:创立前/后, 载入前/后,更新前/后,销毁前/销毁后

(4)第一次页面加载会触发哪几个钩子

第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子

(5)DOM 渲染在 哪个周期中就曾经实现

DOM 渲染在 mounted 中就曾经实现了

(6)简略形容每个周期具体适宜哪些场景

生命周期钩子的一些应用办法:

  • beforecreate : 能够在这加个loading事件,在加载实例时触发
  • created : 初始化实现时的事件写在这里,如在这完结loading事件,异步申请也合适在这里调用
  • mounted : 挂载元素,获取到DOM节点
  • updated : 如果对数据对立解决,在这里写上相应函数
  • beforeDestroy : 能够做一个确认进行事件的确认框
  • nextTick : 更新数据后立刻操作dom
14,Vue 的 nextTick 的原理是什么?

1)为什么须要 nextTick
Vue 是异步批改 DOM 的并且不激励开发者间接接触 DOM,但有时候业务须要必须对数据更改--刷新后的 DOM 做相应的解决,这时候就能够应用 Vue.nextTick(callback)这个 api 了。

2)了解原理前的筹备
首先须要晓得事件循环中宏工作和微工作这两个概念(这其实也是面试常考点)。
常见的宏工作有 script, setTimeout, setInterval, setImmediate, I/O, UI rendering
常见的微工作有 process.nextTick(Nodejs),Promise.then(),MutationObserver;

3)了解 nextTick
而 nextTick 的原理正是 vue 通过异步队列管制 DOM 更新和 nextTick 回调函数先后执行的形式。如果大家看过这部分的源码,会发现其中做了很多 isNative()的判断,因为这里还存在兼容性优雅降级的问题。可见 Vue 开发团队的三思而行,对性能的良苦用心。

15,Vue中引入组件的步骤?

1)采纳ES6的import ... from ...语法或CommonJS的require()办法引入组件
2)对组件进行注册,代码如下

// 注册Vue.component('my-component', { template: '<div>A custom component!</div>'}) 

3)应用组件 <my-component></my-component>

16,说出至多4种vue当中的指令和它的用法?
  • v-if:判断是否暗藏;
  • v-for:数据循环;
  • v-bind:class:绑定一个属性;
  • v-model:实现双向绑定
17,vuex

(1)vuex是什么?怎么应用?哪种性能场景应用它?

vue框架中状态治理。在main.js引入store,注入。新建一个目录store,….. export 。

场景有:单页利用中,组件之间的状态。音乐播放、登录状态、退出购物车

(2)vuex有哪几种属性?

有五种,别离是 State、 Getter、Mutation 、Action、 Module

  • vuex的State个性
    A、Vuex就是一个仓库,仓库外面放了很多对象。其中state就是数据源寄存地,对应于个别Vue对象外面的data
    B、state外面寄存的数据是响应式的,Vue组件从store中读取数据,若是store中的数据产生扭转,依赖这个数据的组件也会产生更新
    C、它通过mapState把全局的 state 和 getters 映射到以后组件的 computed 计算属性中
  • vuex的Getter个性
    A、getters 能够对State进行计算操作,它就是Store的计算属性
    B、 尽管在组件内也能够做计算属性,然而getters 能够在多组件之间复用
    C、 如果一个状态只在一个组件内应用,是能够不必getters
  • vuex的Mutation个性
    Action 相似于 mutation,不同在于:Action 提交的是 mutation,而不是间接变更状态;Action能够蕴含任意异步操作。

(3)不必Vuex会带来什么问题?

  • 可维护性会降落,想批改数据要保护三个中央;
  • 可读性会降落,因为一个组件里的数据,基本就看不出来是从哪来的;
  • 减少耦合,大量的上传派发,会让耦合性大大增加,原本Vue用Component就是为了缩小耦合,当初这么用,和组件化的初衷相背
18,vuex 是基于redux

1)全局的store
2)响应式
3)不能间接批改,commit(mutation)
vuex应用繁多状态树 吧store的实例注入到所有的子组件,mutation解决同步事务
1)action : 提交mutation,异步
2)module

19,vue更新data

1)异步更新
2)屡次更新data,只在最初一次渲染

20,react的setState

1)两个参数。 setState(updater,[callback]) ,第一个参数是更新的对象,第二个参数是更新实现的回调函数;
2)setStat自身执行过程和代码是同步的
3)合成事件(onClick、onChanged等)和钩子函数中setState是异步的,将屡次合并成一次更新;
4)在原生事件和 setTimeout 中都是同步的。
5)浅合并 Objecr.assign()

21,react的setState流程

1)将state放入数组(队列);
2)查看是否在更新阶段
3)是:组件放在dirtyComponent
4)否:调用update更新,标记以后处于更新阶段
5)最初再遍历dirtyComponent执行更新

22,react和vue的比拟

雷同
1)vitual dom
2)组件化
3)props,繁多数据流

不同点
1)react是jsx和模板;(jsx能够进行更多的js逻辑和操作)
2)状态治理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

篇幅无限,所有前端面试题都已整顿成PDF文档,须要支付能够私信,收费分享!

分享一些前端大厂面试题

阿里

  • 应用过的koa2中间件
  • koa-body原理
  • 介绍本人写过的中间件
  • 有没有波及到Cluster
  • 介绍pm2
  • master挂了的话pm2怎么解决
  • 如何和MySQL进行通信
  • React申明周期及本人的了解
  • 如何配置React-Router
  • 路由的动静加载模块
  • 服务端渲染SSR
  • 介绍路由的history
  • 介绍Redux数据流的流程
  • Redux如何实现多个组件之间的通信,多个组件应用雷同状态如何进行治理
  • 多个组件之间如何拆分各自的state,每块小的组件有本人的状态,它们之间还有一些公共的状态须要保护,如何思考这块
  • 应用过的Redux中间件
  • 如何解决跨域的问题
  • 常见Http申请头
  • 挪动端适配1px的问题
  • 介绍flex布局
  • 其余css形式设置垂直居中
  • 居中为什么要应用transform(为什么不应用marginLeft/Top)
  • 应用过webpack外面哪些plugin和loader
  • webpack外面的插件是怎么实现的
  • dev-server是怎么跑起来
  • 我的项目优化
  • 抽取公共文件是怎么配置的
  • 我的项目中如何解决平安问题
  • 怎么实现this对象的深拷贝

网易

  • 介绍redux,次要解决什么问题
  • 文件上传如何做断点续传
  • 表单能够跨域吗
  • promise、async有什么区别
  • 搜寻申请如何解决(防抖)
  • 搜寻申请中文如何申请
  • 介绍观察者模式
  • 介绍中介者模式
  • 观察者和订阅-公布的区别,各自用在哪里
  • 介绍react优化
  • 介绍http2.0
  • 通过什么做到并发申请
  • http1.1时如何复用tcp连贯
  • 介绍service worker
  • 介绍css3中position:sticky
  • redux申请中间件如何解决并发
  • 介绍Promise,异样捕捉
  • 介绍position属性包含CSS3新增
  • 浏览器事件流向
  • 介绍事件代理以及优缺点
  • React组件中怎么做事件代理
  • React组件事件代理的原理
  • 介绍this各种状况
  • 前端怎么管制治理路由
  • 应用路由时呈现问题如何解决
  • React怎么做数据的检查和变动

滴滴

  • react-router怎么实现路由切换
  • react-router里的<Link>标签和<a>标签有什么区别
  • 标签默认事件禁掉之后做了什么才实现了跳转
  • React层面的性能优化
  • 整个前端性能晋升大抵分几类
  • import { Button } from 'antd',打包的时候只打包button,分模块加载,是怎么做到的
  • 应用import时,webpacknode_modules里的依赖会做什么
  • JS异步解决方案的倒退历程以及优缺点
  • Http报文的申请会有几个局部
  • cookie放哪里,cookie能做的事件和存在的价值
  • cookietoken都寄存在header外面,为什么只劫持前者
  • cookiesession有哪些方面的区别
  • ReactDom构造发生变化后外部经验了哪些变动
  • React挂载的时候有3个组件,textComponent、composeComponent、domComponent,区别和关系,Dom构造发生变化时怎么辨别data的变动,怎么更新,更新怎么调度,如果更新的时候还有其余工作存在怎么解决
  • key次要是解决哪一类的问题,为什么不倡议用索引index(重绘)
  • Redux中异步的申请怎么解决
  • Redux中间件是什么货色,承受几个参数(两端的柯里化函数)
  • 柯里化函数两端的参数具体是什么货色
  • 中间件是怎么拿到store和action,而后怎么解决
  • state是怎么注入到组件的,从reducer到组件经验了什么样的过程
  • koa中response.send、response.rounded、response.json产生了什么事,浏览器为什么能辨认到它是一个json构造或是html
  • koa-bodyparser怎么来解析request
  • webpack整个生命周期,loader和plugin有什么区别
  • 介绍AST(Abstract Syntax Tree)形象语法树
  • 安卓Activity之间数据是怎么传递的
  • 安卓4.0到6.0过程中WebView对js兼容性的变动
  • WebView和原生是如何通信
  • 跨域怎么解决,有没有应用过Apache等计划