面经

246 阅读4分钟

面试第一轮(电话):
1:dva的工作原理是什么?
基于redux,redux-saga和react-router的前端框架\

2:react的生命周期
渲染: componentWillMount componentDidMount
更新: componentWillUpdate(nextProps,nextState) componentDidUpdate(prevProps,prevState)
卸载 componentWillUnmount
还有两个比较特殊的状态 componentWillReceiveProps(nextProps) shouldComponentUpdate(nextProps,nextState)
在shouldComponentUpdate里不能调用setState更新组件状态
react16新加了生命周期函数ComponentDidCatch
这个是错误边界,可以捕获其整个子组件树内发生的任何异常,但是却不能捕获自身的异常

3:在react中如何获取具体的dom
4:用了antd,如何修改组件的样式
5:this指的是什么
6:jsx和js的区别
7:如何变异步函数为同步函数
8:...在数组和对象之中的应用
...为扩展运算符,可将一个数组转为用逗号分隔的参数序列。
console.log(...[2,3,4])//2,3,4

9:state和props的区别
props是父组件传递给子组件的数据流,可以一直传递到后代组件中,state是组件自身的内部状态。

10:子组件如何调用父组件的方法
11:css中display和position的区别
12:react中如何绑定this
在es2015的写法中需要手动的绑定this this.handleClick=this.handleClick.bind(this)这个在调用的时候绑定。 而在es6中,可以在定义函数时使用箭头函数来解决this绑定的问题
handleClick = () => {}\

13:react的key
react是利用key来识别组件,每个key对应一个组件,react根据key来决定是销毁重新创建组件还是更新组件。 key属性的使用场景最多的还是由数组动态创建的子组件的情况

这一轮我答得比较好,除了jsx和js的区别我没有答上,其他的自我感觉答得还可以,如果大家需要,我之后会把这些答案整理下来然后贴在后面。\

面试第二轮(电话):
1:实现函数3的data来自函数2,函数2的data来自函数1;
2:webpack设置的问题,具体什么我忘了,主要是我答得很不好,面试官不知道要怎么继续问下去,汗颜💧
3:如何需要改对象深属性的值,比如将a:{b:{c:d:{e:2}}}中的e属性值改为1
4:es6相比es5有哪些优点
5:如何让元素水平居中,垂直居中 6:react创建组建es5与es6的写法,其中是怎么实现class继承的
7:原型链

这一次的面试,自己感觉被虐到了,感觉自己在写组件的时候只是会用,知其然不知其所以然的感觉,特别是第六个问题,面试官只差没有直接告诉我答案了,在我吞吞吐吐答不出来的时候,他说你了解原型链吗?我...我想说我知道是知道,但是react是用prototype实现class的继承的我在面试之前还真的不知道。

面试第三轮(当面):
1:js的数据类型,如何去检测数据类型。 2:然后给了一个后台管理系统,让我自己操作一下,然后问我实现这个的难点在哪里,可能我没有答出他们预定的答案,然后问我想要实现这个的动态的菜单栏需要怎么做? 3:问了我一个交互的优化问题,类似在某个类别下点击某条数据或添加按钮,出现一个modal,可在里面做修改,点击保存,点保存的时候有个confirm框,然后modal框依然停留在那里。关掉modal之后数据的展示方案。

另外的一个面试,也一并写在这里吧
相同的面试题我就不重复了

1:实现斐波拉切数列求值,给了纸和笔,要手写的
2:css画圆,画椭圆 ps:这个我不得不要为自己申述一下,border-radius是有两个值的,有个水平半径和垂直半径,但是一般情况下都是只用了水平半径,然后也不会用这个在应用中画椭圆,所以,我当时只是说了这个,但是面试官说会接不上,中间有空隙。当时电脑都在旁边,我应该试一下的,但是没有把握,我选择了沉默。但是既然不是这种方式,应该就还有,下来查一查。
3:css优化
4:react的虚拟dom为什么比真实dom好

这些是我近段时间的面试题,想要分享记录一下。也侧面反应出来从工作这一年的时间以来,只会去用这些框架,没有深入的研究。就像面试官给我说的一样,只停留在会用的阶段,还不能有意识地去优化。即使工作重复,还是应该理出一套最优的方式,能把以前一天的工作量缩短到半天,也是进步。

之后我会把答案贴在下面,欢迎大家的指正。