腾讯AI后台开发27实习一面分享

腾讯 · AI后台开发 · 一面 · 2026-04

《面试题目》

  1. 手撕代码:力扣原题最小路径和
  2. Java中接口和抽象类的区别
  3. 循环拼接字符串(几万次)时,String、StringBuilder、StringBuffer该如何选择?
  4. Java中如何实现线程安全?
  5. synchronized可以修饰变量吗?
  6. Java中哪些注解可以实现依赖注入?
  7. HashMap的扩容机制是怎样的?
  8. 什么情况下会进行扩容?
  9. Mybatis中如何防止SQL注入?
  10. 微服务的熔断和降级机制?
  11. 了解哪些限流方法?
  12. Kafka如何保持高流量和高可用?
  13. MySQL慢查询优化方法?
  14. 解析Excel时,如果中途报错如何实现断点续传或异常处理?
  15. 项目中大模型的接入方案与选型?
  16. 大模型的数据存储方案?
  17. 如何评估大模型的准确率?

《参考解析》

HashMap扩容机制: 默认初始容量16,加载因子0.75。当元素个数超过阈值(capacity*loadFactor)时触发扩容。JDK1.8后采用高低位拆分法,将旧数组中的数据重新分配到新数组,避免了头插法导致的链表环形死循环。

MyBatis防止SQL注入: 使用#{}占位符,底层使用PreparedStatement,会将SQL语句进行预编译,将变量作为参数传入而非直接拼接,有效防止了攻击者利用SQL语法进行注入。

MySQL慢查询优化: 首先通过explain分析执行计划,查看是否命中索引;检查SQL结构是否冗余;对慢查询字段建立联合索引;若表数据量巨大,考虑分库分表或使用Redis做缓存查询。

Kafka高可用与高流量: 通过分区(Partition)机制实现负载均衡和并行处理;通过副本(Replication)机制保证高可用,ISR(同步副本集)保证数据不丢失;配合ACK机制调整吞吐量与数据一致性的平衡。

synchronized修饰变量: 不可以。synchronized关键字只能修饰方法(实例方法或静态方法)或代码块,用来修饰对象或类锁,无法直接修饰变量(若需保证变量可见性与原子性,建议使用volatile关键字或原子类AtomicInteger等)。