2017年7月毕业至今,已经快两年了,这两年的的技术积累得到到底怎样呢?个人觉得,面试是检验技术的唯一标准。所以,决定准备一份简历,到顶尖的互联网公司试一下,广州这边,最好的公司,当然就是微信啦。正好有师姐是在微信的,所以把简历发给了她,同时,我自己也在boss直聘上投了一个岗位,但是后来尴尬的事情发生了:

我的简历被微信的其他部门锁定了!就是 boss直聘 投递的微信开放平台岗位锁定了,所以,我就找 HR 说明了情况,说我对另外一个部门比较感兴趣,要求释放我的简历。

虽然 HR姐姐 还是不太愿意取消,不过最后在我的再三要求下,她还是取消了哈。这件事情也说明了一事实:一份好的简历,是多么的重要!好的简历,甚至会让同一个公司的不同部门抢着不放的。所以,如果你想找一份好的工作,必须要花时间,先好好的准备一下简历,个人觉得,写一份好的简历,最起码需要准备两天吧,把自己在平时工作中最有成就感的地方列出来。

OK,简历被锁的问题搞定了,接下来就真正的到面试环节了。因为面试是一个十分敏感的事情,白天我不太好请假去面试啊,万一被老大知道我不安分、想跳槽了怎么办啊。所以,当3月27日早上微信的HR打电话来跟我约面试时间,我约了3月28日晚上7.30。也就是上周四的晚上哈。

这可是我毕业后的第一次面试啊,而且还是微信,内心肯定是非常紧张的!好不容终于到了周四晚上6点钟了(其实还没有到下班时间,我们是6.30才能打卡的),我饭都没有来得及吃,匆匆的打车过去TIT创意园。从信息港过去那边虽然不到10公里,但是因为下班高峰期,差不多50分钟才到。

7.30终于到了,面试官先让我做笔试题,给的时间是40分钟。这笔试什么题目都有,有Linux、MySql、C/C++、算法,当然因为是前端面试,也有一些前端的题目。其实这笔试题对我来说真的很难,因为太多东西都不会,像 MySql、Linux、C/C++ 这些我一个前端切图仔除了在大学课堂上学习一点儿之外,几乎是没有任何的实战过。

大概8.20面试官说时间到了,他把我的答案大概看了看,然后就开始面试了。先是作自己介绍,接着就开始面试。印象中记得的题目是以下这些。

  • 先是看简历上写的项目经验,问一上些项目上的问题,比如如何编写 js-sdk, 如何去修改 weui 库,遇到最大的难题是什么及如何去解决的。
  • 数组去重的方法有哪些?
  • 如何判断左右小括号是否全部匹配。如 ( ( ))()((((()))))
  • JS 的事件机制
  • 如何劫持 XMLHttpRequest 的 send() 方法,调用他的时候,把参数输出到控制台。
  • git 和svn 的区别,git 的本地仓库有什么用呢?
  • react 和 vue 的区别
  • 为什么简单的项目选择使用 jQuery 而不用 vue 。
  • 跨域解决方案有哪些?jsonp 的原理及缺点?及如何判断 JS 加载完成了?IE7不支持 script.onload 事件怎么办?
  • 浏览器的渲染机制?
  • 浏览器最大并发量限制是多少个?及如何去突破这个限制?
  • 缓存机制?
  • 内存泄漏,及如何主动的去发现是否存在内存泄漏?
  • 你们平时项目的 JS 异常有做上报处理吗?是什么实现的?
  • xss 攻击的原理和预防?
  • eslint 是怎么使用的?
  • webpac打包性能优化,如何分块打包,及 HMR 的实现原理。
  • React的虚拟dom是什么?及 diff 算法原理?
  • SSR(服务端渲染)的作用,及它有什么缺点???

这些题目虽然看起来都很简单,大概都能答得出来,但是每个题目往深处或者底层展开讨论,就不容易了。特别是这个面试官,每个题目,他都会一层层的放深入去问。比如说,JS的事件机制,大家可能都知道通过 event loop 来实现的,但是如果再深入点,JS不是单线程的吗,那 event loop是怎么实现的?以及事件其实是分成宏任务和微任务两种的,可能很多人都不知道。再比如,webapck的 HMR 原理,可能很多人都知道当文件修改后,webpack 会对文件进行重新编译并通过 socket 发送通知给浏览器,但是这并不是原理,浏览器是怎么知道修改了哪里?该怎么去替换模块呢? 和面试官深入展开的讨论的内容比较多,下次再单独写一篇文章整理出来。

当然,可能朋友们最关心的问题是,这次面试过了吗。答案是: 不通过。我刚面试完后就问了师姐,面试官给的评价是:中规中矩,有点一般,要深入一下底层。当时就已经知道凉凉了~

然后第二天也收到了正式的短信通知,面试结果为:不通过。

虽然结果没有通过,但是经历这次面试,认识到了自己最大的缺点:学习不够深入底层。学习要追根究底,不要大概懂了就停止,而是要彻底懂了才行!换句放说就是:不仅要知其然,还要知其所以然。