- 博客(434)
- 资源 (4)
- 收藏
- 关注
原创 【面经】先更新缓存好?还是先更新数据库好?
如果数据的一致性非常重要,那么应该选择先更新数据库,再更新缓存的策略。如果数据库的负载是一个问题,那么应该选择先更新缓存,再异步更新数据库
2023-11-10 18:12:22 249
原创 【机试题】LazyIterator迭代器懒加载问题
工具类提供了一个ValueLoader接口,用于获取数据,其中ValueLoader的接口定义为:public interface ValueLoader { List load(long offset, int limit);使用该工具类的地方,需要提供ValueLoader的实现类。将下面这个未完成的Java工具类补充完成,实现懒加载的功能,该类需要实现Iterable接口,能够遍历所有数据。工具类需要支持懒加载,即遍历时按需获取数据,而非一次性获取所有数据到内存之后,再进行遍历;
2023-11-10 15:59:36 591
原创 【机试题】队列生产消费问题
编写一个队列,生产者生产消息(消息内容是1,2,3,…,n),消费者消费消息,并将消息打印到控制台。1.生产者以每秒10个的速率生产消息,队列满了后阻塞等待;3.消费者以每秒1个的速率消费消息;生产者和消费者在不同的线程;2.队列长度为100;
2023-11-10 15:52:20 102
原创 【机试题】CompletableFuture编排
使用CompletableFuture编排 AService.get()、BService.get()、CService.get(int i) (ABC三个服务返回结果都是int),满足使用A、B的结果相加,再作为参数传给C,取得C的结果后乘以 100 后返回。2.处理异常情况,异常情况返回0。
2023-11-10 15:48:32 89
原创 【机试题】两个链表相减,并以相同形式返回一个表示相减结果的链表
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照顺序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相减,并以相同形式返回一个表示相减结果的链表。输入:l1 = [9,8,7], l2 = [5,1,2]1)除了数字 0 之外,这两个数都不会以 0 开头。2)给定的第一数字一定比第二个数字大。解释:987-512 = 475。输出:[4,7,5]
2023-11-10 15:46:09 116
原创 【机试题】获取三个整数,然后将这三个整数累加,最终返回累加的值
编写一个Java函数,通过调用AService.get()、BService.get()、CService.get()三个接口,获取三个整数,然后将这三个整数累加,最终返回累加的值。2.累加操作需要在获取三个整数的操作完成后进行,因此需要保证三个整数均已获取后才能进行累加操作;1.调用三个接口的操作需要并行执行,以提高效率;3.考虑多线程安全问题。
2023-11-10 15:43:15 124
原创 【机试题】编写一个Java函数,实现批量获取数据的功能
2)在BService.get((List ids)函数内部,需要将传入的id列表分批(每批10个id)进行调用AService.get(List ids)函数获取数据;3)BService.get((List ids)函数需要返回所有批次获取的数据的合并结果,即一个包含所有数据的List;题目:编写一个Java函数,实现批量获取数据的功能(BService.get(List ids))。1)提供一个函数BService.get(List ids),支持最多传入100个id;
2023-11-10 15:41:06 1171
原创 【面经】排查cpu占用100%的操作方法
4. 使用jstack 分析 进程pid,即可找到问题代码位置。将堆栈打印到x.txt,可以查看x.txt即可找到问题代码位置。1.top命令查看cpu100%的进程pid。92156 的16 进制是167fc。
2023-11-09 09:56:55 104
原创 【面经】讲一下Spring Bean的生命周期
Spring容器管理Bean的生命周期,包括实例化、属性设置、初始化、使用和销毁阶段。在初始化和销毁阶段,开发人员可以插入自定义逻辑,以确保Bean的正确配置和资源释放
2023-11-09 09:39:12 68
原创 【面经】synchronized和lock的区别
synchronized是Java语言内置的关键词,依赖于JVM的解释器来锁定,而lock是一个接口,由代码实现加锁和解锁
2023-11-09 09:16:25 42
原创 【面经】讲一下BASE理论
其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。BASE理论是 基本可用(Basically Available)、软状态(Soft State)、最终一致性(Eventual Consistency)的简称。BASE理论满足CAP原理,通过牺牲强一致性获得可用性,一般应用于服务化系统的应用层或者大数据处理系统中,通过达到最终一致性来尽量满足业务的绝大多数需求。
2023-11-09 09:10:54 88
原创 【面经】ES中分片是什么?副本是什么?
分片是将一个索引切分为多个底层物理的Lucene索引,这些被切分出来的每个部分称为一个分片。每个分片都是一个全功能且独立的索引,可由集群中的任何主机存储。在创建索引时,用户可以指定其分片的数量。默认情况下,每个索引有5个分片。分片实现了集群的分布式存储,方便数据在多个节点上进行存储和查询。
2023-11-09 09:02:50 569
原创 【面经】讲一下springboot自动装配原理
对于第三方jar包,SpringBoot会采用SPI机制,在/META-INF/目录下增加spring.factories文件,然后SpringBoot会自动根据约定,自动使用SpringFactoriesLoader来加载配置文件中的内容。在具体实现上,SpringBoot启动时会依赖@Configuration的配置类,该类中会声明为Bean注解,然后将方法的返回值或者是属性注入到IOC容器中。它能自动地将其他组件中的Bean装载到IOC容器中,而不需要开发人员再去配置文件中添加大量的配置。
2023-11-09 08:43:57 47
原创 【面经】Spring框架中用了哪些设计模式
模板方法模式:Spring框架中的一些模板方法模式可以帮助我们实现代码的复用和抽象。通过模板方法模式,Spring定义了一些通用的操作流程,然后通过回调方法让用户自定义具体的实现。策略模式:Spring的Bean配置中,策略模式允许根据条件动态选择不同的实现。通过观察者模式,Spring可以将事件通知给注册的观察者,从而实现各组件之间的解耦。这只是Spring框架中运用的一些设计模式的简单介绍,实际上Spring还使用了其他许多设计模式来构建灵活、可扩展的应用程序。
2023-11-09 08:18:52 165
原创 【面经】讲一下你对jvm和jmm的了解
Full GC是Java虚拟机中的一种垃圾回收方式。它会在整个堆空间中执行垃圾回收,清理所有不再被引用的对象所占用的内存空间。通常,Full GC会在堆空间或者整个堆空间被占满时触发,它会清理所有的年老代对象和永久代对象。这是一种比较耗时的操作,因为它需要扫描整个堆空间,找到所有不再被引用的对象,并将它们标记为可回收的。堆空间不足:当堆空间的可用空间不足以分配新对象时,会触发Full GC。在这种情况下,Full GC会清理整个堆空间。
2023-11-09 00:44:52 627
原创 【面经】讲一下线程池的参数和运行原理
通过以上参数和运行原理可以看出,线程池可以有效地控制线程的数量和任务队列的大小,从而避免过多创建和销毁线程带来的开销,提高系统的性能和稳定性。线程池通过预先创建一定数量的线程,并将任务提交给这些线程执行,从而避免了频繁创建和销毁线程的开销。如果非核心线程执行完任务后,任务队列中没有待执行的任务,且非核心线程数量小于最大线程数,则创建一个新的非核心线程来执行任务;如果未满,则创建一个新的核心线程来执行任务。如果核心线程执行完任务后,任务队列中还有待执行的任务,则核心线程会从任务队列中取出任务并执行。
2023-11-08 23:52:46 175
原创 Java6种单例模式写法
创建一个枚举,枚举成员为INSTANCE。使用枚举类.INSTANCE即可获取实例。调用静态内部类时,在静态内部类里初始化实例。
2023-11-08 23:09:14 668
原创 【面经】spring,springboot,springcloud有什么区别和联系
它内置了servlet容器,约定大于配置,简化了Spring开发的配置流程,提高了开发效率。SpringCloud:是一个服务治理平台,是若干个框架的集合,提供了全套的分布式系统解决方案。Spring是基础框架,SpringBoot基于Spring进行了简化,而SpringCloud则是在SpringBoot的基础上提供了更全面的分布式系统解决方案。综上所述,Spring、SpringBoot、SpringCloud都是Java开发中的重要框架,它们之间存在一定的联系和区别。
2023-11-08 21:48:31 260
原创 【面经】SQL优化方法论
mysqld][mysqld]这将启用慢查询日志。4. 添加或修改选项。这指定了慢查询日志文件的路径和名称。根据你的需要,你可以选择不同的路径和文件名。5. 添加或修改选项。这定义了慢查询的阈值,以秒为单位。默认值是0.001秒(1毫秒)。你可以根据需要将其设置为适当的值。或者,根据你的操作系统和安装方式,使用适当的命令来重启MySQL服务。完成上述步骤后,MySQL将开始记录慢查询日志到指定的文件中。你可以使用常规的文本编辑器打开日志文件进行查看和分析。
2023-11-08 21:11:47 464
原创 【面经】服务熔断和服务降级的区别
服务降级是指当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。服务降级是系统自我保护的一种机制,以确保系统不会因过载而崩溃。
2023-11-03 17:40:50 101
一种win平台exe打包工具 可以把c#开发的winform/WPF打包为exe 也可以把java开发的JavaFx打包为exe
2023-09-16
windows部署minio安装包和教程.zip
2023-07-01
java利用hanlp与ansj计算文本相似度和关键词.zip
2023-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人