Java基础笔试练习(四)

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

4.以下会产生信息丢失的类型转换是( )


A.float a=10

B.int a=(int)8846.0

C.byte a=10; int b=-a

D.double d=100

答案:

B

解析:

会产生信息丢失不如说丢失精度,这样可能更容易明白,而精度丢失只会发生在从大范围到小范围的转换。上面四个选项,只有 B 是从 double 到 int ,也就是从大范围到小范围。

5.以下代码的输出的正确结果是


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

解析:

java的String底层是char数组,它的length()返回数组大小,而unicode中一个汉字是可以用一个char表示的。 一个汉字等于一个字符字符是char,一个汉字也等于二个字节,字节是byte。

6.java中,StringBuilder和StringBuffer的区别,下面说法错误的是?


A.StringBuffer是线程安全的

B.StringBuilder是非线程安全的

C.StringBuffer对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象。

D.效率比较String<StringBuffer<StringBuilder,但是在 String S1 = “This is only a” + “ simple” + “ test”时,String效率最高。

答案:

C

解析:

效率:String(大姐,出生于JDK1.0时代) 不可变字符序列<StringBuffer(二姐,出生于JDK1.0时代) 线程安全的可变字符序列<StringBuilder(小妹,出生于JDK1.5时代) 非线程安全的可变字符序列。Java中的String是一个类,而并非基本数据类型。string是值传入,不是引用传入。StringBuffer和StringBuilder可以算是双胞胎了,这两者的方法没有很大区别。但在线程安全性方面,StringBuffer允许多线程进行字符操作。这是因为在源代码中StringBuffer的很多方法都被关键字synchronized修饰了,而StringBuilder没有。StringBuilder的效率比StringBuffer稍高,如果不考虑线程安全,StringBuilder应该是首选。另外,JVM运行程序主要的时间耗费是在创建对象和回收对象上。

关于D:因为进行字符串加运算时实际上是在堆中开辟大量空间,为了避免资源耗尽java编译器自动将String变量变为StringBulider而后进行append处理。

7.下列关于修饰符混用的说法,错误的是( )


A.abstract不能与final并列修饰同一个类

B.abstract类中不应该有private的成员

C.abstract方法必须在abstract类或接口中

D.static方法中能直接调用类里的非static的属性

答案:

D

解析:

1、abstract不能与final并列修饰同一个类 对的。

2、abstract类中不应该有private的成员 对的 :abstract类中可以有private 但是不应该有。

3、abstract方法必须在abstract类或接口中 对的 : 若类中方法有abstract修饰的,该类必须abstract修改。接口方法默认public abstract。

4、static方法中能处理非static的属性 错误 :在JVM中static方法在静态区,静态区无法调用非静态区属性。

8.如下语句通过算术运算和逻辑运算之后i和 j的结果是( )


int i=0;

int j=0;

if((++i>0)||(++j>0)){

//打印出i和j的值。

}

A.i=0;j=0

B.i=1;j=1

C.i=0;j=1

D.i=1;j=0

答案:

D

解析:

考察的是短路逻辑的用法,即:当第一个逻辑表达式可以确定结果时,将不再进行剩余表达式的运算。

9.以下是java concurrent包下的4个类,选出差别最大的一个


A.Semaphore

B.ReentrantLock

C.Future

D.CountDownLatch

答案:

C

解析:

A、Semaphore:类,控制某个资源可被同时访问的个数;

B、ReentrantLock:类,具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大;

C、Future:接口,表示异步计算的结果;

D、CountDownLatch: 类,可以用来在一个线程中等待多个线程完成任务的类。

10.下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是?


A.实例变量指的是类中定义的变量,即成员变量,如果没有初始化,会有默认值。

B.局部变量指的是在方法中定义的变量,如果没有初始化,会有默认值

C.类变量指的是用static修饰的属性

D.final变量指的是用final 修饰的变量

答案:

B

解析:

B.定义在类中的变量是类的成员变量,可以不进行初始化,Java会自动进行初始化,如果是引用类型默认初始化为null,如果是基本类型例如int则会默认初始化为0

局部变量是定义在方法中的变量,必须要进行初始化。

被static关键字修饰的变量是静态的,静态变量随着类的加载而加载,所以也被称为类变量

被final修饰的变量是常量

11.关于JAVA的垃圾回收机制,下面哪些结论是正确?


A.程序可以任意指定释放内存的时间

B.JAVA程序不能依赖于垃圾回收的时间或者顺序

C.程序可明确地标识某个局部变量的引用不再被使用

D.程序可以显式地立即释放对象占有的内存

答案:

B

解析:

java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间,是不可知的。当对象的引用变量被赋值为null,可能被当成垃圾。

12.JSP分页代码中,哪个步骤次序是正确的?


