JS
es6新特性
this指向,箭头函数和普通函数的区别
- 箭头函数是匿名函数,不能作为构造函数,不能使用new
- 箭头函数不能绑定arguments,取而代之用rest参数...解决
- 箭头函数没有原型属性
- 箭头函数的this永远指向其上下文的this,没有办改变其指向,
普通函数的this指向调用它的对象
闭包
let var const 区别,变量提升,函数提升,为何存在变量提升,函数提升
promise generator async await 异同
promise.all用过吗?如何实现当其中一个promise抛出错误的时候也能顺利执行promise.all的回调?
Promise.all([a,b,c].map(p => p.catch(e => {
console.log(e, 'e');
})))
.then(res => {
console.log(res, 'res');
})
.catch(err => {
consol.log(err, 'err');
});
先说结论:不一样。 {}+[] == “[object Object]” []+{} == 0
隐式类型转换
先说 [] + {} 。一个数组加一个对象。
加法会进行隐式类型转换,规则是调用其 valueOf() 或 toString() 以取得一个非对象的值(primitive value)。如果两个值中的任何一个是字符串,则进行字符串串接,否则进行数字加法。
[] 和 {} 的 valueOf() 都返回对象自身,所以都会调用 toString(),最后的结果是字符串串接。[].toString() 返回空字符串,({}).toString() 返回“[object Object]”。最后的结果就是“[object Object]”。
{ // empty block }
+[]
即对一个空数组执行正号运算,实际上就是把数组转型为数字。首先调用 [].valueOf() 。返回数组自身,不是primitive value,因此继续调用 [].toString() ,返回空字符串。空字符串转型为数字,返回0,即最后的结果。
let a=b=c=1,a b c的 值是什么,有什么区别
function test(){
let a=b=c=0;
}
let a=b=c=0 相当于 c=0; b=c; let a=b;
b和c为全局变量,a为局部变量
Eventloop
Object.keys()不能获取原型链上的属性,for in可以获取原型链上的属性。
事件模型的三个阶段说一下?
三个嵌套的div,每个div都同时绑定一个捕获事件和一个冒泡时间,写出事件执行顺序?
事件代理委托?父节点定义了多个点击事件,点击子节点,如何实现一个事件不执行,其他所有的事件都执行?用stopDefault()组织该事件默认行为。
如何阻止冒泡?
手写+代码算法
手写instanceof
函数柯里化
手写深拷贝
快速排序/冒泡
打印一个树结构的对象???
前端工程化
简述__webpack_require__方法
es6 module和 commonjs规范的区别
webpack的作用是什么?开发环境和测试环境之间的配置文件有什么区别?
一面
二面
11 let a=b=c=1,a b c的 值是什么,有什么区别(这两道题不知道是不是小米的,有些遗忘)
一面
Object.keys()不能获取原型链上的属性,for in可以获取原型链上的属性。
(快排,冒泡,一定要能描述清楚原理,会写,堆排序)
- 有自己在npm上发布过依赖包吗?
- webpack的作用是什么?开发环境和测试环境之间的配置文件有什么区别?
- devtool有那些选项,分别有什么作用?
- devServer的实现原理了解过吗?
- 说一下event loop的过程?
- reqeustAnimationFrame有用过没,是如何使用的?就是递归调用呗。她是属于微任务还是宏任务?
- promise定义时传入的函数什么时候执行的?
- promise.all用过吗?如何实现当其中一个promise抛出错误的时候也能顺利执行promise.all的回调?
- 时间模型的三个阶段说一下?三个嵌套的div,每个div都同时绑定一个捕获事件和一个冒泡时间,写出事件执行顺序?
- 事件代理委托?父节点定义了多个点击事件,点击子节点,如何实现一个事件不执行,其他所有的事件都执行?用stopDefault()组织该事件默认行为。
- 如何阻止冒泡?
- 浏览器的缓存机制?
- 前端工程化的理解?
一面就这么结束了,大概一个小时吧,然后小哥哥让我等一会儿。
二面
- 平时pc端做的多还是移动端做的多?
- 主要是通过什么手段实现响应式布局的?
- 做移动端适配的时候需要设置什么?
- 详细说一下viewport?
- 手写了一个react组件,组件里有A和B两个子组件,A组件属性接受了父组件的state属性,B组件没有接受state属性,当父组件setState之后,如何变化?
- 还是刚刚的组件,实现一个异步获取数据列表[‘a’, ‘b’, ‘c’…],然后将这个数组中的数据渲染到dom中去的功能,最终是一个dom列表(<li>)。在componentMounted钩子里异步操作然后setState就ok了。为什么用componentMounted?因为此时dom节点已经挂载完毕,可以安全的对dom进行访问。
- react展示组建和功能组件的区别?
- react定义事件?使用前需要bind。
- es6新特性说一下?let、var、const区别?es6如何实现块级作用域的?
- WeakMap用过吗?没。。。
- promise.all?如何实现一个链式异步请求,一个请求完成继续下一个请求?then链式执行呗。中间如果有一个promise出错怎么办?如何确保执行到最后?我答的还是try catch前行resolve,不过好像不太对,有知道的大神求指导。
- promise、async/await、generator区别?
- 手撕代码:找出一个字符串中重复次数最多的字母?
- 手撕代码:实现对象的深克隆?
CSS相关
文本居中,文本溢出
垂直居中布局
margin塌陷
如何处理float造成的高度塌陷(多种解决方案)
布局相关
1.双飞翼布局,圣杯布局写法大概思路;用CSS画三角形;
SEO优化