网易前端开发实习生一面面经

昨天面了网易互联的一面,居然进了面试,略有几分惊讶。面试是视频面,自我感觉比腾讯那一次好,但是基础题因为太过于紧张答得不好,后面相对而言更好了一些,总体发挥满分100分自评60分吧。

题目方面,网易这边基础方面问的并不是特别细,同样是一面,综合难度感觉比腾讯低。

面试体验感觉一般,面试官人不错,而且反问环节也都回答了,但是面试过程中没有对错误进行讲解或者进行合适的引导,这一点感觉很一般,对比腾讯的话。

JavaScript

第一部分永远是JS,是直接看文件回答三个题目,除了结果外还要和面试官解释为什么是这样。印象里是考了四题还是五题,中间因为紧张想不出来跳过了一个题目,没有记下题目具体是什么。

这里就说说记得的三个。

第一题是经典的for var循环下setTimeout,太简单了不提了。

第二题是一个Prototype下有一个add方法,对this.count进行自增,这一题一开始答案说对了,但是没有讲出个所以然。

第三题是一个闭包的函数,问输出,脑子一抽回答错了,时候回
头看才发现很简单。

页面

页面这一块没有问什么太过于复杂的东西,主要问的就是一个重绘和回流的区别,记得不是很清楚,未能答上,具体后面的单独开一篇总结。

然后是经典的跨域问题,问跨域请求会有什么问题,和同源请求有什么区别,有什么办法实现跨域。

跨域原来总结过,答了JSONP和CORS,和同源请求的区别是对请求的域名、方法以及Cookie有限制,如果要跨域要设置withCredentials且服务端要允许。

后续面试官追问还有没有其他区别,一时间想不到。这里后面思考面试官应该要问的可能是iframe或者CSRF,因为实在不明白面试官的意图,问题有点笼统,一时间真的想不到这两个点,没有继续说了。

这里CORS还有一个预检问题,分简单请求和非简单请求,非简单请求存在一个预检,这也是一个很重要的区别,没有想到。

对于JSONP,面试官问了JSONP的原理、异常处理和超时,异常处理onerror,超时用timeout,标准解决方法了。

其他方法面试官有特别追问,实际上是有的,postMessage和ws,因为问题问的是请求数据,没有限定XHR,这里是我思路局限了。

CSS

开门见山flex三列布局,重点问了父元素要设置什么。因为没有屏幕共享,是基本想到了就说,父元素设置display: flex,子元素width、flex的order以及flex-grow。

三列flex这个写法其实是很灵活的,只有很少几个属性是必须的,面试官问父元素要设置什么一时间是get不到他想问的点,随口说了一个position:relative。毕竟严格来说container除了display:flex外,没有其他要特别设置的东西,都是看页面怎么来,可能是宽度?

对于HTML部分怎么写答的是从上到下依次是从左到右三列,实际上main可以到最前,优先加载。

后面问了CSS3动画是否有了解,答曰并不了解,这一块确实没怎么实践过,只知道一个@keyframes,无法强答,所以答了动画一般用transition。

属性方面特别问到z-index,正值很容易理解,重点是负值,答了一个负值会隐藏元素,这里的隐藏是值被body盖住。但是我忽略了body没有背景色,所以这个元素不是看不见的隐藏。面试前看了一个面经说z-index和visibility、display: none的区别,然后想歪了。

它还是在堆叠上下文里面,但是会位于所有元素后面,body有背景色的情况下等同于隐藏,然后因为被body挡住了所以点击默认点不到这个元素。

很意外的是这一部分面试官加问了一个WebGL、GPU加速,没有了解过跳了。

Vue

面试官问技术栈,答曰有jQuery也有Vue。

Vue的问题第一个生命周期,第二个父子组件通信,Vue-bus的原理没有搞懂,答了一半,第三个是状态管理。

没有问vue-router是比较意外的,问的是一个实际业务问题,一个页面进来要请求4个初始化数据,在生命周期的哪个地方请求。

答可以放beforeCreate,也可以放created,beforeCreate的数据不能放data,不能取methods内方法,因为初始化没完成,created后才能取到,不能确定异步方法完成之后是否初始化完了。

追问数据怎么办,答数据可以放在window下,created/mounted后取回都行,看具体业务是怎么样的,严格来说created就能取回了,但问了哪些周期可以取回,所以都说了。

created之后就可以直接取methods和data。

工程

Git没有问,问了gulp和webpack(简历上有写),Webpack认知还是很一般,答只会loader/plugin,gulp用得多,然后答了gulp的原理和用途。

面试官特别问了grunt,确实没有用过,后续再去了解一下。这一部分感觉还是要多看看webpack,毕竟webpack是王道。

其他

问了项目的一些相关,没有细问,就是简单介绍了一下,可能是因为面试官没听到什么什么感兴趣的内容吧。

面试官特别问了觉得最骄傲的最拿得出手的项目,可能是想听技术细节,答的是Fastnote,说了一些项目上目前遇到的问题,就是技术栈太老没有办法扩展,在一步步重构,然后说了一下交互上的设计。

面试官没有追问细节所以没有深入聊细节了,实习的项目主要是问看做了个什么,也没深入细节,可能是因为技术栈太老了。

反问

网易还给了反问,说明面试官还不急着挂,遵守了流程,腾讯那边面试官有一种急着挂电话的感觉……

反问面试官很正经、详细地回答了,好评,问了技术栈和未来有没有上GraphQL的想法,因为如果上GraphQL,前端这边压力会更大,后端的一些东西会转到前端来做,考虑到未来的一个发展问了一下。

总结

基础方面的概念和JavaScript的题目还是刷得不够,不过总体感觉不算特别差,很多地方主要是自我感觉模棱两可,导致面试过程中出现了好几个尴尬的点,特别是问CORS和三列父类设置的时候,因为实在是想不到其他点了,面试官应该没听到他想听到的,所以选择追问。

还是一个知识储备不够的问题,但比腾讯那一次面试感觉下来要好多了。