企业真题分享(1)

企业真题分享

一、Java语言概述

1.一个”.java”源文件中是否可以包括多个类?有什么限制(明*数据)

是!

一个源文件中可以声明多个类,但是最多只能有一个类使用public进行声明。
且要求声明为public的类的类名与源文件名相同。

2.Java 的优势(阿**巴)

  • 跨平台型
  • 安全性高
  • 简单性
  • 高性能
  • 面向对象性
  • 健壮性

3.如何看待Java是一门半编译半解释型的语言(携*)

image-20230722160750973

1、Java一般被称为 半编译半解释型语言,也就是说Java在运行前 需要经过编译过程,将源代码 转换为字节码文件,然后由JVM解释执行字节码。

2、具体来说,Java的编译过程分两步:首先将Java源代码编译成class文件,也就是字节码文件,然后由JVM执行字节码文件进行运行。

3、虽然Java的字节码 需要在JVM中解释执行才能运行,但JVM中 内置了即时编译器(Just-In-Time Compiler,JIT),JIT可以将部分常用的字节码编译成本地机器代码,从而提高Java程序的性能。因此,Java既有编译型语言的优点(高效、稳定、安全),也有解释型语言的灵活性和可移植性。

二、变量与运算符

1、&和&&的区别?(恒*电子、*度)

&和&&都是Java中的逻辑运算符,用于对两个布尔值进行逻辑运算,但它们有着不同的特点和使用场景,具体区别如下:
(1)运算规则
&是按位与运算符,它会对两个操作数的每一位进行逻辑与运算,然后返回结果。而&&是逻辑与运算符,
它只有在两个操作数都为true时才返回true,如果其中任何一个操作数为false,则直接返回false。
(2)短路效应
&运算符不管左右两边的操作数,都会对两个操作数进行运算,不会出现短路效应。而&&运算符会先判断左边的操作数,
如果左边的操作数为false,则不会再对右边的操作数进行运算,直接返回false。这种特性称为短路效应。
(3)使用场景
&通常用于位运算,而&&通常用于逻辑运算。在需要对两个操作数都进行运算时,使用&;
在只需要在两个操作数都为true时才进行运算时,使用&&。此外,由于&&具有短路效应,
因此在需要对某个条件进行判断时,如果该条件需要进行复杂的计算或涉及到I/O操作等,可以使用&&来提高程序的效率。
总之,&和&&都是Java中的逻辑运算符,它们有着不同的运算规则和特点,应根据具体的使用场景选择合适的运算符。

2、Java中的基本类型有哪些?String 是最基本的数据类型吗?(恒*电子)

String不是,属于引用数据类型

image-20230722162214312

3、 char型变量中能不能存储一个中文汉字,为什么?(*通快递)

可以的。char c1 = ‘中’;

char c2 = ‘a’。

因为char使用的是unicode字符集,包含了世界范围的所有的字符。

4、int i=0; i=i++执行这两句化后变量 i 的值为(*软)

5、boolean 占几个字节(阿**巴)

编译时不谈占几个字节。

但是JVM在给boolean类型分配内存空间时,boolean类型的变量占据一个槽位(slot,等于4个字节)。
细节:true:1  false:0

>拓展:在内存中,byte\short\char\boolean\int\float : 占用1个slot
              double\long :占用2个slot

6、为什么Java中0.1 + 0.2结果不是0.3?(字*跳动)

在代码中测试0.1 + 0.2,你会惊讶的发现,结果不是0.3,而是0.3000……4。这是为什么?

几乎所有现代的编程语言都会遇到上述问题,包括 JavaScript、Ruby、Python、Swift 和 Go 等。引发这个问题的原因是,它们都采用了IEEE 754标准

IEEE是指“电气与电子工程师协会”,其在1985年发布了一个IEEE 754计算标准,根据这个标准,小数的二进制表达能够有最大的精度上限提升。但无论如何,物理边界是突破不了的,它仍然不能实现“每一个十进制小数,都对应一个二进制小数”。正因如此,产生了0.1 + 0.2不等于0.3的问题。

具体的:

整数变为二进制,能够做到“每个十进制整数都有对应的二进制数”,比如数字3,二进制就是11;再比如,数字43就是二进制101011,这个毫无争议。

对于小数,并不能做到“每个小数都有对应的二进制数字”。举例来说,二进制小数0.0001表示十进制数0.0625 (至于它是如何计算的,不用深究);二进制小数0.0010表示十进制数0.125;二进制小数0.0011表示十进制数0.1875。看,对于四位的二进制小数,二进制小数虽然是连贯的,但是十进制小数却不是连贯的。比如,你无法用四位二进制小数的形式表示0.125 ~ 0.1875之间的十进制小数。

所以在编程中,遇见小数判断相等情况,比如开发银行、交易等系统,可以采用四舍五入或者“同乘同除”等方式进行验证,避免上述问题。

三、数组

1. 数组有没有length()这个方法? String有没有length()这个方法?(*蓝)

数组没有length(),是length属性。

String有length()

2、为什么数组要从0开始编号,而不是1(中*支付)

数组的索引,表示了数组元素距离首地址的偏离量。因为第1个元素的地址与首地址相同,所以偏移量就是0。所以从0开始。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值