GitHub地址 我的个人博客
在4月17日,我抱着试一试地态度找了阿里企业智能BU的朱学长,投递了内推简历,开始走阿里的流程。阿里不亏是大公司,其流程速度比某街(简历评估半个月)快多了。在第二天,我就收到了阿里HR打来的电话,和我预约面试时间。(阿里不像网上某些面经说的是突击面试,可能是部门不同的原因。)接到这个电话,真的是喜忧参半,喜的是我能进入阿里的面试,忧的是这是我的第一次面试,本来想要准备练级的小怪半天不邀我面试,,现在竟然直接打大Boss了orz。
虽然感觉自己希望不大,我还是非常认真地去准备了。事先根据自己的简历,我也针对性地准了一些问题,也很幸运问到,并答了上来。但总体来说,有些问题回答的不太理想,本次的面试官非常地重视基础(算法和数据结构)、及实际应用。具体地面试问题如下
这里看书学习,其实是很关键的。一些经典的书籍例如:《JS高级程序设计》、《图解HTTP》、《揭秘CSS》等,对一个前端程序员来说,可以很好地进行查漏补缺,夯实基础。
(可以参考以下两篇博文: React和Vue区别、 今天的考核题目: 你知道React和Vue的区别吗? skr,skr)
特别注意的是split() 方法是用于把一个字符串分割成字符串数组**。(不是数组方法)**
"2:3:4:5".split(":") //将返回["2", "3", "4", "5"] "|a|b|c".split("|") //将返回["", "a", "b", "c"]
(1) shift():在数组开始添加一个或多个元素,并返回新数组长度
(2) unshift( i , j ): 在数组开始删除一个元素(删且只删除1个),并返回 被删除的元素
(3) pop(): 删除数组的最后一个元素,返回删除的值。
(4)push(param): 在数组末尾添加一个或多个元素,并返回新数组长度
(5)concat( i , j ): 数组拼接的功能 ,返回新数组,原数组不受影响。
(6) splice(start,deleteCount,val1,val2,…):从start位置开始删除deleteCount项,并从该位置起插入val1,val2,…
注意:新建了一个数组,并修改了原数组
(7) reverse:将数组反序
(8) sort(orderfunction):按指定的参数对数组进行排序
(9) slice(start,end):返回从原数组中指定开始下标到结束下标之间的项组成的新数组
截取数组生成新数组,原数组不受影响。
**(10) join(separator):**将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符
var a = [1,2,3,4,5];
var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5"
我说了链表、树和图。
接着面试官追问:(PS:很可惜面试的时候,没有说出来。看来还要多加强数据结构基础的学习。)
(1)树有哪些复杂的结构?
二叉排序树、哈夫曼树、AVL高度平衡的二叉搜索树、红黑树(自平衡二叉查找树)、多路查找树(B和B+树、2-3(每个结点有2-3个孩子)和2-3-4树)
(2)这些树有哪些应用
哈夫曼编码、排序
(3)树的存储结构和物理结构
双亲表示法、孩子兄弟表示法、孩子表示法
面试官给了一个具体地案例:在一堆表格中,如何实现点击单元格获取其中的文本?(利用事件委托机制的e.target.innerHTML)
**事件委托利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。**例如,click 事件会一直冒泡到 document 层次。也就是说,我们可以为整个页面指定一个 onclick 事件处理程序,而不必给每个可单击的元素分别添加事件处理程序。以下面的 HTML 代码为例。
使用事件委托,只需在DOM 树中尽量最高的层次上添加一个事件处理程序,
代码
obj1.addEventListener('click',function(e){
var e=e||window.event;
if(e.target.nodeName.toLowerCase()=='td'){
alert(e.target.innerHTML);
}
},false);
由于事件冒泡机制,点击了td单元格后会冒泡到div,此时就会触发绑定在div上的点击事件,再利用target找到事件实际发生的元素的文本,就可以达到预期的效果。
我简单地说了项目中遇到的难点,面试官也就了解了下,没有继续追问怎么解决。
我就简单地问了下面试官,如何更好地学习能像他们一样进入阿里这样的大厂。面试官人很好很耐心地给我提出了一些建议。
阿里等大厂的校招面试还是很重视数据结构和算法这样的计算机基础的,我觉得我应该加强这一方面的学习。此外,对于一些知识点比如面试中问到的事件机制,应该学会实际场景中的运用,而不是光了解知识点就够了。面试官也建议应该动手去做一些demo,加深对这些知识点的理解以及实际中的应用场景。