<阿里巴巴>Java研发内推面经(一面,二面),正在等三面安排
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了<阿里巴巴>Java研发内推面经(一面,二面),正在等三面安排相关的知识,希望对你有一定的参考价值。
原创博客,转载请联系博主!
技术一面:
前天晚上正坐在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
以上是关于<阿里巴巴>Java研发内推面经(一面,二面),正在等三面安排的主要内容,如果未能解决你的问题,请参考以下文章