杭州2023 - Java开发 - 面试复盘 4

公司概况:未融资·1000-9999人·酒店

1 多线程

1. JUC包提供了哪些工具?

    atomic包,包含一些atomic数据类型。

    locks包,包含可重入锁、可重入读写锁。

    并发容器、线程池等等。

2. 什么是锁重入?

    已获得锁资源的线程,再次尝试获取锁资源的时候,可以跳过加锁的步骤。

    实现原理是AQS(volatile、阻塞队列、CAS)。

3. 乐观锁和悲观锁的使用场景。

    乐观锁适用于读多写少的场景,悲观锁适用于容易发生写冲突的场景。

4. 假如有10个线程,每个线程没有依赖其他线程返回值的情况,10个线程依次执行会花很长时间,要怎么做?

    10个线程并发,使用CountDownLatch做收束。

2 Spring Boot

1. Spring Boot在使用上与SSM有什么不同?

2. Spring Boot是怎么实现自动装配的?

https://www.cnblogs.com/javaguide/p/springboot-auto-config.html

3 分布式

1. 什么是CAP定理?

    配合BASE理论。

2. Eureka和Nacos分别保证CP还是AP?

    Eureka保证AP,自我修复机制;

    Nacos既可以保证CP也可以保证AP,看具体遵循什么协议。

4 Redis

1. Redis有哪些使用场景?

    缓存、session。

2. 使用Redis做缓存可能会遇到哪些问题?

    面试官想听的是缓存穿透、缓存雪崩、缓存击穿,我答的是与DB的缓存一致性问题,也没问题。

3. 缓存穿透、缓存雪崩、缓存击穿。

4. 将一个大对象(可能有50多个属性)存到缓存里有什么问题?怎么解决?

    大对象可能会频繁地序列化与反序列化。

    做冷热分离,把经常需要更新的属性拆出来,单独存储。

5 MySQL

1. MySQL事务的隔离级别有哪些?

    读未提交、读已提交、可重复读、串行化。

2. 可重复读是怎么实现的?

MySQL 中实现可重复读(RR)的原理

3. MySQL里有哪些锁?

    读锁、写锁、更新锁。

    更新锁:预定要对资源加写锁,允许其他事务读,但不允许再加更新锁或写锁。当被读取的页要被更新时,升级为写锁。更新锁的作用是避免使用共享锁造成死锁。

4. 怎么对慢SQL进行优化?

5. 假如对a、b两字段做了联合索引,查询条件匹配的是a 、b、c,是怎么进行查询的?

    走a、b联合索引,和查询条件只匹配a、b的速度相差不大。

6. 索引的数据结构是怎样的?

    主要讲B+树。

6 算法

1. 二分查找。

Java开发工程师的复盘通常包括以下内容: 1. 项目回顾:回顾参与的项目,包括项目的目标、范围、进展和成果。评估项目的成功度和不足之处,总结项目经验和教训。 2. 技术复盘:回顾所使用的技术栈和工具,评估其在项目中的应用效果和可行性。探讨技术选型的优劣,总结技术上的挑战和解决方案。 3. 代码复盘:审查自己编写的代码,评估代码的质量和可维护性。检查是否符合编码规范和最佳实践,发现潜在的问题并进行改进。 4. 故障排查与修复:回顾在项目中遇到的故障和问题,分析排查过程和解决方案。总结故障处理经验,以便在未来遇到类似问题时能够更好地应对。 5. 团队合作与沟通:评估自己在团队合作中的表现,包括与其他开发人员、测试人员和项目经理的协作情况,沟通效果和问题解决能力。 6. 个人成长与学习:反思自己在项目中的技术进步和个人成长,记录学到的新知识和经验。制定个人学习计划,确定下一步的技术提升目标和学习路径。 7. 总结与改进:总结复盘过程中得出的结论和建议,提出项目和个人改进的措施。制定具体的行动计划,以便在下一次项目中能够更好地应对挑战。 复盘是一个持续学习和不断改进的过程,通过反思和总结过去的经验,可以帮助Java开发工程师不断提高自己的技术水平和工作效率,为未来的项目取得更好的成果做好准备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值