自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 7、SpringBoot高频面试题

跨域是指浏览器不能执行其他网站的脚本。命令行参数,SpringBoot在项目启动的时候运行通过命令行直接传递参数,一般用于临时修改配置的情况。拦截器是Spring提供的一种拦截机制,目的是实现对指定请求路径进行拦截,然后做成指定的处理。当浏览器从一个域名的网页去请求另一个域名的资源时,出现域名、端口、协议任一不同,都属于跨域。当项目足够复杂时,因为涉及的组件太多了,就需要引入很多的依赖,此时管理依赖就边的很麻烦。系统环境变量,SpringBoot是可以读取系统环境变量中的配置信息的,但不推荐这么做。

2024-08-12 08:53:29 375

原创 14、MySQL高频面试题

索引可以大幅度提高查询的效率,但不是所有的字段都要加,也不是加的越多越好,因为索引会占据磁盘空间,也会影响增删改的效率。在MySQL中索引使用的数据结构是B+Tree,B+树是基于B树的变种,它具有B树的平衡性,而且树的高度更低。MySQL的很多功能都是依靠日志来实现的,比如事务回滚,数据备份,主从复制等等,常见的日志有下面几个。索引失效指的是虽然在查询的列上添加了索引,但是某些情况下,查询的时候依旧没有用到索引,常见的情况有。

2024-08-09 17:48:23 874

原创 13、Redis高频面试题

缓存预热是指系统上线后,提前将相关的缓存数据加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题,用户直接查询事先被预热的缓存数据。如果不进行预热,那么 Redis 初始状态数据为空,系统上线初期,对于高并发的流量,都会访问到数据库中,对数据库造成流量的压力。数据量不大的时候,工程启动的时候进行加载缓存动作数据量大的时候,设置一个定时任务脚本,进行缓存的刷新数据量太大的时候,优先保证热点数据进行提前加载到缓存。

2024-08-09 17:47:40 611

原创 12、JVM高频面试题

双亲委派模型是Java中的一种类加载机制。在双亲委派模型中,类加载器之间形成了一种层次继承关系,从顶端开始依次是:启动类加载器->扩展类加载器->应用类加载器->自定义类加载器当一个类加载器需要加载某个类时,它首先会委派给其上层类加载器去尝试加载该类。如果父类加载器无法加载该类,子类加载器才会尝试加载。这种层次关系形成了一个从上到下的委派链。双亲委派模型的主要目的是保证Java类的安全性和避免类的重复加载。当一个类加载器收到加载请求时,它会首先检查自己是否已经加载了该类。

2024-08-09 17:46:28 990

原创 11、分布式事务高频面试题

在分布式系统中,一个业务因为跨越不同数据库或者跨越不同微服务而包含多个子事务,要求所有子事务同时成功或失败,这就是分布式事务。比如一个电商系统的下单操作需要请求三个服务来完成,这三个服务分别是:订单服务,账户服务,库存服务。当订单生成完毕以后,就需要分别请求账户服务和库存服务进行进行账户余额的扣减和库存扣减。假设都扣减成功了,此时在执行下单的后续操作时出现了问题,那么订单数据库就进行事务回滚,订单生成失败,而账户余额和扣减则都扣减成功了。这就出现了问题,而分布式事务就是解决上述这种不一致问题的。

2024-08-09 17:45:32 1124

原创 10、RabbitMQ高频面试题

死信交换机和正常的交换机没有什么不同,当一个包含死信的队列使用属性,指定了一个交换机,这个交换机称为死信交换机消费者使用basic.reject或 basic.nack声明消费失败,并且消息的requeue参数设置为false消息是一个过期消息,超时无人消费要投递的队列消息满了,无法投递一般的死信交换机还会再跟着一个专门的队列,用来专门存储所有的死信,以方便后期的人工干预。

2024-08-09 17:40:17 743

原创 9、ES高频面试题

倒排索引倒排索引是搜索引擎的核心,它是一种像数据结构一样的散列图,可将用户从单词导向文档或网页。主要目标是快速从数百万文件中查找数据倒排索引主要体现在文档的保存和查询流程中保存文档时,会先根据文档进行分词,然后使用分好的词条作为key进行排序,然后将文档的标识作为value进行存储查询文档时,也会先对查询关键字进行分词,然后根据分好的词条直接定位相关文档,再做结果的合并。

