记阿里一面二面

        8月16号下午收到阿里一面的通知,距内推简历提交已经有三周了,还以为简历被刷了呢。通知8月17号上午进行一面,有些担心,有些激动。在4月份时,大家都忙着找实习时,我没找,一方面是实验室导师不让去实习,另一方面觉得自己没准备好,呵呵。第一次参加面试,完全不知道该怎么准备,于是晚上准备了个自我介绍,看了下JAVA面试宝典。

        17号9点接到电话,面试官简单的介绍了下部门,是杭州淘宝搜索部的,然后开始步入正题,让做个自我介绍,接着就问问题,一面的问题相对是比较基础的,如下,顺序部分先后:

        1.什么是网络虚拟化(我专业是SDN,项目上有涉及这个)

        2.Java中HashMap和HashTable的区别

        3.面向对象的特征

        4.OSI七层协议

        5.Java垃圾处理方法

        6.线程池中线程的状态,如何转换的

        7.实现多线程的方法

        8.Hash算法中如何解决Hash冲突问题

        9.使用过的Java开源软件有哪些

        10.设计模式中的单例模式

        11.我项目中的餐厅服务系统中,如果同时有100个人点菜,会造成a)资源不够,b)服务器端厨师调度压力过大;我是怎么解决的

         我说当时做的时候没有考虑到这一点,面试官说没关系,不是什么知识点,就是想想怎么处理,于是我给出了两种处理方式,一是在客户端上给出当天餐厅还能够提供某种菜品的数目,而是设置一个队列缓存,将同时到达的以一定顺序逐个请求调度。两种方案的都是有问题的,记得之前看过淘宝对订单的处理方案:增加服务器个数,将请求分派到不同的服务器上,实施负载均衡,面试官估计是想得到这个答案,不过自己当时没想到。

        12.我自己算法解决过什么问题

        13.数据库和Linux简单问了下

        我说不是很擅长,面试官有些惊讶,应该是觉得我们研究网络的应该擅长Linux吧;

        时间已经过了有50多分钟了吧,随后给了个网址,让编程,四个问题

        1.将一个字符串反转,要求空间复杂度低

         我用了个StringBuffer将字符串从头到尾遍历一遍,得到新串。显然不是较好的方法,于是问面试官说这是最先想到的,可以改吧,他说没关系,写出你觉得更好的,然后我换成字符中点为对称点,两侧进行交换的方式,只需要额外的一个字符空间,也降低了时间复杂度

        2.设计一个单例模式

        我想了一会儿,说设计模式看过,但是不常用,就忘了,直接跳到有把握的第四题

       3.实现一种解决hashCode 冲突的方法;

       在之前问的时候我隐约记得链地址法,打算用这个写呢,有些卡顿,当时面试有近80分钟了,所以说了一下思路

       4.快速排序算法

       写完后有些小问题没注意,后来才想到的;1.分治法没有写结束条件,也就是start和stop相等时直接返回 2.基准值我选的array[start],写循环时应该先移动右边指针,再移动左侧的,但是写反了;

      最终让我自己设计一道算法题目,然后写出来;我说在编程中遇到的动态规划法比较巧妙,讲了一下此类问题的大概做法。想了半分钟,没想到合适的,跟面试官说脑子有些混乱,一时想不到,面试官很理解的说没关系,已经面了一个多小时了,很正常。然后说面试就到这里吧,他会通知他的主管再面试,就这样结束了一面。

      面试总结:一面感觉还是可以的,80%以上的都答出来了,面试官也相当nice,感觉你会但是一时想不起的会提示下,问到垃圾回收方法就是这样。平时学习的时候,尽量学的深一些,Java面试宝典只是罗列了下知识点,看了容易忘,还容易混,我真正在面试中加分的点应该是我之前看了很多技术博客,面试时虽然有些专业名词忘了,但是从实现原理上解释了一下,想来这也是他们乐意看到的吧。

     18号下午,接到主管电话,约到19号早上9点进行视频二面;

     二面问题明显比一面问题要深,而且有效的避免了我擅长的计算机网络和操作系统,呵呵~

     跟主管打了个招呼,也没自我介绍,直接发个题让直播编程。

     题目比较简单,n个人围成一圈报数1,2,3,报到3的人退出,找到最后留下的那个人。

     花了十分钟左右写完的,有个小的编译错误;方法如下,建立一个boolean数组num表示退出情况,用temp++%n表示指针位置,在没有退出条件下,count++ == 3时,将num[temp]设为true表示退出; 让讲了下逻辑,语言没组织好,面试官勉强听懂了。

     后来又问了单例模式中volatile,一面时候问过单例模式,没说好,结果二面这个又不会,只说了下volatile的作用;问了一些Java虚拟机的东西,基本都不懂,然后面试官给推荐了五本书:Java虚拟机精讲,Java编程核心技术,Java并发编程技术,深入理解Java虚拟机,实践Java虚拟机。我表示回头一定好好看看,呵呵~

     由于和Java相关的项目基本没有,都是SDN相关的,因此没聊几句项目, 之后就是主观问题了,诸如做过自豪的一件事是什么,觉得自己的优点是什么,有什么问题要问面试官的等等。

     主观的问题从来没想过,感觉讲的不太好,就这样面试了近七十分钟结束。

     二面总结:面试的不好,有些问题虽然明白,但语言没组织好,比如编程题;主观问题上,从没有想过,答的也不好。Java只学了半年,很多东西都不了解,SSH框架不懂,Java虚拟机没看过,这些都是面试中的减分项;上一个面试官中不懂的问题,回头还得好好百度一下,第二次可能还会提到;面试中语言表达非常重要;关于自己优缺点,自己自豪的事等还是要想一想的,跟我这样听到后就懵逼了就不好了。

     19号上午面的,过了个周末,结果这两天就出来了吧,

               


       

        

    

你可能感兴趣的:(记阿里一面二面)