Java基础面试题突击系列5

news2024/12/22 19:21:09

👩🏻 作者:一只IT攻城狮 ,关注我不迷路
❤️《java面试核心知识》突击系列,持续更新…
💐 面试必知必会学习路线:Java技术栈面试系列+SpringCloud项目实战学习路线
📝再小的收获x365天都会成就不一样的自己,一起学习,一起进步。

文章目录

  • 一、java反射
  • 二、instanceof 关键字的作用
  • 三、Java 序列化中如果有些字段不想进行序列化,怎么办?
  • 四、&和&&的区别?
  • 五、3*0.1 == 0.3返回值是什么
  • 六、用最有效率的方法计算 2 乘以 8?
  • 七、float f=3.4;是否正确?
  • 八、Java 中的Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
  • 九、switch 是否能作用在 byte 上,是否能作用在 long 上?
  • 十、char 型变量中能不能存贮一个中文汉字?
  • 十一、String s = new String(“xyz”);创建了几个字符串对象?
  • 十二、如何实现字符串的反转及替换?
  • 十三、怎样将 GB2312 编码的字符串转换为 ISO-8859-1 编码的字符串?
  • 十四、阐述 final、finally、finalize 的区别
  • 十五、是否可以继承 String 类?

一、java反射

1、定义:
反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。
这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。

2、哪里会用到反射机制?

jdbc就是典型的反射 Class.forName('com.mysql.jdbc.Driver.class');//加载MySQL的驱动类这就是反射。如mybatis等框架使用反射实现的。

反射的核心是获取class对象,获取 Class 对象的 3 种方法
1)调用某个对象的 getClass()方法
2)调用某个类的 class 属性来获取该类对应的 Class 对象
3)使用 Class 类中的 forName()静态方法(最安全/性能最好)

更多详情:Java反射

二、instanceof 关键字的作用

instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:

boolean result = obj instanceof Class 

其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。
注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。


int i = 0; 
System.out.println(i instanceof Integer);//编译不通过 i必须是引用类型,不能是基本类型 
System.out.println(i instanceof Object);//编译不通过 
Integer integer = new Integer(1); 
System.out.println(integer instanceof Integer);//true 
//false ,在 JavaSE规范 中对 instanceof 运算符的规定就是:如果 obj 为 null,那么将返回false。 
System.out.println(null instanceof Object)

三、Java 序列化中如果有些字段不想进行序列化,怎么办?

对于不想进行序列化的变量,使用 transient 关键字修饰。
transient 关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被 transient 修饰的变量值不会被持久化和恢复。transient 只能修饰变量,不能修饰类和方法。

四、&和&&的区别?

&运算符有两种用法:(1)按位与;(2)逻辑与。
&&运算符是短路与运算。

逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是 true 整个表达式的值才是 true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。

很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是 null 而且不是空字符串,应当写为:username != null &&!username.equals(“”),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的 equals 比较,否则会产生 NullPointerException 异常。注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

五、3*0.1 == 0.3返回值是什么

false,因为有些浮点数不能完全精确的表示出来。

在计算机中浮点数的表示是误差的。所以一般情况下不进行两个浮点数是否相同的比较。而是比较两个浮点数的差点绝对值,是否小于一个很小的正数。如果条件满足,就认为这两个浮点数是相同的。

六、用最有效率的方法计算 2 乘以 8?

2 << 3(左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次方)。

七、float f=3.4;是否正确?

不正确。3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换 float f =(float)3.4; 或者写成 float f =3.4F;。

八、Java 中的Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5 然后进行向下取整。

九、switch 是否能作用在 byte 上,是否能作用在 long 上?

在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。从 Java5 开始,Java 中引入了枚举类型,expr 也可以是 enum 类型,从 Java 7 开始,expr 还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

十、char 型变量中能不能存贮一个中文汉字?

char 类型可以存储一个中文汉字。
因为 Java 中使用的编码是 Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一 个 char 类型占 2 个字节(16 比特),所以放一个中文是没问题的。

补充:使用 Unicode 意味着字符在 JVM 内部和外部有不同的表现形式,在 JVM内部都是 Unicode,当这个字符被从 JVM 内部转移到外部时(例如存入文件系统中),需要进行编码转换。所以 Java 中有字节流和字符流,以及在字符流和字节流之间进行转换的转换流,如 InputStreamReader 和 OutputStreamReader,这两个类是字节流和字符流之间的适配器类,承担了编码转换的任务;对于 C 程序员来说,要完成这样的编码转换恐怕要依赖于 union(联合体/共用体)共享内存的特征来实现了。

十一、String s = new String(“xyz”);创建了几个字符串对象?

两个对象,一个是静态区的”xyz”,一个是用 new 创建在堆上的对象。

