阿里实习一面面经
- 介绍一下你在滴滴的项目
- 项目中你提到使用了MQ,说一下怎么解决MQ的消息丢失和消息重复的问题的?
- 定时任务是怎么实现的?
- 你说的奖励计划是存储在数据库,然后定时任务去执行,有没有考虑到当天可执行的计划如果量很大的时候该怎么处理?如何优化?(开放性题,我答了线程池多线程处理)
- 执行后的计划有没有考虑物理删除或者移出主表?(项目还真没有,但是确实很有必要,无效数据过大时会增加数据库压力)
- 线程池各个参数的作用,一个新任务的流程?
- 如果你需要使用线程池,你如何考虑参数?(开放题,提到了并发量和核心线程数的关系,提到了三种阻塞队列的选择)
- Redis你都是用来做什么?
- Redis如何实现分布式锁的?
- 说说如果你来设计一个rpc框架(dubbo),需要哪几部分?
- 你是怎么学习java的?
- 说说synchronize和lock的区别和理解?(半开发,越详细越好,我提到了锁升级)
- 说说volatile有什么用?
- DCL中synchronize后为什么还需要volatile?(没答出来,应该是指令重排)
- 讲讲gc回收有哪几种算法?什么区别?越详细越好
- 数据库常见的引擎的索引底层数据结构是什么?
- 为什么用B+树不用B树?
- 走主键索引和走普通索引效果一样么?(回表)
- 说说你设计索引时的想法(开放题,提到了对区分度高的建立索引,提到了最左匹配原则)
- mysql默认隔离级别是可重复度,可以解决幻读么?(一开始说不能,面试官的意思反应你再想想,我改口说不确定,提到了mvcc,说不确定)
- 反问
#阿里巴巴##实习##Java工程师##面经#