Java小题精炼训练营(篇三)

文章探讨了Java中的多线程同步、接口实现、泛型的使用、异常处理规则、线程的互斥锁定、静态方法特性以及C++与Java接口的区别。涉及原子操作、接口方法实现、哈希码与equals的关系等内容,适合准备技术面试的读者
摘要由CSDN通过智能技术生成

x++;

++x;

x=1;

A.由于y的值不确定,所以要加锁;

B,C 两个在多线程情况下是必须要加锁的,因为他们是先被读入寄存器,然后再进行+1操作,如果没有加锁,那么可能会出现数据异常;

D 原子操作,所以不需要加锁

原子性:指该操作不能再继续划分为更小的操作。

Java中的原子操作包括:

1、除long和double之外的基本类型的赋值操作

2、所有引用reference的赋值操作

3、java.concurrent.Atomic.* 包中所有类的一切操作

D

7、如果一个接口Glass有个方法setColor(),有个类BlueGlass实现接口Glass,则在类BlueGlass中正确的是?  ( )

protected void setColor() { …}

void setColor() { …}

public void setColor() { …}

以上语句都可以用在类BlueGlass中

接口中只能有常量,是public static final的,方法不写默认是 public abstract的

这题就考了两个点:

1. 虽然JDK8接口中可以有static或者default修饰的方法,但是这两种方法必须有方法体。同时接口中的方法默认还是public abstract的

2. 类对接口的实现,其实体现了多态性,因为类需要重写接口中所有的抽象方法。而重写需要满足两同两小一大:

1. 方法名和形参列表一致。

2. 重写方法的返回值(引用类型)和抛出的异常,必须是被重写方法的子类或者和被重写方法一样。一旦返回值是基本数据类型,那么重写方法和被重写方法必须一致。

3. 重写方法的访问修饰符大于等于被重写方法的访问修饰符。

C

8、下面论述正确的是()?

如果两个对象的hashcode相同,那么它们作为同一个HashMap的key时,必然返回同样的值

如果a,b的hashcode相同,那么a.equals(b)必须返回true

对于一个类,其所有对象的hashcode必须不同

如果a.equals(b)返回true,那么a,b两个对象的hashcode必须相同

hashcode和equals的约定关系如下:

1.equals()相等的两个对象他们的hashCode()肯定相等,也就是用equals()对比是绝对可靠的。

2.hashCode()相等的两个对象他们的equal()不一定相等,也就是hashCode()不是绝对可靠的。

D

9、protected访问权限要小于包访问权限。(  )

正确

错误

Java类成员的访问控制权限:

public > protected > 同包(default) > private

B

11、下列说法错误的是

虚拟机中没有泛型,只有普通类和普通方法

所有泛型类的类型参数在编译时都会被擦除

创建泛型对象时请指明类型,让编译器尽早的做参数检查

泛型的类型擦除机制意味着不能在运行时动态获取List中T的实际类型

1、创建泛型对象的时候,一定要指出类型变量T的具体类型。争取让编译器检查出错误,而不是留给JVM运行的时候抛出类不匹配的异常。 2、JVM如何理解泛型概念 —— 类型擦除。事实上,JVM并不知道泛型,所有的泛型在编译阶段就已经被处理成了普通类和方法。 处理方法很简单,我们叫做类型变量T的擦除(erased) 。 总结:泛型代码与JVM ① 虚拟机中没有泛型,只有普通类和方法。 ② 在编译阶段,所有泛型类的类型参数都会被Object或者它们的限定边界来替换。(类型擦除) ③ 在继承泛型类型的时候,桥方法的合成是为了避免类型变量擦除所带来的多态灾难。 无论我们如何定义一个泛型类型,相应的都会有一个原始类型被自动提供。原始类型的名字就是擦除类型参数的泛型类型的名字。

D

12、下面哪些情况会引发异常:

数组越界

指定URL不存在

使用throw语句抛出

使用throws语句

throws 和 throw:

throws出现在方法头,表示可能会出现异常;

throw是在方法体,抛出了异常,执行throw则一定抛出了某种异常

throws表示出现异常的一种可能性,并不一定会发生异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。两者都是消极的异常处理方式,只是抛出或者可能抛出异常,是不会由函数处理,真正的处理异常由它的上层调用处理。

