JAVA开发面试题&基础篇&第七部分

1.下列说法错误的有()(多选)

选项内容
AJava面向对象语言容许单独的过栈与函数存在
BJava面向对象语言容许单独的方法存在
CJava语言中的方法属于类中的成员(member)
DJava语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同

答案:ABC
分析:
B. Java不允许单独的方法,过程或函数存在,需要隶属于某一类中;
C. 静态方法属于类的成员,非静态方法属于对象的成员。

2.下列说法错误的有()(多选)

选项内容
A能被java.exe成功运行的java class文件必须有main()方法
BJ2SDK就是Java API
CAppletviewer.exe可利用jar选项运行.jar文件
D能被Appletviewer成功运行的java class文件必须有main()方法

答案:BCD
分析:B. J2SDK是sun公司编程工具,API是指的应用程序编程接口;
C. Appletviewer.exe就是用来解释执行java applet应用程序的,一种执行HTML文件上的Java小程序类的Java浏览器;
D. 能被Appletviewer成功运行的java class文件可以没有main()方法。

3.请问0.1234的数据类型是()

选项内容
Afloat
Bdouble
CFloat
DDouble

答案:B
分析:小数默认是双精度浮点型即double类型的。

4.Java接口的修饰符可以为()

选项内容
Aprivate
Bprotected
Cfinal
Dabstract

答案:D
分析:能够修饰interface的只有public、abstract以及默认的三种修饰符【已经第二遍出现了,读者可记住了么?】。

5.不通过构造函数也能创建对象么()

选项内容
A
B

答案:A
分析: Java创建对象的几种方式:(前面出现过一次喽!!!)
(1) 用new语句创建对象,这是最常见的创建对象的方法。
(2) 运用反射手段,调用java.lang.Class或者
java.lang.reflect.Constructor类的newInstance()实例方法。
(3) 调用对象的clone()方法。
(4) 运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。
(1)和(2)都会明确的显式的调用构造函数;(3)是在内存上对已有对象的影印,所以不会调用构造函数;(4)是从文件中还原类的对象,也不会调用构造函数。

6.存在使i+1< i的数么?

答案:存在
解析:如果 i 为 int 型,那么当 i 为 int 能表示的最大整数时, i+1 就溢出变成负数了,此时不就 <i 了吗。 扩展:存在使 i > j || i <= j 不成立的数吗?答案:存在解析:比如 Double.NaN 或 Float.NaN 。【NaN代表非数值的特殊值,用于指示某个值不是数字。NaN与其他数值进行比较的结果总是不相等的,包括自身在内,所以不能用Number.NaN来比较检测一个值不是数字】
测试代码:

public static void main(String[] args) {
        int i = Integer.MAX_VALUE;
        System.out.println(i+1<i);
        System.out.println(i+1);
    }

结果如下:

true
-2147483648

7.int与Integer有什么区别?

int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。
在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量(示例 见79题测试代码部分)。

8.可序列化对象为什么要定义serialversionUID值?

SerialVersionUid,简言之,其目的是序列化对象版本控制,有关各版本反序列化时是否兼容。如果在新版本中这个值修改了,新版本就不兼容旧版本,反序列化时会抛出InvalidClassException异常。如果修改较小,比如仅仅是增加了一个属性,我们希望向下兼容,老版本的数据都能保留,那就不用修改;如果我们删除了一个属性,或者更改了类的继承关系,必然不兼容旧数据,这时就应该手动更新版本号,即SerialVersionUid。
另附:
关于SerialVersionUid详细介绍参见CSDN博文: https://blog.csdn.net/u014750606/article/details/80040130.
以及博客: https://www.cnblogs.com/duanxz/p/3511695.html.【有博主已出,我不赘述,链接如果消失,请评论私信我更新,或通过公众号“胜科课堂”联系我】

9.请解释以下常用正则含义:\d,\D,\s,.,*,?,|,[0-9]{6},\d+