A.先取总记录数,得到总页数,最后显示本页的数据。

B.先取所有的记录,得到总页数,再取总记录数,最后显示本页的数据。

C.先取总页数,得到总记录数,再取所有的记录,最后显示本页的数据。

D.先取本页的数据,得到总页数,再取总记录数,最后显示所有的记录。

答案:

A

解析:

1、count(*)得到总记录数

2、计算总页数

3、获取所有记录(个人感觉这一步不需要,可以直接获取指定页数数据)

4、过滤显示本页数据

13.关于访问权限说法正确的是 ? ( )


A.外部类前面可以修饰public,protected和private

B.成员内部类前面可以修饰public,protected和private

C.局部内部类前面可以修饰public,protected和private

D.以上说法都不正确

答案:

B

解析:

(1)对于外部类而言,它也可以使用访问控制符修饰,但外部类只能有两种访问控制级别:public和默认。因为外部类没有处于任何类的内部,也就没有其所在类的内部、所在类的子类两个范围,因此 private 和 protected 访问控制符对外部类没有意义。

(2)内部类的上一级程序单元是外部类,它具有 4 个作用域:同一个类( private )、同一个包( protected )和任何位置( public )。

(3)因为局部成员的作用域是所在方法,其他程序单元永远不可能访问另一个方法中的局部变量,所以所有的局部成员都不能使用访问控制修饰符修饰。

14.以下代码执行的结果显示是多少( )?


public class Demo {

class Super{

int flag=1;

Super(){

test();

}

void test(){

System.out.println(“Super.test() flag=”+flag);

}

}

class Sub extends Super{

Sub(int i){

flag=i;

System.out.println(“Sub.Sub()flag=”+flag);

}

void test(){

System.out.println(“Sub.test()flag=”+flag);

}

}

public static void main(String[] args) {

new Demo().new Sub(5);

}

}

A.Sub.test() flag=1,Sub.Sub() flag=5

B.Sub.Sub() flag=5,Sub.test() flag=5

C.Sub.test() flag=0,Sub.Sub() flag=5

D.Super.test() flag=1,Sub.Sub() flag=5

答案:

A

解析:

在继承中代码的执行顺序为:

1.父类静态对象,父类静态代码块

2.子类静态对象,子类静态代码块

3.父类非静态对象,父类非静态代码块

4.父类构造函数

5.子类非静态对象,子类非静态代码块

6.子类构造函数

对于本题来说:在只想new Sub(5)的时候,父类先初始化了int flag=1,然后执行父类的构造函数Super(),父类构造函数中执行的test()方法,因子类是重写了test()方法的,因此父类构造函数中的test()方法实际执行的是子类的test()方法,所以输出为Sub.test() flag=1,接着执行子类构造函数Sub(5) 将flag赋值为5,因此输出结果Sub.Sub() flag=5。最终选择了A。

15.Java多线程有几种实现方法?


A.继承Thread类

B.实现Runnable接口

C.实现Thread接口

D.以上都不正确

答案:

AB

解析:

AB.

多线程一共有三种实现方式

方式1:继承Thread类,并重写run()方法

方式2:实现Runnable接口,实现run()方法

方式3:实现Callable接口,线程结束后可以有返回值,但是该方式是依赖于线程池的。

16.在Jdk1.7中,下述说法中抽象类与接口的区别与联系正确的有哪些?


A.抽象类中可以有普通成员变量,接口中没有普通成员变量。

B.抽象类和接口中都可以包含静态成员常量。

C.一个类可以实现多个接口,但只能继承一个抽象类

D.抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。

答案:

A B C D

解析:

总结一下

  1. 一个子类只能继承一个抽象类,但能实现多个接口

  2. 抽象类可以有构造方法,接口没有构造方法

  3. 抽象类可以有普通成员变量,接口没有普通成员变量

  4. 抽象类和接口都可有静态成员变量,抽象类中静态成员变量访问类型任意,接口只能public static final(默认)

  5. 抽象类可以没有抽象方法,抽象类可以有普通方法,接口中都是抽象方法

  6. 抽象类可以有静态方法,接口不能有静态方法

  7. 抽象类中的方法可以是public、protected;接口方法只有public

17.根据下面这个程序的内容,判断哪些描述是正确的:( )


public class Test {

public static void main(String args[]) {

String s = “tommy”;

Object o = s;

sayHello(o); //语句1

sayHello(s); //语句2

}

public static void sayHello(String to) {

System.out.println(String.format(“Hello, %s”, to));

}

public static void sayHello(Object to) {

System.out.println(String.format(“Welcome, %s”, to));

}

}

A.这段程序有编译错误

B.语句1输出为:Hello, tommy

C.语句2输出为:Hello, tommy

D.语句1输出为:Welcome, tommy

E.语句2输出为:Welcome, tommy

