美团骑行后端面经(oc)
整个美团的时间线:
- 3.10号参加的笔试,ak了
- 3.21号到家买药一面,过了
- 3.23号到家买药二面,算法题做不出来就直接结束了()
- 3.28号收到骑行部门约面,过了两个小时收到感谢信
- 3.31号骑行一面
- 4.4号骑行二面
- 4.6号收到oc和短信,结果offer邮件卡了没发出去😥
- 4.7号联系了hr收到offer
感觉骑行java的面经有点少,所以来补充一下
一面:
- 首先介绍了一下部门业务
- 自我介绍
- Java部分
- 了解哪些反射机制;了解哪些动态代理方式;cglib和jdk动态代理的差别;
- 讲一下nio和bio;
- HashMap用什么结构存储的,为什么长度是2的幂次,链表多长转红黑树,为什么转红黑树;
- synchronize的理解,锁是保存在哪里的,jdk怎么优化锁的,和volatile的区别与各自的场景;
- ConcurrentHashMap如何保证线程安全的;
- ReetrantLock是什么,是否可重入,如何判断是否能获得锁;
- AQS中包含哪些种类的锁;
- 往线程池中提交一个任务后经过的流程,拒绝策略有哪些;
- ThreadLocal的概念,用什么数据结构存储的
- 设计模式部分
- 讲一下策略模式和工厂模式
- 网络部分
- 为什么往往采用tcp而不是udp;tcp如何保证可靠
- 数据库部分
- 讲一下mysql的mvcc,undolog包含哪些内容,幻读的概念,mvcc如何处理幻读和不可重复读;
- mysql中有哪些索引,哈希索引和b+树索引各自的优缺点,为什么用b+树而不是b树;
- 聚簇索引和非聚簇索引是什么,主键索引是哪种索引,讲一下回表查询,讲一下覆盖索引
- redis为什么快;
- redis如何实现分布式锁;
- redis的两种持久化机制,各自的优缺点
- 项目部分
- 项目的前端是哪一种(客户端/小程序/网页)
- 项目中如何保持会话的(cookie、session、websocket)
- 做过哪些性能调优(jvm、数据库等)
- 框架和中间件
- Spring bean的概念,Spring中如何标注一个bean,bean的生命周期
- Spring两大核心特性的理解,为什么需要ioc
- mybatis如何将mapper.xml中的sql和Mapper接口的方法对应
- 用过消息队列吗
- 用过哪些其他的中间件
- 算法题leetcode 82稍微卡了一会,面试官提示了后还是做出来了
二面:
- 自我介绍
- 项目中按STAR法则介绍工作
- 估一下应用的用户量
- 提到了websocket集群,评估一下单台服务器可以维护的连接数
- 连接数的瓶颈在哪些地方
- 估一下一个连接占用的内存大小
- 服务器是多大的内存
- 可以同时容纳多少连接
- 部署了多少服务器
- 讲一下websocket
- 基于什么协议
- 如何从协议层面保证双向传输
- 讲一下netty提高性能的原因
- 你用了哪种io模型
- 线程和连接数是几对几的
- bossGroup和workerGroup的线程数设了多少
- 讲一下netty的io多路复用基于什么的
- 除了epoll,还有哪些io多路复用机制
- 讲一下对文件描述符fd的理解
- linux查看打开文件的命令
- linux查看当前网络连接的命令
- linux查看当前进程的命令
- 用过哪些其他linux命令
- 讲到异步操作,说说怎么做的
- 讲一下线程池提交任务后的过程
- 讲一下其他的项目亮点(提了日志追踪)
- 怎么打印requestId以及怎么将其在服务间传递
- MDC是某种开源软件吗
- 对于刚刚提到的异步操作,怎么传递requestId
- 讲一下CS186的project
- 从哪了解到的
- 完成到了什么程度
- 怎么实现多粒度锁和并发控制的
- 有实现MVCC吗
- 有对事务进行处理吗
- 除了b+树索引,还了解哪些索引
- 举例讲一下哈希索引的应用场景
- redis底层用的什么索引
- 讲一下Java的线程有哪些状态
- 和操作系统的线程状态有哪些关联
- 平时自学的方式
- 接下来的规划
- 读研吗
- 进厂后的规划
- 能实习多久,几月到几月
二面没做题,长舒一口气
#我的实习求职记录##美团信息集散地#