\d: 匹配一个数字字符。等价于[0-9]
\D: 匹配一个非数字字符。等价于[^0-9]
\s: 匹配任何空白字符,包括空格、制表符、换页符等等。
                       等价于 [ \f\n\r\t\v]
. :匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。
*:匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+:匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
|:将两个匹配条件进行逻辑“或”(Or)运算
[0-9]{6}:匹配连续6个0-9之间的数字
\d+:匹配至少一个0-9之间的数字

百度详情链接: https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin.
一般正则表达式的题目很少很少,仅为普通企业工作面试可以忽略正则!!!

10.十进制数72转换成八进制数是多少?

答: 110,10进制先转2进制再转8或16进制。

11.Java程序中创建新的类对象,使用关键字new,回收无用的类对象使用关键字free正确么?

答:Java程序中创建新的类对象,使用关键字new是正确的; 回收无用的类对象使用关键字free是错误的.垃圾回收见GC面试题部分。

12.Class类的getDeclaredFields()方法与getFields()的区别?

答:getDeclaredFields(): 可以获取所有本类自己声明的方法, 不能获取继承的方法
getFields(): 只能获取所有public声明的方法, 包括继承的方法

13.在switch和if-else语句之间进行选取,当控制选择的条件不仅仅依赖于一个x时,应该使用switch结构;正确么?

答:不正确。【此题若面试遇见,按照自己思路回答,言之有理即可,参照见下:】
通常情况下,进行比较判断的处理,switch 和if-else可以互相转换来写;if-else作用的范围比switch-case作用范围要大,但是当switch-case和if-else都可以用的情况下,通常推荐使用switch-case。

14.描述&和&&的区别。

&和&&的联系(共同点):
&和&&都可以用作逻辑与运算符,但是要看使用时的具体条件来决定。
操作数1&操作数2,操作数1&&操作数2,
操作数1&操作数2,操作数1&&操作数2,
情况1:当上述的操作数是boolean类型变量时,&和&&都可以用作逻辑与运算符。
情况2:当上述的表达式结果是boolean类型变量时,&和&&都可以用作逻辑与运算符。
表示逻辑与(and),当运算符两边的表达式的结果或操作数都为true时,整个运算结果才为true,否则,只要有一方为false,结果都为false。
表示逻辑与(and),当运算符两边的表达式的结果或操作数都为true时,整个运算结果才为true,否则,只要有一方为false,结果都为false。
(1)、&逻辑运算符称为逻辑与运算符,&&逻辑运算符称为短路与运算符,也可叫逻辑与运算符。
对于&:无论任何情况,&两边的操作数或表达式都会参与计算。
对于&&:当&&左边的操作数为false或左边表达式结果为false时,&&右边的操作数或表达式将不参与计算,此时最终结果都为false。
综上所述,如果逻辑与运算的第一个操作数是false或第一个表达式的结果为false时,对于第二个操作数或表达式是否进行运算,对最终的结果没有影响,结果肯定是false。推介平时多使用&&,因为它效率更高些。
(2)、&还可以用作位运算符。当&两边操作数或两边表达式的结果不是boolean类型时,&用于按位与运算符的操作。

15.使用final关键字修饰符一个变量时,是引用不能变,还是引用的对象不能变?

final修饰基本类型变量,其值不能改变。
但是final修饰引用类型变量,栈内存中的引用不能改变,但是所指向的堆内存中的对象的属性值仍旧可以改变。

class Test {
    public static void main(String[] args) {
        final Dog dog = new Dog("小黄");
        dog.name = "小白";//正确
        dog = new Dog("小黑");//错误
    }
}

16.已知表达式int m[] = {0,1,2,3,4,5,6}; 下面那个表达式的值与数组的长度相等()

选项内容
Am.length()
Bm.length
Cm.length()+1
Dm.length+1

答案:B 。分析:数组的长度是.length

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值