阿里妈妈 后端开发 一二面凉经
timeline:一面9.20 二面9.25 挂9.28
二面的这种开放性问题,感觉有点难,真后悔接了晚上的面试,晚上的面试状态太差了,脑子不带动的
一面
- 自我介绍
- 实习拷打
- 实习中遇到最困难的事情
- 有没有看过 jdk 源码,讲一个你了解比较深的一个集合类的一个实现原理
- 你在哪些情况下会用到哪些集合
- concurrenthashmap 的原理
- cas 的原理,cas 在 cpu 层面是如何保证这个原子操作的呢
- 基于 cas 原子指令,java 上的类都有哪些
- aqs 机制
- reentrantlock 和 synchronized 关键字的区别
- synchronized 底层如何实现加锁
- java 线程的生命周期
- aqs 中,当一个线程如果加入到等待队列,那它是如何进入到这种阻塞状态
- Java 的反射,你你有了解吗?
- 讲讲你对 AOP 的了解
- AOP 它具体的实现有哪些方式,这几种有什么区别呢
- 讲讲你对 springmvc 的了解
- http 请求中的入参,如何变成 controller 中的入参
- 也就是前端请求中的数据行中的 body 的数据,它如何变成 spring 中 controller 中它的这个入参
- requestparam、requestbody注解?他们具体的原理是什么
- mybatis #{} 和 ${} 的区别是什么,分别在什么场景使用
- MySQL 数据库如何在你的项目中去实现这种数据库的这种事务的一个访问
- @Transcational 注解的使用有什么需要注意的点
- 算法:无重复字符的最长子串
二面
- 自我介绍
- 实习拷打
- 随便找两到三种,你觉得可能差异比较大的这种树状的数据结构,来介绍一下它们之间的一些差异点
- 红黑树和这个 b+树这两种就是相对来讲差异比较大的树来接着讨论,就是这两种树都有它各自一些比较典型的应用场景,你可以分别介绍一下。嗯,就是他们各自适用的场景中另外一个数据我为什么不太适用?
- hashmap 在什么具体操作的时候会出现这个线上不安全的问题?可以讲到就是结合它的这个具体实现,然后来讲到就是具体什么样的操作会导致什么样的一个具体的问题现象,然后最终体现了这哈什么样的线程不安全性
- Java 中这么多处理线程安全的这个方式,它可以做一个怎样的分类,可以讲一下你的分类标准,然后每个类型下都有什么
- 为什么 threadlocal 底层实现是 thread 里面一个 map,map 的 key 是 threadlocal,而不是 threadlocal 里面有一个 map,map 的 key 是 thread
- 算法:int 转汉语数字