2024-08-09 17:39:42 261

原创 8、SpringCloud高频面试题

在微服务架构中,我们会拆分出很多的服务,服务之间存在复杂的调用关系,那么这些服务一旦会出现失败的情况,就会导致服务雪崩Hystrix就是来防止服务雪崩的工具,它具有服务降级,服务熔断,服务隔离,监控等一些防止雪崩的技术。服务隔离:隔离服务之间相互影响服务监控:在服务发生调用时,会将每秒请求数、成功请求数等运行指标记录下来服务熔断:接口调用失败就会进入调用接口提前定义好的一个熔断的方法,返回错误信息服务降级:接口调用失败就调用本地的方法返回一个空。

2024-08-09 17:38:41 310

原创 6、Spring高频面试题

singletonObjects:一级缓存,存放完全初始化好的 Bean 的集合,从这个集合中取出来的 Bean 可以立马返回 earlySingletonObjects:二级缓存,存放创建好但没有初始化属性的 Bean 的集合,它用来解决循环依赖 singletonFactories:三级缓存,存放单实例 Bean 工厂的集合 singletonsCurrentlyInCreation:存放正在被创建的 Bean 的集合。关联创建时,检查“正在被创建的 Bean”中是否有即将注入的 Bean。

2024-08-09 17:35:13 725

原创 5、Mybatis高频面试题

动态 SQL 的执行原理是,当 MyBatis 执行动态 SQL 语句时,会将 SQL 语句和参数传递给 SQL 解析器进行解析。动态SQL是为了解决SQL语句灵活性不足的问题而提出的一种技术,它可以根据条件拼接SQL语句以不同的查询需求。是这样的,当实体类中的属性名和表中的字段名一样的时候,Mybatis会自动完成查询结果的映射。SQL 解析器会根据 SQL 语句中的动态标签和参数的值,生成一个完整的 SQL 语句。​ 而#{}是预编译处理,Mybatis在处理它时,会将sql中的。

2024-08-09 17:33:43 376

原创 4、线程池高频面试题

还有一点不同是:submit能够控制异常,在主线程中通过 Future 的 get 方法捕获线程中的异常;execute不可以。但是用它创建的线程池有的没有限制最大线程数,有的没有限制阻塞队列的长度,这样的话,极大可能导致OOM。了解过,Excutors是JDK提供的一个可以创建线程池的工具类,它可以创建4 种线程池。DiscardOldestPolicy:丢弃阻塞队列中靠最前的任务,并执行当前任务。临时线程的空闲时间:临时线程会在空闲这段时间后。线程池的核心线程数跟任务的性质有很大关系。

2024-08-09 17:32:47 667

原创 3、多线程高频面试题

在Java中,每个对象都隐式包含一个 monitor(监视器)对象,加锁的过程其实就是竞争 monitor 的过程,也就是启动线程的时候,只能调用start方法,如果调用的run方法,不会启动新线程,而是当普通方法调用执行。join方法是Thread类中的一个方法,它的作用是将当前线程挂起,等待其他线程结束后再执行当前线程。在我的理解中,线程共分为7种状态,分别是:新建、就绪、运行、终止以及阻塞、等待、计时等待。中有多种方法让线程按特定顺序执行,最简单的方式就是使用线程类的join方法实现。

2024-08-09 17:30:54 461

原创 2、Java集合高频面试题

​ 首先,HashMap的底层有一个数组,它在保存元素的时候,会对元素的key进行hash运算,得到hash值,然后再使用hash值对数组长度取余,得到元素在数组中的位置,这样的话,不同的元素计算完毕之后,就可能会被分配到数组中的同一个位置上,这就是所谓的哈希冲突。​ 在JDK1.8中,底层是调用resize方法实现扩容的,它的默认做法是:当元素个数超过数组长度的0.75倍时触发扩容,每次扩容的时候,都是扩容为原来的2倍, 扩展后Node对象的位置要么在原位置,要么移动到原偏移量两倍的位置。

2024-08-09 17:29:49 465

原创 1、SE基础高频面试题

