首页 > 编程语言 >java-面试实战总结-2025-01-16

java-面试实战总结-2025-01-16

时间:2025-01-16 16:56:57浏览次数:3  
标签:01 java 面试 适配器 适用 算法 2025 避免 一致性

  下午接到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

相关文章

  • Tomcat自动监听重启.250116
    1.bash脚本vim/home/sh/restart_tomcat.sh#!/bin/sh#configurations:Automaticmonitoringtomcatprocess,hunguptherestartoperation#author:AmadeusLANG="en_US.utf8"exportLANGexportPATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bi......
  • vscode使用github.211014
    1,vscode打开terminal,生成RSA密钥,并查看蜜月PSD:\\code\\SQL>gitinitReinitializedexistingGitrepositoryinD:/code/SQL/.git/PSD:\\code\\SQL\>gitconfig--globaluser.nameamadeusPSD:\\code\\SQL\>gitconfig--globaluser.emailvegas......
  • BFS 2025/1/16
    BFSBasic主要特点:空间复杂度较高,基于队列经常用于求最优解的搜索题经典模型:连通块,最短迷宫路径,曼哈顿距离Question01[ACP2056山峰与山谷]主体是广搜模板难点在于如何判断当前联通块是山峰或山谷考虑在广搜时进行维护如果BFS检测到的区域不是在当前连通......
  • (14-3-02)基于Latent Diffusion Transformer的文生视频系统:数据集处理(2)加载并处理Taic
    6.4.3 加载并处理Taichi数据集文件taichi_datasets.py实现了一个Taichi数据集类,用于加载和处理分帧存储的视频数据,特别是太极表演相关的帧序列。它包括从数据目录中读取视频帧、按时间进行帧采样、将帧数据转换为张量并应用数据增强等功能。代码通过torch.utils.data.Da......
  • 2025年实战技巧!如何通过项目管理助力产品经理实现产品目标?
    在当今竞争激烈的商业环境中,产品经理不仅要负责产品的整体规划和设计,还需要确保项目能够按时、按质、按预算完成。这就需要产品经理具备出色的项目管理能力。本文将深入探讨如何通过项目管理助力产品经理实现产品目标,并提供2025年的实战技巧。引言随着市场的不断变化和技术的......
  • Java程序运行时动态生成日志文件-loj4j
    1.创建Appender;2.logger实例和appender的绑定和解绑3.logger实例使用privatestaticfinalLoggerLOGGER=LogManager.getLogger(DeviceManagerCuppsIOHandler.class);创建<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-a......
  • pkuwc 2025 游记
    Day-1课表上写的上午自主补题,下午休息,于是上午偷偷划水,下午光明正大划水(,下午划水的时候没绷住被06击杀,除了我还有六个,有点抽象。晚上@Ricefruit再一次被06击杀罚站30min,回来的时候@Ricefruit没绷住让06看到了标签页上@fangzichang大神的休息论,于是晚上我们几个又被......
  • 2025四款简单好用的电脑便签提醒软件推荐
    进入2025年,越来越多的打工人需要在电脑上使用一款桌面便签或日程提醒软件,随时记录和管理工作事项,能够帮助我们高效整理思绪,确保重要事务不被遗漏。今天给大家介绍四款简单又好用的电脑便签或日程提醒软件,总有一款是适合你的!一、Win系统便笺Windows操作系统自带的轻量级便笺工具......
  • Java开发防止SQL注入攻击
    在Java编程过程中,防止SQL注入攻击是非常重要的安全措施。以下是常用的防注入攻击措施及其原理:1.使用预编译语句(PreparedStatement)原理:PreparedStatement是JDBC提供的一种接口,它允许SQL语句在执行前被预编译。通过使用占位符?来代替参数值,并在执行时动态设置这些参......
  • Java虚拟机堆区域的特点
    JVM(Java虚拟机)的堆(Heap)是用于存储对象实例的内存区域,是Java运行时数据区的一部分。JVM堆被划分为几个主要区域,每个区域都有特定的用途和管理方式。以下是JVM堆的主要结构及其特点:1.新生代(YoungGeneration)新生代是堆中用于存储新创建对象的区域。它被进一步划分为两个主......