simplemaster 2019-06-28
现在似乎比较流行分享一些面试经验?正好最近闲来无事,简单分享一下今日关于阿里电话面试的记录,供大家参考吧。
前些日子有位阿里的大佬发私信询问我是否有意去试试【前端/全栈】的职位,说实话我当时其实是处于懵逼状态的,因为深知自己水平一般,但是还是愿意去试一试的,之后简单沟通后就把自己的简历通过邮件发给了他,然后他告诉我按流程应该很快就会接到预约面试的电话。
下面简单记录下电话面试的整个过程,以及期间涉及的问题还有自己的一些见解。
开头并未让我做自我介绍,直接就开始面试了,这个整得我有点懵逼,然后就直接说了说当前工作所涉及的工作内容,之后面试官并未追问什么其他的,应该是一个暖场问题。
我接触的前端技术很杂,基本主流的技术都有接触,然后罗列了一下,面试官也没有追问什么,我当时心想可能是面试官需要把握后面的提问方向才问的这个问题(事实证明我错了)。
这个问题的详细答案网上应该是一搜一大把,这里就不多说了,我当时说了两种,一种是 float + bfc + 圣杯布局,另一种是 flex,关于前者 balabala 说了一堆估计面试官大概明白我意思了,然后简单说说 css 属性就好,不要解释太多原理方面的东西,然后让我说说第二种。
之后我就按他的要求把第二种涉及到的属性讲了一遍,然后他说可以了,然后追问了两个小问题:
这个自然也比较好答,balabala 又大概说了一下,然后面试官说可以了,进行下一个问题。
这里值得一提的是,一定要听好面试官的问题,我在这里可能因为口音的原因,没太听清,以为让我列举 flex 布局涉及到的其他 css 属性,结果一顿说,最后他说只描述 flex 属性就好了。
这个也是比较老的问题了,考察 jsonp 和 cors。这里就不展开讲了,网上一搜一大把,我这里答的还算不错,基本从原理到实施大概讲了一下,就是对比优缺点的时候,略微卡了一下,在面试官的提示下,也回答上来了。
我说现在不太熟悉了,因为当时接触的时候是 0.14 版本之后就转 angular 了,不过对于一些核心的概念还是懂的。面试官没有继续追问别的相关 react 的问题。
这里我说都可以。
简单说了一下 setter/getter 涉及的东西,然后我也不知道当时脑子是短路了还是怎么的,就没继续说了,后来在面试官说你这才说了一半啊,另外一半呢?我这才回过神来,把 dom 相关的事件还有观察者模式说了一些。之后没有追问其他的东西。
当时我追问了一下是哪个 angular,面试官说 angularjs,然后我突然有点懵逼,因为 angularjs 已经好久未用,directive 的概念我是知道的,但是其中涉及的一些属性我是真的忘了。后来停顿了几秒,勉强回忆起部分重要的属性,大概说了一下,之后没有追问任何问题。
我这里询问了下具体指哪些方面,面试官说就是 http 协议中关于响应请求的报文格式等东西,关于 http 协议本身,由于我也是一知半解,这里就直接回答不清楚了。
这个一脸懵逼,直接说不知道了。之后面试官说一般日常使用 linux 的话应该有很多机会接触这个知识点的,如果只是工作是部署下服务器,可能确实不知道,就不追问了。
这个也没有答出来,因为确实平日上服务器也不会刻意留意磁盘使用状态,可能之前看关于 linux 的书籍也见过,但是忘了。这里面试官追问,我对于 linux 是什么使用程度,我大概描述了一下,平日是用 macos,部署的话是 ubuntu,说了一些自己平日常用的命令和工具,之后没有继续追问其他问题。
关于查看磁盘使用状态的命令,这里就不赘述了,网上搜索一下,文章很多。
nginx 作为反向代理,确实已经使用过无数次,但是背后与业务服务器通信的协议真的没有深入了解过。后来查了一下,似乎是一个叫作 cgi 的协议,这里涨知识了。
简单描述了使用 drag、drop 和 mousedown、mousemove、mouseup 事件的两种方案、实现过程以及优缺点。
之后面试官追问了一个问题,如果鼠标移动过快,移出了 div 容器怎么办?这个问题我一开始没有 get 到他提问的点,往边界条件和友好性说了一些,似乎是答非所问了。然后面试官提示我说有听过事件冒泡吗?我说知道,然后往事件委托上答了一些,但是还是没有说明要利用事件委托做什么,最终面试官说往 document 上增加相关事件就好了,然后我一下明白他啥意思了。
大概按 django 那个入门文档的角度简单的将了将 django 中的 MVC 是如何表现的,以及一个 http 请求从浏览器发送至业务服务器,再到相关数据被持久化到数据库的整个过程,之后没有追问任何问题。
我问了问面试官,关于我回答不出的这些问题,如何才能在平日工作中获取?他和我说了两点,一点是靠契机,意思就是确实会遇到相关领域的问题,第二点就是靠意识,在解决问题的时候,挖深一些,不要仅仅拘泥于解决问题的表面。
总体下来,感觉是要凉凉的节奏。因为面试的职位是【前端/全栈】工程师,所以考察的问题并非局限于前端,还包含若干其他领域的知识。看来平日还需多积累,多学习,虽然我一直是以程序员、工程师的角度来要求自己,不贴过多标签,比如前端、后端之类的,对于未知的知识时刻保持好奇心,然而似乎证明力度还是远远不够的。
革命尚未成功,同志还需努力。