深拷贝:深拷贝是一个整个独立的对象拷贝,深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对“主”对象进行拷贝,但不会复制主对象里面的对象。supper代表是父类对象,一般在本对象和父对象出现成员名称冲突时,强行调用父对象的成员,也经常用于调用父类的构造方法。不一样的是&&有短路的功能,即当符号前面的表达式为false时,后面的表达式将不再执行,而&没有这个功能。

2024-08-09 17:28:10 458

原创 0、如何回答面试题?

首先,我项目中有一个功能是短信发送,我们将生成的临时验证码存放到了redis中,利用了它的有效时间,可以过期自动删除。知识是什么,有什么特点和好处,用在什么场景下,如果带上一句在我们公司怎么用的就更好了。其次,还有一个功能是派单,我们会将工人的工号和目前的持单量放入redis中,使用。抽象类一般用于抽取子类中的共同方法和属性,接口一般用于指定实现类的规范。当然在其它项目中也有很多地方用到了它,由于时间关系,就不跟您一一列举了。的数据都保存在内存中,相比于其它硬盘类的存储,速度要快很多。

2024-08-09 17:25:10 634

原创 第二天业务题(zzyl)

老人及家属可通过小程序或电话预约参观养老院,预约成功后,系统将安排养老顾问进行对接,做好到院接待的工作,预约分为了两种,分别是探访预约和参观预约探访预约是指家里有老人已经入住了养老院,家人可以点击探访预约,看望绑定的老人参观预约是指想要参观一下养老院,了解养老院的环境、设施及服务情况点击参观预约, 跳转参观预约页面之前 当前用户今日预约取消次数>=3同一个手机号, 一个时间段内只能约一次一个时间段最多能约6个人。

2024-01-30 21:54:15 161 1

原创 第一天业务题(zzyl)

它提供了一系列的基础功能和模块,包括权限管理、代码生成、数据字典、系统监控、日志管理等,帮助开发者快速搭建企业级管理系统。这包括对项目所需功能的复杂度、开发人员的能力、项目资源等进行综合评估,以确定项目的开发周期和交付时间。总的来说,若依平台的使用相对简单,通过上述步骤可以快速搭建一个基于SpringBoot和Vue.js的管理系统,并进行定制开发以满足具体的业务需求。:通过管理后台界面,可以使用若依平台提供的各种功能模块,包括用户管理、角色权限管理、代码生成、数据字典管理等。

2024-01-28 22:36:18 372

原创 面试实录5

选择合适的数据库取决于具体的业务需求和数据特点。:RocketMQ提供了高可靠的消息传输机制,支持分布式事务消息和消息顺序传输,能够保证消息的可靠性和一致性,这对于电商系统中的订单处理、库存管理等关键业务非常重要。综上所述,Redisson相对于传统的Jedis具有更丰富的功能和API,更好的并发性和线程安全性,以及更好的性能和扩展性,适合于复杂的分布式环境和高并发访问场景。:RocketMQ具有较高的消息处理能力,能够支撑电商系统中大规模的交易数据和用户行为数据的传输和处理,保证系统的高并发和高性能。

2024-01-24 14:49:20 917 1

原创 第八天业务题

分布式锁可以通过多种方式实现,其中一些常见的包括基于数据库、基于Redis等。在Redis中,实现分布式锁通常使用了SETNX(SET if Not exists)命令,即当指定的锁键不存在时,才会进行设置。这个操作是原子性的,可以保证在并发情况下只有一个客户端能够成功地获取到锁。Redisson是一个基于Redis的Java驻内存数据网格(In-Memory Data Grid)和分布式锁服务。它通过Redis实现了一套分布式锁的机制,其原理包括以下几个步骤:Redisson在这个基础上进行了封装和优化,

2024-01-23 22:18:05 354 1

原创 中科江南二面(线下)

你挑一个核心模块介绍一下 怎么是实现的断点续传?分片是怎么进行的,具体的逻辑是怎么实现的? Feign是基于什么实现的? SpringBoot是怎么实现自动装配的? Mapper文件和xml文件的映射关系? 线程和进程之间的关系和区别? 异常是分为几种类型的,从大的异常到小的异常介绍一下 哪些异常会导致事务的回滚?还有吗? 你认为你这两个项目里面你认为比较亮点的,比较重要的模块是什么? 延迟队列的机制是什么?

2024-01-23 21:21:34 405 1

原创 面试实录3

