下午接到hr电话,说是想约晚上7点的线上面试,感觉准备时间有点来不及了,我就跟hr沟通把时间改到了8点,多腾出来点时间进行复习。
招聘信息强调了要求会微服务,我这边微服务用的少,到家后就着重复习了微服务相关的知识。面试过程大概有半个小时,面试流程如下:
1、开始后进行自我介绍,主要介绍了工作年限、工作经历、项目经历、个人在上一份工作中具体负责什么内容。
2、技术面试官开始进行面试,结合项目经历去问相关知识点,基本上问题是循序渐进的,开始先问一些比较宽泛的问题,项目中用到了什么技术点,某个功能如何实现,根据功能实现的技术点切入具体问题。
3、技术问完之后,hr控场结束面试。
具体的涉及到的知识点我这边大概总结一下:
设计模式:设计模式的切入点是问一个公共接口对接多方系统,具体是如何实现通过一个接口调用不同的逻辑方法的。
我的设计思路是这样的,主要用到了适配器模式和策略模式:
- 定义一个适配器接口ThirdPartyService,接口中定义一个方法adapt,第三方系统注册适配到这个接口中。
- 添加ThirdPartyService的实现类,有几个方法就添加几个类,
adapt
方法会创建并返回对应的第三方系统服务实例。后续如果有对接,继续添加新的实现类。 - 创建 ThirdPartyServiceContext 类,这是策略模式的上下文类,使用Map存储不同的第三方系统适配器,根据服务标识来查找并调用相应的适配器。
事后总结:如果想体系自己的技术和架构方面的能力,尽量在准备简历时,一个或者项目中要介绍到自己使用了什么设计模式去实现这个功能的,解决了什么问题,这样能具体的让面试官了解你的能力。面试过程中具体的问题如下:
微服务方面的知识:
负载均衡有几种算法:
轮询、加权轮询、随机、加权随机、最小链接数、源地址哈希、一致哈希性、最短相应时间
限流熔断有几种算法:
限流:计数器算法、滑动窗口算法、令牌桶算法
熔断:基于错误率的熔断、基于超时的熔断
CAP是什么:一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)
在微服务架构中,CAP 定理是一个重要的理论基础,需要根据业务需求和系统架构,在一致性、可用性和分区容错性之间进行权衡和选择。不,以实现一个可靠和高效的分布式系统。不同的选择会影响系统的设计、开发和维护,需要综合考虑各种因素。
数据库相关问题
数据库隔离级别:
隔离级别 | 脏读 | 不可重复读 | 幻读 | 并发性能 |
---|---|---|---|---|
读未提交 | 可能 | 可能 | 可能 | 高 |
读提交 | 避免 | 可能 | 可能 | 中 |
可重复读 | 避免 | 避免 | 可能 | 中低 |
串行化 | 避免 | 避免 | 避免 | 低 |
事务隔离级别
事务隔离级别 | 脏读 | 不可重复读 | 幻读 | 性能 | 适用场景 |
---|---|---|---|---|---|
ISOLATION_READ_UNCOMMITTED 读未提交 | 可能 | 可能 | 可能 | 高 | 对数据一致性要求极低,性能要求极高,如日志记录等临时数据存储,允许读取未提交数据 |
ISOLATION_READ_COMMITTED读提交 | 避免 | 可能 | 可能 | 中 | 大多数数据库的默认级别,适用于一般的在线事务处理(OLTP)系统,如用户订单处理、商品库存更新,只要求读取已提交数据 |
ISOLATION_REPEATABLE_READ可重复读 | 避免 | 避免 | 可能 | 中低 | 对数据一致性要求较高,不允许不可重复读,如报表统计、数据查询,在事务内保证数据多次读取一致 |
ISOLATION_SERIALIZABLE串行化 | 避免 | 避免 | 避免 | 低 | 对数据一致性要求极高,不允许任何并发问题,如金融系统核心数据处理、财务结算,将事务串行化执行 |
如何实现幂等性:
- 数据库唯一约束:适用于插入操作,通过数据库的唯一约束来防止重复数据插入。
- 状态机幂等:适用于有状态的操作,通过状态机的状态转换来保证操作的幂等性。
- 令牌机制:适用于客户端与服务器的交互,通过客户端生成的唯一令牌来判断请求是否重复。
- 分布式锁:适用于分布式系统,确保同一时间只有一个请求能执行操作。
- 乐观锁:适用于更新操作,通过版本号或时间戳检查更新的一致性。
- 幂等性键:适用于任何请求,通过请求中的唯一键来判断是否已处理过。
算法层面:LRU算法
多线程:创建线程的方式、线程池、线程锁机制,synchronized关键字,lock锁lock.notify();lock.wait();
Sql的调优:慢sql如何排查,sql如何优化
能记得的问题大概就这么多,面试中问到的知识点还挺多的,在回答过程中也有卡壳的时候,不过心态还是要放平稳,面试不通过就当一次查漏补缺了。后续有面试的话,有机会还会记录下来。
标签:01,java,面试,适配器,适用,算法,2025,避免,一致性 From: https://blog.csdn.net/weixin_42677025/article/details/145180479