十二、如何实现字符串的反转及替换?

可以自己写实现也可以使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。
示例代码:

// StringBuffer reverse
StringBuffer stringBuffer = new StringBuffer();
stringBuffer. append("abcdefg");
System. out. println(stringBuffer. reverse()); // gfedcba
// StringBuilder reverse
StringBuilder stringBuilder = new StringBuilder();
stringBuilder. append("abcdefg");
System. out. println(stringBuilder. reverse());

有一道很常见的面试题是用递归实现字符串反转,代码如下所示:

public static String reverse(String originStr) { 
if(originStr == null || originStr.length() <= 1) 
return originStr; 
return reverse(originStr.substring(1)) + originStr.charAt(0); 
}

十三、怎样将 GB2312 编码的字符串转换为 ISO-8859-1 编码的字符串?

String s1 = "你好"; 
String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");

十四、阐述 final、finally、finalize 的区别

final:修饰符(关键字)有三种用法:如果一个类被声明为 final,意味着它不能再派生出新的子类,即不能被继承,因此它和 abstract 是反义词。将变量声明为 final,可以保证它们在使用中不被改变,被声明为 final 的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改。被声明为 final 的方法也同样只能使用,不能在子类中被重写。

finally:通常放在 try…catch…的后面构造总是执行代码块,这就意味着程序无论正常执行还是发生异常,这里的代码只要 JVM 不关闭都能执行,可以将释放外部资源的代码写在 finally 块中。

finalize:Object 类中定义的方法,Java 中允许使用 finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的,通过重写 finalize()方法可以整理系统资源或者执行其他清理工作。

十五、是否可以继承 String 类?

String 类是 final 类,不可以被继承。

在这里插入图片描述

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

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

相关文章

mac 切换java jdk版本 java8 java11

1. 终端执行命令 查看本地各版本jdk&#xff1a;mac通常默认安装了jdk1.8 安装目录是 /Library/Java/JavaVirtualMachines/ cd /Library/Java/JavaVirtualMachines/ ls 2. 上述命令列出的各版本目录名 后&#xff0c;在全局配置文件.bash_profile中新增上面命令列出的各…

四月,收割12家offer,面试也太容易了吧....

前言 下面是我根据工作这几年来的面试经验&#xff0c;加上之前收集的资料&#xff0c;整理出来350道软件测试工程师 常考的面试题。字节跳动、阿里、腾讯、百度、快手、美团等大厂常考的面试题&#xff0c;在文章里面都有 提到。 虽然这篇文章很长&#xff0c;但是绝对值得你…

005 - STM32学习笔记 - 启动代码

005 - STM32学习笔记 - 启动代码 常用汇编指令 指令名称作用EQU给数字常量取一个符号名&#xff0c;相当于C语言中的#define&#xff1b;AREA汇编一个新的代码段或者数据段&#xff1b;SPACE分配内存空间&#xff1b;PRESERVE8当前文件栈需要按照8字节对齐&#xff1b;EXPORT…

【ChatGPT】ChatGPT自动生成思维导图

参考视频&#xff1a;https://edu.csdn.net/learn/38346/613917 应用场景&#xff1a;自学&#xff0c;“研一学生如何学习机器学习”的思维导图 问&#xff1a;写一个“研一学生如何学习机器学习”的思维导图内容&#xff0c;以markdown代码块格式输出 # 研一学生如何学习…

探索人工智能和机器学习的前沿趋势

&#x1f31f; 深度学习的突破&#x1f31f; 强化学习的进展&#x1f31f; 可解释性和公平性的挑战&#xff08;1000字&#xff09;&#x1f31f; 自动化和智能化的未来&#xff08;1000字&#xff09; 在当今科技飞速发展的时代&#xff0c;人工智能&#xff08;Artificial In…

全网最牛最前面的浦发银行软件测试面试题精讲分析

面试永远都是软件测试人重点关注的问题&#xff0c;最近也总有很多想去银行面试的小伙伴来问我&#xff0c;有没有什么方法技巧传授一下。 那今天就给大家总结一些浦发银行的面试题&#xff0c;小伙伴们可以看看如果是自己能不能流畅地回答上来这些面试题。 1、说说你们公司测…

c++积累12-const

1、文件作用域-const修饰变量默认为文件局部变量 注意&#xff1a;非const变量默认为extern。要使const变量能够在其他文件中访问&#xff0c;必须在文件中显式地指定它为extern。 1) 未被const修饰的变量在不同文件的访问 可以看到是能够默认不加const是可以正常访问的 2) …

某大型啤酒企业:构建网络安全软实力,首选Coremail反钓鱼演练

