阿里校招 Java 后端一二面面经(Part 1)
阿里校招 Java 后端 1-5 面 + HR 面面经(Part 1)
一面 8.27(约 60 min,电话)
- 做过的印象最深的项目?(聊项目)
- MySQL 的 log 有哪些?分别是用来做什么的?(undo log,redo log,binlog)
- 数据库分表分库?(没实践过,扯了点水平分表和垂直分表的理论)分库分表的全局唯一 ID怎么实现?
- 数据库 ACID?
- 数据库事务的隔离级别?
- 慢查询的优化思路?
- 你做过那个项目之后,在数据库这块有怎样的提升?(扯了点外键约束相关)
- Java HashMap 的 put 操作底层是怎么实现的?
- 线程池的构造器的参数介绍一下?
Lock
和synchronized
的区别?AtomicLong
类的底层实现原理- 线程的状态
- 实际使用过多线程吗?(没有……)
- 什么情况下会发生死锁?
- JVM 内存的划分?
- Java 堆的划分?
- 为什么要分代?
- 垃圾收集器了解哪些?
- 哪些对象会被 JVM 垃圾回收?
- GC ROOTS 包括哪些?
- OOM 排查?(不知道……)
- Java 怎么利用反射获取一个类的字段?
- 常见的类加载器?
- 看过哪些框架的源码?
- Spring
@Autowired / @Resource
的区别? - Spring 依赖注入的原理
- Spring bean 的作用域有哪些
- session 和 cookie 的区别
- 如何识别 session(存在 cookie 里面的 session id)
- HTTP 报文结构
- HTTP 状态码
- Java IO 模型有哪几种?
- 同步 / 异步,阻塞 / 非阻塞的区别?
- Netty 了解吗?(不了解……)
- 说几个设计模式?Spring 里面使用到了哪些设计模式?
- Java 如何实现单例?
- CAP 理论?
- 分布式事务有哪些实现方式?(不知道……)
- 微服务的架构设计是怎样的?
- 网络安全?(随便扯了点被动攻击、主动攻击之类的,这方面懂得不多)
- Redis 数据类型有哪些?
- 未来的发展方向是怎么考虑的?
- 平时会写文章 / 博客吗?
- 有做过其他项目吗?
反问环节
- 知识储备有哪些地方需要补全的?
二面 9.3(约 50 min,电话)
二面之前的一天面试官先联系了我,出了一道题目,让我实现一个 Linux Shell 脚本的功能,然后把代码发给他。
题目如下:
//评测题目: 请用java实现以下shell脚本的功能 uniq -c 记录重复次数 cat /home/admin/logs/biz.log | grep "Login" | uniq -c | sort -nr 假设biz.log内容如下: User11 Login User22 Login User11 Login User11 22 LogOff 则输出: User11 Login:2 User22 Login:1
- 实际上这里有个坑,如果按这条 Shell 命令去执行,得到的结果应当是(CentOS 7):
1 User22 Login 1 User11 Login 1 User11 Login
- 原因就在于 uniq 命令是对连续出现的文本进行去重,这里两个
User11 Login
不连续,因此不会被去重。 - 这个坑导致面试一开始的氛围比较尴尬
- 下面进入正文
- 讨论这个题,面试官一直强调我的代码没有实现它给出的示例输出(明明是你的题目有坑……)。我跟他说如果把 sort 和 uniq 换个位置就能得到它的示例输出。结果面试官说:“你知道这个题是错的,你还往这个错误的方向去实现。”(WTF?这就是阿里味儿吗?i 了 i 了)
- 你做这个题有挑战吗?(反正是开卷做题……谈不上有什么挑战)
- 文件的日志行数是百万/千万级别,还有没有挑战?挑战在什么地方?(生成结果的速度,大文件排序的处理)针对这个数量级怎样去修改算法(多线程 fork-join,join 的时候会遇到什么问题?)
- 你自己写代码会考虑内存占用或者计算资源分配的问题吗?(不会……)
- 线上排查过 JVM 故障吗?看过这方面文章吗?(没有……)
- 数据库了解哪些?
- 提高慢查询性能有哪些方法?
- 看过开源代码吗?(看过一点 Kafka 的源码,开始说书……)
- 看源码有什么收获?(blabla编了一堆)
- 那你为什么说你读的源码不多?(给自己挖坑了……只好说大部分经历放在刷题上面了)
- 后面的职业发展怎么考虑的?(说想搞中间件)
- 为什么想搞中间件?如果你要搞这个方向,你觉得你应该要学习什么东西?
- 学技术这么久,有没有什么事情让你觉得很自豪?(这都啥问题……)
- 有写过博客或者文章吗?有没有分享过
- 跨专业的跨度大吗?为什么要转行?
- 在项目里的分工和职责?
- 实习期间接触到的技术栈?(除了 Java 那一套也没了……)
- 你的技术亮点是什么?
- 技术之外的方面有什么特长?
反问环节
- 同一面
小结
- 这一面体验是最差的,一方面通话质量不好,另一方面面试官口音比较重,再有就是他提的不少问题让我感觉无所适从……