【面小易-面经01】阿里巴巴Java开发工程师面试总结

简介: 7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!15位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!马上投递简历:https://developer.aliyun.com/special/offerday01

图片无法显
点击图片或戳我查看详情和投简历
转眼间,又到了 “金九银十” 的招聘季,各位需要找工作的小伙伴们是不是已经摩拳擦掌,跃跃欲试了呢?想必对于大家而言,能够进入像阿里巴巴这样的互联网巨头是一件十分令人羡慕的事情,单纯是想想或许都能够从梦中笑醒。但是想要进入阿里巴巴,光是“仰望星空”还远远不够,必须要脚踏实地地完善自己。当然了,必然也少不了要学习一些面试技巧。

此时,就是我面小易登场的时候咯!先来一段定场词:“我是面小易,机智又聪明。面试不眨眼,Offer不手软。”

接下来的一段日子里,就让我面小易和各位一起学习各位前辈总结的真实面试经验,为大家的“金九银十”求职之路保驾护航。

今天和大家分享的这篇面试经验来自一个自动化控制专业的同学,他学习Java完全是因为兴趣,他所投递的岗位是阿里巴巴的Java开发工程师,而且这是他人生中的第一次面试,就让我们一起来看看他的面试经历吧。

以下为正文

第一面

第一天下午三点左右,当时刚好在教研室自习时,我接到一个杭州打来的电话,阿里的面试官简单说明来由,就问我是否方便面试,我说可以,然后让我先自我介绍。说实话,阿里是我正式接到的第一个面试,所以根本没有准备。我就简单地介绍了自己,然后把项目提了一下,果然面试官会针对他感兴趣的东西问,面试官问了我算法大赛的情况和项目情况,但都只是简单的说明了一下整个思路,并未深入,然后问了几个Java基础问题。第一面大约用了30分钟左右,面试官就说,那今天就到这里了,于是结束了第一面。

对于第一面而言,感觉更多的是宽泛地了解Java知识面。我还是比较幸运的,所问的几个问题我都大概的都知道一些,虽然回答的并不是很好,但是每一次面试的问题都记录下来,后续再学习。

面小易说:对于第一面而言,不慌不忙很重要,阿里的面试官总喜欢“搞突击”,所以一旦准备投阿里,就需要准备好面试的开场白,这样才能不慌张。

第二面

第二面来的很快,第二天晚上八点多就接到了面试电话。面试官人很好,没有再自我介绍,直接切入主题,针对我的项目开始具体问,我说做的一个模仿QQ聊天的软件,他问我你有没有考虑过性能的问题,如果出现卡顿,你会怎么解决。说实话,做这个项目纯练手的,未考虑到上线测试。于是我说,我自己做着自己练习的,模仿着功能,自己纯手写的,未考虑到这些。我问面试官性能方面的问题,可以具体一点么?面试官问我,如果你在传送文件时卡住,还想发送聊天信息,你怎么解决,我说那就重新开启一条线程处理,将聊天与发送文件线程隔离开,互不影响。面试官说好,我知道了,就没再深入下去。

后面,针对这个问题,我私下找了解决方案,NIO非阻塞编程以及Reactor单线程模型,这个可以去网上搜集资料看看,这些都是解决多线程通信的问题。私下了解到,其实阿里也在用Netty技术,这门技术也是基于Reactor实现的通信技术,它是用来处理大并发,大容量的通信技术,所以阿里其实面的每一个问题,都是有针对性的,在这一点上,我没有答到点子上,不够完善,应该是没有给出面试官想要的答案,但是面试官没有在这上面为难我,放我进去了三面,还有针对算法大赛的提问,因为是自身的项目,所以说的很啰嗦吧,面试官听完没有深入追问,可能只是想听我的表述能力吧,看看我的思路。还有项目就不重复叙述了,与各位项目实在是小巫见大巫了,大家好好准备自己的项目就可以了,肯定是会提问的。

面小易说:对于项目问题,一定要有一说一,不需要夸大,因为在学校做的项目和在企业做的项目而言,根本算不上什么。即使自己做的很简单,但只要你有更多的想法和思路,都可以探讨。但是要切记不要夸大自己的项目,一定要实事求是。

第三面

