面试的结果还不知道,面试官说得等年后通知,对面试做下记录,以作经验。

昨天(2018-02-08)在美团厦门研发中心面了二面和三面,接上次一面(2018-01-29)差不多过了一周多。上周和面试官约好了一周后面试,可能是她太忙忘记了,我发了封邮件提醒后不久约我在周四到厦门那边面试。感觉找实习找工作这事真的是要主动一点、厚脸皮一点,为自己多争取机会。。实在不行霸面也没关系。

额。。这次实习面试之前我真是超紧张的。。身体是很诚实的反正面试之前各种不舒服和以前参加重要考试的感觉差不多,面试之后身体都舒畅多了。面试结果我自己觉得还行,公司那边觉得怎么样我就不知道了。尽人事看天命吧。

以下对面试过程做下记录。

二面

刚开始一面的电话面是个小姐姐的声音,以为二面还是她,结果不是,他领我进公司一个叫“晋江厅”的房间,然后后来进来了一个男性工程师,嗯感觉还是很友善的,刚开始在前台等的时候很紧张。然后和面试官聊起来我慢慢就比较放松了,总之美团的面试体验很好。

  1. 先自我介绍下

我和一面答得差不多,因为我的经历比较平庸把,普普通通上课,课后时间钻研点前端,所以我觉得可能面试官也不以为意,这个问题都是例行走流程问一下。项目那边我在介绍的时候实诚地回答了自己的具体实践是比较少的,然后自己贴上去的项目都是比较简单的,感觉面试官也没啥追究。也不知自己这般诚实是不是好哈哈。

  1. 平时都是怎么学前端的?

大概讲了下会关注一些知乎专栏啊,公众号,博客这些。但是主要是看书,特别是JavaScript的书,HTML和CSS的书看的比较少,这两个看文档比较多。面试官问我都看什么JavaScript的书,回答高程,蝴蝶书(JavaScript语言精粹),深入浅出ES6这些。面试官没做什么评价。感觉这个问题也算是例行走流程,没太多比较新颖、特别的”学习方式”的话,面试官也不好再问什么,和第一个问题一样走走流程。

  1. ES6的语法都有了解了吧,讲讲箭头函数?

箭头函数算是我比较了解的ES6特性了。。毕竟一开始就是因为看到箭头函数以为这是什么奇淫巧技的js写法,然后后来才学了下ES6的。。我回答了几个点,一是箭头函数没有this和arguments参数,而普通函数是会有默认的this和arguments这两个属性的。然后再回答了下没有箭头函数之前的var that = this的写法,自我理解是箭头函数算是为了解决ES5这个开发痛点才引入的箭头函数。大概记得的就讲了这两个。面试官提醒我有个点没讲到,然后就直接说了箭头函数不能作为构造函数调用,感觉面试官想接着说下去的时候我把话抢过来说了,讲了在ES6当中函数新增了[call]、[constructor]的内部属性,如果是new调用的话就调用[constructor]这个内部属性定义的函数,而普通的调用就是[call],而箭头函数没有[constructor]。然后解释了下自己知道这一点,只是刚刚一下没想到,面试官说后面这里有补充就好。

  1. 有了解下字符编码吗?

说实话,这方面我没啥太多了解。一开始就和面试官坦白自己了解不多,就尽量说一说。然后想起之前没在html的meta标签里面加charset=”UTF-8”的事,导致找了一晚上bug。面试官说就是因为有坑所以我才问哈哈。后来讲完不知道说啥,就把自己印象中ES6在Unicode上的改进说了一下,主要是以前的charcode和现在charpoint这个概念的区分。但是这里我是真的有些印象。具体的东西都不了解。然后面试官在自己电脑上的控制台打下了’[一个emoji表情]1’.length问我长度是多少。。不过没给我太多思考的时间,控制台显示的答案是3,然后我补充解释了一下,因为emoji表情是在Unicode扩展字符里的,所以占2个长度,他就是一个charpoint。算是挽救了一下下。之后回来讲了一下字符编码,就说自己除了知道GBK是中文编码,然后UTF-8好像是比较统一的blabla(这里瞎答),然后说自己没有太研究过。

  1. vue组件通信

