腾讯金融科技暑期一面凉经(偏基础 + 项目拷打 + 手撕)
面试题目
一、基础与编程
- 自我介绍
- 字符串压缩比较:判断两个压缩后的字符串(如2a3b)是否相等(暴力还原 vs 双指针优化)。
- Spring Boot版本选择原因(3.0版本兼容性考虑)。
- JDK 21的兼容性与商用考量。
- Java “一次编写,到处运行”的实现原理及与C++的区别。
二、项目拷打
- 令牌桶限流实现原理。
- 服务高可用:单机与分布式的差异,单机节点挂掉后的处理机制。
- 布隆过滤器的使用场景与原理。
- 分布式锁实现(Redis方案)。
三、数据库
- 查看表结构的SQL语句。
- 索引设计策略:主键、唯一、联合索引的区别。
- MySQL事务隔离级别及具体差异。
- 读已提交与可重复读的区别,脏读的定义。
四、Linux
- 查看目录大小的命令。
- 文件权限rwx的含义。
参考解析
- 字符串压缩:暴力法需先解码再比较,空间复杂度O(N);双指针法直接在压缩字符串上移动,计算逻辑偏移量并对比字符,空间复杂度可降至O(1)。
- Java跨平台:Java通过JVM实现,字节码文件(.class)在不同平台的JVM上解释执行;C++编译为本地机器码,不同OS的指令集架构不同,需重新编译。
- 布隆过滤器:利用位数组和多个哈希函数实现。优点是空间利用率高、查询快,缺点是存在误判率,且不支持删除操作。
- MySQL隔离级别:读未提交、读已提交、可重复读、串行化。可重复读通过MVCC(多版本并发控制)+ Next-Key Locks避免幻读,而读已提交每次读取都会生成新的ReadView。
- Linux权限:r(读/4)、w(写/2)、x(执行/1)。查看目录大小常用命令为
du -sh <目录名>。