记一次阿里巴巴电话面试

作者: 肉团先生 | 来源:发表于2015-07-28 09:45 被阅读6631次

    我已经不太记得当时的感受了,因为时刻太久,本来已经写着一篇的了,但是因为使用马克飞象操作不当导致。数据都没有了。尝试自己解决,发现并没有想象中简单,只能寻求作者,希望能找回。

    回想下当时,就是前一天接到电话,我被吓了一跳,当他说他是阿里巴巴的,我当时就不知所措了,问我有没有空,我就直接说没有了。
    吧电话面试推到了明天这个时候,没有丝毫准备,问到岂不是等死。挂了电话后,我便洗个澡,定定神。后面我妈说洗发水漏得一地,可见我有多紧张,真个人都不好了。

    接下来,我便要认真复习了,上网搜索下,知道大概要问什么,侧重于基础为主,然后复习,我不知道的以及我急切需要知道,被遗忘的知识点。但并不顺利,现实笔记因为我的误操作(流氓软件首页被篡改,以为清除数据可以解决),点击谷歌浏览器里面的清除数据,导致缓存在本地的马克飞象的笔记全部都没有了,我昨晚一晚的笔记以及之前所有的笔记,都88.当时就吓蒙了,接着上网找到好不容易的数据恢复,只能扫面整个盘,结果数据太大,只能用移动硬盘来存储,存储过程中发现硬盘发生异常的声音,怕爆炸,赶紧拔掉,结果我的硬盘再次插入数据时候,就无法显示出来了,我里面的照片,再次哭死。

    在此之后,终于知道云备份是多么重要。为毛今天发生这么多的事情,我晚上还要面试的。

    网上19:30之后每一秒都是煎熬,因为等待电话的降临,快点来电话,让我死得痛快点。

    自我介绍

    在询问确认是本人之后便进行这次的电话面试了。

    他:先自我介绍下吧。
    我:(一天都在准备复习知识点,结果把自我介绍忘了)。
    你好,我叫xx,来自xxx,大一学习C语言,下半学期开始学习java。因为有一定的C基础,所以就转学java至今,平时喜欢运动...(当时没有这个通顺的,不断地补充)

    自我觉得这个自我介绍非常失败,应该写稿,是可以按着套路来的,并且,不要出现“因为所以”的句子,变想变补充,会显得思维很糟糕,听完之后,别人可能还不知道你说什么。

    数据结构(排序)

    他:有学过数据结构吧?(感觉只会问你学过的东西)
    我:恩
    他:有多少种排序算法?
    (我当时就愣了,怎么知道有多少种那得算算。)
    我:冒泡,直接插入,选择,堆,归并,快速...(边数字手指头)一共8种。
    他:恩,那堆排序是怎么实现的,讲一下实现的过程。
    我:(我第一时间想到推排序的那棵树,插入移动)在一棵树,插入数据的时候,重底部插入,进行比较,放置左边还是右边,然后相应的移动节点,然后循环这个过程。(这是我现在整理的思路,当时哪有讲的这么顺,想到一点,就马上补充,并且我也不是很了解整个过程,将不清楚)。

    现在想想,根本不对(知道后面为什么不继续问下去了)。正确答案:经典排序算法 - 堆排序Heap sort

    他:好。那描述下快速排序的实现过程吧
    我:有两个想指针的东西,一个在最前,一个在最后,进行比较,交换,当前面的>后面的,进行跳出,然后分开两边进行递归,循环这个过程。(当时讲得并不通顺,有点糊涂,自己也只是想起就那样的过程。)
    他:(他应该觉得我知道点,又不知道点,讲得不太清除)你现在有纸和笔吗?
    我:好,我去找找。

    结果我妈妈拿来一叠纸,和笔。关键笔没有笔芯。他已经开始念数据了,凭着记忆,还是可以记下来的。

    他:4 2 6 3 7 10。对给你数字进行快速排序,说明下实现的步骤。
    我:(我当时不明白,)这这么说啊。
    他:你就告诉我,第一步得到的数据时这么样,接着第二步...
    (大概明白点)
    我:假设有i,j。4跟10比,4跟7比,4跟3交换...(喃喃自语,他也在听的)
    我:答案经过第一步为:3 2 4 6 7 10 (我停顿,一度怀疑自己的答案。)
    他:下一步该怎么做?
    我:3 2 4分一组,6 7 10 分一组进行递归.
    他:确定
    我:恩
    他:为什么4进行归为一组,不是..
    我:哦哦。对,不应该。3 2 一组才对。笑着说,紧张。
    他:没事,我们就当当聊聊天嘛。(有这样聊天的吗?)

    数据结构(B树)

    他:知道什么是B树吗?
    我:不知道(真的不知道,忘了。)
    他:那知道平衡二叉树吧?
    我:不怎么清楚,但我知道红黑树。
    他:那你描述下什么是红黑树
    我:红黑树,将叶子节点为黑色,非叶子节点为红色。然后当有数据进行插入的时候,从底部进行,设为红色,再跟节点进行比较,判断是左旋还是右旋,因为要保持平衡二叉树的特质。(他没有问下去了)

    感觉他当时是想问B树的知识点的,想不到我不会,想问平衡二叉树,发现我也不怎么会。弥补的是,我讲了个红黑树(一种二叉查找树)。这块知识薄弱。

    操作系统(直接跪了)

    他:学过操作系统吧。
    我:恩。学过。
    他:知道内存分配,占用(忘记是什么了)
    我:不知道。我知道进程和线程。(跪了,发现自己学的只够考试而已)
    他:那你说下进程和线程的区别
    我:进程能分配多个线程。当程序进行读操作等待用户的时候,就可以开一个线程去做其他的事了。
    他:那他们的区别是什么,哪个占用率大?为什么?(这一轮询问后,真的发现我并不知道)
    我:这不知道耶。
    他:课本上不是说的清清楚楚的吗?
    我:对概念不太记得住。(我发神马神经,居然说出这样的话来)
    他:这不是概不概念的问题,最大区别你都说不出来。

    操作系统,直接就跪了。还出现面试官不愉快的事情。一定要狠狠补补操作系统。

    编程语言(C,java)

    他:C和java有什么区别。(这肯定是按着简历上出发的)
    我:c是面向过程,而java是面向对象的。
    他:那什么是面向对象?(我一时转不过弯来,我已经想到是不是问我面相对象的4大特性了,其实这可以回答,这是区别面向过程的。)
    我:(举例类和对象)类是一个模具,可以生产不同的汽车。人是一个类,每个不同的人的每个不同的对象。(答非所问)
    他:那类和结构体有什么区别?
    我:(前面接连回答不出,已经奔溃一般。我在专牛角尖,在想类和结构体的区别,而不会换个角度想)类有函数。
    他:结构体没有函数吗?
    我:有
    (几番周折,还是说不知道了。)

    这个实在是意想不到啊,这么简单我都不知道,当人紧张起来,什么都想不起。

    深入了解JVM

    他:你了解java虚拟机吗?
    我:恩。了解过。
    他:那你说下java的JVM吧?
    我:不知道怎么说?
    他:(进行引导)JVM的全称是什么?
    我:java virtual machine.
    他:那它有什么优势?
    我:它跨平台。
    他:怎么跨平台?(他会捕捉你的回答,深入地问到地)
    我:(一次编译,处处运行。)编译成中间代码,然后到不同平台的jvm中进行解析。
    他:你对项目进行优化过吗?你进行了哪些优化?(按着简历发问)
    我:对于强引用,弱引用,适当地使用弱引用。使用StringBuilder来代替String。因为再不围棋项目中要不断地记录步数,更新别人和自己的走法。(有意识引导我将要知道的知识点String,StringBuilder区别)
    他:(见缝插针)那为什么用StringBuilder来代替String
    我:因为String是不可变对象。
    他:那什么事不可变对象。
    我:不能使用引用对对象进行修改,当对象需要改变的时候,只能重新创建一个对象。

    java多线程

    他:有使用过多线程吧?你是怎么使用的?直接new吗?
    我:恩。(沉默了一会,发现不直接new想不到其他他想要的答案)是直接new。不过,我会使用线程池进行缓存,因为new出一条线程是很耗费资源的,所以需要把他们利用起来。
    他:(这里给他抓到痛脚了)你使用的是什么线程池。
    我:(凭着印象)使用ThreadPool线程池。
    他:那使用过BlockingQueue吧,他们之间有好几种接口,简述下之间的区别,以及效率方面,为什么选BlockingQueue
    我:(这一问问傻了)不知道。
    他:那你不是用过吗?

    我:恩。真的不知道之间的区别
    他:那是类需要跟他一起用是吧。
    我:恩。

    不知会用,还要知道相关的差别,以及为什么?

    MVC

    他:什么是MVC,简述下三个字母,各代表什么
    我:三层架构,m代表model,view代表视图,c代表控制器。对view传来的数据,进行处理,给相应的model执行。
    他:那MVC有什么好处呢?
    我:健壮性,可以让工作分开,专做 view的做view。model的做model等。

    编程题

    他:那笔记下题目:无序列栈A,有序栈B,现在要从无序栈A中取出元素,放到有序栈B中使得有序。给你5分钟吧。
    我:(沉默。这次体会到什么叫做脑子一片空白。不就是一比较就出来了吗?)有什么辅助空间限制的?
    他:你先想。
    我:(我自己给栈添加具体的数据,有具体的数据比较好想)将a取出的放在b里面,然后a进行取出并进行比较,比较大的放进去,比较小的话,取出b的,不断取出标胶,知道大的,然后再把取出的元素进栈回来。
    他:恩,那就必须有需要另一个想栈的空间,进行存储取出来的数据。
    我:恩。
    他:现在只能有一个临时变量c,只能存储一个元素,那该怎么做。
    我:想了很久,我尝试说,进行之间的交换,但都不怎么对。(因为,当时没想到可以想象成汉诺塔的模型)最后只能说不知道。

    编程题是我没有意料到,还以为电话面试就不会出的了,不过感觉不会太难,程度肯定没有笔试的编程题难,感觉更考逻辑。一定要冷静,将具体实例套进去。

    项目(这是考我表达能力吗)

    他:你做过什么项目,说一下是怎么实现的
    我:不围棋吧。使用蒙特卡洛模拟结果,UCB决策来判断需要模拟的下一个点.....(不多说了)

    项目中,他不断地反馈我告诉他的信息,这是考我的表达能力吗?感觉我讲给他听,还是不能完全明白的感觉

    英语水平

    他:你的英语水平怎么样?过了四六级吗?
    我:(真的不太好意思)我说没有。平时谷歌完中文,找不到答案,只能谷歌英文了。虽然没过四六级,但是能看懂java里面的源码的。因为直接看源码的话,知道是调用什么,知道怎么一回事。
    他:那你看了什么源码?
    我:最近看Map集合
    他:HashMap底层实现是什么
    我:(还是那句不能够明白那要什么,我只能举例)当有插入数据的时候,先获取参数的hashcode,变进行运算,得到哈希值,判断当前位置的哈希值有没有元素,没有加入,有的话进行链表的形式连接。
    他:就是链表的形式吧?
    我:恩。

    其他

    他:平时爱逛哪些技术性的网站?
    我:csdn,importNew。
    他:那英文网站有没有?
    我:(一时想不起stackoverflow)没有
    他:还有什么疑问的吗?
    我:没有

    问完后,感觉希望都不大了。

    总结

    1. 一定要对简历后写的一切进行反问自己,如果你是面试官,你会怎么问,可以对自己面自己进行模拟,及时发现遗漏的知识点。
    2. 面试官不会问你不知道的东西,但会问你一直半解的东西。
    3. 对自己回答的信息,一定要自圆其说,明白个所以然,不是面试官一深入问下去就完蛋了
    4. 补充自己计算机基础的知识:操作系统,计算机网络(这次居然没有闻到网络的问题),等。
    5. 练好自己口头表达能力
    6. 不要太紧张,要冷静冷静。

    相关文章

      网友评论

      • 命运灬赌注:请问一下一轮电面之后,你的状态是什么? 简历评估中? 面试中?
      • 小程有话说:谢谢分享。
      • Doria何:文科生没看懂所以点个赞,感觉面试官好厉害👍
        刘邦杰:@禾子的盒子 面试官一般是工作多年的大牛,当然厉害。。
      • 安静点就睡吧:楼主,最后你面试阿里成功了没,他们有再打电话给你吗?
        肉团先生:@veione 二面后就没戏了
      • 0aef3c296e7e:楼主你好,我想问下阿里对学历看重吗,我现在大四,想应聘实习生
        肉团先生:@苹酷苹酷 不怎么看重吧,看重基础吧,都有机会的。
      • 7650769b4b02:楼主记的这么清楚啊
      • 轻微:@Trity 加油
        肉团先生:@轻微 二面10分钟,已经没希望了。
      • 轻微:想问楼主面试的是啥职位?
        肉团先生:@轻微 java研发工程师

      本文标题:记一次阿里巴巴电话面试

      本文链接:https://www.haomeiwen.com/subject/gnpmqttx.html