面试之高手回答

news2025/1/13 13:10:13

1.int与Integer的区别

int与Integer的区别有很多,我简单罗列三个方面
第一个作为成员变量来说Integer的初始值是null,int的初始值是0;
第二个Integer存储在堆内存,int类型是在直接存储在栈空间;
第三个integer是个对象类型,封装了很多的方法和属性,我们在使用时更加灵活
至于为什么要设计成封装类型,我认为主要的原因是,java本事他是一个面向对象的语言,一切操作都是以对象作为基础,比如像集合里面存的元素,也只支持存储Object类型,普通类型是无法通过集合来存储的,以上就是我的理解

2.cookie和session的区别是什么

好的,我先解释一下cookie他是客户端浏览器用来保存服务端数据的 一种机制,当我们通过浏览器去进行网页访问的时候服务器可以把某一些状态数据以key-value的形式写入到cookie里面存储到客户端浏览器然后呢客户端下一次再访问服务器的时候,我们可以携带这一些状态数据发送到服务器端,服务器端可以根据Cookie里面携带的内容去识别使用者;
而session他表示一个会话,他是属于服务器的一个容器对象,默认情况下它会针对每个浏览器的请求Server容器都会分配一个session对象,session本质上我们可以认为他是一个ConcurrentHashMap,他可以用来存储当前会话产生的一些状态数据,我们都知道http协议本身是一个无状态的协议,也就是说服务器端并不知道客户端发送过来的多次请求是属于同一个用户,所以session是用来弥补http无状态的一个不足,简单来说呢,服务器端可以利用session来存储客户端在同一个会话里面产生的多次请求了的一个记录那么基于服务器端的session的存储机制再结合客户端的cookie机制我们就可以去实现一个有状态的http协议,它的具体工作原理非常简单,客户端第一次访问服务器端上的时候呢,服务器端会针对这次请求创建一个会话,并且生成一个唯一的sessionid来标注这个对象,然后服务器端把这个sessionid写入到客户端浏览器的cookie里面用来去实现客户端状态的一个保存,那么在后续的请求里面,每次都会生成一个sessionId,服务器端就可以根据sessionid来识别当前这个会话的状态,
所以总的来说cookie是客户端的存储机制而session是服务端的存储机制,以上就是我对这个问题的理解

在这里插入图片描述

SQL 优化?

SQL优化首先我们找到有问题的SQL,可以按照这三步来
第一、慢 SQL 的定位和排查
我们可以通过慢查询日志和慢查询日志分析工具得到有问题的 SQL 列表。
第二、执行计划分析
针对慢 SQL,我们可以使用关键字 explain 来查看当前 sql 的执行计划.可以重点关注 type key rows filterd 等字段 ,从而定位该 SQL 执行慢的根本原因。再有方向的进行优化
第三、使用 show profile 工具
Show Profile 是 MySQL 提供的可以用来分析当前会话中,SQL 语句资源消耗情况的工具,可用于 SQL 调优的测量。在当前会话中.默认情况下处于 show profile是关闭状态,打开之后保存最近 15 次的运行结果针对运行慢的 SQL,通过 profile 工具进行详细分析.可以得到 SQL 执行过程中所有的资源开销情况. 如 IO 开销,CPU 开销,内存开销等. 以上就是我对 MySQL 性能优化的理解。
好的,看完高手的回答后,相信各位对 MySQL 性能优化有了一定的理解了,最后我在给各位总结一下常见的 SQL 优化规则:
l SQL 的查询一定要基于索引来进行数据扫描
l 避免索引列上使用函数或者运算,这样会导致索引失效
l where 字句中 like %号,尽量放置在右边
l 使用索引扫描,联合索引中的列从左往右,命中越多越好.
l 尽可能使用 SQL 语句用到的索引完成排序,避免使用文件排序的方式
l 查询有效的列信息即可.少用 * 代替列信息
l 永远用小结果集驱动大结果集

关于“你对 Spring Cloud 的理解”

