平安银行春招一面
《面试题目》
- 后端,5.19,53min
- 自我介绍
- java语言的了解程度
- 有接触过 AI 相关的开发吗?
- 编译原理了解吗
- AOP是什么,应用场景是什么?举个例子
- 扩展使用场景。比如说按你刚才那种做法,在工程里面直接起一个 AOP 的切面去做,如果我想要你把这个东西拿到另外一个额外的工程上去使用,你觉得要怎么去改造?而且是不需要让别人的工程里面放你这段代码,或者把你这整块依赖都挪过去。你觉得要怎么去使用哪种技术来实现无侵入的字节码植入?
- 开源的组件有一些,像阿里巴巴的arthas,又或者是 SkyWalking 这种链路监控的组件,你有去了解过吗?
- Java 项目它出现了内存溢出,你觉得你会用哪些方式去排查?
- 像堆外的内存溢出怎么去解决
- 内存泄漏的话,你是怎么去判断的?你现实项目过程当中有碰到过吗?
- 内存泄漏它可能周期很长,你可能会慢慢看它的堆持续的在涨,但是回收它又回收不掉。那基于这种情况,你觉得你会怎么去排查它?因为它不是一个非常快速的一个出现就告警OM,你觉得有哪种方式去解决这种很隐蔽、不太明确,不是非常明确的内存泄漏问题?
- 一堆的数据做一个去重,你会用什么数据结构来做?
- set 的话,它有没有并发的问题?
- 像HashMap,它线程不安全,具体体现在哪些方面?
- 实习过程中选择测试开发的原因,以及未来的职业规划
- 介绍agent验证如何做的
- 给你发布开发需求的人,你们是怎么去交流这个业务的?有没有遇到过一些你比较不好处理的问题?
- 代码缺陷检测,这些缺陷涵盖了哪些方面的缺陷?有做一些分类吗
- 和静态代码扫描有什么不同?
- 基于代码哈希构建方法及缓存表的作用,对代码是增量分析吗?
- 后端如何解析前端代码?
- 手里其他offer吗?部门业务偏向中台,能说说你的想法吗?
- 你现在自己会在哪个阶段?对于 AI agent 的应用开发?
- openclaw有部署过吗
- 使用什么AI编程工具,那你觉得现在你用编程工具来编的话,它能解决掉你的大部分的需求开发问题吗?
- RAG混合检索,你大概跟我说一下这个混合检索的整体的思路。
- 反问
- 26 offer沟通
《参考解析》
-
Redis核心:Redis常用数据结构:String/Hash/List/Set/ZSet。持久化:RDB(定期快照,恢复快,数据可能丢失)和AOF(追加日志,数据安全,文件大)。缓存穿透用布隆过滤器;缓存雪崩加随机过期时间+多级缓存;缓存击穿用互斥锁或逻辑过期。分布式锁用SET key value NX PX + Lua脚本保证原子释放。
-
Spring框架:Spring IoC容器管理Bean生命周期,核心是依赖注入(DI)。AOP面向切面编程通过动态代理(JDK/CGLIB)实现横切关注点(日志/事务/权限)。Spring事务传播行为:REQUIRED(加入现有或新建)、REQUIRES_NEW(挂起当前,新建)、NESTED(嵌套事务)等。
-
JVM与GC:JVM内存模型:堆(对象分配,GC管理)、方法区(类信息、常量池)、虚拟机栈(栈帧/局部变量/操作数栈)、本地方法栈、程序计数器。GC算法:标记-清除(内存碎片)、标记-整理(无碎片,但移动对象)、复制(新生代)。G1按Region划分堆,预测停顿时间。
-
Java并发:Java并发:synchronized关键字(偏向锁→轻量级锁→重量级锁升级);ReentrantLock(可重入、可中断、公平锁);volatile(内存可见性+禁止指令重排,不保证原子性);CAS(Compare-And-Swap,无锁乐观并发);ThreadLocal(线程本地变量,WeakReference,注意内存泄漏)。线程池核心参数:corePoolSize/maximumPoolSize/keepAliveTime/workQueue/handler。