我要进大厂第五讲:阿里面经第二篇
第一轮面试是电话面,以基础知识为主,前后大概1个小时左右,这个阶段我是比较紧张的。
文章目录
- 我要进大厂第五讲:阿里面经第二篇
-
- 第一轮:
-
- 1、先自我介绍,包含日常工作
- 2、多线程,ThreadLocal,问了父子线程怎么共享数据 interitableThreadLocals
- 3、ReentrantLock和Synchronized区别
- 4、AQS原理(执行过程源码,入队出队的细节,源码细节)
- 5、CountDownLatch和CyclicBarrier的区别是什么 源码级别
- 6、volatile从指令重排序,内存屏障
- 7、数据库,MySQL索引,执行计划、count1*区别、举例优化sql、MVCC和事务隔离级别的关系、间隙锁、行锁
- 8、JVM调优(可达性分析算法中根节点有哪些、cms和G1区别、怎样GC调优、怎样排查CPU飙高、内存飙高、逃逸分析)
- 9、Redis数据结构、跳跃表、Redis qps能上多少,怎么知道的、sentinel和cluster区别和各自适用场景、Redis cluster集群同步过程、Redis单线程为什么快、多大叫大key、热key产生原因和后果以及怎么解决、本地缓存需要高时效性怎么办?
- Action1:Sorted Set 为什么同时使用字典和跳跃表?
- Action2:Sorted Set 为什么使用跳跃表,而不是红黑树?
- Action:为什么一定要用3级缓存解决循环依赖,我用2级可否?1级可否?能否关闭循环依赖?
第一轮:
1、先自我介绍,包含日常工作
自我介绍
- 1、毕业于哪儿;
- 2、工作经验与经历;
- 3、项目经历;
- 4、技术栈;
- 5、喜欢做什么与技术相关的事情
2、多线程,ThreadLocal,问了父子线程怎么共享数据 interitableThreadLocals
2.1、JUC使用
-
场景1:使用atomic类,①计算任务执行个数,②统计缓存命中率, 可以保证 i++ 的原子操作
-
场景2:ConcurrentHashMap 线程安全的map接口,初始化大小1 数据接口
- 底层实现数据结构使用数组+链表+红黑树,保证线程安全使用Synchronized,加锁粒度为node
- 如何扩容:采用多线程并发扩容,给当前扩容线程分配“一个步长”的节点数
- 多线程环境下,保证线程安