ABC

13、下面有关Java的说法正确的是(         )

一个类可以实现多个接口

抽象类必须有抽象方法

protected成员在子类可见性可以修改

通过super可以调用父类构造函数

final的成员方法实现中只能读取类的成员变量

String是不可修改的,且java运行环境中对string对象有一个常量池保存

A对:java类单继承,多实现

B错:被abstract修饰的类就是抽象类,有没有抽象方法无所谓

C错:描述有问题。protected成员在子类的可见性,我最初理解是子类(不继承父类protected成员方法)获取父类被protected修饰的成员属性或方法,可见性是不可能变的,因为修饰符protected就是描述可见性的。

这道题应该是要考察子类继承父类,并重写父类的protected成员方法,该方法的可见性可以修改,这是对的,因为子类继承父类的方法,访问权限可以相同或往大了改

D对。

E错:final修饰的方法只是不能重写,static修饰的方法只能访问类的成员变量

F对。

ACDF

14、有关线程的叙述正确的是()

可以获得对任何对象的互斥锁定

通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定

线程通过使用synchronized关键字可获得对象的互斥锁定

线程调度算法是平台独立的

线程的互斥锁机制:synchronized,lock,condition

线程调度分为协同式调度和抢占式调度,Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间,线程的切换不由线程本身来决定(协同式调度)。这就是平台独立的原因。

CD

15、下列代码片段中,存在编译错误的语句是()

byte b1=1,b2=2,b3,b6,b8;

final byte b4=4,b5=6,b7;

b3=(b1+b2); /语句1/

b6=b4+b5; /语句2/

b8=(b1+b4); /语句3/

b7=(b2+b5); /语句4/

System.out.println(b3+b6);

语句2

语句1

语句3

语句4

Java表达式转型规则由低到高转换

1、所有的byte,short,char型的值将被提升为int型;

2、如果有一个操作数是long型,计算结果是long型;

3、如果有一个操作数是float型,计算结果是float型;

4、如果有一个操作数是double型,计算结果是double型;

5、被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。

语句1错误:b3=(b1+b2);自动转为int,所以正确写法为b3=(byte)(b1+b2);或者将b3定义为int;

语句2正确:b6=b4+b5;b4、b5为final类型,不会自动提升,所以和的类型视左边变量类型而定,即b6可以是任意数值类型;

语句3错误:b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4);

语句4错误:b7=(b2+b5); 同上。同时注意b7是final修饰,即只可赋值一次,便不可再改变

BCD

16、Java()中的静态方法是什么

它是属于类而不是对象(实例)的方法

静态方法只能访问静态数据。它无法访问非静态数据(实例变量)

静态方法只能调用其他静态方法,不能从中调用非静态方法。

静态方法不能通过类名直接访问,并且不需要任何对象

静态方法可以直接用类名访问

ABC

17、下述有关c++的虚类和java接口的描述,说法错误的是?

c++虚类相当与java里面的抽象类

最后

即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!

我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:

Dubbo面试专题

JVM面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Java并发面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Kafka面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MongDB面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MyBatis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MySQL面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Netty面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

RabbitMQ面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Redis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Spring Cloud面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

SpringBoot面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

zookeeper面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

常见面试算法题汇总专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

计算机网络基础专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

设计模式专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

1503697)]

Netty面试专题

[外链图片转存中…(img-SHw6RstX-1714361503697)]

RabbitMQ面试专题

[外链图片转存中…(img-bld3fsaJ-1714361503698)]

Redis面试专题

[外链图片转存中…(img-BJt8yrpU-1714361503698)]

Spring Cloud面试专题

[外链图片转存中…(img-nW1PpQz6-1714361503698)]

SpringBoot面试专题

[外链图片转存中…(img-wFXVdbZx-1714361503699)]

zookeeper面试专题

[外链图片转存中…(img-nWQiaZ2s-1714361503699)]

常见面试算法题汇总专题

[外链图片转存中…(img-QzfhNJ09-1714361503700)]

计算机网络基础专题

[外链图片转存中…(img-rbY7B8le-1714361503700)]

设计模式专题

[外链图片转存中…(img-jYA4jJUy-1714361503700)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值