一. 火石买手(电话面)
1.实现一个弹窗效果
蒙版fixed,left:0,top:0,color:rgba,具体颜色忘了,又问第四位a是什么,一下没想起来,回了个灰度值,应该是透明度。
2.垂直居中的方式
很多,回答了absolute定位,margin-top,margin-left方式
transform(50%,50%)
flex布局,align-item:center
box布局,box-align:center;box-pack:center
3.对原型的理解
这个网上很多,总结一下再结合项目实际用法谈了一下
4.ES6的新特性,数组拓展的方法,map和forEach的区别?localstorage和sessionstorage的区别?
map不改变原数组,forEach改变原数组。localStorage只要不手动清,一直存在,不会清楚。sessionStorage只存在当前页面,当前会话。
5.谈谈前端的优化,页面加载和react项目分别说一下
说了按需加载,分切打包。
说了用shouldComponentUpdate来优化一些因父组件render导致不必要的子组件render的情况。用PureComponent代替Component来优化一些ui展示组件。
6.描述一次完整的redux过程
组件dispatch一个action,reducer接受action,return新state,存到store.
用connect高阶组件连接业务组建,传入mapStateToPorps,mapDispathToProps参数,从store接受this.props.xxx,this.props.xxxaction.
二.智课网(一轮技术面)
1.介绍下自己,谈一谈自己印象最深的项目
2.谈一下webpack打包是怎么运行的,具体优化方案,用过哪些方案,怎么用webpack实现按需加载?
这个答的不好,loader的配置配好了就没管过,没有准备好。
优化方案说了分片打包,但是说的不好,没记清。
按需加载说了webpack的require.ensure方式,在router配置使用getComponent
这个问题答得不好,面试没过这里可能占很大原因。自己对webpack不熟
3.用过redux最大的感想是什么?有什么替代方案?除了context呢?saga也还是redux那一套,了解过dva,谈一下dva?
最大感想,麻烦!如果对于redux的理解不是很深的话,容易将各种组件都connect,从而将展示组件和容器组件偶合在一起,使数据和view混淆,项目反而更加臃肿,数据流也并不清晰。
替代方案:说了saga,原生context,dva。但是面试官好像还是不满意,这里我也没懂面试官想得到的答案是什么。
saga只是将异步action可以以同步的方式书写,采用es6的yield。但是写起来同样麻烦,且项目不那么麻烦的话没必要用saga。
dva也是用的saga,作者只是将saga,redux,react-router高度封装了。写法上比较简单,思路也比较清晰。但是自己没有在实际项目使用过,所以没有讲的很深
4.封装优化了react项目架构,谈一下你的项目架构,做了哪些优化
不知道从何说起,于是从项目的文件夹层次开始说,将展示组件、容器组件分离,
5.看到我项目用的less,问用过less哪些功能,函数功能用过吗?
直接说没用过
6.let 和 const,let和var的区别?
用了ES6就不用var,可以避免很多全局变量的污染问题。let和var可以满足所有情况,let有单独的作用域,let在初始化和赋值阶段和var不一样。const则用于声明常量
7.js实现斐波那契数列
8.怎么用node搭建前端服务器?
讲了自己的项目用express搭的前端服务。
三、in(九言科技) 电话面
1.react生命周期
2.redux实现方式
3.ES7用的多吗,async await实现方式?yeild实现方式?两者区别?ES7修饰器怎么实现的,了解过吗?
4.ant design源码看过吗?大部分用的哪个库?
5.谈一下dva,saga里面 yeild有哪些方法,各什么作用?put出来的是一个什么?dva的model有哪些方法,什么作用?
6.react router有哪些引入路由的方式,哪些history
7.react 16 新增了哪个生命周期,删去了哪个生命周期?render返回的结果有什么变化,怎么返回一个数组?
8.了解ssr吗?谈一下。
9.promise.all和promise.race的区别?谈一下promise.all,如果有一个promise出错了,会立马进入catch吗?
promise.then返回的是什么?
10.canvas有哪些方法?
网友评论