Java基础笔试练习(十七)

D.throws

答案:

A

解析:

处理异常常用的两种方式:

1、try…catch(捕获处理机制);

2、throws(冒泡处理机制).

注意细节:使用try…catch块捕获时可以没有catch块,但当没用catch块的时候必须得有finally块.故选A)

9.关于修饰语的使用,以下哪一项是正确的? ()


A.如果没有为成员声明指定可访问性修饰符(public,protected和private),则该成员只能访问其类的包中的类及其类的子类的任何位置

B.您无法指定局部变量的可访问性。它们只能在声明它们的区域内访问

C.类的子类必须与它们扩展的类位于同一个包中D)上面提到的都不是

答案:

B

解析:

没有被public,protected,private修饰的类成员,只有同一个包里的类中可以访问,其余都不行;

10.代码行float t=5.1; int i=t; ,不正确的是


A.代码不能编译

B.代码编译, i被设置为5

C.第二行若改为 int i=(byte)t ,并结合D选项,则可编译

D.第一行若改为 float t=5.1f ,并结合C选项,则可编译

答案:

B

解析:

题目要求是不正确的

11.以下代码的输出的正确结果是()


public class Test {

public static void main(String args[]) {

String s = “祝你考出好成绩!”;

System.out.println(s.length());

}

}

A.24

B.16

C.15

D.8

答案:

D

解析:

12.与其等价表示是哪一项()?


public interface IService {

String NAME=“default”;

}

A.public String NAME=”default”;

B.public static String NAME=”default”;

C.private String NAME=”default”;

D.public static final String NAME=”default”;

答案:

D

解析:

为什么是public:因为接口必然是要被实现的,如果不是public,这个属性就没有意义了;

为什么是static:因为如果不是static,那么由于每个类可以继承多个接口,那就会出现重名的情况;

为什么是final:这是为了体现java的开闭原则,因为接口是一种模板,既然是模板,那就对修改关闭,对扩展开放。

13.下列关于包(package)的描述,正确的是()


A.包(package)是Java中描述操作系统对多个源代码文件组织的一种方式。

B.import语句将所对应的Java源文件拷贝到此处执行。

C.包(package)是Eclipse组织Java项目特有的一种方式。

D.定义在同一个包(package)内的类可以不经过import而直接相互使用。

答案:

D

解析:

1、为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。Java中的包一般均包含相关的类,java是跨平台的,所以java中的包和操作系统没有任何关系,java的包是用来组织文件的一种虚拟文件系统。A错

2、import语句并没有将对应的java源文件拷贝到此处仅仅是引入,告诉编译器有使用外部文件,编译的时候要去读取这个外部文件。B错

3、Java提供的包机制与IDE没有关系。C错

4、定义在同一个包(package)内的类可以不经过import而直接相互使用。

14.Java中用正则表达式截取字符串中第一个出现的英文左括号之前的字符串。比如:北京市(海淀区)(朝阳区)(西城区),截取结果为:北京市。正则表达式为()


A.“._?(?=\()”

B.“._?(?=()”

C.“._(?=\()”

D.“._(?=()”

答案:

A

解析:

略,个人公众号中有对正则表达式的详细介绍。

15.以下代码段执行后的输出结果为()?


public class Test {

public static void main(String[] args) {

System.out.println(test());

}

private static int test() {

int temp = 1;

try {

System.out.println(temp);

return ++temp;

} catch (Exception e) {

System.out.println(temp);

return ++temp;

} finally {

++temp;

System.out.println(temp);

}

}

}

A.1,2,2

B.1,2,3

C.1,3,3

D.1,3,2

答案:

D

解析:

执行顺序为:

输出try里面的初始temp:1;

temp=2;

保存return里面temp的值:2;

执行finally的语句temp:3,输出temp:3;

返回try中的return语句,返回存在里面的temp的值:2;

输出temp:2

16.检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。


package algorithms.com.guan.javajicu;

public class Inc {

public static void main(String[] args) {

Inc inc = new Inc();

int i = 0;

inc.fermin(i);

i= i ++;

System.out.println(i);

}

void fermin(int i){

i++;

}

}

A.0

B.1

C.2

D.3

答案:

A

解析:

这道题两个考点:

1.值传递与引用传递的区别

2.i++与++i的区别

关于第一点:

int基本类型属于值传递。所以i的值并没有发生改变。i还是为0

关于第二点:Java使用了中间缓存变量机制:

i=i++;等同于:

temp=i; (等号右边的i)

i=i+1; (等号右边的i)

i=temp; (等号左边的i)

而i=++i;则等同于:

i=i+1;

temp=i;

i=temp;

如果将代码中的 i= ++i;可以看到打印的结果是1.

17.下面程序执行的结果为( )


void main( )

{

char ch1,ch2;

ch1 =‘D’+‘8’-‘3’;

ch2 =‘9’-‘1’;

printf(“%c %d\n”,ch1,ch2);

}

A.I ‘8’

B.I 8

C.G ‘8’

D.其他几项都不对

答案:

B

解析:

c语言的题目,ASCII值的运算,A=65,0=48(以此类推)。ch1=68+56-51=73然后以char类型输出所以是I,ch2=57-49=8以整型输出所以是8

18.CMS垃圾回收器在那些阶段是没用用户线程参与的


A.初始标记

B.并发标记

C.重新标记

D.并发清理

答案:

AC

解析:

用户线程(user-level threads)指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。

CMS的GC过程有6个阶段(4个并发,2个暂停其它应用程序)

  1. 初次标记(STW initial mark)

  2. 并发标记(Concurrent marking)

  3. 并发可中断预清理(Concurrent precleaning)

  4. 最终重新标记(STW remark)

  5. 并发清理(Concurrent sweeping)

  6. 并发重置(Concurrent reset)

在初次标记,重新标志的时候,要求我们暂停其它应用程序,那么这两个阶段用户线程是不会参与的

19.下列哪些操作会使线程释放锁资源?


A.sleep()

B.wait()

C.join()

D.yield()

答案:

B C

解析:

1.sleep()方法

在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。不推荐使用。

sleep()使当前线程进入阻塞状态,在指定时间内不会执行。

2.wait()方法

在其他线程调用对象的notify或notifyAll方法前,导致当前线程等待。线程会释放掉它所占有的“锁标志”,从而使别的线程有机会抢占该锁。

当前线程必须拥有当前对象锁。如果当前线程不是此锁的拥有者,会抛出IllegalMonitorStateException异常。

唤醒当前对象锁的等待线程使用notify或notifyAll方法,也必须拥有相同的对象锁,否则也会抛出IllegalMonitorStateException异常。

waite()和notify()必须在synchronized函数或synchronized block中进行调用。如果在non-synchronized函数或non-synchronized block中进行调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException的异常。

**3.yield方法 **

暂停当前正在执行的线程对象。

yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。

yield()只能使同优先级或更高优先级的线程有执行的机会。

最后

这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档

祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

image.png

线程不是此锁的拥有者,会抛出IllegalMonitorStateException异常。

唤醒当前对象锁的等待线程使用notify或notifyAll方法,也必须拥有相同的对象锁,否则也会抛出IllegalMonitorStateException异常。

waite()和notify()必须在synchronized函数或synchronized block中进行调用。如果在non-synchronized函数或non-synchronized block中进行调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException的异常。

**3.yield方法 **

暂停当前正在执行的线程对象。

yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。

yield()只能使同优先级或更高优先级的线程有执行的机会。

最后

这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档

祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

[外链图片转存中…(img-HNZXeHcQ-1714352809211)]

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值