您当前位置:网站首页 > 面试经验 >

阿里巴巴Java研发内推面试经验(一面,二面,三面 + HR面)

技术一面:

  前天晚上正坐在SDN实验室里给公司ES写一个插件(附上Github页,大家顺便赏个Star吧么么哒)

  忽然接到了一个来自杭州的电话,一开始还以为是广告推销,电话接通原来是阿里电话面试,我就赶紧跑进楼道角落应试。

  首先要我做了个自我介绍,我就简单自我介绍了一下我的身份,日常生活和爱好,重点是提了一下我对网络方面的兴趣。接着他问我有哪些项目的经验,我简单介绍了下携程的Clog日志框架和实验室的SDN-ALTO项目,顺嘴提了一下现在正在给公司测试集群写一个插件。没想到他对我手里正在写的这个插件起了浓厚的兴趣,我说这个插件是个ES集群的定时器插件,其实就是个类似util.Timer的东西,写这个主要是因为测试ES集群需要执行一些任务,比如删除一周前的index,比如集群状态自检邮件报警..是我上午开始忽然想到实现把之前的单转线程实现周期性任务改成util.concurrent.DelayQueue实现周期任务的想法,主要用的技术有Freemarker发邮件,和JFreeChart制图表,Guava的一些并发支持等等,他听完似乎很满意。

  接着问我有没有大比赛经验?我说有参加过但是成绩不理想,有次和入围决赛擦肩而过,最后就领了个HUAWEI的帽子,今年还要冲一冲。

  然后开始切入正题,他开始问我一些技术方面的问题,首先是要我解释TCP的连接过程,我就描述了下TCP的11个状态自动机,开始三次握手,结束三次(或四次)握手,这个真的对我是信手拈来。接着又让我谈谈OSI的7层模型,我说OSI标准实际意义不大,然后把TCP/IP五层模型,从下到上说了一遍,说的过程遗漏了很多,但整体还算完整,说实话没有想到会问这么大的问题,因为这个问题我觉得够仔仔细细地说好几天。最后又让我谈谈对Linux命令的理解,我说其实很反对所谓“Linux命令”这种概念,每个所谓的命令都只是和Kernel一起被编译进操作系统的存在于FS的ELF格式二进制文件,或者权限足够的脚本,或者一个软链,他说比如怎么查看CPU使用状态,我说办法非常多,但是我最经常使用的是htop,或者直接cat /proc/stat,当然在java里可以使用jstat更加方便。

  面试就差不多结束了。

--------

技术二面:

  一面结束第二天中午还没睡醒,忽然接到电话又是杭州的,我马上就意识到这是二面,跑到阳台开始面试。

  二面的面试官问的问题明显比一面的面试官问的深入了很多,但都是关于java的,操作系统和网络一概不提。

  首先问我的项目经验,我就开始说我司Clog正在做的数据存储从HBase+HDFS到ES的迁移,他就让我谈了下HBase和ES的区别。(都是区别阿!!)

  我就说ES集群和HBase共同点是强大的横向扩展能力,自动拓扑发现等等,不同之处主要是ES对搜索的强化,功能趋近于一个搜索引擎,而且集成语义分词,建议修正等基于NLP的功能。(其实两个产品面向根本不一样好嘛!!)

  接着要我聊了下设计模式,我就开始说单例模式,比如懒汉锁和饿汉锁,聊到构造方法,我说单例双检锁存在隐患,他表示很不赞成,因为他在业务用了这么多年没有出现过问题,我说这个得结合HotSpot原码,应该是在JAVA并发编程艺术这本书里指出的问题,有兴趣的朋友请自行Google,和单例构造时的多线程上下文切换有关。他又叫我聊观察者模式,我就蒙蔽了,脑子空空完全忘掉了,我就说我这里没学好,聊聊工厂模式好不好,他笑了(一波嘲讽)。

  然后他要我聊JAVA的并发框架,我就把4个ExecutorService和内部对应的数据结构都说了一遍,接着他出了一个问题就是“怎么样让多线程同时结束于一个地方”,我说使用join方法,然后就没想出来,后来发现我把semaphore,countdownlatch,cyclicbarrier全忘了,估计这里是个不及格。

  最后我和他聊了聊BIO,NIO,NIO2,AIO的一些东西,我就把之前我在Netty权威指南上学的都现学现卖了一遍。

  他最后告诉我,我的二面通过了,我就问了问三面的情况,完毕。

--------

March,12th 2016

Tongji - Yale Lab

On the sofa

------- 2016.3.16 更新

技术三面:

  下午3点正在上着课,忽然接到了阿里杭州的电话,绝对是阿里三面,马上冲出教室。一边接电话一边想着为什么三面还是电面阿卧槽!?

  技术面试开始,面试官又让我介绍一遍自己,“我是XXX,同济大三软件,现在在携程框架部实习等等等”,他似乎打开始问就对我不大感兴趣,介绍完直接切入正题开始提问:

  1. 介绍自己做过的项目。

    携程Clog,SDN-ALTO,QT下载器Snow,和之前回答的差不多。

  2. 什么是StackOverflow?

    一般出现在递归算法里,线程本地栈空间,因为压入的指针和参数过多导致溢出,一般JVM栈空间是1~2M。

  3. 栈空间分配过大会导致什么?

    (蒙蔽)应该是导致StackOverflow异常更难被察觉到吧?他不说话,显然不是正确答案。我继续,一般栈空间默认是-Xss参数分配的。他还是不满意,我问可不可以给一些提示?他说栈的基本维护单位是进程还是线程?我说难道过大的栈导致内存占用过多,而频繁页交换阻碍效率?看来说对了..

  4. OOM异常遇到过吗?

    遇到过,Hadoop提交过大的任务导致的OOM,堆空间Young和Old对象实例太多。

  5. 怎么检测死循环?

    我说好像没遇到过..但是解决思路是JPS + JSTACK查看是否有线程长期处于RUNNING状态?实在解决不了做个Dump吧。

  6. Poll和Select区别?

    Select在Java里指的是NIO包下的非阻塞套接字,把套解字和相应事件注册到Selector中,每次触发得到对应SelectionKey,再做相应处理。Poll一般指的是BlockingQueue接口和方法,和take区别在于是否有等待时间。貌似Linux下还有一个epoll机制?

  7. 讲讲HTTP?

    这个真的是正中下怀。。我不停地讲HTTP/1.1的细节,最后被他喊停:“可以了,可以了。。”

  整个面试23分钟,成功通过,Lucky~ :-)

------- 2016.3.22 更新

HR面:

  问题1: 你怎么评价前面3位面试官?

  问题2: 对于研究生和工作怎么取舍?

  问题3: 怎么评价携程?

  问题4: 期待薪资?

  没什么好说的吧..我觉得政治正确就可以23333

《阿里巴巴Java研发内推面试经验(一面,二面,三面 + HR面)》一文由长大导航助学网免费提供,来源于网络。本文著作权归作者所有,如果侵犯了您的权益,请及时与我们联系,我们会立即删除!

原文链接:http://www.chddh.com/mianshijingyan/33254.html

长大导航(www.chddh.com)旗下长大导航助学网|陕ICP备11001928号 站长邮箱:admin#chddh.com|

《阿里巴巴Java研发内推面试经验(一面,二面,三面 + HR面)》|友情链接:长大导航 应用 电脑 文字 作文 范文 演讲稿 网页游戏 游戏 手机 news 合同 学生 职场