
面试题
NewBee.Mu
这个作者很懒,什么都没留下…
展开
-
Maven 常用命令
Maven 常用命令原创 2023-02-21 14:30:54 · 593 阅读 · 1 评论 -
对于一个多模块项目,如果管理项目依赖的版本?
对于一个多模块项目,如果管理项目依赖的版本?原创 2023-02-21 14:25:39 · 220 阅读 · 0 评论 -
数据库的多租户隔离
共享数据库,共享数据架构。租户共享同一个数据库,同一张表,但在表中通过字段区分租户的数据。这是共享程度最高、隔离程度最低的模式。如果希望以最少的服务器为最多的租户提供服务,并且租户接受以牺牲隔离级别换取降低成本,这种方案最适合。一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,成本也最高。3、共享数据库,共享Schema,共享数据表。多个或所有租户共享数据库,但一个租户一个表。2、共享数据库,独立Schema。数据库的多租户隔离有三种方案。原创 2023-02-21 14:23:13 · 793 阅读 · 0 评论 -
Maven依赖原则
这样的路径长度一样怎么办呢?这样的情况下,Maven会根据pom文件声明的顺序加载,如果先声明了B,后声明了C,那就最后的依赖会是。一个项目Demo依赖了两个jar包,其中。子pom内声明的优先于父pom中的依赖。2、pom文件中申明顺序优先。路径最短,所以项目使用的是。1、路径最短优先原则。原创 2023-02-21 13:48:41 · 258 阅读 · 0 评论 -
面试题引出的知识点整理
阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消耗的时间有可能比用户代码执行的时间还要长。可重入锁又名递归锁是指在同一个线程外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提,锁对象得是同一个对象),不会因为之前已经获取过还没释放而阻塞。Java中ReentrantLock和Synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。原创 2023-02-06 19:47:43 · 1276 阅读 · 1 评论 -
面试题及其衍生知识点
面试题及其衍生知识点原创 2022-09-08 17:39:03 · 1430 阅读 · 1 评论 -
java基础面试题
java基础面试题http常用的状态码数据库索引的作用数据库索引的缺点联合索引注意事项(最左前缀原则)数据库事务三大范式索引失效的几种情况表的冗余字段什么情况下使用常见的加密算法对称加密算法和非对称加密算法的区别摘要算法加密的目的https怎么实现通信加密restful是什么前后端的跨域问题http默认端口https默认端口tcp三次握手http怎么实现数据压缩参数linux常用命令常用的数据结构数据和链表的使用场景区别有哪几种排序算法冒泡排序的时间复杂度什么是时间复杂度mybatis#{}和${}的区别$原创 2022-03-28 16:32:32 · 1245 阅读 · 0 评论 -
【面试题】a=a+b和a+=b有什么区别
一、性能方面a=a+b是加法运算 需要两次寻找地址而a+=b是增量运算有寄存器优先时 只有一次地址查找。效率方面后者略高于前者,基于现在计算机的发展可忽略不计。二、可读性方面两者都是赋值运算,一般情况下可以认为两者没有什么区别,但前者与数学算法描述更接近相对来说更严谨而后者书写更快捷但可读性下降。三、数据类型方面两者写法上主要在于是否能进行数据类型自动转换,事实上就是类型与精度上的差异。eg:当两个操作数的数据类型一致时两种形式的运算结果没有差别,但数据类型不同且a值的数据类型精度低时,此时两种形原创 2022-03-24 11:16:44 · 4298 阅读 · 0 评论 -
Spring学习笔记
Spring知识点Spring是如何创建一个Bean对象的Spring是如何创建一个Bean对象的OrderService这是一个BeanUserService这也是一个Bean,依赖了OrderService这个BeanAppConfig表示一个配置类,定义了一个扫描的路径test类中的main方法,先去创建Spring容器,然后再通过Spring容器我们去getBean,就会得到一个UserService的Bean对象,然后再去调这个对象的test方法众所周知,在java中,想要创建原创 2022-03-19 16:29:12 · 569 阅读 · 0 评论 -
常见的HTTP相应状态码
200:请求被正常处理204:请求被受理但没有资源可以返回206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法301:永久性重定向302:临时重定向303:与302状态码有相似功能,只是它希望客户端再请求一个URI的时候,能通过GET方法重定向到另一个URI上304:发送附带条件的请求时,条件不满足时返回,与重定向无关307:临时重定向,与302类似,只是强制要求使用POST方法400:请求报文语法有误,服务器无法识别401:请求需要认证403:请求的对应资源被访问原创 2022-02-28 21:47:13 · 277 阅读 · 0 评论 -
面试中遇到的java笔试题
Java笔试题1、Hadoop几大核心组成别为?2、关于Hadoop,以下说法正确的是?3、Kafka消息队列中的broker的作用是?1、Hadoop几大核心组成别为?A. HDFSB. MapReduceC. YarnD. Hive答案:ABC解释:Hadoop的三大核心组件分别是:HDFS(Hadoop Distribute File System):hadoop的数据存储工具。YARN(Yet Another Resource Negotiator,另一种资源协调者):Hadoo原创 2022-02-22 23:36:26 · 12378 阅读 · 14 评论 -
【面试笔试题】遍历
在射箭比赛中,每人射10次,射箭成绩为0-10分,选手甲完成了10次射箭。通过编码的方式实现选手甲获得相同分数的次数大于5次的分数,若没有就显示没有分数大于5次的分数。示例:选手甲得分为:8,0,9,8,8,8,6,8,8,9;则选手甲获得相同分数的次数大于5次的分数是8分。输入:8,0,9,8,8,8,6,8,8,9输出:8import java.util.HashMap;import java.util.Iterator;import java.util.Scanner;import j原创 2022-02-17 13:06:21 · 492 阅读 · 0 评论 -
Executor工厂方法可以创建出哪四种线程池
① newCachedThreadPool:创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。② newFixedThreadPool:创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。③ newScheduledThreadPool:创建一个定长线程池,支持定时及周期性任务执行。④ newSingleThreadPool:创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序执行。...原创 2022-01-16 15:38:12 · 382 阅读 · 0 评论 -
equalsIgnoreCase()和equals()的区别(从源码分析)
在项目中校验验证码是否正确的时候用到了equalsIgnoreCase()方法,就很好奇为什么不使用equals()方法,于是去查看了源码:都在String.class里面 public boolean equalsIgnoreCase(String anotherString) { return (this == anotherString) ? true : (anotherString != null) &&a原创 2022-01-13 17:39:37 · 2213 阅读 · 0 评论 -
【面试题】如果你提交任务时,线程池队列已满,这时会发生什么
有俩种可能:1、如果使用的是无界队列 LinkedBlockingQueue,也就是无界队列的话,没关系,继续添加任务到阻塞队列中等待执行,因为 LinkedBlockingQueue 可以近乎认为是一个无穷大的队列,可以无限存放任务2、如果使用的是有界队列比如 ArrayBlockingQueue,任务首先会被添加到ArrayBlockingQueue中,ArrayBlockingQueue 满了,会根据maximumPoolSize 的值增加线程数量,如果增加了线程数量还是处理不过来,ArrayBl原创 2022-01-12 22:59:27 · 2976 阅读 · 0 评论 -
四种线程池拒绝策略
1、AbortPolicy直接丢弃任务,抛出RejectedExecutionException异常,是默认策略2、CallerRunsPolicy只用调用者所在的线程处理任务3、DiscardOldestPolicy丢弃等待队列中最旧的任务,并执行当前任务4、DiscardPolicy直接丢弃任务,但不抛出异常...原创 2022-01-12 22:58:31 · 2483 阅读 · 0 评论 -
常用并发队列的介绍
1. 非堵塞队列:1. ArrayDeque, (数组双端队列)ArrayDeque (非堵塞队列)是JDK容器中的一个双端队列实现,内部使用数组进行元素存储,不允许存储null值,可以高效的进行元素查找和尾部插入取出,是用作队列、双端队列、栈的绝佳选择,性能比LinkedList还要好。2. PriorityQueue, (优先级队列)PriorityQueue (非堵塞队列) 一个基于优先级的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator原创 2022-01-12 22:53:27 · 619 阅读 · 0 评论 -
mysql和oracle的区别
mysql和oracle的区别:1、类型和成本的区别oracle数据库是一个对象关系数据库管理系统(ORDBMS),一个重量型数据库。它通常被称为Oracle RDBMS或简称为Oracle,是一个收费的数据库。MySQL是一个开源的关系数据库管理系统(RDBMS),一个是轻量型数据库。它是世界上使用最多的RDBMS,作为服务器运行,提供对多个数据库的多用户访问。它是一个开源、免费的数据库。2、存储上的区别与Oracle相比,MySQL没有表空间,角色管理,快照,同义词和包以及自动存储管理。3、转载 2022-01-05 13:30:58 · 460 阅读 · 0 评论 -
【面试题】什么情况下会触发Eureka的自我保护机制
Eureka Server在运行期间会去统计心跳成功的比例在15分钟之内是否低于85% , 如果低于85%, Eureka Server会认为当前实例的客户端与自己的心跳连接出现了网络故障,那么Eureka Server会把这些实例保护起来,让这些实例不会过期导致实例剔除。这样做的目的是为了减少网络不稳定或者网络分区的情况下,Eureka Server将健康服务剔除下线的问题。 使用自我保护机制可以使得Eureka 集群更加健壮和稳定的运行。进入自我保护状态后,会出现以下几种情况Eureka Ser原创 2021-12-30 18:11:52 · 551 阅读 · 0 评论 -
数据库视图是什么,和表有什么区别和联系
区别1、视图是已经编译好的sql语句,而表不是;2、视图没有实际的物理记录,而表有;3、表是内容,视图是窗口;4、表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能用创建的语句来修改;5、表是三级模式结构中的概念模式,试图是外模式;6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合,从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构;7、表属于全局模式中的表,是实表,视图属于局部模式的表,是虚表;转载 2021-12-29 19:06:06 · 4298 阅读 · 1 评论 -
Integer对象之间的比较
1、Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。2、无论如何,Integer与new Integer()不会相等。不会经历拆箱过程,new Integer()的引用指向堆,而Integer指向专门存放他的内存(常量池),他们的内存地址不一样,使用 == 比较都为false。3、两个都是非new出来的Integer,使用 == 比较,如果数在-128到127之间,则是true,否则为false4、两个都是new出来的,==比较都为false。若要比较值是否相等,需使原创 2021-12-27 16:11:20 · 1973 阅读 · 0 评论 -
项目中redis的简单使用
字符串在redis中的存入,取出和删除@Autowirdprivate StringRedisTemplate stringRedisTemplate;//存入redis// key// value// 缓存的默认超时时间,例子是2小时// 时间单位,例子是秒stringRedisTemplate.opsForValue().set("key","value",2*60*60,TimeUnit.SECONDS);//从redis中取出stringRedisTemplate.opsFo原创 2021-12-15 11:41:48 · 1244 阅读 · 0 评论 -
RabbitMQ的五种工作模式和两种消费模式
RabbitMQ提供了6种消息模型,但是第6种其实是RPC,并不是MQ,因此不予学习。那么也就剩下5种。但是其实3、4、5这三种都属于订阅模型,只不过进行路由的方式不同。1、基本消息模型(Hello World)RabbitMQ是一个消息代理:它接受和转发消息。 你可以把它想象成一个邮局:当你把邮件放在邮箱里时,你可以确定邮差先生最终会把邮件发送给你的收件人。 在这个比喻中,RabbitMQ是邮政信箱,邮局和邮递员。RabbitMQ与邮局的主要区别是它不处理纸张,而是接受,存储和转发数据消息的二原创 2021-12-11 21:29:36 · 8284 阅读 · 0 评论 -
feign架构的最大特点
feign主要做的远程服务端调用,他的最大特点是他能够像调用本地接口一样进行远程服务端的调用,RPC的调用。RPC英文全称remote procedure call 翻译成中文的意思就是远程过程调用。RPC的出现其实主要是为了解决分布式系统间的通信透明性的问题。那什么是分布式系统的通信透明性问题?这个问题就是指分布式系统间的相互调用其实是基本进程间的显式消息交换,然而,消息的发送和接收过程无法隐藏。而通信的隐藏对于分布式中实现访问的透明性是极为重要的。试想一下比如你要想查看一个订单详情,然后订单系统部署原创 2021-12-11 17:44:41 · 3085 阅读 · 0 评论 -
SpringCloud中的application-test.yml剖析(以user模块为例)
eureka: instance: prefer-ip-address:true #配置eureka.instance.prefer-ip-address = true 就可以将IP注册到Eureka Server上,而如果不配置就是机器的主机名 client: service-url: defaultZone:http://{用户名}:{密码}@路径:端口号/eureka/spring: application: name: x-user #模块名,也就是注册到eureka上显示原创 2021-12-08 14:19:25 · 552 阅读 · 0 评论 -
Java1.8新增元注解@Repeatable
最近在复习元注解这一块的时候,发现Java1.8除了带来了很多新特性以外,还带来了一个新的元注解@Repeatable@Repeatable这个元注解的作用就是他注解的值可以取多个,是可以重复的举个栗子,假设我很牛,我一个人可以干产品,可以干前端,可以干后端,还可以做测试。。。@interface Mines{ Mine[] value();}@Repeatable(Mines.class)@interface Mine{ String role default "";}@原创 2021-12-07 19:50:28 · 549 阅读 · 0 评论 -
BeanFactory 和factoryBean的差别
BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似...原创 2021-04-22 15:49:33 · 136 阅读 · 0 评论 -
jvm常用配置参数
jvm常用配置参数-Xms初始内存大小,默认为物理内存的 1/64,等价于 -XX:InitialHeapSize-Xmx最大内存大小,默认为物理内存的1/4,等价于 -XX:MaxHeapSize-Xss设置单个线程栈的大小,一般默认为 512k ~ 1024k,等价于 -XX:TheadStackSize-Xmn设置年轻代大小,一般不用动-XX:MetaspaceSize设置元空间大小...原创 2021-04-22 15:38:24 · 165 阅读 · 0 评论 -
公平锁和非公平锁的性能差异
公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。优点:所有的线程都能得到资源,不会饿死在队列中。缺点:吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。非公平锁:多个线程去获取锁的时候,会直接去尝试获取,获取不到,再去进入等待队列,如果能获取到,就直接获取到锁。优点:可以减少CPU唤醒线程的开销,整体的吞吐效率会高点,CPU也不必取唤醒所有线程,会减少唤起线程的数量。缺点:你们可能也发现了,这样可能导致原创 2021-04-22 15:14:34 · 638 阅读 · 0 评论 -
如何判断链表是否有环
有两个指针fast和slow,开始的时候两个指针都指向链表头head,然后在每一步操作中slow向前走一步即:slow = slow->next,而fast每一步向前两步即:fast = fast->next->next。由于fast要比slow移动的快,如果有环,fast一定会先进入环,而slow后进入环。当两个指针都进入环之后,经过一定步的操作之后二者一定能够在环上相遇,并且此时slow还没有绕环一圈,也就是说一定是在slow走完第一圈之前相遇。...原创 2021-04-20 14:30:07 · 141 阅读 · 0 评论 -
arraylist扩容机制
如果没有向集合中添加任何元素时, 容量为0 size为0添加第一个元素的时候,容量为10 才扩容 容量第一次为10 后面是原来的1.5倍原创 2021-04-20 14:13:07 · 159 阅读 · 0 评论 -
Hash索引和B+树索引有什么区别
首先要知道Hash索引和B+树索引的底层实现原理:hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据。B+树底层实现是多路平衡查找树。对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据。那么可以看出他们有以下的不同:1、hash索引进行等值查询更快(一般情况下),但是却无法进行范围查询。因为在hash索引中经过hash函数建立索引之后,索引的顺序与原顺序无法保持一致,不能支持范围原创 2021-04-19 14:03:36 · 2778 阅读 · 0 评论 -
wait和sleep的区别
1、原理不同sleep()方法是Thread类的静态方法,是线程用来控制自身流程的,他会使此线程暂停执行一段时间,而把执行机会让给其他线程,等到计时时间一到,此线程会自动苏醒。例如,当线程执行报时功能时,每一秒钟打印出一个时间,那么此时就需要在打印方法前面加一个sleep()方法,以便让自己每隔一秒执行一次,该过程如同闹钟一样。而wait()方法是object类的方法,用于线程间通信,这个方法会使当前拥有该对象锁的进程等待,直到其他线程调用notify()方法或者notifyAll()时才醒来,不过开原创 2021-04-19 13:56:48 · 259 阅读 · 0 评论 -
spring中@Configuration注解的作用
@Configuation等价于<Beans></Beans>配置spring容器用@Configuration注释类表明其主要目的是作为bean定义的源@Configuration类允许通过调用同一类中的其他@Bean方法来定义bean之间的依赖关系原创 2021-04-19 10:55:21 · 432 阅读 · 0 评论 -
ThreadLocal 是什么?有哪些使用场景?
ThreadLocal 是线程本地存储,在每个线程中都创建了一个 ThreadLocalMap 对象,每个线程可以访问自己内部 ThreadLocalMap 对象内的 value。经典的使用场景是为每个线程分配一个 JDBC 连接 Connection。这样就可以保证每个线程的都在各自的 Connection 上进行数据库的操作,不会出现 A 线程关了 B线程正在使用的 Connection; 还有 Session 管理 等问题。...原创 2021-04-16 16:43:07 · 400 阅读 · 0 评论 -
脏读、不可重复读、幻读以及数据库的四个隔离级别
脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。不可重复读:是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。幻读:是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行原创 2021-04-16 16:28:08 · 339 阅读 · 0 评论 -
Spring五个隔离级别
1、DEFAULT (默认)这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。另外四个与JDBC的隔离级别相对应。2、READ_UNCOMMITTED (读未提交)这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。3、READ_COMMITTED (读已提交)保证一个事务修改的数据提交后才能被另外一个事务读取,另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏原创 2021-04-16 16:19:28 · 2917 阅读 · 0 评论 -
Spring事务七大传播机制
1、 required(默认属性)如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。被设置成这个级别时,会为每一个被调用的方法创建一个逻辑事务域。如果前面的方法已经创建了事务,那么后面的方法支持当前的事务,如果当前没有事务会重新建立事务。2、 Mandatory支持当前事务,如果当前没有事务,就抛出异常。3、 Never以非事务方式执行,如果当前存在事务,则抛出异常。4、 Not_supports以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。5、 require原创 2021-04-16 15:29:49 · 278 阅读 · 0 评论 -
union all和union的区别
在数据库当中,union all和union都是可以有效进行两个结果合并整理,但是在效率上两者是截然不同的。Union在整理的过程中会将一些重复的选项筛选,并且针对所产生的结果进行排列顺序之后运算。所删除的记录会再次返回到结果当中。但是通常来说,在很多的数据整理当中,都很少会出现重复记录,所以union相对而言是比较占用时间的。Union all操作过程中会针对两个结果直接合并之后就会返回。如果所返回的数据结果当中有重复的数据,那么所返回的结果当中也会有重复的数据。如果针对需要进行合并的数据库可以确原创 2021-04-16 15:16:40 · 177 阅读 · 0 评论 -
多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么
多线程的实现方法1.直接继承thread类;2.实现runnable接口;3.实现callable接口;同步的实现方法1.同步方法;2.同步代码块;3.使用特殊域变量(volatile)实现线程同步;4.使用重入锁实现线程同步;5.使用局部变量实现线程同步 。...原创 2021-04-16 15:12:24 · 361 阅读 · 0 评论