南宁小厂面试 - Java 后端开发实习
《面试题目》
一开始先写了份试卷,选择题和判断题(Java 基础),还有八股题、两道手撕(手写代码)、SQL 题。面试问了很多问题,感觉是问得很广,但是不深,都能稳稳答上来,当练级用了。以下是面经:
- 一、项目
- 介绍一下你的智能体 / RAG 项目。
- 1 这个项目解决什么问题?
- 2 文档是如何分块、向量化并检索的?
- 3 准确率有没有评估?TopK 命中率大概多少?
- 4 在线文档更新机制是怎么实现的?
- 5 文档变化后,如何保证向量库内容是最新的?
- 介绍一下 web 后端项目。
- 1 Redis 分布式锁的实现原理是什么?
- 2 Redisson 底层是怎么实现分布式锁的?
- 3 Watchdog 机制有什么作用?
- 4 Lua 脚本在释放锁时解决什么问题?
- 你有没有做过数据同步方案?
- 1 如果要把 MySQL 的增量数据同步到非结构化数据库,你会怎么做?
- 2 定时任务扫描增量数据有什么问题?
- 3 如何用 MQ 实现增量同步?
- 4 如何通过监听 binlog 实现数据同步?
- 有没有接触过物联网设备对接?
- 1 有没有了解过 MQTT 协议?
- 2 后端在物联网项目中主要负责什么?
- 3 是否做过大屏、报表、数据统计相关项目?
- 是否接触过低代码平台?
- 1 有没有使用过若依?
- 2 若依的优点是什么?
- 3 若依的缺点是什么?
- 4 有没有了解过若依 Vue / 若依 Cloud?
- 二、八股
- 做一个自我介绍。
- 1 你是专升本还是全日制本科?
- 2 可以实习多久?
- 3 Java 是从什么时候开始学的?
- 4 成绩大概怎么样?
- 面向对象有哪些特性?
- 1 什么是封装?
- 2 什么是继承?
- 3 什么是多态?
- Java 基础数据类型有哪些?
- 如何截取字符串中的一部分内容?
- 并发编程有哪些使用场景?
- 缓存击穿是什么?
- 1 缓存击穿产生的原因是什么?
- 2 如何避免缓存击穿?
- 3 热点 Key 过期后如何处理?
- 4 逻辑过期方案怎么实现?
- 操作系统熟悉哪些内容?
- 1 进程和线程有什么区别?
- HTTP 和 HTTPS 有什么区别?
- 1 HTTPS 为什么更安全?
- 2 HTTPS 建立连接时涉及什么过程?
- 3 数字证书有没有使用过?
- 4 证书一般通过什么渠道申请?
- MySQL 事务的特性有哪些?
- 1 原子性是什么?
- 2 一致性是什么?
- 3 隔离性是什么?
- 4 持久性是什么?
- 如果要把某张表的数据回退到前一天 12 点,有什么办法?
- 1 使用 binlog 回退数据的前提是什么?
- 2 binlog 需要配置成什么格式?
- MySQL 索引类型有哪些?
- SQL 优化有哪些经验?
- 1 Explain 主要看哪些字段?
- 2 索引失效有哪些常见情况?
- 3 联合索引最左前缀原则是什么?
- 4 函数操作、计算、隐式转换为什么可能导致索引失效?
- Spring Cloud 有没有使用过?
- AOP 和 IOC 分别是什么?
- 1 AOP 的实现原理是什么?
- 2 AOP 适合哪些场景?
- 3 IOC 解决了什么问题?
- Spring 注解和 Spring Boot 注解分别有哪些?
- 1 Spring 常用注解有哪些?
- 2 Spring Boot 常用注解有哪些?
- 3 @Autowired 和 @Resource 有什么区别?
- 控制层常用注解有哪些?
- 1 @Controller 和 @RestController 有什么区别?
- 2 @RequestMapping、@GetMapping、@PostMapping 分别怎么用?
- HTTP 请求类型有哪些?
- 1 GET 和 POST 有什么区别?
- 2 PUT 和 DELETE 分别表示什么?
- Function Call 是什么?
- 1 Function Call 在智能体中怎么实现工具调用?
- 2 大模型返回 JSON 后,后端如何解析并调用工具?
- Git 常用命令有哪些?
- 1 如何把本地代码提交到远程指定分支?
- 2 企业开发中代码提交和合并流程是什么?
- Linux / Ubuntu 有没有使用过?
- Docker 镜像和容器有什么区别?
- 1 Docker Compose 有没有用过?
- 2 docker-compose.yml 文件一般包含哪些内容?
- 3 Docker 挂载是什么?
- 4 为什么要做数据卷挂载?
- 定时任务框架有没有用过?
- 平时看哪些技术网站或论坛?
- 三、算法
- 数组中第 k 大的数
- 判断字符串中的英文字母是否回文
- 四、反问环节
《参考解析》
-
计算机网络:TCP(传输控制协议)是面向连接、可靠的传输协议,提供流量控制和拥塞控制;UDP(用户数据报协议)是无连接、不可靠但速度更快的协议。TCP通过三次握手建立连接(SYN→SYN+ACK→ACK),四次挥手断开(FIN→ACK→FIN→ACK)。
-
MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。
-
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(嵌套事务)等。