广州华软科技Java开发一面面经
面试题目
- 自我介绍
- 项目背景确认(是否为教程项目/是否有落地经验)
- 项目业务实现细节与职责分工
- 前端技术栈确认(Vue2/Vue3)
- 实习期望沟通
- 项目深度拷问
- 协议概念
- 缓存穿透解决方案:布隆过滤器原理与哈希概念
- 哈希的应用场景
- 计算机基础课程背景
- 对AI对程序员冲击的看法
- MySQL存储引擎类型
- 聚簇索引概念
- AVL树左旋及其用途
- 数据库主键编码方式(非自增长方案)
- 项目中ID生成策略及自增长ID的弊端
- 项目亮点挖掘与查证
- 场景题:淘宝秒杀 vs 12306抢票难度对比
- 12306难度的逻辑论述
- 反问环节
参考解析
- 缓存穿透与布隆过滤器:缓存穿透指查询不存在的数据导致请求压垮数据库。布隆过滤器通过多个哈希函数将数据映射到位数组中,能高效判断数据是否存在,从而拦截非法请求。缺点是存在误判可能,需根据场景调整容错率。
- 聚簇索引:聚簇索引将索引和行数据存储在一起,表数据物理存储顺序即索引顺序。InnoDB默认将主键作为聚簇索引。优势是主键查询极快,劣势是插入数据依赖主键顺序,且频繁修改主键会导致页分裂。
- 自增长ID的弊端:在分布式场景下,自增长ID可能导致数据泄露(如通过ID递增推算订单量)、无法进行多数据库合并及高并发下的数据库写压力过大等问题。可用UUID、雪花算法(Snowflake)或Redis自增替代。
- 12306抢票难度:相比淘宝秒杀,12306不仅涉及极高的瞬时流量,还存在复杂的组合查询、余票实时库存扣减、复杂的分段计费及公平性保障,对数据库的一致性、并发处理与系统可用性要求极高。