携程 Java开发二面
面试流程
- 自我介绍
- 介绍实习项目
- 技术深挖
- 手撕算法
面试题目
项目相关
- 为什么使用ES存储日志,有做过别的方案和调研吗
- 有了解过别的存储媒介吗(答 ClickHouse,追问优缺点)
- 监控告警是如何生成告警的(主要使用了Alertmanager)
- 告警异常数据分为什么类型,如何监控(Prometheus自监控与自定义exporter)
多线程
- 多线程使用场景
- 核心参数你用了什么,为什么这么设置
- 这几个参数怎么得出来的,为什么不使用别的参数(答:基于服务器硬件性能、CPU核数等)
- 线程池完整的处理流程
数据库
- 索引的数据结构
- B+树、B树、红黑树区别
- 分库分表如何实现,逻辑是如何分的
Redis
- Redis是做了缓存还是分布式锁
- Redis高并发访问与MySQL的数据一致性如何解决
- Redis内存淘汰策略
- 分布式锁如何实现的
消息队列
- 消息队列如何保障消息不丢失
- 生产者消费者分别如何做
JDK
- JDK用什么版本
- JDK 21相比于1.8的新特性有哪些
- 常见GC算法
算法题
给定一个已经排序的数字数组和两个整数k、x,在数组中找到k个最接近x的数字
- 要求:二分法与双指针实现
面试感受
面试官很和蔼,感觉自己答的不太好