【回馈牛客】阿里中间件Java岗4轮技术面面经

从7月5号第一次面试到8月6号HR面,最后8月24号收到录用意向书,将近两个月的时间。很高兴将我的经验分享给大家。

一面
一面问了大概50分钟
问天池比赛
问项目,问项目使用的技术,项目中的并发操作等
顺势顺势问我Java的锁,我介绍了对象锁,队列同步器。问我线程怎么得到锁,我介绍了队列同步器获取锁的方法,应该再说对象锁的获取方式,现在想来,我当时没理解过来,忘了对象锁头。
问我接口和抽象类的异同,抽象类有没有构造,我说有,但不确定。面试官还是很亲和的,接着问我父类没有默认构造器,子类构造能否不显示调用,我说不能,因为一定会调用默认构造,但父类没有。这时他再问我,抽象类要是没有构造器,行不行,我说不行,子类不能隐式构造了,面试官非常循循善诱,我很感谢他。
问我jvm内存布局,我说的很清楚,包括1.8的方法区的改进。问我gc,回答的还行,但没有说g1,应该加上去的。
问我spring的框架,我说了beanfactory和appcationcontext架构。问我beanfactory和factorybean,我说反了。问我spring mvc的架构。

问我还接触过哪些开源,我说maven和netty,Hadoop,spark等。

笔试1
一面之后,面试官让我做了一套卷子,不是统一的,应该是面试官自己出的题,好多是截图来的哈哈。分为选择题和问答题。选择题主要是JAVA基础和JVM调优。JVM调优我不是很了解,JAVA基础问的也是挺难的。问答题比较普通,我记不清了。。

二面
二面问了1个小时左右
问我天池比赛等等不表。
问设计模式,让我说五种设计模式。然后问我单例模式的实现方式,加锁实现的细节(DLC)。
问我分布式下,多台机器统一id问题。我说zookeeper实现,本地机器码+中间件队列实现。然后问我有没有可以不用中间件队列,我说可以本地机器码+时间序列。问我同一台机器多个进程怎么办,我说本地机器码+本地同步递增id。
问我递增id实现。我说用信号量。问我Atomic行不行,我说可以,CAS。问我CAS详细,问我1.8有没有别的方法,我不清楚。问我乐观锁悲观锁区别,我解释并说java原生锁性能就很好,解释了原生锁的膨胀。问我两者的使用场景不同,我说主要看冲突多不多。
问我开源框架学习。我说spring和netty,以及阅读许多java源码。
问我zookeeper主机设置技巧,问我其事务实现,我说单数主机设置,master-slaver模型,统一事务时使用Raft算法,是paxos的特殊化实现。问我paxos详细步骤,我介绍了统一步骤。问我什么情况下提议者可以进入第二步,我说更大的,并且说了paxos的不足,实际工程中使用的改进multi-paxos等。
问我单机两进程,B必须在A结束后才能进行业务,怎么同步。我说zookeeper临时节点;我说信号量,问我实现,不清楚;我说让A占用某一文件句柄,B检查该文件的使用者,问我linux是怎么实现的,我不清楚;我说用socket模型,让Abind在某端口,当A结束时,会释放该端口,并且异常下,OS也会关闭该端口,缺点是有延迟。问我延迟多少,我说应该是以s为单位,具体不清楚。问我在哪儿修改,我说不知道,我linux使用不多。
最后,介绍了这个部门主要在深圳,问我意愿,我说no care。问我为什么选中间件,我说,因为cool,中国顶尖。
我问面试官对我的学习建议,让我多看开源框架,多看实际工程结构。我问面试评价,能否过,他说等通知。

