面试题
文章平均质量分 86
调皮狗
平时最喜欢吃啵啵薯条
展开
-
Java面试题———SpringCloud篇
在微服务架构中,我们会拆分出很多的服务,服务之间存在复杂的调用关系,那么这些服务一旦会出现失败的情况,就会导致服务雪崩Hystrix就是来防止服务雪崩的工具,它具有服务降级,服务熔断,服务隔离,监控等一些防止雪崩的技术。它有四种防雪崩手段:服务隔离:隔离服务之间相互影响服务监控:在服务发生调用时,会将每秒请求数、成功请求数等运行指标记录下来服务熔断:接口调用失败就会进入调用接口提前定义好的一个熔断的方法,返回错误信息服务降级:接口调用失败就调用本地的方法返回一个空。原创 2024-10-14 17:39:45 · 488 阅读 · 0 评论 -
Java面试题———SpringBoot篇
我们只需要在SpringBoot的启动类上添加一个@SpringBootApplication的注解,就可以开启自动装配。使用@ConfigurationProperties注解把对应的值绑定到一个配置对象,然后将配置对象注入到需要的地方。版本锁定:SpringBoot在父工程中进行了大量常见依赖的版本锁定,省去了我们查找依赖版本和解决版本冲突的麻烦。跨域是指浏览器不能执行其他网站的脚本。起步依赖:SpringBoot以功能化的方式将需要的依赖进行组装,并且允许程序员以starter的方式进行引入。原创 2024-10-14 17:38:48 · 559 阅读 · 0 评论 -
Java面试题———Spring篇
singletonObjects:一级缓存,存放完全初始化好的 Bean 的集合,从这个集合中取出来的 Bean 可以立马返回 earlySingletonObjects:二级缓存,存放创建好但没有初始化属性的 Bean 的集合,它用来解决循环依赖 singletonFactories:三级缓存,存放单实例 Bean 工厂的集合 singletonsCurrentlyInCreation:存放正在被创建的 Bean 的集合。关联创建时,检查“正在被创建的 Bean”中是否有即将注入的 Bean。原创 2024-10-13 21:52:49 · 461 阅读 · 0 评论 -
Java面试题———MyBatis篇
动态SQL是为了解决SQL语句灵活性不足的问题而提出的一种技术,它可以根据条件拼接SQL语句以不同的查询需求。1、处理方式不同:${}表示的是字符串拼接,Mybatis在处理它时,会直接将${}替换成变量的值。是这样的,当实体类中的属性名和表中的字段名一样的时候,Mybatis会自动完成查询结果的映射。2、字段起别名:可以在查询的SQL语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。SQL 解析器会根据 SQL 语句中的动态标签和参数的值,生成一个完整的 SQL 语句。原创 2024-10-13 21:50:29 · 450 阅读 · 0 评论 -
Java面试题———线程池篇
execute不可以。但是用它创建的线程池有的没有限制最大线程数,有的没有限制阻塞队列的长度,这样的话,极大可能导致OOM(内存溢出)IO密集型时,即该任务需要大量的IO,大部分线程都阻塞,则需要多配置线程数,推荐配置为CPU核数的2倍。如果核心线程都在执行任务,则判断工作队列是否已满,如果没满,则将新提交的任务存储在这个工作队列里。首先判断线程池里的核心线程是否都在执行任务,如果不是,则创建一个新的工作线程来执行任务。如果工作队列满了,则判断线程数是否小于最大线程数,如果是,则创建临时线程直接执行任务。原创 2024-09-22 21:44:45 · 656 阅读 · 0 评论 -
Java面试题———线程篇
Lock 呢底层其实是 CAS 乐观锁的体现,它无所谓,别人抢了它吃的,它重新去拿吃的就好啦,所以它很乐观。自选锁即是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待(不放弃 CPU 资源),然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环,此时获取锁的线程一直处于活跃状态(而非阻塞)。线程对变量的所有的操作(读,写)都必须在工作内存中完成,而不能直接读写主内存中的变量,不同线程之间也不能直接访问对方工作内存中的变量,线程间变量的值的传递需要通过主内存完成。原创 2024-09-22 21:42:21 · 1271 阅读 · 0 评论 -
Java面试题——集合篇
首先,HashMap的底层有一个数组,它在保存元素的时候,会对元素的key进行hash运算,得到hash值,然后再使用hash值对数组长度取余,得到元素在数组中的位置,这样的话,不同的元素计算完毕之后,就可能会被分配到数组中的同一个位置上,这就是所谓的哈希冲突。在JDK1.8中,底层是调用resize方法实现扩容的,它的默认做法是:当元素个数超过数组长度的0.75倍时触发扩容,每次扩容的时候,都是扩容为原来的2倍, 扩展后Node对象的位置要么在原位置,要么移动到原偏移量两倍的位置。原创 2024-09-12 20:29:33 · 892 阅读 · 0 评论 -
Java面试题——基础篇
深拷贝是一个整个独立的对象拷贝,深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。用于基本类型的变量比较时: ==比较的是值是否相等,equals不能直接用于基本数据类型的比较,需要转换为其对应的包装类型。不一样的是&&有短路的功能,即当符号前面的表达式为false时,后面的表达式将不再执行,而&没有这个功能。&和&&都是逻辑运算符,都可以实现取并的效果,即符号两边的表达式都为true,结果才是true。原创 2024-09-12 20:28:15 · 1354 阅读 · 0 评论