Java面试题系列
文章平均质量分 91
梦睡了
这个作者很懒,什么都没留下…
展开
-
MyBatis面试系列-02
接口绑定是指在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置。接口绑定有两种实现方式:一种是通过注解绑定,就是在接口的方法上面加上@Select、@Update等注解,里面包含Sql语句来绑定;另外一种就是通过xml里面写SQL来绑定,在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名。原创 2024-03-19 15:14:15 · 1093 阅读 · 0 评论 -
Spring Cloud面试系列-02
API网关组件,对请求提供路由及过滤功能。Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。原创 2024-03-14 10:34:21 · 770 阅读 · 0 评论 -
Spring Cloud面试系列-01
Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。原创 2024-03-13 15:30:57 · 985 阅读 · 0 评论 -
Spring Boot面试系列-03
Swagger广泛用于可视化API,使用Swagger UI为前端开发人员提供在线沙箱。Swagger是用于生成RESTful Web服务的可视化表示的工具,规范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过 Swagger正确定义时,消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此,Swagger消除了调用服务时的猜测。WebSocket是一种计算机通信协议,通过单个 TCP 连接提供全双工通信信道。原创 2024-03-12 15:55:40 · 1107 阅读 · 0 评论 -
Spring Boot面试系列-02
Spring Boot Batch提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。Spring Boot Batch还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处理作业可以高度可扩展的方式利用框架处理重要大量的信息。跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。原创 2024-03-11 17:12:51 · 668 阅读 · 0 评论 -
Spring Boot面试系列-01
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring Boot框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。2014年4月发布第一个版本的全新开源的Spring Boot轻量级框架。原创 2024-03-09 10:14:45 · 1164 阅读 · 0 评论 -
Spring MVC面试系列-02
WebApplicationContext继承了ApplicationContext并增加了一些WEB应用必备的特有功能,它不同于一般的ApplicationContext ,因为它能处理主题,并找到被关联的servlet。原创 2024-03-07 14:38:58 · 1008 阅读 · 0 评论 -
Spring MVC面试系列-01
Spring MVC属于Spring FrameWork的后续产品,已经融合在Spring Web Flow中。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入MVC架构,从而在使用Spring进行WEB开发时,可以选择使用Spring中的Spring MVC框架或集成其他MVC开发框架,如Struts1(已基本淘汰),Struts2(老项目还在使用或已重构)等。原创 2024-03-06 14:31:46 · 1080 阅读 · 0 评论 -
Spring面试系列-03
AOP核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组API提供横切功能。比如,一个日志模块可以被称作日志的AOP切面。根据需求的不同,一个应用程序可以有若干切面。在Spring AOP中,切面通过带有@Aspect注解的类实现。被一个或者多个切面所通知的对象。它通常是一个代理对象。也指被通知(advised)对象。Spring配置文件是一个XML文件。此文件包含类信息,并描述了这些类是如何配置和相互引入的。在Spring中定义一个时,我们也可以为bean声明一个范围。原创 2024-03-04 15:49:58 · 606 阅读 · 0 评论 -
Spring面试系列-02
Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。Spring beans是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化,装配,和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中<bean/> 的形式定义。Spring 框架定义的beans都是单件beans。原创 2024-03-02 11:05:58 · 675 阅读 · 0 评论 -
Spring面试系列-01
Spring中文翻译过来是春天的意思,被称为J2EE的春天,是一个开源的轻量级的Java开发框架, 具有控制反转(IoC)和面向切面(AOP)两大核心。Java Spring框架通过声明式方式灵活地进行事务的管理,提高开发效率和质量。Spring框架不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从Spring中受益。Spring框架还是一个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力。1)IOC 控制反转。原创 2024-02-29 17:53:34 · 1097 阅读 · 0 评论 -
Java WEB面试系列-03
继承TagSupport或者BodyTagSupport。两者的差别是前者适用于没有主体的标签,而后者适用于有主体的标签。继承TagSupport,可以实现doStartTag和doEndTag两个方法实现Tag的功能继承BodyTagSupport,可以实现doAfterBody这个方法。原创 2024-02-28 09:27:40 · 1034 阅读 · 0 评论 -
Java WEB面试系列-02
与UNIX和DOS命令中的管道类似,你也可以将多个servlet以特定顺序链接起来。在servlet链中,一个servlet的输出被当作下一个servlet的输入,而链中最后一个servlet的输出被返回到浏览器。servlet链接提供了将一个servlet的输出重定向为另一个servlet的输入的能力。这样,你就可以划分工作,从而使用一系列servlet来实现它。另外,你还可以将servlet组织在一起以提供新的功能。原创 2024-02-26 14:47:55 · 754 阅读 · 0 评论 -
Java WEB面试系列-01
Servlet是用Java编写的服务器端程序, 其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,我们一般将Servlet理解为后者。extends HttpServlet并覆盖doPost或doGet方法。在web.xml中进行部署。原创 2024-02-23 16:36:48 · 888 阅读 · 0 评论 -
JVM面试系列-03
Java对象由三个部分组成:对象头、实例数据、对齐填充。对象头由两部分组成:第一部分存储对象自身的运行时数据:哈希码、GC分代年龄、锁标识状态、线程持有的锁、偏向线程ID(一般占32/64 bit)。第二部分是指针类型,指向对象的类元数据类型(即对象代表哪个类)。如果是数组对象,则对象头中还有一部分用来记录数组长度。实例数据用来存储对象真正的有效信息(包括父类继承下来的和自己定义的) 对齐填充:JVM要求对象起始地址必须是8字节的整数倍(8字节对齐)。原创 2024-01-05 15:04:24 · 988 阅读 · 1 评论 -
JVM面试系列-02
新生代是用来存放新生的对象。一般占据堆的1/3空间。由于频繁创建对象,所以新生代会频繁触发MinorGC进行垃圾回收。新生代又分为Eden区、ServivorFrom、ServivorTo 三个区。Eden区:Java新对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代)。当Eden区内存不够的时候就会触发MinorGC,对新生代区进行一次垃圾回收。ServivorFrom:上一次GC的幸存者,作为这一次GC的被扫描者。ServivorTo:保留了一次 MinorGC 过程中的幸存者。原创 2024-01-04 09:32:44 · 607 阅读 · 0 评论 -
JVM面试系列-01
Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。众所周知java.exe是java class文件的执行程序,但实际上java.exe程序只是一个执行的外壳,它会装载jvm.dll(windows下,下皆以windows平台为例,linux下和solaris下其实类似,为libjvm.so。原创 2024-01-02 09:29:37 · 915 阅读 · 0 评论 -
Java 并发面试系列-03
线程调度器(Thread Scheduler)是一个操作系统服务,它负责为Runnable状态的线程分配CPU时间。一旦我们创建一个线程并启动它,它的执行便依赖于线程调度器的实现。同上一个问题,线程调度并不受到Java虚拟机控制,所以由应用程序来控制它是更好的选择(也就是说不要让你的程序依赖于线程的优先级)。时间分片(Time Slicing)是指将可用的CPU时间分配给可用的Runnable线程的过程。分配CPU时间可以基于线程优先级或者线程等待的时间。原创 2023-12-26 15:49:36 · 907 阅读 · 0 评论 -
Java 并发面试系列-02
AQS的全称是AbstractQueuedSynchronizer,是抽象队列同步器,是一个用来构建锁和同步器的框架,内部实现的关键是:先进先出的队列、state状态,在LOCK包中的相关锁(常用的有ReentrantLock、 ReadWriteLock)都是基于AQS来构建。原创 2023-12-25 10:34:38 · 857 阅读 · 0 评论 -
Java 并发面试系列-01
并发是针对服务器而言,是否并发的关键是看用户操作是否对服务器产生了影响。并发是指在同一时刻与服务器进行了交互的在线用户数量。这些用户的最大特征是和服务器产生了交互,这种交互既可以是单向的传输数据,也可以是双向的传送数据。进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间)。比如用户点击桌面的IE浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间。当用户再次点击左边的IE浏览器,又启动了一个进程,操作系统将为新的进程分配新的独立的地址空间。目前操作系统都支持多进程。原创 2023-12-22 15:26:11 · 849 阅读 · 0 评论 -
Java 集合面试系列-03
HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储存相等的对象。如果我们没有重写这两个方法,将会使用这个方法的默认实现。该方法用来在Set中添加元素,当元素值重复时则会立即返回false,如果成功添加的话会返回true。HashMap实现了Map接口,Map接口对键值对进行映射。Map中不允许重复的键。原创 2023-12-21 09:20:04 · 936 阅读 · 0 评论 -
Java 集合面试系列-02
fail-safe(安全失败)采用安全失败机制的集合容器,在遍历时不是直接在集合内容上访问的,而是先复制原有集合内容,在拷贝的集合上进行遍历。fail-fast(快速失败)是Java对java.util包下的所有集合类的是一种错误检测机制。原创 2023-12-15 09:27:24 · 839 阅读 · 0 评论 -
Java集合面试系列-01
Set系列集合添加元素无序的根本原因是底层采用哈希表存储元素。JDK1.8以下版本:哈希表 = 数组 + 链表 + (哈希算法)JDK1.8及以上版本:哈希表 = 数组 + 链表 + 红黑树 + (哈希算法)当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。HashMap默认长度16,扩容是2的n次方。HashMap为了存取高效,要尽量较少碰撞,通俗的说就是要尽量把数据分配均匀,每个链表长度大致相同,这个实现就是要把数据存到哪个链表中的算法。原创 2023-12-11 09:39:48 · 1025 阅读 · 2 评论 -
Java基础面试系列-03
隐式的类型转换又称为自动类型转换,就是一个类型赋值给另一个类型,没有显式的告诉编译器发生了转,但是需要注意的是并不是所有的类型都支持隐式的类型转换。隐式的类型转换必须满足转换前的数据类型的位数要低于转换后的数据类型,例如short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。int b = a;long c = b;数据类型转换必须满足如下规则:1)不能对boolean类型进行类型转换。原创 2023-12-07 14:41:10 · 891 阅读 · 0 评论 -
Java 基础面试系列-02
不可变对象是指对象一旦被创建,状态就不能再改变,任何修改都会创建一个新的对象。比如String、Integer及其它包装类。不可变对象最大的好处是线程安全。原创 2023-11-20 09:59:26 · 82 阅读 · 1 评论 -
Java 基础面试系列-01
默认方法抽象类可以有默认的方法实现;而接口类在JDK1.8之前版本,不存在方法的实现。实现方式抽象类子类使用extends关键字来继承抽象类,如果子类不是抽象类,子类需要提供抽象类中所声明方法的实现;而接口类子类使用implements来实现接口,需要提供接口中所有声明的实现。构造器抽象类中可以有构造器;而接口中不能有构造器。和正常类区别抽象类不能被实例化;而接口是完全不同的类型。访问修饰符抽象类中抽象方法可以有public、protected、default等修饰;原创 2023-11-16 10:42:32 · 79 阅读 · 1 评论