27届腾讯AI后台开发实习一面面经
面试题目
- 手撕:力扣原题最小路径和
- Java中的接口和抽象类有什么区别
- Java中循环拼接字符串(几万次)应使用哪种类型?String、StringBuilder、StringBuffer的区别?
- Java里面如何实现线程安全的
- synchronized可以修饰变量吗?
- Java中哪些注解可以实现依赖注入?
- Java里的HashMap如何扩容的,扩容机制是怎样的?
- 什么情况下会进行扩容?
- Mybatis中如何防止SQL注入的?
- 微服务的熔断和降级有了解过吗?
- 了解过哪些限流方法?
- Kafka如何保持高流量,高可用?
- 如果说MySQL里出现慢查询,如何进行优化?
- easyExcel解析Excel,一万行数据在5000行出错如何处理?
- 项目中是否使用了大模型,接入的哪个大模型?
- 大模型的数据存放在哪里?
参考解析
- StringBuilder/StringBuffer:循环拼接推荐使用StringBuilder(线程不安全,效率高);StringBuffer线程安全但有同步开销;String拼接会产生大量临时对象。
- HashMap扩容:默认负载因子0.75,容量达到阈值(容量*负载因子)时扩容为原大小的2倍,将原数组节点通过高低位拆分重映射到新数组。
- MyBatis SQL注入:使用
#{}预编译处理,底层通过JDBC的PreparedStatement设置参数,能有效过滤特殊字符;避免使用${}拼接SQL。 - Kafka高可用/高流量:高流量依赖分区(Partition)机制实现水平扩展;高可用通过副本(Replica)机制,配合ISR(同步副本集)与Ack机制保证数据不丢失。
- MySQL慢查询优化:先通过EXPLAIN分析执行计划,查看索引命中情况;重点关注索引失效(如类型转换、左模糊)、大分页查询、SQL语句冗余以及必要的覆盖索引优化。