java面试题(24)

这篇具有很好参考价值的文章主要介绍了java面试题(24)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、重写equals()方法的原则

1、对称性:

如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是
“true”。

2、自反性:

x.equals(x)必须返回是“true”。

3、传递性:

如果x.equalsl(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true”。

4、一致性:

如果x.equals(y)返回是“true”,只要x和y内容一直不变,不管重复x.equals(y)多少次,返回结果都是“true”。

5、其他:

任何情况下,x.equals(null),永远返回是“false”:
x.equals(与x不同类型的对象)永远返回是“false”。

2、MySQL进程阻塞了之后,如何查询和中断

1、查询阻塞:
(1)检查MySQL的日志文件,查看是否有错误或超时的查询。
(2)使用SHOWPROCESSLIST命令查看当前正在执行的查询进程,判断是否有长时间运行的查询。
(3)使用MySQL自带的工具mysqldumpslow来统计查询耗时,并查看是否有长时间运行的查询。

2、解决查询阻塞问题
(1)优化查询语句。可以通过优化查询语句、添加索引等方式来提高查询效率,尽可能减少查询阻塞的可能性。
(2)调整MySQL参数。可以根据服务器的具体情况,调整MySQL的参数,包括缓存大小、线程数、连接数等。
(3)分析MySQL的运行状态。可以使用MySQL的各种性能分析工具,如EXPLAIN、SHOWSTATUS等,分析MySQL的运行状态,找到瓶颈所在,并加以优化。
(4)使用MySQL的事务隔离机制。可以使用MySQL的事务隔离机制来解决查询阻塞的问题,如使用锁定功能、设置隔离级别等。
(5)升级MySQL版本。如果使用的MySQL版本较老,可以考虑升级到最新版,从而获得更好的性能和稳定性。

3、预防查询阻塞
(1)合理设计数据库结构。合理设计数据库结构,优化查询语句,尽可能减少不必要的查询,可以有效降低查询阻塞的可能性。
(2)使用缓存。可以使用缓存来减少对数据库的访问次数,从而减少查询阻塞的可能性。
(3)控制并发连接数。合理控制并发连接数,可以有效降低查询阻塞的风险。
(4)监控MySQL运行状态。及时监控MySQL的运行状态,及时发现并解决性能问题,是预防查询阻塞的重要手段。

3、MySQL如何查询索引是否命中

1、explain查看sql语句的信息

explain sql语句可以分析sql语句的执行逻辑、顺序,以及是否使用索引、对记录进行操作时扫描的行数等信息。

2、Explain参数

参数1:table:表名
参数2:id:在一个大的查询语句中每个select关键字都对应一个唯一的id
参数3:select_type:SELECT关键字对应查询的类型,确定小查询在整个大查询中扮演了一个什么角色
参数4:partition(略):匹配的分区信息
参数5:type:针对单表的访问方法
参数6:possible_keys和key:可能用到的索引 和 实际上使用的索引
参数7:key_len:实际使用到的索引长度(即:字节数),帮你检查是否充分的利用上了索引当前key长度值越大越好(主要针对于联合索引,有一定的参考意义)
参数8:ref:当使用索引列等值查询时,与索引列进行等值匹配的对象信息(比如只是一个常数或者是某个列)
参数9:rows:预估的需要读取的记录条数(值越小越好)
参数10:filtered: 某个表经过搜索条件过滤后剩余记录条数的百分比
参数11:Extra:一些额外的信息,更准确的理解MySQL到底将如何执行给定的查询语句

4、自己如何写一个函数式接口

1、Java中重要的函数接口
java面试题(24),Java,java,android,开发语言

2、函数式接口
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
@FunctionalInterface注解
在Java8版本中引入了@FunctionalInterface函数式接口进行校验,用来检验我们所编写的接口是否有且只有一个抽象方法,例如:

@FunctionalInterface
public interface MyFunctionalInterface(){
	void method();
}

3、实现函数式接口的集中方法
1、外部类
2、静态内部类
3、局部内部类
4、匿名内部类
5、lambda表达式实现

//接口
interface ILove{
    void love(int a);
}
//外部类
class Love implements ILove{
    @Override
    public void love(int a) {
        System.out.println("用外部类实现接口");
        System.out.println("I Love You==>" + a);
    }
}
public class Lambda {
    //静态内部类
    static class Love1 implements ILove {
        @Override
        public void love(int a) {
            System.out.println("用静态内部类实现接口");
            System.out.println("I Love You==>" + a);
        }
    }

    public static void main(String[] args) {
        //局部内部类
        class Love2 implements ILove{
            @Override
            public void love(int a) {
                System.out.println("用局部内部类实现接口");
                System.out.println("I Love You==>" + a);
            }
        }
        new Love().love(1);
        new Love1().love(2);
        new Love2().love(3);
        //匿名内部类
        new ILove() {
            @Override
            public void love(int a) {
                System.out.println("用匿名内部类实现接口");
                System.out.println("I Love You==>" + a);
            }
        }.love(4);
        //lambda表达式
        System.out.println("用lambda实现接口");
        ILove love=a -> System.out.println("I Love You==>" + a);
        love.love(5);
        System.out.println("注意:lambda只能实现函数式接口");
    }

}

5、Sentianl 服务熔断和服务降解

限流:
限制并发的请求访问量,超过阈值则拒绝;
降级:
服务分优先级,牺牲非核心服务(不可用),保证核心服务稳定;从整体负荷考虑;
熔断:
依赖的下游服务故障触发熔断,避免引发本系统崩溃;系统自动执行和恢复

6、springboot 自动配置怎么实现

springboot启动时,会通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,XxxxAutoConfiguration加载的时候会将全局配置application.properties或application.yml中的配置绑定到XxxxProperties类中(没有配置的属性将使用默认配置),注入到spring的ioc容器中。

7、Redission实现原理

java面试题(24),Java,java,android,开发语言

8、B树和B+树的区别

1、B树

1、这里的 B 是 Balance(平衡)的缩写。它是一种多路的平衡搜索树。
2、它跟普通的平衡二叉树的不同是,B树的每个节点可以存储多个数据,而且每个节点不止有两个子节点,最多可以有上千个子节点。
3、B树中每个节点都存放着索引和数据,数据遍布整个树结构,搜索可能在非叶子节点结束,最好的情况是O(1)。
4、一般一棵 B 树的高度在 3 层左右,3 层就可满足 百万级别的数据量。

2、B+树

1、叶子节点保存了完整的索引和数据,而非叶子节点只保存索引值,因此它的查询时间固定为 log(n).
2、叶子节点中有指向下一个叶子节点的指针,叶子节点类似于一个单链表
正因为叶子节点保存了完整的数据以及有指针作为连接,B+树可以增加了区间访问性,提高了范围查询,而B树的范围查询相对较差
3、B+树更适合外部存储。因为它的非叶子节点不存储数据,只保存索引。文章来源地址https://www.toymoban.com/news/detail-534257.html

到了这里,关于java面试题(24)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java高级开发面试题整理

    1、什么是进程和线程? 进程是指程序的一次执行过程,是系统运行程序的基本单位,系统运行一个程序就是一个进程创建、运行、到销毁的过程;一个进程可以有多个线程。比如我跑一个java的main方法,系统就创建了一个java进程,这个main方法所在的线程就是这个进程的一个

    2024年02月08日
    浏览(47)
  • Java开发面试--MongoDB专区

    1、你是否了解 MongoDB? 答: 是的,我了解 MongoDB。MongoDB是一个流行的NoSQL数据库,它以文档的形式存储数据,具有高度的灵活性和可扩展性。我熟悉MongoDB的基本概念和特性,例如集合(Collection)、文档(Document)、索引(Index)等。 对MongoDB的了解 如下: 数据模型 :MongoD

    2024年02月07日
    浏览(34)
  • Java开发面试--RabbitMQ专区

    1、 RabbitMQ 是什么,它的优势和使用场景是什么? 答: RabbitMQ 是一种开源的消息代理和队列服务器,它允许应用程序顺序地读写、发送和接收消息。基于Erlang语言开发,支持多种客户端,如Python、Ruby、.NET、Java等,支持多种消息协议,如AMQP、STOMP、MQTT等。 RabbitMQ的主要优势

    2024年02月08日
    浏览(38)
  • 【java面试】Java开发当中遇到的问题以及解决方法(147)

    问题一: 每个公司都有部门树结构,但是大公司的部门树每年可能会发生调整; 一般开发中我们都是直接根据部门ID去查询或者过滤数据或者做权限管控; 部门调整以后,可能就会查询不到数据或者过滤数据出问题; 如何解决 :每年调整的部门ID和原来的部门ID做映射关系(

    2024年01月24日
    浏览(48)
  • Java后端开发面试题——框架篇

    Spring框架中的bean是单例的吗?Spring框架中的单例bean是线程安全的吗? singleton : bean在每个Spring IOC容器中只有一个实例。 prototype:一个bean的定义可以有多个实例。 Spring bean并没有可变的状态(比如Service类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的 如果在bean中定

    2024年02月12日
    浏览(42)
  • Java后端开发面试题——多线程

    创建线程的方式有哪些? 继承Thread类 实现runnable接口 实现Callable接口 线程池创建线程 runnable 和 callable 有什么区别? Runnable 接口run方法没有返回值 Callable接口call方法有返回值,是个泛型,和Future、FutureTask配合可以用来获取异步执行的结果 Callable接口的call()方法允许抛出异常

    2024年02月10日
    浏览(34)
  • Java开发之Mysql【面试篇 完结版】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文主要记录mysql的查询、索引、sql优化、事务、主从同步、分库分表等问题的分析与面试回答示例。 提示:以下是本篇文章正文内容,下面案例可供参考 ① 问题引入 聚合查询 多表查询 表数据量过大

    2024年02月09日
    浏览(39)
  • 服务端开发之Java秋招面试11

    努力了那么多年,回头一望,几乎全是漫长的挫折和煎熬。对于大多数人的一生来说,顺风顺水只是偶尔,挫折、不堪、焦虑和迷茫才是主旋律。我们登上并非我们所选择的舞台,演出并非我们所选择的剧本。继续加油吧! 目录 1.MySQL的多版本并发控制具体实现过程?怎么保证可重

    2023年04月17日
    浏览(39)
  • Java后端开发面试题——消息中间篇

    RabbitMQ-如何保证消息不丢失 交换机持久化: 队列持久化: 消息持久化 ,SpringAMQP中的的消息默认是持久的,可以通过MessageProperties中的DeliveryMode来指定的  消费者确认 manual:手动ack,需要在业务代码结束后,调用api发送ack。 auto:自动ack,由spring监测listener代码是否出现异常

    2024年02月11日
    浏览(37)
  • 华创云鼎面试:java后端开发

    华创云鼎面试: 1、项目:项目业务介绍、项目人员组成 2、分布式锁用过哪些 基于数据库的锁:可以使用关系型数据库的事务和行级锁来实现分布式锁。通过在数据库中创建一个标志位或特定的锁表来表示资源的锁定状态,其他进程在访问该资源之前需要先获取该锁。这种方法

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包