深圳某小厂Java后端面试记录
《面试题目》
- 自我介绍及项目介绍
- 基本数据模型有哪些
- JVM内存模型介绍
- 数据库使用及MySQL索引类型
- SQL语句优化策略
- Linux基础及项目部署
- Docker容器操作(查看进程、进入容器)
- MySQL常用关键字及连接查询区别(Left/Right Join、Union/Union All)
- Redis数据结构及缓存一致性方案
- 多线程实现方式、执行顺序控制
- Java反射机制及应用场景
- HTTP请求中GET与POST的区别
- Git版本控制与分支合并操作
- 前端Vue父组件调用子组件方法
- AI工具使用及反问环节
《参考解析》
- MySQL索引与优化:索引包含主键索引、唯一索引、普通索引、全文索引等。优化应遵循最左前缀原则,避免使用SELECT *,利用Explain分析执行计划,并对高频查询字段建立合适索引。
- Union vs Union All:Union会对结果进行去重并排序,开销较大;Union All直接合并结果集,效率更高,适用于确定没有重复数据的情况。
- Docker操作:查看进程使用
docker ps或docker top <容器ID>;进入容器通常使用docker exec -it <容器ID> /bin/bash。 - 多线程按序执行:可以通过
join()方法等待前置线程结束,或者使用CountDownLatch、Semaphore、CompletableFuture等并发工具类进行协调。 - Redis缓存一致性:最简单的方案是先更新数据库,再删除缓存。若要求较高一致性,可采用延迟双删策略或使用消息队列保证最终一致性。
- Vue父子组件通信:父组件调用子组件,通常通过
ref标记子组件,然后在父组件中使用this.$refs.childName.method()调用子组件方法。