F.根据选用的Java编译器不同,这段程序的输出可能不同

答案:

CD

解析:

18.Java特性中,abstract class和interface有什么区别()


A.抽象类可以有构造方法,接口中不能有构造方法

B.抽象类中可以有普通成员变量,接口中没有普通成员变量

C.抽象类中不可以包含静态方法,接口中可以包含静态方法

D.一个类可以实现多个接口,但只能继承一个抽象类。

答案:

A B D

解析:

接口中的成员变量被隐式的声明为public static final ,jdk1.8后接口中可以有静态方法而且存在方法体

19.关于下面代码片段叙述正确的是()


代码片段:

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

final byte b4=4,b5=6;

b6=b4+b5;

b3=(b1+b2);

System.out.println(b3+b6);

A.输出结果:13

B.语句:b6=b4+b5编译出错

最后

面试题文档来啦,内容很多,485页!

由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。

1111道Java工程师必问面试题

MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:

Elasticsearch 24 题 +Memcached + Redis 40题:

Spring 26 题+ 微服务 27题+ Linux 45题:

Java面试题合集:

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
+b5;

b3=(b1+b2);

System.out.println(b3+b6);

A.输出结果:13

B.语句:b6=b4+b5编译出错

最后

面试题文档来啦,内容很多,485页!

由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。

1111道Java工程师必问面试题

[外链图片转存中…(img-wlzV5OCp-1714682132148)]

MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:

[外链图片转存中…(img-50iRSNEi-1714682132149)]

Elasticsearch 24 题 +Memcached + Redis 40题:

[外链图片转存中…(img-4zWasgge-1714682132149)]

Spring 26 题+ 微服务 27题+ Linux 45题:

[外链图片转存中…(img-80cptfQq-1714682132149)]

Java面试题合集:

[外链图片转存中…(img-9Qlh6BBF-1714682132150)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 29
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java在线笔试题题库是一种在线教育平台,它为学生和从事软件开发的专业人士提供丰富的Java语言相关题库和测试题。这种题库涵盖了Java编程中的各种知识与技巧,包括基础概念、语法结构、数据类型、流程控制、集合、IO、多线程、网络编程等内容。 Java在线笔试题题库为Java初学者及进阶者提供了一个良好的学习和测试平台,使得学生们能够轻松掌握Java编程的基础知识,提高编程能力,更好地应对实际开发需求。对于企业招聘和团队培训具有很高的实用性和价值,能够帮助企业和团队筛选和提升Java开发人员的技能。 Java在线笔试题题库的题目针对不同的难度级别设置了不同的分值,学生可以通过解答这些题目来检验自己的掌握程度。题目还配有详细的解答和代码示例,帮助学生深入了解Java编程的原理和应用。 总之,Java在线笔试题题库提供了一个便捷和有效的学习和测试平台,用于提高Java开发人员的技能和能力,是学生和企业招聘方都值得信赖和应用的一种在线教育平台。 ### 回答2: Java在线笔试题题库是一个集成了大量Java编程语言相关的笔试题的网站或应用,旨在为准备Java笔试或者入职Java相关工作的个人和企业提供方便。Java在线笔试题题库中的题目涵盖了Java语言的所有方面,包括基础语法、面向对象编程、集合框架、异常处理、多线程等。通过这些题目的练习和掌握,考生可以提高Java编程的实战能力,掌握Java程序设计的核心思路。同时,Java在线笔试题题库也为企业提供了选择和筛选合适人才的重要参考依据,帮助企业通过笔试考察候选人Java编程的能力,进一步挖掘潜在的优秀人才。需要注意的是,在提交答案之前,考生需要确保代码的正确性和可读性,并对复杂的代码或者实现逻辑给出详细的注释。在JAVA在线笔试题题库中获取好的成绩可以帮助个人和企业实现他们的目标,提高生产力和绩效。总之,Java在线笔试题题库是Java编程领域中非常重要的学习和招聘工具之一,对Java程序员的职业发展具有很大的推动作用。 ### 回答3: Java在线笔试题题库是为了帮助Java程序员提高编程能力和技能而建立的一个题库平台。该题库收录了Java基础知识和高级知识的笔试题目,包括Java语言基础Java面向对象编程、Java集合框架、Java异常处理、Java I/O等方面的题目。 Java在线笔试题题库可以帮助Java程序员进行自我学习和练习,同时也可以作为Java编程语言的面试题库,供企业HR和面试官使用。通过做题,Java程序员可以深入了解Java编程语言的各个方面,并弥补自己的知识漏洞,提高自己的编程能力和技能。 除了提供Java在线笔试题题库外,还有一些Java编程语言学习网站提供相应的练习和题目,比如LeetCode、HackerRank等,这些网站也可以帮助Java程序员提高编程能力和技能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值