2017阿里实习校招-前端技术视频面试体会

快要秋招找工作了,预约的暑期实习面试,也是为了秋招攒点经验。约的时间是15:15 - 16:00,焦急又必须有耐心的等待后,终于在下午四点左右接通了视频,紧张ing。

首先面试官介绍了自己的花名,心里紧张没记下来,现在想想挺后悔的。但是谁让我紧张了呢?
然后是我的自我介绍,简单的介绍了一下我的基本情况,把技能和项目都介绍了介绍。
面试官态度挺好的,平易近人的感觉,慢慢的也就不紧张了,后面面试官一路45度仰天扣鼻子,也是让我乐了,心态更加轻松随意了。

面试的前端工程师,当然最重要的技术问题。上来就是让我共享屏幕,然后打开IDE写个排序,尼玛宝宝好怕,虽然简单,但是全部写下来运行太痛苦了。

1.数组排序

  • 原生实现 sort函数,倒是很快就写出来了,然后随时就让我用不是原生的方法实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var arr = [1,6,8,34,20,10];
    function main(arr,sortType){
    return arr.sort(function(num1,num2){
    if(sortType == "desc"){
    return num1 < num2;
    }else{
    return num1 > num2;
    }
    })
    }
  • 快排 我记得模棱两可,没写出来啊,心痛啊。现在把正确的贴在这里。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function quickSort(arr) {
    if(arr.length<=1) {
    return arr;
    }

    let leftArr = [];
    let rightArr = [];
    let q = arr[0];
    for(let i = 1,l=arr.length; i<l; i++) {
    if(arr[i]>q) {
    rightArr.push(arr[i]);
    }else{
    leftArr.push(arr[i]);
    }
    }

    return [].concat(quickSort(leftArr),[q],quickSort(rightArr));
    }
  • 还好冒泡还记得,又用冒泡写的,马马虎虎能运行了。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function bubbleSort(arr) {  
    for(let i = 0,l=arr.length;i<l-1;i++) {
    for(let j = i+1;j<l;j++) {
    if(arr[i]>arr[j]) {
    let tem = arr[i];
    arr[i] = arr[j];
    arr[j] = tem;
    }
    }
    }
    return arr;
    }

2.ES6

提了下ES6,问了ES6的let,const与var的区别,特意说下let和const有块级作用域。var没有。然后又问了我都有什么作用域,我说ES5没有块级作用域,有全局作用域和函数作用域。然后面试官补充了一个对象作用域,这个我知道只是好像没经过总结过啊。

问我在项目中使用的ES6都有哪些?我说Promoise挺优雅的,然后让我写写,然后我就写了个XmlHttpServer,啊悲了个催了的,我的编辑器没有智能提示(论一个智能提醒的IDE有多重要),然后我手写的ajax请求,忘记了很多细节,怎么写啊,写了部分,面试官看不下去了吧(心伤),说他明白我的意思,你不用全部写下来,把过程大概写好就行了。然后我就写了怎么调用,我是理解了Promise,不知道这个问题面试官给打多少分,所以说坑都是自己挖的。

其实介绍了几次我使用了React+react router,估计阿里内部使用的是Weex,Kissy这样的自己的框架,面试官估计没有太接触React,所以一直没问我这方面的问题。

3.项目

一直不提我使用React写的项目,提起来我之前做的一个项目,那个项目我也没啥说的吧,我只能说我比较早做的,使用的都是老技术。运用的是Bootstrap,查询渲染数据,巴拉巴拉,感觉我说完的意思是我的这个项目不咋样,自己不相信自己了啊,怀疑了人生。

然后问我做了其他的有什么最深的体会。
所以我立刻就说了使用 React的项目(终于可以介绍了),然后我就说主要分了两个模块,一个是基础的显示模块,一个是地图模块,使用Openlayers api的组件化,还和github上的有个OpenLayer封装的做了个对比,我说有一个开源的使用React封装的Openlayers不方便,而且源码不全,我就自己封装了,面试官再次表现出了不太了解React,所以就没有继续追问下去。

4.对可视化的理解

估计看了我的博客,我的博客最近写的是WebGL,就问了我对WebGL的理解。
理解,这怎么说啊,好难过,我也不知道怎么描述啊。而且我也只是刚看了一个星期的书,还有一个周的Threejs罢了,我就说性能好,但是WebGL书写比较麻烦,所以大家都用Three.js,我也看了部分的Three.js。然后又顺嘴提了下我后面的研究方向, 目前还没有太深的理解(是不是这句话不应该说啊,应该忽悠忽悠的啊),然后就又随口说了下cesium.js,与我们的专业还有点关系–webgis,然后我们会在此基础上扩展。

总之问我理解,我又给出的印象是我的理解不深,痛心了。
然后给了个更大的题目,对可视化的理解,这题目呢,怎么说啊。我只能说大数据可视化和canvas,然后举了举例子,ECharts,datav,mapv等,然后说我对这方面挺有兴趣的,忘了面试官说什么了,好像的意思也只是你对这感兴趣,有个方向,没有深耕下去。

5.总结

这可以说是我第一次真正意义上的面试,第一次视频面试,还是阿里的。总之感觉是这次我没戏了,哪怕是个实习面试。看来是要多刷刷面试经验的。

离远方还是有很多路要走啊,还有两三个月时间,继续加油吧,一定要告诫自己不要气馁,坚持就是胜利。

简单体会,写至此处,感怀万千。,坚持就是胜利。 简单体会,写至此处,感怀万千。