2019.03.14——阿里前端实习面试

今天,我终于面试了阿里。
也总算是体会到了什么叫做对一个人的全面考察。
(投完简历测智商的操作也是没谁辽,阿里爸爸??
准备阶段
先说面试前的准备。我是昨天早上约的时间,今晚面试。(没确定时间,真是失误,整个晚上都在准备,哎~!)
今早翘了一节保密法,今天下午翘了一节毛概。(这种课真的浪费时间啊喂!)
从早上十点到现在,吃了一餐,两倍意式浓缩,一小碗粥。
疯狂刷题。
根据我的简历,百度词条:
HTML面试,刷完20道题(整理成文档);
CSS面试,刷完30道题(整理成文档);
JS面试,没顾及,感觉是按照知识点刷的,不是题目。主要复习了闭包、作用域、清理机制、指针之类的。
vue(项目相关):生命周期,原理(双向绑定)

开始面试
我的风格一向是:“先发制人!”
我,小张,宗旨是,绝不冷场。
开始自我介绍。然后讲项目。这次把舌头捋直了,从框架、两个页面、三个功能一条一条讲的。
讲完来了第一个问题:
Q:你在表格里要获取的是每个组的信息?
A:是啊,怎么获取的讲了一大堆
还有几个问题,是关于一些我可能没有解释好的点,一一捋明白了。
正式问题:
Q:项目过程中遇到什么问题?
A:具体见我上一篇博客。疯狂吐槽这个公司中。
Q:在使用vue的过程中遇到了什么问题?
A:我将了一个v-for的问题。坦白讲,至今没有弄明白原理
Q:你是怎么试图解决这个问题的?思路是什么?
A:我的具体就是怎么排除错误的可能性,最后归结为,不知道为啥,百度没有相似情况。但是最终解决了需求。
Q:解决的方式?
A:通过scope.$index,发现这个可以动态,所以把它当作下标解决了。原始问题始终没有解决,我想看源码,但是没有时间。
Q:你可以去搜索一个VUE的调试软件,试着调试一下。(后来去搜索了一下,是叫做VUE UI)。
Q:你说把所有的代码写在了一个页面里?
A:嗯,2000+行。
Q:为啥不分页面?
A:公司规定。。。。我也很无奈。。。。
Q&A:一起吐槽中。。。。
Q:那么调试JS的时候使用过断点调试吗?
A:没有,我一般都是直接console.log()输出的。
Q:啊,那我问你一个问题啊,你在调试的时候,按下调试输出的结果,就会显示出来你调试的这一行代码的位置,那么这个过程是怎么实现的?
A:我答不上来。。。
Q:或者说我换一个问题,你是用VUE来写的,那么你的代码发布出去怎么能被用户使用,其中经历了什么过程?
A:我没经历过产品的发布,不太清楚。。。
Q:好吧,我理解。那说到VUE,我想问你,它的原理你了解过吗?
A:双向绑定。简单介绍了一下。
Q:那不聊VUE,讲一下JS吧。闭包你能解释一下吗?
A:简单介绍了一下闭包,说是为了防止数据被回收。但是也会造成数据泄露。最后讲了一下闭包是为了防止全局变量的污染。中间提到了C++的类。于是就有了下一个问题。
Q:既然你提到了类,我想问一下,JS里面的类怎么实现私有化?
A:本来我想到了let,apply等等都不对。最后在面试官的引导下,答案应该是让这个属性无法被访问,也就是写一个函数,动态地生成某一个属性。
Q:接下来问一些网页布局方面的问题。如果有一个这样的需求。一个标题,在用户下拉的时候,让标题固定在页面上某个位置不动。同时变小。拉回到原位的时候,标题恢复。
A:我就提到先把position赋为fixed,然后在检测到scroll的动作的时候,动态获取节点getElementById()获取节点位置,然后更改style属性中的height和width。
Q:我们现在要提到,监听scroll的开销非常大,因为他会一直返回数据,造成网页负担过重,卡顿等,你怎么解决。
A:我提出不理解。
Q:或者说搜索引擎,你打字会有关键字联想,如何减少监听你的打字的开销?
A:我说就设置setTimeInterval,让大概隔一段时间监听一次。
Q:他说思路有问题。
A:那就设置一个计数器,让他检测到多次移动之后,再执行一次操作。
Q:思路对了,但是计数器不对。
A:反正最后扯了很久,归结到时间上。总体思路是找一个开销较小的函数,执行次数较多。给他一定的条件,让他在满足这个条件的时候再执行某个开销较大的函数。开销较大的函数写在回调里。面试官提到了节流和去抖。
Q:最后问一个数据结构的问题。怎么比较两个二叉树是否完全相同。
A:遍历
Q:那么把一个二叉树序列化,怎么避免两个不同的二叉树序列化出来的东西相同?
A:我提出把最后一行在遍历的时候加一个条件,如果没有孩子节点就加一个空节点作为标识。

最后问了几个问题。
面试官让我注意获取大量数据如何在网页上渲染,做图表的问题。
还有就是注意知识的广度问题,比如产品发布需要经过什么之类的。
评价
面试体验100分,面试官人很好。

你可能感兴趣的:(面试经验)