阿里前端面试所感

今天下午接到了阿里的面试电话,是一次严格意义上的技术面试了。虽然有提前通知过,我也认认真真地准备了一下,但有些方面还是答的不尽人意吧。

好了下面的不用看了,已经被拒了【2019.3.28】

面试过程

面试的形式也挺有意思的,面试官通过询问我之前的学习经历,刷过的题,来提出一些问题。我挑了一个JavaScript 使用循环语句查找通讯录,这道题当时因为怎么都通过不了,去百度查了一样的题,代码也一模一样,但就是无法Accept。他让我口述一下要如何去实现这一功能。我的思路是用for循环,遍历数组,然后通过对象的相关的操作,找到要返回的联系人的指定信息。找不到则返回“找不到该联系人”等信息。

这里他问了一个letvar的问题,简单来说就是var定义的变量会提升到作用域的顶部,而let不会。

此外,他还问了=====,对于==,如果双方类型不同,就会进行强制类型转换,而===是直接判断二者的类型和值是否相同。

还有,比如当我访问的对象的属性不存在时会返回null还是undefined【这里我好像回答错了呃啊!】然后问可以用什么来判断变量的类型,这个问题刚好前几天看书有看到,typeofinstanceoftypeof对于原始类型,除了null都可以显示正确类型,对于对象类型,除了函数都会显示object。所以typeof并不能准确判断变量类型。

然后他又问了nullundefined的关系。nullundefined都表示值的空缺,但二者并不等价,undefined的类型就是undefinednull可能用typeof输出的是对象,但其实也是js的一个bug,在早前,js为了性能使用低位存储变量的类型信息,000开头代表对象,而null对应的是全0,所以也会错误地判断为object。

然后我们聊到了我最近看的Vue.js做过的一个购物车实战练习。我给他讲解了我是如何给购物车加上复选框,并只计算选中商品的价格。

然后他问了除了for (let i = 0; i < this.list.length; i++)这种类型的循环,还能用什么循环来遍历数组,我还以为是让我别用for,那用啥呀,while呀!后来想到是不是让我用for xxx in xxxArray这种形式。

后面是问我是怎么去获取实例中的数据还是啥,有点记不清了,反正我答的莫名其妙感觉。我只知道我那边是这么写var item = this.list[i];,我讲出来的时候还挺希望他问我this这个关键字的,因为前几天看书刚好看到过……

然后问我有什么方法可以去获取HTML中的DOM节点,利用原生JS获取DOM的节点,这个我只记得document.getElementByIddocument.getElementsByClassName,其实还有getElementsByName通过name属性、getElementsByTagName通过标签名、querySelector通过选择器获取一个元素、querySelectorAll通过选择器获取一组元素。然后问我通过document.getElementById得到会是一个什么类型的变量,我那时回答的是数组,因为我记得我以前用的时候后面会跟一个方框号去索引。聊完以后我自己打开控制台写了一下,返回的也的确是数组类型,长舒一口气……

此外的话还问了breakcontinuereturn这三个会有什么功能,break会跳出循环,并执行循环之后的语句,continue会跳过循环内之后的语句,进入下一次循环,然后return我就回答的有点傻了,前后被他追问后把自己搞的自相矛盾了……return只能用在函数里,当遇到return后,会直接结束函数并返回值。

然后问了点数据结构相关的东西,用熟悉的语言描述一下怎么产生一个双链表,双链表怎么操作去替换中间的一个结点。由于这门课过去太久了,如何构造双链表的代码并不是记得很清,按着自己的思路大致的描述了一下。关于如何替换结点,思路也很清晰,先把新结点拉到链表里来,前后的关系都建立好,然后再把原阶段的前后指针指向空然后把内存释放掉。

然后他问了我的学习策略和学习路线。说实话这学期头也不回一脚扎进前端学东西,但并没有去仔细思考过自己到底要往那个技术栈发展,虽然很多人都吹嘘现在应该是全栈的时代了,但对个人而言也总得有个先后次序吧。小目标的话就是这学期能学完Vue.js以及另外一个前端框架,再看点Node.js,并找到一份相关的实习工作,在工作中进一步去学习,然后转行?创业?我尚不能想清楚,但未来该如何发展,是一个值得经常去思考的问题……
最后,技艺不精,甘拜下风,继续努力吧

思考

昨天看到自己Rejected时候,没有失落,倒觉得是意料之中,毕竟自己回答得也一般般,阿里也不是这么好进的。但我错误地将失败原因全部归结于自己的基础薄弱,项目经历少。今天在微博刷到两篇文章,阅读完毕后才后知后觉地知道,这一次失败有着多方面的因素。

先贴文章链接
为何面试时都会问你的职业规划呢?该如何回答呢?
我是如何拿到蚂蚁金服实习 offer 的

基础薄弱

基础还是不行,相关项目经历太少,数据结构与算法的知识也得开始回顾了,要制定一个学习计划并每天履行,要更加努力的学习并寻找项目机会,

没有清晰的职业规划

终于能理解学校开设大学生职业规划课的意义了。工作也得寻求发展,我不可能在一个职位上呆一辈子,总会寻找机会晋升或跳槽。但不应该只是泛泛而谈,比如“xx年后,要成为xx经理、总监”这种谁都会说的话,更多的得是“实习期的目标”,“今年的目标”,“未来三年、十年的目标”

没把握好提问的机会

最后他问我有什么问题的时候,我只问了刚刚有一道我没回答出来的题,但其实非常地愚蠢。我需要了解的有

  • 公司内部的培训晋升机制(代表我们是否能迅速学到新东西)
  • 对应岗位的成长路径(之前这个岗位的人去哪了?升职了?换团队了?)
  • 直线经理对于这个岗位的成长预期(意味着他会花多少精力培养你,给你多少资源)

阿里面试的失败,是因为自己的幼稚、技艺不精。也正是因为此次失败,能让自己清楚地认识到自己的处境

下午还想了半天是不是滚去考研比较好,现在还是决定这条路继续走下去了

It’s a long way