Spring Cloud 是一套分布式微服务的技术解决方案。
它提供了快速构建分布式系统的常用的一些组件,比如说配置管理、服务的注册与发现、服务调用的负载均衡、资源隔离、熔断降
级等等
不过 Spring Cloud 只是 Spring 官方提供的一套微服务标准定义而真正的实现目前有两套体系用的比较多
一个是 Spring Cloud Netflix 一个是 Spring Cloud Alibaba
Spring Cloud Netflix 是基于 Netflix 这个公司的开源组件集成的一套微服务解决
方案,其中的组件有
1.Ribbon——负载均衡 2. Hystrix——服务熔断
3.Zuul——网关 4. Eureka——服务注册与发现 5. Feign——服务调用
Spring Cloud Alibaba 是基于阿里巴巴开源组件集成的一套微服务解决方案,其
中包括
1.Sentinel——熔断降级 2.gateway——网关
3.Dubbo——消息通讯 4. Nacos——服务注册与发现 5.Seata——事务隔离
有了 Spring Cloud 这样的技术生态使得我们在落地微服务架构时不用去考虑第三方技术集成带来额外成本只要通过配置组件来完成架构下的技术问题从而可以让我们更加侧重性能方面。

springboot的自动装配原理?

在这里插入图片描述

自动装配简单来说就是自动去吧第三方组件的bean装载到IOC容器里面,不需要开发人员再去写bean相关的一个配置,在springboot应用里面,只需要在启动类上去加上@SpringBootApplication注解就可以去实现自动装配,@SpringBootApplication这个注解是一个复合注解,真正去实现自动装配的注解是@EnableAutoConfiguration这样一个注解。
自动装配的实现主要依靠三个核心的关键技术,
第一个:引入starter,启动依赖组件的时候,这个组件里面必须要包含一个@Configuration配置类,而在这个配置类里面我们要有通过@Bean这个注解去声明需要装配到IOC容器里面的bean对象
第二个:这个配置类是放在第三方的jar包里面的然后通过springboot中的约大于配置的理念,去把这个配置类的全路径放在classpath:/META-INF/spring.factories文件里面这样springboot就可以知道第三方jar包里面这个配置类的位置,这个步骤主要用到了spring里面的springFactoriesLoader来完成的
第三个:springBoot拿到所有第三方jar包里面声明的配置类以后再通过spring提供的importSelector这样一个接口,来实现对这些配置类的动态加载,从而去完成自动装配这样一个动作,在我看来呢SpringBoot是约定优于配置这一理念下的一个产物,所以在很多的地方度会看到这一类的思想,它的出现呢让开发人员可以更加聚焦的在业务代码的编写上,而不需要去关心和业务无关的配置,其实自动装配的思想在SpringFramework3.x版本里面的@Enable注解就已经有实现的一个雏形,@Enable注解是一个模块驱动的意思,也就是说我们只需要增加@Enable注解就能自动打开某个功能,而不需要针对这个功能去做Bean的配置,@Enable注解的底层呢也是去帮我们自动去完成这样一个模块相关Bean的注入的。以上就是我对springBoot自动装配的一个理解

什么是守护线程?它有什么特点?

守护线程是专门为用户线程提供服务的一种线程,它的声明周期是依赖于用户线程的,只有jvm依然存在用户线程正在运行的情况下,守护线程才会有存在的一个意义,否则一旦jvm进程结束了,那么守护线程也会随之结束,也就是说守护线程不会阻止JVM 的退出但是用户线程会,守护线程和用户线程的创建方式其实是完全一样的。我们只需要去调用用户线程里面的一个setDaemon方法去设置成true就好了,那么就表示这个线程是守护线程,而基于守护线程这样一个特性,所以我认为他更适合一些后台的通用型服务的一些场景里面,比如说像jvm里面的垃圾回收,就是一个典型的使用场景,这个场景的特殊点在于当jvm的线程结束的时候,内存的回收线程本身就没有存在的意义了所以不能因为正在有线程进行垃圾回收导致JVM进程无法结束这样一个问题,而基于守护线程这样一个特性,所以他不能应用在一些线程池,或者一些IO的一些任务场景里面,因为一旦JVM退出以后,守护线程也会直接退出。那么就会导致任务还没有执行完或者资源还没有正常释放的一些问题。以上就是我对这个问题的理解。

HashMap是怎么解决哈希冲突的

