我是一个不太爱折腾的人,因此在一个公司待久了,就不太会轻易跳槽。正因为如此,我在上家公司待了整整三年,在这里,认识了一群可爱的人,便更不舍得离去。
但因为公司属于传统企业,技术上并没有太大挑战,个人也逐渐遇到了职业瓶颈,我也渐渐体会到了温水煮青蛙的感觉,看似自己已经成为团队的主程,其实与同龄人的差距越拉越大,于是依然决定换个环境。
阿里巴巴作为国内最大的互联网公司,是无数程序员的梦想,于是在七月份便投了阿里旗下菜鸟网络的简历,一个菜鸟便开始了菜鸟网络的面试之旅。
4.3 阿里巴巴-菜鸟网络-云仓-java研发
一面:8-7
一共40分钟,面试官是小姐姐,声音好听说话很温柔,过程中会时不时赞许你,让你更加自信。(貌似说是免了一轮简历面)
1. 介绍一个你最熟悉的项目;
(1) 项目中使用的什么框架;
(2) 解释一下这个框架;
(3) 这个项目中遇到的最大的困难,怎么解决的;
2. 数据库索引有哪些;
(1) 他们有什么区别;
(2) 索引采用的是什么数据结构;
(3) B树和B+树的区别;
3. 有没有对数据库做过优化,列举一下;
4. Hashmap与hashtable之间的区别;
(1) 谈一下对线程安全的理解;
(2) Synchronized的锁优化机制;
(3) 乐观锁解释一下;
5. Jvm的各个内存区域解释一下;
6. 垃圾回收机制解释一下;
7. 有哪些垃圾回收刷算法,他们有什么区别;
8. 算法中,快排和归并解释一下;
(1) 他们的算法复杂度分别是多少;
9. 了解哪些开源框架?
(1) 怎么学习他们的?
(2) 看过哪些源码
10. 最近有在看什么数,平时的学习方法;
11. 你对java各个版本了解很清楚是专门有去了解过吗?
12. 我问完了,你有什么想问的?
二面:8-20
1. 自我介绍
2. 说一下你的竞争力在哪
3. 说一下你觉得技术含量最高的一个项目或者实习:
Balabala..
a) 打断一下,mvcc的解释一下;
b) 怎么实现的;
c) 你知道哪些数据库引擎,说一下区别;
d) 继续刚才你说的;
Balabala..
a) 打断一下,索引是怎么知道哪些索引需要优化的;
b) 有没有更好的方法;
c) Mysql日志有去看过吗;——没
d) 继续你刚才说的;
Balabala..
a) 打断一下,你还知道哪些前端攻击,都介绍一下;
b) 他们的防御方法知道吗;
c) 会不会实现一个前段框架来判断前端页面可能存在的攻击;——不会
d) 继续你刚才说的;
Balabala..
a) 打断一下,你说的数据库切换是动态的吗;
b) 那现在给你一个需求将你项目中的数据库切换改成动态的切换(不需要重启服务);——不会
c) 继续你刚才说的;
Balabala..
4. 打断一下,你说一下线程安全问题好了(估计是觉得我项目太low了);
a) 为什么要注意线程安全;
b) 打断一下,我说得是底层原理方面,也就是JMM那;
c) JMM8个原子操作说一下;
5. 知道哪些锁优化机制
a) 除了锁升级还有吗?
6. 知道分布式中间件吗
a) Redis的AOF和RDB解释一下;
7. 我问完了,你有什么想问的么?
Q:其实我基础比较好,很多面试官您都没问到。。
A:哦,我的问题已经问完了。
Q:呃、、听说25号就结束所有流程是吗?
A:是的。
Q:请问菜鸟网络对于应届生的要求,是更偏向基础还是更偏向应用?
A:emm。。。基础!
挂完电话心里一阵发慌,觉得是不是gg了,纠结了半个多小时问了下内推学长,说已经到三面了,才缓过来。。。
三面:8-24
对方电话先自我介绍是主管
1. 自我介绍
2. 项目介绍(问了蛮久)
3. Java垃圾回收解释下——(问的这么宽,那我就随意发挥了)
4. 打断下,你看过源码是吧?那就问下一个
5. Java内存区域解释下
6. 有哪些常量池
7. 方法区在不同版本有哪些实现
8. 类加载过程简单说一下
9. 类能否多次加载
——这里说明下,可以使用热加载实现多次加载
10. 类加载器有哪几种
11. 双亲委派模型解释下
12. 能不能破坏,怎么破坏
13. findClass 和 loadClass 有何区别
14. 线程安全解释一下
15. Java有哪些方法解决这个问题
16. Volatile解释一下
17. Jmm解释一下
18. 你对juc包很熟悉是吧,里面有哪些东西大概说一下
19. 同步器主要有哪些,分别解释下
20. CountDownLatch 和 CyclicBarrier 的区别,举个例子说一下
21. Semaphore你也看过源码是吧,那你解释下它的底层原理
22. 集合类你常用哪些,说一下ArrayList底层
23. 它和Map是同族么,那HashMap的底层原理解释一下
24. 那你知道它和HashTable的区别么
25. 工程上常用另外一种类来取代HashTable你知道么
26. 说一下concurrentHashMap底层
27. 可能存在什么问题,哦,你还知道1.8版本的,那你解释一下它用的CAS机制
28. 它可能导致ABA问题,你知道什么是aba么,有什么解决方法
29. 他还可能导致别的什么问题么
30. 线程池用过么,说一下各个参数的含义
31. 线程池的原理
32. java线程的各个状态
——这里强调一下java线程的状态有6种和操作系统的5大状态不一样,大家不要被网上无脑转载的博客给毒害了。
33. 那操作系统的进程和线程有什么区别,通信方式各有哪些
34. Spring-AOP解释一下,bean生命周期呢,这你也都看过源码是吧,那就问数据库吧
35. MySQL几个引擎区别
36. 事务隔离哪些
37. Mvcc介绍
38. 嗯,今天就到这里吧,你的话应该没什么问题了,你能提前来实习么?
39. 有什么想问的么?
get主管的口头offer,很开心~但是面主管之前接到一个电话说西安有有现场面也得去参加下,但是依然有点担心现场面发挥不好把口头offer泡汤了。(从这一面可以看出懂源码的重要性)
四面:8-26
四面和hr面都是那天的现场面。由于回来的时候也接到hr的口头肯定,所以回来就开始躺尸了,过了好久才总结,很多问题都给忘了。。。。这里主要说几个印象深的
1. 自我介绍
2. 实习、项目介绍(+细问)
3. 正常挖基础,挖了蛮久
4. 手写快排
5. 手写一个死锁程序
6. 一个链表,已经排序如何快速定位到中位数
7. 一篇文章获取出现次数最多的字母
8. 如果是单词呢
9. 如果是一本书呢
10. 如果是要在上亿个号码中找出出现最多的呢,说出你的思路,把你能想到的方法都说出来
11. 秒杀系统怎么设计
12. 最近在看什么技术书(面阿里当然说阿里出的那几本书,其实是真的在看,很不错:李智慧老师的《大型网站技术架构》、许令波老师的《深入分析Java Web技术内幕》)
13. 说一个你可能不太舒服的问题,这个问题不算面试内,看得出你很聪明也很努力,但是你也要知道相对于这些东西,那些计算机出生的研究生们可能比你基础要更加扎实一些,比如计算机内部的原理什么的,你有考虑过这个问题么?
14. 你有什么想问我的么?
面完后,做到一边等hr面,问一下旁边人,说好几个人要么只免了hr要么只免了技术面就都让回去了。。。心想,这么猛么,刚才回答的还可以吧,应该会让面hr的吧。。。
hr面:8-26
也忘了很多了,主要是日常聊天,小姐姐全程微笑,聊得很愉快,聊得很多,得有40多分钟,也说几个印象深的问题吧
1. 自我介绍
2. 实习、项目介绍(主要了解开发规模)
3. 比赛介绍(因为是队长,所以问了下任务分配)
4. 日常聊天
5. 你了解菜鸟网络么——(甚至把我报的云仓部门都说了个清楚)
6. 哇,你是有亲戚朋友在这个部门么
没哈,因为热爱,所以了解
7. 那你知道阿里的一些不好的传闻么,你有什么看法,比如关于我们hr的你知道么
——2015年的“拥抱变化”
8. 看不出你对阿里的价值观还了解这么多,平时有关注阿里的技术发展么
9. 平时有自己的一套学习方法么
10. 自己觉得自己是怎么样一个人
11. 周围人,同门,队友怎么评价你的
12. 家里哪些人
13. 和父母关系怎么样
14. 知道父母生日么
15. 父母知道你想来阿里么,父母怎么评价阿里的
16. 有女朋友么
17. 怎么分手的方面说么
18. 去过杭州么,评价一下杭州
19. 目前手上有哪些offer
20. 有什么想问我的
问完后貌似除了一个在面技术就剩我一个了,我连着面了两面的时间他们一共就一个技术专家和一个hr就面
完了我回去发下我问题不大 结果:没有offer!!!!!!
复盘
整个面试过程问的知识点并不算难,也没有很偏的题,很多都是开放性的问题。
例如redis在生产环境做数据迁移,一个只看过几篇博客的人和一个确实亲身经历过这种场景的人,回答的绝对有差别,而正是这种问题,才能看出来差距。
遗憾的是最后还是没通过面试,我觉得原因主要如下
- 面试阿里过于匆忙,没有做好准备,也没有先拿小公司练手
- 基础知识仍有欠缺,例如网络协议和算法一直都是我的弱项
- 因为一直在传统企业,缺乏互联网项目实战经验,虽然自己看过许多这方面的知识,知识广度还算可以,但更多是纸上谈兵,缺乏实践
- 四面时自己犯了一个严重的错误,因为面试官属于比较和气且聊得来的类型,导致我在聊天的过程中过于随意,说话没有做到有的放矢,该说的不该说的都说了,给人一种过于浮躁的感觉。
最后如何备战Java面试?
谈到怎么准备Java面试,我想说,若你还同无头苍蝇一般不知如何下手,那么第一件事你要做的就是梳理自身的知识脉络。毕竟,想要进大厂,就需要具备更多的知识树,需要掌握更全面的知识体系,所以就需要对知识进行一个系统的梳理了。
如果觉得自己手绘Java知识脉络图比较麻烦,可以借鉴参考下方我之前大致手绘一份知识网图(Java知识体系庞大,我是用的xmind绘制的脉络图,文中无法直接上传原件,截图如下,内容过多以至于图片不够清晰,但可提供分享原件☞☞☞原件下载 )。
此外,关于面试刷题,个人觉得这份 “Java高分面试指南”很不错,包含25个专题内容,整个1000+题50w+字解析,够你刷到秃顶:
- Java中的IO与NIO
- Java反射
- Java序列化
- Java注解
- 多线程&并发
- JVM
- Mysql
- Redis
- ........
最后,还有2021最新整理的“Java中高级核心知识点解析”,查漏补缺知识点刷它最合适不过,包含整个30类知识点的集合:
- JVM
- JAVA集合
- JAVA多线程并发
- JAVA基础
- Spring原理
- 微服务
- Netty与RPC
- ....
从学习路线→☛面试刷题→☛核心知识补漏,以上全套的Java学习资源皆可免费共享给有需求的你,还请仔细关注一下免费下载原件的方式:
1:一键三连+评论此文(码字不易,一键三连是对此文的一个认可,也可让更多朋友阅读到)
2:加小姐姐VX:k15197783918