客户背景 某大型啤酒厂商的公司规模和市场份额多年来始终都处于行业领先地位&#xff0c;积极赞助多项体育赛事&#xff0c;持续丰富和提升品牌形象。作为一家具有全球影响力的企业&#xff0c;自然也成为了全球黑客等攻击团伙的重点目标&#xff0c;而系统攻击的开端便是钓鱼…

什么是产品路线图?如何做产品路线图规划

产品路线图规划 •产品路线图是一个高层次的战略计划&#xff0c;它描述了产品在未来一段时间可能会如何发展和壮大&#xff0c;产品路线图确保整个产品团队持续关注产品的目标&#xff0c;帮助产品负责人把握产品的战略方向&#xff0c;调整产品的优先级和产品规划。 里程碑…

轻松打造智能化性能测试监控平台:【JMeter+Grafana+Influxdb】的优化整合方案

目录 【引言】 【背景说明】 【实现原理】 【平台搭建】 方法一&#xff1a;Windows或macOS环境下搭建 1.InfluxDB安装 2.grafana安装 3.jmeter配置 方法二&#xff1a;Linux环境下搭建 1.influxdb安装 2.grafana安装 3.jdkjmeter安装 方法三&#xff1a;docker容…

L1-093 猜帽子游戏

宝宝们在一起玩一个猜帽子游戏。每人头上被扣了一顶帽子&#xff0c;有的是黑色的&#xff0c;有的是黄色的。每个人可以看到别人头上的帽子&#xff0c;但是看不到自己的。游戏开始后&#xff0c;每个人可以猜自己头上的帽子是什么颜色&#xff0c;或者可以弃权不猜。如果没有…

python接口自动化测试之unittest自动化测试框架基本使用

目录 unittest简单介绍 unittest基础使用 unittest.Testcase setUp tearDown setUpClass tearDownClass 测试用例 unittest.main() unitteest提供的各种断言方式 unittest测试用例跳过执行 跳过执行测试用例共有四种写法 self.skipTest(reason) 跳过执行测试用例注…

手动搭建一个简单的MVVMLight框架的方法

本章讲述&#xff1a;手动搭建一个简单的MVVMLight框架步骤&#xff1a; 1、下载MVVMLight所需要的dll库文件 主要文件包括&#xff1a;CommonServiceLocator.dll、GalaSoft.MvvmLight.dll、GalaSoft.MvvmLight.Extras.dll、GalaSoft.MvvmLight.Platform.dll、System.Windows.…

小兔新--项目实战总结1

目录 Layout-吸顶导航交互实现 吸顶交互 vueUse Layout-Pinia优化重复请求 为什么要优化 如何优化 Home-懒加载指令优化 场景和指令用法 实现思路和步骤 回顾核心步骤代码 Home-懒加载指令优化 问题1:逻辑书写位置不合理 问题2:重复监听问题 一级分类-解决路由缓存问…

Web基本与HTTP协议

目录 一&#xff1a;域名 1.域名概述 2.域名空间结构 3. 域名注册 二&#xff1a; 网页访问&#xff08;HTTP/HTTPS&#xff09; 1.网页的基本概念 2.网站 3.主页 4.域名 5.HTTP 6.URL 7.网页基本标签 &#xff08;1&#xff09;网页摘要信息的作用 &#xff08;…

Oracle SQLTUNING优化SQL

通过AWR的TOPSQL观察到sqlid为6pk9xfmjd0s8j的sql语句耗时1分钟。 通过ash观察到&#xff0c;该SQL由于全表扫描占用了大量的IO资源。 解析执行计划&#xff0c;看到是MED_SALE_ORDER表做了全表扫描。 该表有678W条记录&#xff0c;全表扫描必定IO指标会冲高&#xff0c;影…

SFM过程(一)

以图像为基础的三维重建过程SFM基本如下图所示&#xff1a; 以SfM-Toy-Library代码为例&#xff0c;如下&#xff1a; ErrorCode SfM::runSfM() {if (mImages.size() < 0) {cerr << "No images to work on." << endl;return ErrorCode::ERROR;}//in…

Java-网络原理

目录 一、网络互连 局域网LAN 广域网WAN 二、网络通信基础 IP地址 端口号 认识协议 三、五元组 四、协议分层 五、OSI七层模型 六、TCP/IP五层&#xff08;或四层&#xff09;模型 网络分层对应 七、封装和分用 一、网络互连 随着时代的发展&#xff0c;越来越需要计…

Smartbi电子表格故事之用数据进行销售问题分析

天津小麦商贸有限公司&#xff08;X&M&#xff09;成立于2012年11月&#xff0c;主营业务是商贸流通业&#xff0c;主要是日用商品的批发销售。 2012年前&#xff0c;公司创始人&#xff08;总经理和销售总监&#xff09;一直从事外贸的生意&#xff0c;自从2008年金融危机…