这个问题我从三个方面来回答
第一,想要了解hash冲突,首先我们需要了解Hash算法和hash表(像以下结构),hash算法就是把任意长度的输入通过散列算法编程固定长度的输出,这个输出结果就是一个散列值。
第二,hash表又叫做“散列表”,他是通过key直接访问到内部存储位置的数据结构再具体的实现上,我们通过hash函数把key映射到表中的某个位置,来获取这个位置,来加快数据的查找。
第二 所谓hash冲突是由于hash算法被计算的数据时无限的,而计算后的结果的范围是有限的,所以总会存在不同的数据,经过计算之后得到的值是一样的,那么这个情况下就会出现所谓的hash冲突。
第三 通常解决hash冲突的方法有四种:
1.开放定址法,也称线性探测法,就是从发生冲突的位置开始按照一定的次序从hash表中找到一个空闲的位置,然后把发生冲突的元素存入到这个位置,而在java中 ThreadLocal就用到了线性探测法来解决hash冲突,
2.

在这里插入图片描述

HashMap是如何解决hash冲突的

这个问题需要从几个方向来回答
首先hashMap底层是采用了数组的这样一个结构来存储数据元素,数组的默认长度是16,当我们通过put方法去添加数据的时候,HashMap会根据key的hash值进行取模运算最终把这个值保存到数组的一个指定位置,但是这样一个设计方式会存在hash冲突的问题,也就是说两个不用的hash的值得key最终取模以后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目管理6大避坑技巧

1、拒绝错位战略目标 明确目标方向 做项目,首先需要明确项目目标。项目中有很多目标都很重要,但只有一两个目标是最重要的。在任何时刻,我们主要精力都应该集中在一到两个最重要的目标上。 一般最重要的目标具有以下特点:能够给组…

CSS--空间转换及动画

01-空间转换 空间转换简介 空间:是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间,Z 轴位置与视线方向相同。空间转换也叫 3D转换属性:transform 平移 transform: translate3d(x, y, z); transform: translateX(); transfor…

能源硕士为何受热捧?社科院与杜兰大学能源管理硕士项目为你解惑

能源行业可谓是全球最具发展前景的行业之一,能源管理硕士更是近几年被争相推荐的“大热门”。广泛的就业选择、较高且稳定的收入,是该专业的特点之一,毕业后可选择在政府相关机构、能源监管部门、全国节能减排领域的各类研究机构工作&#xf…

Linux学习 Day3

目录 1. 时间相关的指令 2. cal指令 3. find指令:(灰常重要) -name 4. grep指令 5. zip/unzip指令 6. tar指令(重要):打包/解包,不打开它,直接看内容 7. bc指令 8. uname –…

Shell基础学习---1、Shell概述、脚本入门、变量

1、Shell 概述 Shell是一个命令解释器,它接收应用程序/用户命令,然后调用操作系统内核。 说明:Shell是一个功能相当强大的编程语言,易编写,易调试、灵活性强。 1、 提供的Shell解释器 2、bash和sh的关系 3、CentOS…

简述-关于Kmeans轮廓系数随着聚类个数的增加后减少的问题

当我们在做Kmeans聚类的准备工作时,通常会用到手肘法(elbow method)或者轮廓系数(silhouette score)去找到最佳簇类个数。 对于轮廓系数寻找法,理论上来说,轮廓系数会随着聚类个数的增加而增加…

云渲染是什么?云渲染和传统渲染农场有什么区别?

云渲染是什么?云渲染和传统渲染农场有什么区别? 今天云渲染小编就来和大家说一说云渲染以及它和传统渲染农场的区别。 一、什么是云渲染?云渲染什么意思? 首先云渲染云渲染是一种依托于云计算的云端服务,用户将本地…

UVM 验证方法学之interface学习系列文章(七)高级 《bind 操作》(3)

在之前的文章,我们就bind 机制,进行了用法分析。其实,对于一些大型的复杂SOC设计,bind的操作,可以说是非常实用的。它不仅能够完成各种UVC的驱动激励操作,而且一定程度能够简便验证平台的搭建和后期维护。下面,我们举个例子说明bind在当今复杂环境下的妙用。 一 TB 思…

聊一聊API 测试有哪些不同类型?

