• Java中级面试题记录(四)


    一面面试题

    1.Innodb的行数据存储模式

    https://baijiahao.baidu.com/s?id=1775090633458928876&wfr=spider&for=pc

    2.行数据包含哪些信息?

    https://baijiahao.baidu.com/s?id=1775090633458928876&wfr=spider&for=pc

    3.MySQL在进行存储VARCHAR的时候,如果存的长度和设计的长度不一致时,如何进行寻址的

    在MySQL中,当你存储一个VARCHAR数据类型时,实际存储的长度是根据你实际存储的数据长度决定的,而不是根据你为该字段指定的最大长度。因此,当你存储长度小于最大长度的数据时,MySQL不会浪费空间来存储未使用的字节。
    当你在查询数据时,MySQL会根据实际存储的数据长度来寻址。它会使用一个附加的字节来存储实际数据长度,这个字节位于VARCHAR值的前面。MySQL使用这个实际数据长度来定位到正确的字节位置,以便正确地读取和解析数据。
    因此,即使你存储的字符串长度与你在表定义中指定的最大长度不一致,MySQL仍然能够正确地寻址和读取数据。

    4.MySQL中行数据的null是如何存储的?

    对于InnoDB存储引擎,NULL值在行数据中占用一个特殊的字节表示。这个字节被标记为“NULL”标志,以区别于其他类型的值。在查询数据时,MySQL会检查这个字节的状态,以确定该字段是否为NULL。

    5.MySQL中null如何检索的?

    在这里插入图片描述

    6.MySQL中如何把null排在最前面?

    在MySQL中,默认情况下,NULL值被视为最小值,即它们排在所有其他值的前面,也可以使用以下方法手动排序,
    因为MySQL中不像Orcal支持nulls first和nulls last语法,因此可以改变写法实现指定Null的排序:

    • null排在前面: order by IF(ISNULL(my_field),0,1),my_field;
    • null排在后面: order by IF(ISNULL(my_field),1,0),my_field;

    7.排序时,假如成绩表,对成绩排序,只想让80-90的排在最前面,怎么排?

    方式一:
    先将80-90分数的查询出来,然后使用UNION 关联剩余人员成绩
    方式二:
    排序时使用判断语句CASE ,给80-90分的设置一个最高的值 ,然后按照降序排列
    方式三:
    通过filed函数来进行指定排序

    8.MySQL如何进行特定排序,比如将用户订单最多的排在最前面?如果客户和订单都比较多时排序?

    先对订单表进行分组查询,统计出每个客户对应的订单数量并进行升序排列
    然后在程序中补全客户信息

    9.GROUP之后再进行排序,如何实现?

    直接在SQL语句后边添加ORDER BY 语句

    10.B+树的特别和B树的区别?

    B+树的非叶子节点不会存储行数数据,B树的非叶子节点会存储行数据
    B+的叶子节点是双向链表

    11.组合索引查询数据的过程?

    12.批量2000W条的数据弄到内存中处理,比如更新某一个字段的状态?

    13.比如客户表2000W 订单表5000W ,要求10分钟内将客户的订单数量大于10的更新为1星客户?

    14.慢查询SQL如何进行优化?单SQL就很慢,并且SQL已经没有优化空间了,该如何处理?

    15.JAVA线程池的拒绝策略有几种?默认的是哪种?

    16.线程池的阻塞队列类型有几种?

    • LinkedBlockingQueue
    • SynchronousQueue
    • ArrayBlockingQueue

    17.我想先进来的任务最后执行?该用哪种类型的结构更合适?

    LinkedBlockingDeque

    18.线程之间的通讯(主线程和子线程)?

    • 用volatile变量修饰公共变量
    • 通过原子引用类的公共变量
    • 通过ITL或者TTL修饰的公共变量
    • 通过 Object类的 wait/notify 方法
    • 使用JUC包中的Condition的await方法让线程等待,使用signal方法唤醒线程
    • 使用LockSupport类中的park和unpark来实现

    19.开启子线程的时候,想在子线程中获取主线程中结果?

    • 用volatile变量修饰公共变量
    • 通过原子引用类的公共变量
    • 通过ITL或者TTL修饰的公共变量

    20.MQ除了RabbitMQ外还熟悉其它的MQ吗?

    21.如何解决重复发送消息的问题?

    每个消息都设置一个全局唯一标识,这样即使出现重复投递的现象,只要我们在消费端保证不重复消费就行

    22.MyBatis的类型转换有没有做了解,项目中有用过吗?

    地图字段、json类型字段

    23.请求接口的加解密有用过吗,我想所有请求的请求参数和响应参数都加密该如何处理?

    24.Springboot的自动装配?

    Springboot项目启动后会扫描所有jar包里面META-INF文件夹下面的spring.factories文件,从文件中获取需要进行自动装配的类,然后再根据项目pom文件中引入的starter和配置文件中的配置自动生成对应装配的bean到ioc容器中。

    25.@Configuration和@ConfigurationProperties区别?

    @Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法返回的对象将被纳入到IOC容器中
    @ConfigurationProperties的作用是将配置文件中的相关配置与类中的属性进行绑定,便于读取或修改配置。

    26.@Configuration和@Compoment的区别?@Compoment的类下面定义@Bean可以被扫描到吗?

    被@Compoment修饰的类将会被纳入到IOC容器中
    可以

    27.Java的接口中是否可以存在普通方法?

    可以

    28.两个接口中存在一模一样的方法,一个类同时实现这个2个接口,可以吗?

    可以

    二面面试题

    1.说一下项目的技术栈?Nacos的版本

    2.项目中你主要负责的哪个部分?

    3. 1.X的Nacos中的服务关闭后,但是nacos会有缓存,如果此时数据打到该该服务上,你们如何解决这个问题的?

    4.你们项目里面如何排查生产问题在哪个服务?

    5.项目中seata主要是解决什么场景的?

    6.seata是如何保证数据的一致性,seata的工作原理?

    7.微服务的服务降级如何进行配置的,什么情况下会进入到fallback里面去?

    8.如何区分上游服务调用时是调用超时 还是自定义的业务异常?

    9.分布式锁是如何实现的,使用redisson和自己用Redis写的分布式的区别在哪儿?

    10.setnx 命令实现分布式锁和使用lua脚本实现分布式锁的区别是什么?

    11.生产上FULLGC太频繁了,该如何进行优化呢?

    在这里插入图片描述

    12.为什么幸存者区会有2个,而且都比较小?

    13.线程池使用有没有什么经验?最大线程数的设置?

    14.让你设计一个动态的可配置的数据权限,你会怎么设置?

    15.MQ如何保证不丢失消息?

  • 相关阅读:
    【嵌入式Linux应用】初步移植MQTT到Ubuntu和Linux开发板
    react频繁使用的js(input防抖请求、节流)
    【C语言】指针那些事之数组传参和指针传参的区别
    【从0到1设计一个网关】性能优化---Netty线程数配置与JVM参数配置
    2022就业季惊喜来袭!正版Adobe软件,终于能正经白嫖一把了
    期待未来:辉视校园IPTV系统引领创新与变革
    适用于物联网数据共享的区块链节点存储优化方案
    深度学习(十一)---zed 调用yolov5 进行识别目标并实时测距
    在Python上用openSMILE提取IS09和eGeMAPS特征集
    【Python深度学习】Python全栈体系(二十七)
  • 原文地址:https://blog.csdn.net/lingerlan510/article/details/134007921