Skip to content

2025年9月11日-字节一面

  • 自我介绍
  • 讲讲流式底层原理,项目中是怎么实现的
  • 项目中有个上下文优化,讲讲呢?
  • 再讲讲context优化具体实现
  • 项目中有个SQL插入时间优化,讲讲怎么进行SQL优化的
  • 你提到了预编译,那预编译底层原理
  • 除了预编译,还有其他的优化吗?SQL有办法继续优化到3分钟以内吗?
  • 你从哪里得知prompt前置优化的
  • 你怎么能确定这样写出来确实是能优化的
  • 讲讲反序列化吧,jackson的具体反序列化原理
  • ArrayList底层实现

TIP:补充

Q:SQL插入还有哪些优化方法?

  1. 使用 INSERT ... ON DUPLICATE KEY UPDATE(MySQL)或 UPSERT减少,避免先查后插
  2. 批量插入,减少网络往返开销
  3. 关闭自动提交,将多条插入包在 一个事务中,显著提升性能。

Q:预编译相关

解析(Parse)→ 编译(Compile)→ 生成执行计划(Execution Plan)

预编译时,数据库需要解析SQL模板生成执行计划,而拼接后一次性发送大量SQL,减少了多次网络往返和预编译开销

Q:反序列化原理

  1. 创建空对象 Jackson 使用反射调用类的 无参构造函数 创建一个空实例。
  2. 解析 JSON 字段 将 JSON 字符串解析为键值对(如 "name": "Alice")。
  3. 匹配字段或 Setter 方法
    • 默认按字段名或 getter/setter 方法名匹配(如 setName() 对应 "name")。
    • 支持 @JsonProperty("custom_name") 自定义映射。
  4. 类型转换与赋值 Jackson 内置类型转换器,将 JSON 值转为 Java 类型(如字符串转 int、日期字符串转 Date)。
  5. 设置字段值 通过字段反射(field.set(object, value))或调用 setter 方法赋值。
  6. 返回完整对象