说实话前面3到4之间好像还有聊了一些其他问题,不过我有点忘了。我都不知道话题怎么跳到vue组件来了。。面试官好像是想问我组件是怎么通信的。。我讲了pass props。后来又讲了一点状态管理的问题,主要是我翻转课堂的那个项目,因为前端状态管理很混乱,所以感觉vuex很有必要啥的。后来感觉面试官好像不是想问我这个。所以他一直在说如果没有vuex的话组件怎么通信,然后我还是说了props。。感觉被自己蠢哭了,后来面试官问了如果是非父子组件的话呢(原话好像不是这个)。我回答new一个vue实例来当总线之类的东西,然后发送事件+事件监听。然后提到子组件向父组件传递数据也是这种方式。

  1. 有自己写过什么组件吗?木偶组件和智能组件知道吗?

讲了自己的cai-blog里的比如说article组件。然后没有了。。然后问了木偶组件和智能组件。。回答不知道,然后面试官给我解释了一下什么是木偶组件。只展示数据,没有处理逻辑啥的blabla。我频频点头哈哈,这个是真的不知道,再了解一下。

  1. 怎么说javascript是单线程的,或者说你觉得这样说严谨吗?

自己傻傻的先说了,这个问题刚好来面试之前有了解了一下。。。然后我先是讲了下自己对同步操作和异步操作的理解。然后讲了以前写Java的时候遇到耗时操作都是开一个新线程,但是JavaScript开不了,之后讲了JavaScript的事件处理机制。。详情看我博客的讲事件循环的文章。我讲得和那个博文差不多。后来面试官问我知道promise把,promise和setTimeout的话的优先级是什么样的?我回答了macro-task和micro-task。。感觉面试官可能是想问这个。。大概。。是把。。

  1. 手写深拷贝。

额。。是真的懵了。。说实话深浅拷贝的区别我也没有了解得很清晰,大概知道深拷贝得连嵌套的对象也拷贝。。额。。然后自己还是勉勉强强写了一个很渣的代码。。面试官说了几个问题,一是没判断数组还是对象,二是自己递归实现的代码有问题,主要是递归里面的return、三是自引用。总之这个代码很有问题。我自己也清除,同时这个问题也是我之后努力的一个方向,接下去我打算跟着underscore把一些函数的实现都写一下。

记得的就是这些了,应该有一些是漏掉的。。就这样了

三面

一开始我以为三面是HR了,后来发现不是,还是进来了一个技术面试官。这个技术面试官问的前端的问题不多。一开始了解一下专业,年级,哪里人什么的问题,平时怎么学习的,写博客吗。后来问我大三都上什么课,回答了操作系统,j2ee啥的。然后问我哪个课学得比较好。。我不知道当时脑子进水了还是啥的。。居然回答了操作系统。。我去。。我才考了70几分 = =。后来面试官问了我信号量,叫我讲讲信号量。。苍天啊T T。。凭着印象讲了一些,一开始讲内存中有数据,然后很多进程想要访问数据。。然后就被吐槽了,说是进程没办法直接访问数据。这个我是真不知道,猜了一下说那是线程访问?然后问我进程线程啥关系,我讲了CPU一次只能处理一个线程。又被质疑了。然后我说单核应该是只能处理一个。多核才能处理多个。之后问了我知道时间片这个概念吗。我讲时间片是CPU发给线程的,线程执行完时间片相应的时间就得让出CPU。之后问我一个时间片是多久。。我说不记得了。。但是时间片过短会导致CPU耗费在无畏的切换线程之中,过长会导致线程饥饿。他问,那到底是多久。我就瞎猜了一个,比周转周期大一点?然后讲了取指令和执行指令,我说要比这个周期长点把。。面试官说长得多了。。后来他也不为难我了。之后问的问题也比较友好。问我MVC和MVVM的区别,问我ES5和ES6的有什么区别之类的。后来问了一点实习时间之类的时。

三面印象中时间是不长,面试官应该是个技术大佬。气场很强大,面试过程比我二面要紧张一些。

现在就是等年后的通知了,希望能过。