第三面隔得就比较久了,大约过了一个星期才来电话。上来面试官就跟我说,时间比较紧,我们就长话短说,你随时可以打断我,我说好的,然后就开始了,这次面试官问了一些基础问题。然后开始针对实际问题提问,第一个比较简单,如果有一组重复数字,我要你找出来,你怎么解决,这个我当时就说HashSet集合,可以去重复,然后我又问,是要找出重复数字?面试官说是的,然后我就说用HashMap,将数字作为Key,出现次数作为value,然后再遍历,找出value大于1的Key,就是所要答案了,面试官说好的,然后又问我,有一个比赛,你去商场购物,给你一个购物车,你如何在商场中,在装满购物车的情况下实现价值最大,装不下的就不可以装,当时我就迷糊了,但是仔细一想,利用动态规划可以做,贪心算法限制条件下结果不准确,具体的,各位私下看看,网上有很多资料,然后面试官好像挺急的,最后面下来17分钟,结束了第三面。

面小易说:这位同学在第三面就遇到了算法面试咯,大家在面试之前一定要准备好高频问题的分析。比如面试官问题的购物车问题,其实就是一个背包问题嘛。

第四面

第四面也是隔了一个星期,当时跟学弟在教研室。说真的,苦等真的是劳神,有好几晚我都没睡好,不晓得电话什么时候打来。每天早九点待在教研室,晚十点多回宿舍,一刻不敢掉以轻心。面试完就开始总结、学习、准备,每天下午就最难熬了,电话一刻不离手,生怕错过。

废话说多了,第四个电话北京打来的,开始还不想接,担心是骚扰电话,但还是接了。没想到对方上来就问是某某某吧,我说是,然后他说是阿里巴巴的,可以面试吗,我说可以,然后就开始面试了。又一次自我介绍,然后问我研究生的专业课程,为什么没有做本专业而是转Java,然后我简单说了下,然后面试官针对性的开始提问。从面试官的讲话就能听出他不简单,说话流利而简练,毫不含糊,应该是个大牛。面试官问我对于分布式了解么,我说不了解。

后面你就知道,分布式对于阿里完全就是灵魂的存在。阿里构架就是基于分布式构架搭建的框,可惜我知道的太晚,一个菜鸟,对于阿里内部知之甚少,准备的全是基础,对于新技术的了解真的太局限了,计算机的可能会接触分布式,搭建局域网,刚我还在看阿里的技术演化呢,可惜太年轻,本以为接近,却又深知自身的不足。

问我,你知道消息队列么,我又一脸懵,我说我只知道阻塞队列,在多线程里用到的,消息队列没有用过。而消息队列也是解决高并发消息传递的技术,类似缓存一样,将消息存入队列,然后供消费者异步调用,解决阻塞,以及秒杀采用的也是消息队列技术。所以说,很多新技术你不知道,这才是遗憾的地方。

面试官问我,你说一下Java 8新特性吧,我支支吾吾只知道lambda表达式,简单复述了一下,其他的知之甚少,用的不多,我又没能回答出来。

面小易说:这位同学在第四面发挥的不是很好,对于一些超出Java语言本身的技术并不是很了解,但是因为他本专业不是计算机和软件,因此也情有可原。各位将要面试Java开发的小伙伴们一定要吸取教训哦!

第五面

没有等来HR面,已回绝。隔了16天收到的消息,确认了。这一个多月总算过去了,有点小伤心,可是又庆幸自己历经四面。说实话,对于我已经算是成功了,一方面,感慨自己的幸运,一方面,也深知自己的不足。同时,更是激发了我对于技术的热爱,也希望大家继续完成我未完成的梦。

面小易说:这位同学虽然最终面试失败了,但是对于自己而言,他已然是一个胜利者。只要你有对于技术的热爱,不断查漏补缺,一定能够拿到心仪的Offer!也希望大家要越挫越勇,永不言弃。

相关文章
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
71 2
|
22天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
54 14
|
1月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
27天前
|
Java 编译器 程序员
Java面试高频题:用最优解法算出2乘以8!
本文探讨了面试中一个看似简单的数学问题——如何高效计算2×8。从直接使用乘法、位运算优化、编译器优化、加法实现到大整数场景下的处理,全面解析了不同方法的原理和适用场景,帮助读者深入理解计算效率优化的重要性。
30 6
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
58 4
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
117 4
|
7天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
37 6
|
22天前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
20天前
|
存储 监控 小程序
Java中的线程池优化实践####
本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####
下一篇
DataWorks