2025年9月11日-字节一面
- 自我介绍
- 讲讲流式底层原理,项目中是怎么实现的
- 项目中有个上下文优化,讲讲呢?
- 再讲讲context优化具体实现
- 项目中有个SQL插入时间优化,讲讲怎么进行SQL优化的
- 你提到了预编译,那预编译底层原理
- 除了预编译,还有其他的优化吗?SQL有办法继续优化到3分钟以内吗?
- 你从哪里得知prompt前置优化的
- 你怎么能确定这样写出来确实是能优化的
- 讲讲反序列化吧,jackson的具体反序列化原理
- ArrayList底层实现
TIP:补充
Q:SQL插入还有哪些优化方法?
- 使用 INSERT ... ON DUPLICATE KEY UPDATE(MySQL)或 UPSERT减少,避免先查后插
- 批量插入,减少网络往返开销
- 关闭自动提交,将多条插入包在 一个事务中,显著提升性能。
Q:预编译相关
解析(Parse)→ 编译(Compile)→ 生成执行计划(Execution Plan)
预编译时,数据库需要解析SQL模板生成执行计划,而拼接后一次性发送大量SQL,减少了多次网络往返和预编译开销
Q:反序列化原理
- 创建空对象 Jackson 使用反射调用类的 无参构造函数 创建一个空实例。
- 解析 JSON 字段 将 JSON 字符串解析为键值对(如
"name": "Alice"
)。 - 匹配字段或 Setter 方法
- 默认按字段名或 getter/setter 方法名匹配(如
setName()
对应"name"
)。 - 支持
@JsonProperty("custom_name")
自定义映射。
- 默认按字段名或 getter/setter 方法名匹配(如
- 类型转换与赋值 Jackson 内置类型转换器,将 JSON 值转为 Java 类型(如字符串转
int
、日期字符串转Date
)。 - 设置字段值 通过字段反射(
field.set(object, value)
)或调用 setter 方法赋值。 - 返回完整对象