java知识面试day4

news/2025/2/24 14:19:44/文章来源:https://www.cnblogs.com/tdsmomo/p/18733967

1.常见的关键字有哪些

  • static:静态变量,静态变量被所有对象共享,在内存中只有一个副本。具有静态变量,静态方法块,静态代码块(在类加载时候被指执行一次),静态内部类:非静态内部类需要依赖外部实列,但静态内部类不需要。
    alt text
  • final 基本数据类型用final修饰不能修改,引用对象被修饰,表面只能指向该对象,不能指向其他对象,但对象本身可以被修改。
    final修饰的方法不能被重写,修饰的类不能被继承
  • this 用来区分成员变量和局部变量
  • super:用于在子类中访问父类的变量和方法。

2.final,finally,finalize区别
final用于修饰属性方法和类,同上一步
finally是异常处理的最后一块
finalize是Object的一个方法,搭配垃圾处理器使用。当我们调用System.gc()方法的时候,由垃圾回收器调用finalize()方法,回收垃圾,JVM并不保证此方法总被调用
3.finally语句一定会被
不一定.

  • 当未执行try代码块时
  • 当执行时线程被打断或者终止,或者外部因素,死机断电

4.final关键字

  • final 修饰的类不能被继承。
  • final 修饰的方法不能被重写。
  • final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。
    5.方法重载和重写的区别?
  • 同个类中多个方法有相同名称但是不同的参数列表,称为重载
  • 重写:子类堆父类方法的改写

6.接口和抽象的区别
alt text

7.常见的Exception
alt text

8.Error和Exception的区别
Error:jvm无法解决的问题,如栈移除StackOverflowError,内存oom等,Exception:因编程错误引发的一般性问题。如空指针异常,下标越界等。

9.运行时异常和非运行时异常(checked)的区别
非运行时异常:RuntimeException由程序错误导致,应该修正程序避免这类异常发生
运行时异常:如找去文件不存在,sql不存在的异常,可以用catch进行处理。

10.throw和throws的区别
throw:是抛出具体异常
throws:是声明

11.Nio模式和Bio模式
nio和bio的介绍
alt text
核心在于分而治之
alt text

12.BIO/NIO/AIO区别的区别
alt text

13.守护线程是什么

  • 独立于控制端周期性执行某些任务的进程(如垃圾回收)
  • 守护进程是运行在后台的一种特殊的进程

14.java支持多继承吗
类不支持,接口支持。
原因:继承多个类,无法了解去继承具体哪一个

15.如何实现对象克隆

  • 通过clonable接口,重写clone的方法,这种是浅拷贝,如果对象的属性的Class也实现 Cloneable 接口,那么在克隆对象时也会克隆属性,即深拷贝。
  • 通过org.apache.commons中的工具类BeanUtils和PropertyUtils进行对象复制
    alt text
    16.同步和异步的区别
    同步就是在任务完成前都不进行返回,异步则是在完成后通过回调函数解决。

17.阻塞和非阻塞的区别
阻塞在于线程调用方法后,线程会被挂起等待阻塞的返回,非阻塞则是会继续执行,
alt text

18.序列化和反序列化

  • 序列化:把对象转换为字节序列的过程称为对象的序列化.
  • 反序列化:把字节序列恢复为对象的过程称为对象的反序列化

19.什么时候需要序列化和反序列化
在进行对象储存和网络传输的时候需要进行序列化和反序列化

20.实现序列化和反序列化为什么要实现 Serializable 接口
如果被写对象类型不是String、数组、Enum,并且没有实现Serializable接口,那么在进行序列化的时候,将抛出NotSerializableException。源码如下

21.实现 Serializable 接口之后,为什么还要显示指定 serialVersionUID 的值
alt text
JVM 在序列化对象时会自动生成一个 serialVersionUID,然后将我们显示指定的 serialVersionUID 属性值赋给自动生成的 serialVersionUID.

22.stastic为什么不会被序列化
序列化是针对对象而言的

23.transient关键字的作用
Java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。也就是说被transient修饰的成员变量,在序列化的时候其值会被忽略,在被反序列化后, transient 变量的值被设为初始值, 如 int 型的是 0,对象型的是 null。

24.什么是反射
动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制
在运行状态中,对于任意一个类,能够知道这个类的所有属性和方法。对于任意一个对象,能够调用它的任意一个方法和属性。

25.反射有哪些应用场景
alt text

26.介绍泛型
Java泛型是JDK 5中引⼊的⼀个新特性, 允许在定义类和接口的时候使⽤类型参数。声明的类型参数在使⽤时⽤具体的类型来替换。
List的接收参数就是一个泛型。
alt text

27.如何停止一个正在运行的进程
alt text

28.什么是跨域
跨域是指从一个域名的网页去请求另一个域名的资源。由于有同源策略的关系,一般是不允许这么直接访问的,但在前后端分离的模式下,前后端域名不一致,就会发生跨域问题.
同源协议
同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源
为什么要有同源策略
为了保证安全,防止恶意的访问

29.如何解决跨域问题

  • CORS,跨域资源共享
    A 需要访问 B 服务器上的数据,如果 B 服务器 上声明了允许 A 的域名访问,那么从 A 到 B 的跨域请求就可以完成。
  • @CrossOrigin注解
    Controller类上添加一个 @CrossOrigin(origins ="*") 注解就可以实现对当前controller 的跨域访问了,当然这个标签也可以加到方法上,或者直接加到入口类上对所有接口进行跨域处理。
  • nginx反向代理
    服务端运行nginx,其他去访问niginx
    alt text

