今天面试了顺丰,面试过程中主要问到Mysql、redis、数据结构和算法。面试大约23分钟,整体表现给打80分,微应用、redis等问题回答的有点差。下面进行学习总结,过程中如有错误,欢迎私聊我纠正。
第一轮面试题
自我介绍
JVM组成结构
垃圾收集算法
介绍垃圾收集器判断对象存活
多线程的使用方式
JAVA锁用到哪些
CAS应用的弊端,以及ABA 问题
CAS 看起来很爽,但它也有缺点,那就是“ABA”问题。
例如:现有一个用单向链表实现的栈,栈顶元素为A,A.next 为 B,期望用 CAS 将栈顶替换成 B。
有线程1 获取了元素 A,此时线程1被挂起,线程2也获取了元素A,并将 A、B 出栈,再 push D、C、A,这时线程 1 恢复执行 CAS,因为此时栈顶元素依然为 A,线程 1 执行成功,栈顶元素变成了 B,但 B.next 为 null,这就会导致 C、D 被丢掉了。
这个例子充分说明了 CAS 的 ABA 问退带来的隐患,通常,我们的乐观锁实现中都会带一个 version 字段来记录更改的版本,避免并发操作带来的问题。在 Java 中,AtomicStampedReference 也实现了这个处理方式。
Mysql索引类型
Mysql聚簇索引和普通索引区别
Mysql数据库优化方式
redis哨兵原理和主从架构的区别???(问题没听懂)
其实问题是这样的,redis哨兵原理和redis Cluster集群区别?
听说你算法不错,来做一道题吧
手撕代码,给出一个数组和目标值,找出数组中两个数总和为目标值的下标
Java框架知道哪些?
微应用有了解吗?
前端技术有了解吗
总结
总体表现打80分,二面没有了,有点意外。凉凉。