后端开发工程师一面面经
完整信息
本篇目录
面试时间:9月1号,时长1h左右(已过)
面试体验:面试官人很好,在项目方面会和你一起思考项目可能的优化方向,遇到不会的也会详细讲解,八股答不上的时候会说没关系。
- 请简单做一下自我介绍。
- 你的实习经历中,主要负责哪一块工作?
- 发票校验具体做了什么?
- 发票信息是用户手动填写,还是通过图片识别自动提取?
- QLExpress 表达式是自己实现的,还是使用了开源组件?
- 为什么选择使用 QLExpress?
- 是否了解 QLExpress 的底层实现?
- 如果让你实现大于、小于、等于、与、或、非等简单表达式,你会怎么设计?
- 表达式中的括号和运算符优先级应该如何处理?
二、CLI 编程 Agent 项目 - 你开发可定制 CLI 编程 Agent 的背景是什么?
- 这个项目目前没有达到最初预期,具体体现在哪些方面?
- 从用户输入指令到 Agent 最终返回结果,中间经历了哪些流程?
- 是否实现了用户意图改写、纠错和澄清?
- 是否了解或实现了 Agent 的中断恢复?
- 如果 Agent 执行过程中断,应该如何恢复?
- 对于发送邮件等写操作,用户确认后如何保证执行的内容、对象与确认时完全一致?
- 用户确认后,是否应该重新调用大模型?为什么?
- 如何通过状态机和工程策略保证 Agent 不重复执行或产生新的幻觉?
三、工具系统与权限安全 - 统一工具系统和权限安全链路是如何设计的?
- 工具注册信息是否会注入到 system prompt 中?
- 工具描述应该放在系统提示词、用户提示词还是其他位置?
- 如果工具数量特别多,应该如何管理和选择工具?
- 是否考虑过通过工具索引和子 Agent/小模型筛选工具?
- 大模型缓存命中率的原理是什么?
- 如何设计 Prompt 才能提高缓存命中率、降低调用成本?
四、上下文与记忆 - 你的上下文管理和记忆系统采用了什么策略?
- 上下文超过一定长度后如何压缩?
- 长期记忆具体是如何压缩的?
- 长期记忆是否依赖大模型总结?
- 除了大模型总结,还能采用哪些记忆管理策略?
- 是否考虑过对记忆进行分类、索引和召回?
- 为什么使用 JSONL 持久化会话记忆?
五、Plan Mode 与执行模式 - Plan Mode 和执行模式的本质区别是什么?
- Plan Mode 是如何实现的?
- 两种模式在工具调用权限上有什么区别?
- 如何通过 Todo 或计划工具逐步执行计划?
六、Java 基础与并发 - 了解 Java 的 AQS 吗?
- AQS 的基本实现原理是什么?
- AQS 中的 state、CAS 和可重入机制是如何工作的?
- 了解 CAS 的 ABA 问题吗?
- ABA 问题是如何产生的?
- ABA 问题有哪些解决方案?
- 使用过线程池或 ThreadLocal 吗?
- 线程池有哪些拒绝策略?
- 各种线程池拒绝策略分别是如何处理任务的?
七、Redis - Redis 常见的五种数据结构是什么?
- Redis 的 RDB 和 AOF 持久化有什么区别?
- Redis 6.0 的多线程机制了解吗?
- Redis 的命令执行是多线程还是单线程?
- Redis 的网络读写和 I/O 多路复用是如何配合的?
八、JVM 与数据库 - JVM 常见的垃圾回收算法有哪些?
- 标记清除、标记整理和复制算法分别有什么特点?
- 了解 InnoDB 的 B+ 树吗?
- InnoDB B+ 树的结构和特点是什么?
算法题 最长回文子串,写出来了然后问了一下解题思路和优化方向
中间有几个redis八股都想不起来了没想到最后能过
本篇目录
当前问题0155
- 01
请简单做一下自我介绍。
- 02
你的实习经历中,主要负责哪一块工作?
- 03
发票校验具体做了什么?
- 04
发票信息是用户手动填写,还是通过图片识别自动提取?
- 05
QLExpress 表达式是自己实现的,还是使用了开源组件?
- 06
为什么选择使用 QLExpress?
- 07
是否了解 QLExpress 的底层实现?
- 08
如果让你实现大于、小于、等于、与、或、非等简单表达式,你会怎么设计?
- 09
表达式中的括号和运算符优先级应该如何处理?
- 10
你开发可定制 CLI 编程 Agent 的背景是什么?
- 11
这个项目目前没有达到最初预期,具体体现在哪些方面?
- 12
从用户输入指令到 Agent 最终返回结果,中间经历了哪些流程?
- 13
是否实现了用户意图改写、纠错和澄清?
- 14
是否了解或实现了 Agent 的中断恢复?
- 15
如果 Agent 执行过程中断,应该如何恢复?
- 16
对于发送邮件等写操作,用户确认后如何保证执行的内容、对象与确认时完全一致?
- 17
用户确认后,是否应该重新调用大模型?为什么?
- 18
如何通过状态机和工程策略保证 Agent 不重复执行或产生新的幻觉?
- 19
统一工具系统和权限安全链路是如何设计的?
- 20
工具注册信息是否会注入到 system prompt 中?
- 21
工具描述应该放在系统提示词、用户提示词还是其他位置?
- 22
如果工具数量特别多,应该如何管理和选择工具?
- 23
是否考虑过通过工具索引和子 Agent/小模型筛选工具?
- 24
大模型缓存命中率的原理是什么?
- 25
如何设计 Prompt 才能提高缓存命中率、降低调用成本?
- 26
你的上下文管理和记忆系统采用了什么策略?
- 27
上下文超过一定长度后如何压缩?
- 28
长期记忆具体是如何压缩的?
- 29
长期记忆是否依赖大模型总结?
- 30
除了大模型总结,还能采用哪些记忆管理策略?
- 31
是否考虑过对记忆进行分类、索引和召回?
- 32
为什么使用 JSONL 持久化会话记忆?
- 33
Plan Mode 和执行模式的本质区别是什么?
- 34
Plan Mode 是如何实现的?
- 35
两种模式在工具调用权限上有什么区别?
- 36
如何通过 Todo 或计划工具逐步执行计划?
- 37
了解 Java 的 AQS 吗?
- 38
AQS 的基本实现原理是什么?
- 39
AQS 中的 state、CAS 和可重入机制是如何工作的?
- 40
了解 CAS 的 ABA 问题吗?
- 41
ABA 问题是如何产生的?
- 42
ABA 问题有哪些解决方案?
- 43
使用过线程池或 ThreadLocal 吗?
- 44
线程池有哪些拒绝策略?
- 45
各种线程池拒绝策略分别是如何处理任务的?
- 46
Redis 常见的五种数据结构是什么?
- 47
Redis 的 RDB 和 AOF 持久化有什么区别?
- 48
Redis 6.0 的多线程机制了解吗?
- 49
Redis 的命令执行是多线程还是单线程?
- 50
Redis 的网络读写和 I/O 多路复用是如何配合的?
- 51
JVM 常见的垃圾回收算法有哪些?
- 52
标记清除、标记整理和复制算法分别有什么特点?
- 53
了解 InnoDB 的 B+ 树吗?
- 54
InnoDB B+ 树的结构和特点是什么?
- 55
算法题 最长回文子串,写出来了然后问了一下解题思路和优化方向