三面
三面的面试官和我说,是二面的面试官请他来问下我的算法部分,因为我的研究生的研究的主要是优化算法,所以请他来考察下。没有自我介绍,直接是询问我的算法。
中午吃饭前打来的电话,我第一个没接到,第二个才接到。
从面试的声音听,面我的几个面试官都挺年轻的,态度也很好,我的感觉很好。
没有自我介绍,面试官直接说,是来考察我算法这块的。一开始我还以为是数据结构与算法这类,心里还有点慌,后来发现是针对我简历上吹的智能优化算法来问的,就没那么紧张了。
问我对一个问题,如何选择算法。我说一定要先分析问题的特点,找到问题解的特性,比如分布特性,聚集特性等,然后,选择适合的算法来求解。并且,有条件的情况下,多做对比实验来验证自己的方法优劣。
问我遗传算法的介绍,我用比喻介绍了遗传算法。问我遗传算法的关键步骤,我说一是交叉变异的算子设计,这影响到解的完备性;二是选择规则的确定,这也影响到进化的快慢等。
问我遗传算法的不足,我说了解的局部性,和无法保证最优解。问我解决办法,我说了几种常用的拥挤度,分级选择,增大随机性等方法来保证解的多样性。
问我有没有使用机器学习等,我说,正在目前的遗传算法中加入机器学习的部分,对每代进行数据分析云云。问我有没有使用深度学习,我说目前我们这个领域还没有相关论文,我们也是在初步的尝试云云。
问我以后想偏向算法还是开发,我说我个人更喜欢开发,因此也参加了很多比赛。

最后说,看我的笔试,如果可以就继续下一轮。

笔试2
三面后,面试官说我没有笔试,我说笔试了=。= 后来面试官又说,没有编程笔试,需要补一个。于是给我出了一个24H编程的题,不难,在此把题呈上。
题目:有10个文件,每个文件有1000万行,文件内容的每一行为一个整型数字;需要,写一个程序,将所有数字排序,分为10个文件输出,如0号文件包含前1000万个数字,1号文件文件包含1千万-2千万之间的数字,依次类推。
限制:如果使用java,-Xmx需要设置为32MB;其它语言也需限制内存为32MB。
要求:正确输出 使用多线程加分
编写时长:24 小时

我主要使用了分而治之,多线程处理的方式。注意下同步即可。

交叉面
交叉面,达摩院人工智能实验室的。
自我介绍
问我天池比赛,问我项目,问我研究方向。
问我平时学习方式,最近学习的内 容。
问AQS,问AQS实现原理。问AQS在闭锁,重入锁中的应用。
问自动化为啥这么多人搞计算机=。=
让我多推荐人去他们AI实验室~

HR面
最后的HR面也是比较普通的,我就不贴上了。

小结
阿里面试给我最大的感觉就是面的轮数多,另外基础也问的很多。因为面的是中间件吧,WEB方向基本没有问,当然我也没有学过哈哈,感觉还是很幸运的。在此献给大家。之前也是看了很多牛客的面经,算是回馈牛客啦。

#面经##阿里巴巴##Java工程师##秋招##内推#
全部评论
谢谢大佬的面经
1 回复 分享
发布于 2018-08-30 16:01
神仙呐
点赞 回复 分享
发布于 2018-08-30 10:09
帮大佬顶贴😁
点赞 回复 分享
发布于 2018-08-30 10:09
我研究生是做算法的,但是我从本科起就更喜欢做研发,所以一直都是自学的java哈哈,也算是个半野生的了。我的项目和比赛都是算法的,确实没有什么实际使用工程的经验,也算是我的劣势了,每次面试官问到我的项目经验都很尴尬=。=
点赞 回复 分享
发布于 2018-08-30 10:13
为自动化点赞,也为老哥点赞!沾沾喜气
点赞 回复 分享
发布于 2018-08-30 10:13
神仙
点赞 回复 分享
发布于 2018-08-30 12:20
神仙………
点赞 回复 分享
发布于 2018-08-30 13:02
神仙
点赞 回复 分享
发布于 2018-08-30 13:04
貌似你和我一个部门一个leader,编程题也是一样的
点赞 回复 分享
发布于 2018-08-30 14:26
神仙
点赞 回复 分享
发布于 2018-08-30 15:57
大佬
点赞 回复 分享
发布于 2018-09-01 10:51
神仙
点赞 回复 分享
发布于 2020-02-10 17:18

相关推荐

点赞 评论 收藏
分享
双非坐过牢:非佬,可以啊10.28笔试,11.06评估11.11,11.12两面,11.19oc➕offer
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
11 124 评论
分享
牛客网
牛客企业服务