30.设计接口需要注意什么
alt text

31.拦截器和过滤器的区别
alt text
过滤器
alt text
alt text
拦截器:
alt text
alt text
alt text

区别
alt text

32.对接第三方接口要考虑什么
alt text

33.后端接口性能优化有哪些方法
alt text

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[QOJ 8366] 火车旅行

毒瘤边化点,有人说非排列只需要加一些细节,但是这个题毒瘤在于非排列。 statement 给定一个长度为 \(n\) 的序列 \(a_i\)。 对于位置 \(x\) 和 \(y\):若 \(y < x\) 且 \(max_{y < i < x} a_i < min(a_x, a_y)\) 则位于 \(x\) 的棋子可以花费 \(L_x\) 的代价跳到…

uipath更新到最新版本2025.0.161出现严重问题

uipath更新到最新版本2025.0.161出现严重问题:1. 打开既有项目,会报CS0246错误2. 无法创建新项目,一直报无权限访问尝试办法:1. 重新安装uipath,未解决2. 删除项目重新添加,未解决3. 给账户添加最高权限,未解决 workaround:把项目从默认文件夹复制到其他盘(除了C盘外…

Python正则表达式之re.compile函数

​在Python编程语言中,re.compile函数是正则表达式模块(re)中的一个核心组件,它负责将文本形式的正则表达式编译成一个正则表达式对象。这个对象随后可以被用来执行高效的模式匹配操作,如查找、替换或者分割字符串等。理解并有效利用 re.compile对于编写高效且可维护的正则表…

Unity Addresable打包总结第二弹

前言 前文介绍了Addressables在本地打包是怎么使用,这里介绍下怎么打远程包,并且怎么做到打增量包,Lets Go! 远程包新建一个Group,将它的 BUild & Load Paths 改为Remote,并将RemoteRes资源文件夹塞入Remote Group,其中包含一个Capsule.prefab资源:在Addressabvles …

BUUCTF-RE-[2019红帽杯]easyRE

这道题很难,但是并不难在他的解题要用到的方法和技巧上,而是难在它的题目设计。做的过程中真的有一种闯关的感觉,非常有趣 首先我们通过对字符的定位我们可以来到sub_4009C6函数 __int64 sub_4009C6() {__int64 result; // raxint i; // [rsp+Ch] [rbp-114h]__int64 v2; // …

2025年免费项目管理软件哪家强?5款零成本工具实测报告

在项目管理领域,众多团队尤其是初创企业和小型项目组,都渴望找到功能实用且零成本的软件来助力项目推进。2025 年,有 5 款免费项目管理软件表现突出,它们分别是禅道、Trello、Asana、Redmine 以及国内新兴的钉钉项目管理相关功能,下面将为大家带来详细的实测报告。一、禅道…

BT151-ASEMI电机控制专用BT151

BT151-ASEMI电机控制专用BT151编辑:ll 在当今科技飞速发展的时代,电子元件宛如繁星般点缀着各个领域,而 BT151 单向可控硅无疑是其中一颗极为耀眼的明星。 BT151-ASEMI电机控制专用BT151 型号:BT151 品牌:ASEMI 封装:TO-220F 正向电流:12A 反向电压:600V~800V 引脚数量…

销售必备60招

脸皮厚、嘴巴甜、手脚勤。先放下面子努力拿下客户,提高收入,往后在亲友面前抢着买单时,面子自然就有了。干销售得有狼性、野性和匪性,还要有胆量。推销是常识的运用,但只有将经实践验证的理念用于积极的客户身上,才会产生效果。想要取得惊人成绩,必须先做好枯燥乏味的准…

【H2O系列】关于H2O和OmniH2O代码安装及代码解读摘要`

0. 前言 这篇博客主要用于过程记录H2O代码部分的参数解读部分。 一方面便于日后自己的温故学习,另一方面也便于大家的学习和交流。 如有不对之处,欢迎评论区指出错误,你我共同进步学习! 1. 论文&项目 项目地址:https://omni.human2humanoid.com/ 我自己总结的论文摘要…

1小时搭建好的智能车间生产看板长什么样?

大家一提到生产看板搭建,可能脑袋里第一反应就是“哎,这个得花大钱买专业软件吧”或者“搭建起来肯定超级复杂”。 其实,真没那么难! 只要找对方法,学会用对工具,搭建一套生产看板其实很简单。 那天,我就亲自试了一下,结果不到两三小时,就做出了一套智能生产看板。 但…

MCN公司如何打造爆款内容?内容创新与品质提升的秘诀

MCN(多频道网络)管理优化是一个涉及多个方面的复杂过程,旨在提升MCN公司的运营效率、增强市场竞争力并实现可持续发展。以下是一些关键的MCN管理优化策略: 一、市场定位与品牌建设 精准市场定位 ○ 深入了解目标受众,包括他们的兴趣、需求和行为模式。 ○ 对自身资源和优势…

JavaScript代码混淆入门

JavaScript代码混淆是一种提升Web应用安全性的策略,旨在使代码难以阅读和理解,从而增加逆向工程的难度。这对于保护知识产权、防止抄袭及减少恶意攻击尤为重要。本文将深入浅出地介绍JavaScript代码混淆的基础概念、重要性、主要方法以及实际应用技巧。 JavaScript代码混淆的…