用户希望能够跨设备和浏览器使用应用程序。因此,您必须进行全面的不同 API 测试类型,以了解它的工作情况以及它是否可以执行其主要功能。一些测试人员需要更多地关注这方面,因此,我们看到许多质量较差的应用程序。今天&#xff0c…

23. Unity - 3D游戏开发小计02 --- 动画结束UI、导航网格代理

1. 动画结束UI 一个游戏在通过后,都是需要一个界面显示当前游戏已经结束,即需要给游戏添加一个结束的界面,可以做一个简单的游戏结束界面,用一个图片展示: 首先在层级窗口添加两层UI中的Image,其中第一层的Image仅作背景,可将其填充颜色设置为纯黑色,第二层的Image添加…

消化道炎症 | 细菌蛋白酶失调的作用

谷禾健康 肠道蛋白酶 蛋白水解平衡失调通常与疾病有关。例如丝氨酸蛋白酶和基质金属蛋白酶参与多种生物过程,尤其是炎症反应。 胃肠道拥有数以万亿计的微生物,并暴露于高水平的蛋白酶。研究表明蛋白酶在维胃肠道稳态中的关键作用,它们的上调…

代搭建开发chatgpt

ChatGPT是由OpenAI开发的一款自然语言处理模型,而且它已经预训练好了。基于它开发ChatGPT应用程序需要以下步骤: 准备环境:安装Python3和相关的库,如TensorFlow、Keras等,并下载预训练的ChatGPT模型。 数据准备…

深度学习用于医学预后-第二课第三周8-13节-估计生存函数

上节课知道了数据中存在删失数据,那么我们如何利用这些数据建立生存函数。这将是本节课的重点内容。 文章目录 估计生存函数立即死亡还是永远存活生存概率介于两者之间使用删失数据条件概率的链式法则推导生存函数根据数据计算概率 估计生存函数 本节课,…

API安全性的要素与开发人员必修课测试

一、API安全性的要素主要包括以下几点: 1.身份验证和访问控制:API应该通过身份验证来验证请求的源,确保只有授权的用户或应用程序才能访问API。这可以通过使用API密钥、访问令牌、OAuth令牌或其他身份验证机制实现。 2.数据加密:A…

OpenCV中的图像处理3.9(七)轮廓线及其层次结构

目录 3.9.4 轮廓线:更多的功能目标理论和代码练习 3.9.5 轮廓线层次结构目标理论什么是层次结构?OpenCV中的层次结构表示法轮廓线检索模式 翻译及二次校对:cvtutorials.com 编辑者:廿瓶鲸(和鲸社区Siby团队成员&#x…

Pyqt5经典案例学习

目录 前言一、图表主题动画1-1、效果展示1-2、代码分段解析1-2-1、导库1-2-2、初始化1-2-3、数据生成函数以及信号与槽的连接 总结 前言 案例来源于GitHub项目《各种各样的PyQt测试和例子》 一、图表主题动画 1-1、效果展示 功能: 支持不同的主题和动画效果。用户…

Linux环境下的VScode使用教程

前言 (1)对于学习本文需要先有自行安装好VMware,对VMware有简单的了解。 (2)对于绝大多数使用Linux的人而言,经常在Windows环境下使用source insight进行编译程序,然后利用FileZilla将Windows的…

Ansys仿真寄生参数对信号反射的影响

1、短桩线传输线的反射 短桩线在PCB走线时会经常遇到,这个桩线会对信号的传输产生反射,那么桩线的长度和信号反射的关系可以仿真看一下,电路如下图所示,下图中,我们设置信号源的上升下降时间为0.8ns,桩线的…

Auto GPT 与 ChatGPT:有何区别?

人工智能正在迅速发展,即使是最熟练的人也越来越难以跟上。每隔一段时间,就会出现新的 AI 工具,在这些工具中,有些是时尚的,有些是真正有价值的。 Auto-GPT 是一种建立在 ChatGPT 技术之上的人工智能,很可…

leaflet根据坐标点设置多边形,生成geojson文件,计算面积值(133)

第133个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中根据坐标点设置多边形,通过.toGeoJSON() 来生成geojson文件,通过turf.area来计算面积值。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共123…