面试经历
一开始问了原型链是什么。 我答了每个对象都有原型。每一个原型都可能会有原型。如果一个原型的指向不是null。而是指向原型。就会形成原型链。原型有一些默认的变量和方法。当对象想要调用对象或者方法的时候。如果对象中没有。就去调用原型链中的。知道找到为止。
然后他问我如果对象中不存在一个方法。原型中存在这个方法。但是又不想调用原型中的方法。有方法吗。 我就说有一个方法可以判断对象中是否存在这个方法或者变量。然后瞎扯了一下跟这方面差不多的。最后我说。我觉得对象中没有这个方法应该会调用到原型链中的。不记得有没有方法实现你说的那样。
第二个问的是闭包。让我说一下闭包。 闭包的形成是一个函数里面声明了另一个函数。另一个函数调用了这个函数声明的变量。这样形成了闭包。这个函数里面的变量不会随着函数调用结束而被清理。 然后给了一个A函数里面包含了一个B函数。他问这样就可以了吗 我一开始说B里面有return。后来想了想。自己也不是很清楚。就直接说没有return。 然后他就问A函数外面没有函数包围。问A单独成闭包吗 我说A和B同时存在才可以成立闭包。 去掉B呢?我说这样就不可以了
然后他问了作用域链 我就说。拿这个作为例子吧。B函数里面想要调用一个变量。B里面没有。就会去找A里面的。A里面没有的话就会一直往上找。知道找到window。
第三个问题是内置函数 我不太记得了。只说了Math和Date 他说function也是内置函数。Array也是。Array里面有一个方面是every。这是用来做什么的。 我说对数字里面的值进行判断。如果所有值都符合条件。就返回TRUE 他问那另一个只有一个符合条件就返回true的是什么 我说some 然后他问现在原型里面没有some这个方法。我想定义一个这样的方法。你写写代码。 我写了三次。第一次没理解好。问他可不可以写一个函数。他说可以。就另外写了一个函数给他。他跟我说。你这个是可以。但是我想要的是Array.some这样的。然后我想起之前他说可以用every等其他方法。我就写了一个用every的反向方法给他。他又说这个也可以。但是我想要some。最后才理解好。。。。。但是不太懂怎么写。就写了function(item,index){if(符合判定条件)return true elseif(index==item.length)return false;}这个不太懂怎么写。就这么写给他了。他没表态。好像只说可以。
第四个问题是平衡二叉树。有什么特性。 我说。根节点两边的节点数目基本相同。(他提醒了是高度差,问差最大是多少)。我说零是最好的。一和二应该影响不大。大于二就不可以了(这个最近没复习到。不太记得了)。 他问我平衡二叉树有什么好处。 我说可以方便查找。减少查找的消耗
最后一个问题就是快速排序。让我说一下 我说。数组两端都有一个索引。左边往右找一个比键值大的数。然后右边找一个小的。两者交换。直到两个索引碰到一起。再将这个值与最后的键值交换。再两边继续进行。 他问我快速排序的平均复杂度是什么。为什么会这样 我说是n*log2 n 理由是。因为进行一次排序后数组会从键值的位置分成两半。一边的排序不会去查找另外一边的
他翻了我简历看了后面那页,就说原来你喜欢打球。我说是呀
然后就说面试就差不多了。就问我有没有问题要问 我问了他觉得我面试怎么样。他说你的基础还是可以的。就是知识面有点窄。可以了解一下MVVM ES6这类的(他中间问了我。我都说听说过。但是没有深入去了解。因为学的时间还不长。在重视基础。最近也有跟老师做项目)
第二个问题是。可不可以给我一些学习的建议。虽然有一个学习的安排。但是也想听听您的建议。 他说。就像之前说的那些。多了解一些知识。然后就是去多做做项目。去做那些可以上线的任务。这些项目考虑的东西比较多。可以学到更多的东西。