对于就职的这两家公司接触的项目而言,你觉得这两次工作经历有什么不同吗? 对于版本的更替,变化的点有哪些,可以从业务上或者代码上介绍 你们的自定义的敏感词是怎么在项目里使用的? 这个项目你们是多少人做的?怎么分工的? 这个项目上线了吗? 我看你的项目中使用了EasyExcel,可以讲一下他关键的几步吗? 包括你在济南或者在武汉,所有的这个工作过程中,你对项目的一些代码,包括自己写的一部分或者你看其他人有过自己的见解也好,你能谈一谈你觉得就是哪块代码写的比较好,好处是什么?哪块代码写的比较差,原因是什

2024-01-23 21:17:07 368 1

原创 第二次面试

你来北京多久了?什么时候来的。

2024-01-23 21:14:14 362 1

原创 第一次面试题

手写算法题

2024-01-23 21:09:14 336 1

原创 第七天业务题

项目中优惠券功能的实现主要包括:优惠券的发放,查询优惠券,领取优惠券,根据兑换码兑换优惠券;业务流程如下:1.创建优惠券:创建优惠券可以设置使用范围,也可以设置优惠券类型和优惠力度,还可以设置推广方式,发放数量,每人限领等。2.发放优惠券:发放优惠券可以设置发放方式和发放时间范围以及使用有效期。3.领取或兑换优惠券:用户可以直接领取,或者通过兑换码领取,可以通过BitMap实现用户是否领过。

2024-01-22 22:23:32 335

原创 第六天业务题

在JDK 1.7中,ConcurrentHashMap使用了分段锁(Segment),每个Segment维护了一个HashEntry数组,不同的Segment之间相互独立,这样可以在多线程并发的情况下减少锁竞争,提高了并发性能。引入了CAS操作和Node节点,使用了更细粒度的锁控制,减少了锁的竞争,提高了并发性能。2、在单线程环境下,HashMap 的性能可能会比 ConcurrentHashMap 更好,在高并发环境下,ConcurrentHashMap 的性能通常会比 HashMap 更好。

2024-01-19 16:09:14 379 1

原创 第五天业务题

用bitmap存的话,最主要的原因是更节省空间,因为签到表的核心列就只有两个,一个是用户id,一个是签到日期,如果我们用数据库存储的话,会有大量的重复数据,而且如果想实现连续签到发放积分奖励的话,用数据库存储业务实现起来比较复杂,此时就想到了redis里的bitmap,他实际上就是String类型的二进制的字符串,如果用它存储签到信息的话,可以节省大量的空间,并且效率也是非常高的,如果要计算该用户连续签到的天数,我们只需要反转该用户对应key的bitmap的值,所以我们用bitmap实现签到功能。

2024-01-18 21:55:18 343 1

原创 第四天业务题

根据具体的项目需求和业务逻辑来使用 XXL-JOB,并根据官方文档进行详细的配置和集成。

2024-01-16 17:59:00 400 1

原创 第三天业务题

3-2 详细说一下你们的问答系统用到了几张表,表中的主要字段有哪些,表关系是什么。3-3 你们为什么用Mongo, 而不用MySQL存储问题和评论。3-1 你们的项目是如何进行参数校验的。

2024-01-15 19:54:53 359

原创 第二天业务题

用户在客户端首页浏览课程,加入课程到购物车,完成课程购买,完成支付,前端发请求到交易微服务,包含用户信息和课程信息等,交易微服务把消息投递到MQ,此时学习微服务监听MQ,订阅消息,然后补齐参数,保存课表。首先根据课表的最近一次学习时间确定用户最近学习的一个课程,然后根据课表中的课程id调用课程微服务查询课程信息,再根据课表中的章节id调用课程微服务查询章节信息,最后封装结果返回给前端。前端发查询课表的请求,后端学习微服务去数据库查询课表信息,并按最近一次学习时间倒序排列,把数据返回给前端。

2024-01-14 13:21:08 375

原创 第一天业务题

1-2 现在浏览器点击按钮出现了一个报错,如何定位发生问题的代码。1-3 你得项目中进行用户的登录和检验的详细流程是怎样的。1-1 请说一下你项目中是如何进行项目管理和发布的。1-4 说一下文章发布的流程。

2024-01-12 16:00:11 341

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除