
Java面试20天
文章平均质量分 86
关于Java面试的基础20天突击
DS程序员
大三学生,学习java编程两年,热爱编程,偏向后端,各位热爱编程,学习编程的同学可以关注我,分享更多编程资料
展开
-
Java面试Day16
如果要挂起或者唤醒一个线程,都需要操作系统帮忙完成,而操作系统实现线程之间的切换时需要从用户态转换到内核态,这个状态之间的转换需要相对比较长的时间,这也是为什么早期的synchronized 效率低的原因.Java 官方对从 JVM 层面对synchronized 较大优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。大多数时候是不存在锁竞争的,常常是一个线程多次获得同一个锁,因此如果每次都要竞争锁会增大很多没有必要付出的代价,为了降低获取锁的代价,才引入的偏向锁。原创 2023-07-04 16:12:57 · 581 阅读 · 0 评论 -
java面试Day18
MySQL 执行计划是指 MySQL 查询优化器生成的一份详细的查询执行计划,它展示了 MySQL 在执行查询时所采取的具体执行计划,包括表的访问顺序、数据读取方式、使用的索引、使用的排序方式等等。当我们使用序列化和反序列化创建单例对象时会发现创建出来的对象都是不一样的,违背了单例模式的初衷,因此在需要序列化和反序列化类中实现实现。:实例的创建是在第一次使用时才进行的。更好的可观察性:云原生应用程序可以使用多种技术,如日志记录、指标监控和分布式跟踪等,以实现更好的可观察性,从而更容易地诊断和解决问题。原创 2023-06-30 10:29:19 · 1014 阅读 · 0 评论 -
java面试Day2
分布式锁:Redis 支持原子性的操作,结合它的过期时间机制,可以实现分布式锁的功能。:Redis 的安装和部署非常简单,可以通过源代码编译或者使用预编译的包进行安装,同时提供了命令行工具和 Web 界面来管理 Redis 服务。计数器:Redis 的计数器功能非常方便,可以支持原子性的自增/自减操作。:Redis 提供了两种持久化方式,RDB 和 AOF,可以将数据写入磁盘以实现数据的持久化存储,防止数据丢失。不同的编程语言适用于不同的应用场景,开发者可以根据项目的需求、自己的经验和偏好选择合适的语言。原创 2023-06-08 14:00:00 · 81 阅读 · 0 评论 -
java面试Day6
它是在数据库表上创建的一种数据结构,它包含一些指向表中数据的指针,可以快速地定位到满足查询条件的数据行,从而提高查询效率。304 Not Modified:客户端发送了一个带条件的请求,服务器端允许请求访问资源,但是请求未满足条件。索引文件具有 B-Tree 的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引。状态码是服务器对客户端请求结果的反馈,根据状态码可以快速定位问题所在,进行相应的处理。索引的优点是可以提高数据库的查询速度,缩短数据检索的时间,提高系统的性能。原创 2023-06-13 01:45:00 · 96 阅读 · 0 评论 -
java面试Day10
InnoDB 存储引擎中的索引主要有聚簇索引和辅助索引两种类型,聚簇索引是根据主键创建的索引,而辅助索引是根据非主键列创建的索引。B+ 树的叶子节点之间使用指针相连,这样可以实现区间查找,也就是说,可以快速定位某个区间内的数据。:Spring 的 Bean 默认是单例模式,通过 Spring 容器管理 Bean 的生命周期,保证每个 Bean 只被创建一次,并在整个应用程序中重用。总之,Spring 框架中充分利用了许多设计模式,提供了良好的扩展性和灵活性,降低了代码的耦合度,提高了代码的可维护性。原创 2023-06-12 01:00:00 · 79 阅读 · 0 评论 -
java面试Day9
需要注意的是,Spring IOC 还提供了多种作用域,例如单例、原型、会话、请求等作用域,可以根据具体的需求来选择。:在查询优化后,MySQL 开始执行查询,读取和处理数据。在执行过程中,MySQL 会根据查询中所涉及的表和列等信息,从磁盘中读取相应的数据,并进行计算和过滤操作。:在 Spring IOC 中,所有的对象都被看作是 Bean,需要在配置文件或者使用注解的方式中进行定义和配置。:Spring IOC 容器根据配置文件中的信息,将不同的 Bean 实例组装起来,形成一个完整的应用程序。原创 2023-06-09 00:45:00 · 76 阅读 · 0 评论 -
java面试Day5
这样,应用代码只需要关注业务逻辑的实现,而不需要关注对象的创建和管理,降低了应用代码的复杂度,提高了代码的可重用性和可维护性。因为 Java 只有值传递,所以,对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是值,只是引用类型变量存的值是对象的地址。另外,需要注意的是,== 操作符用于比较两个对象的引用是否相等,即它们是否指向同一个对象。两者之间的区别在于,hashCode 方法返回的是一个 int 类型的数值,而 equals 方法返回的是一个 boolean 类型的值。原创 2023-06-11 01:00:00 · 89 阅读 · 0 评论 -
Java面试Day11
如果 Redis选择多线程模型,又因为 Redis是一个数据库,那么势必涉及到底层数据同步的问题,则必然会引入某些同步机制,比如锁,而我们知道 Redis不仅仅提供了简单的 key-value 数据结构,还有 list、set 和 hash 等等其他丰富的数据结构,而不同的数据结构对同步访问的加锁粒度又不尽相同,可能会导致在操作数据过程中带来很多加锁解锁的开销,增加程序复杂度的同时还会降低性能。针对于上述的并发问题,AIO 就是打算约女神,你发完短信,你就去玩游戏了,女神下楼了,发短信给你,你才出现。原创 2023-06-30 10:28:19 · 795 阅读 · 0 评论 -
java面试Day14
在互联网中,网关是一个可以连接不同协议的网络的设备,比如说可以连接局域网和互联网,它可以把局域网的内部网络地址转换成互联网上的合法地址,从而使得局域网内的主机可以与外界通信。等待阻塞:运行的线程执行 wait 方法,该线程会释放占用的所有资源,JVM会把该线程放入 "等待池"中,进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用 notify 或者 notifyAll 方法才能被唤醒,wait 是object 类的方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。原创 2023-06-30 10:31:39 · 589 阅读 · 0 评论 -
Java面试Day12
此时Redis对象的头部和SDS是在一个连续的内存空间中,申请内存的时候只需要一次分配,效率更高。然后SDS中头部3个字节,尾巴结束字符一个字节,加在一起共20个字节,20个字节加上44个字节就是64个字节,因为redis内存分配会以2的n次方进行分配,64个字节不会产生内存碎片。因此,SpringBoot 可以看作是在 Spring 的基础上,通过自动配置和约定优于配置的方式,提供了更加简单、快速的开发体验。,由于在对记录加独占锁前,先会加上表级别的意向独占锁,那么在加「独占表锁」时,直接。原创 2023-06-30 10:30:50 · 660 阅读 · 0 评论 -
Java面试Day7
来自:编程导航官方分布式是指。原创 2023-06-15 00:00:00 · 70 阅读 · 0 评论 -
java面试Day4
HTTP使用URL(Uniform Resource Locator)来定位资源,通过请求方法(如GET、POST、PUT、DELETE等)来描述对资源的操作,通过请求头和响应头来传递附加信息,如编码格式、内容类型、Cookie等。但需要注意线程安全问题。:客户端发送HTTP请求到服务器,包括请求方法(GET、POST、PUT等)、请求头(如User-Agent、Accept等)和请求正文(可选)等信息。在操作系统中,进程是指一个正在执行中的程序,而线程是进程的一部分,是一个程序中执行的代码片段。原创 2023-06-10 00:45:00 · 81 阅读 · 0 评论 -
java面试Day3
Spring 框架提供了面向切面编程的支持,可以将应用程序的不同功能抽象成切面,并将这些切面与应用程序中的不同组件关联起来,从而降低了应用程序中的重复代码量,并提高了代码的可重用性和可维护性。:通过 Spring 框架的依赖注入功能,开发者可以将应用程序中的不同组件之间的依赖关系交给 Spring 来管理,从而降低组件之间的耦合度,并方便后续的组件替换和维护。,如果被代理目标没有接口那么Spring也无能为力,Spring通过Java的反射机制生产被代理接口的新的匿名实现类,重写了其中AOP的增强方法。原创 2023-06-07 15:47:39 · 75 阅读 · 0 评论 -
java面试Day15
当事务并发执行修改某条记录的时候,不同的事物对这条数据的修改产生多个版本,每次修改之前都会记录下这条记录之前的数据,在隐藏字段中设置上本次操作事务的ID,并让回滚指针指向上一个版本,这样就会形成一条链表,就锁所谓的版本链。AOF 持久化机制是指将 Redis 在内存中的操作命令以追加的形式写入到磁盘中的 AOF 文件,AOF 文件记录了 Redis 在内存中的操作过程,只要在 Redis 重启后重新执行 AOF 文件中的操作命令即可将数据恢复到内存中。,可以处理大量的并发连接和请求。原创 2023-07-04 16:15:39 · 216 阅读 · 0 评论 -
java面试Day13
堆是被所有线程共享的,当创建一个新对象时,对象实例存储在堆中,堆中存储的对象实例都有一个标记用于标记对象是否存活。:Java 自带的注入方式,按照名称自动装配,默认是按照属性名称进行匹配,如果需要按照 Bean 的名称进行匹配,可以使用 @Resource(name="beanName")。:和 @Autowired 类似,也是按照类型进行自动装配,但是 @Inject 注解是 JSR-330 提供的,而 @Autowired 注解是 Spring 框架提供的。是通过在文件系统中创建一个新的文件来实现的,原创 2023-06-30 10:31:21 · 439 阅读 · 0 评论 -
Java面试Day17
联合索引可以包含多个列,但是查询时只能使用前缀列进行查询,即只有在查询中使用了联合索引的前几个列,才能利用联合索引进行查询。ThreadLocal 主要用于解决线程安全问题,例如在 Web 应用中,可以使用 ThreadLocal 存储用户的会话信息,这样每个线程就可以独立地访问自己的会话信息,避免了多个线程之间的数据共享和数据竞争问题。是指一个包含了所有查询需要的列的索引,查询时可以直接从索引中取到需要的数据,而不需要再回到表中查找,从而可以提高查询效率。原创 2023-06-30 10:29:42 · 633 阅读 · 0 评论 -
Java面试Day8
消息生产者将消息发送到消息队列中,而消息消费者则从消息队列中接收消息。在实现过程中,消息队列还会提供一些额外的功能,如消息过滤、消息路由、消息持久化等。:消息队列可以缓冲来自多个消息生产者的消息,使得消息消费者可以按照自己的节奏进行消费,从而有效地平衡生产者和消费者之间的处理速度。:将不同的业务逻辑拆分成不同的服务,通过消息队列实现服务之间的通信,提高系统的可维护性和可扩展性。:通过将日志消息发送到消息队列中,将日志收集和分析与业务逻辑解耦合,提高系统的可靠性和可维护性。原创 2023-06-14 00:45:00 · 81 阅读 · 0 评论