java练习_Java基础笔试练习(十三)

点击上方“Coder编程”,选择“置顶公众号”

技术文章第一时间送达!

84f9da5bfc8ed34676fc18648be3424b.png

Java基础笔试练习(十三)

1. 类Person里面有个方法sleep(),如果直接用Person.sleep(),则方法sleep前面必须用的关键词是? ( )

A.class

B.static

C.public

D.final

答案:

B

解析:

static关键字:针对多个对象共有的成员变量值时所提出的。

特点:1、随着类的加载而加载;2、优先于对象存在;3、被类的所有对象共享;4、可以通过类名直接调用。

注意事项:1.在静态方法中是没有this关键字的; 2.静态方法只能访问静态的成员变量和静态的成员方法。

2.下列关于Java类中方法的定义,正确的是()

A.若代码执行到return语句,则将当前值返回,而且继续执行return语句后面的语句。

B.只需要对使用基本数据类型定义的属性使用getter和setter,体现类的封装性。

C.方法的返回值只能是基本数据类型。

D.在同一个类中定义的方法,允许方法名称相同而形参列表不同。

答案:

D

解析:

A、一旦执行到return,就不再执行后续的代码。

B、类的封装性可不是这么体现的,数据域和方法都可以被封装。数据域可以是基本数据类型也可以是引用类型。

C、方法的返回值可以是引用类型。

D、重载,判定方法只有方法名一致,形参列表不同。

3.J2EE中,当把来自客户机的HTTP请求委托给servlet时,会调用HttpServlet的( )方法

A.service

B.doget

C.dopost

D.init

答案:

A

解析:

HttpServlet容器响应Web客户请求流程如下:

1)Web客户向Servlet容器发出Http请求;

2)Servlet容器解析Web客户的Http请求;

3)Servlet容器创建一个HttpRequest对象,在这个对象中封装Http请求信息;

4)Servlet容器创建一个HttpResponse对象;

5)Servlet容器调用HttpServlet的service方法,这个方法中会根据request的Method来判断具体是执行doGet还是doPost,把HttpRequest和HttpResponse对象作为service方法的参数传给HttpServlet对象;

6)HttpServlet调用HttpRequest的有关方法,获取HTTP请求信息;

7)HttpServlet调用HttpResponse的有关方法,生成响应数据;

8)Servlet容器把HttpServlet的响应结果传给Web客户。

doGet() 或 doPost() 是创建HttpServlet时需要覆盖的方法.

4.以下不是修饰符final的作用的是( )。

A.修饰常量

B.修饰不可被继承的类

C.修饰不可变类

D.修饰不可覆盖的方法

答案:

C

解析:

final的作用:

  1. 修饰变量,变量的引用地址不可变,但是地址中的内容可以变。
  2. 修饰方法,方法不可被重写,但是还是可以重载
  3. 修饰类,类不可继承。

5.下面有关java的一些细节问题,描述错误的是?

A.构造方法不需要同步化

B.一个子类不可以覆盖掉父类的同步方法

C.定义在接口中的方法默认是public的

D.容器保存的是对象的引用

答案:

B

解析:

B选项中,子类应该是可以置换掉父类的同步方法的。

6.关于依赖注入,下列选项中说法错误的是()

A.依赖注入能够独立开发各组件,然后根据组件间关系进行组装

B.依赖注入使组件之间相互依赖,相互制约

C.依赖注入提供使用接口编程

D.依赖注入指对象在使用时动态注入

答案:

B

解析:

依赖注入的动机就是减少组件之间的耦合度,使开发更为简洁

7.下面有关java基本类型的默认值和取值范围,说法错误的是?

A.字节型的类型默认值是0,取值范围是-2^7—2^7-1

B.boolean类型默认值是false,取值范围是truefalse

C.字符型类型默认是0,取值范围是-2^15 —2^15-1

D.long类型默认是0,取值范围是-2^63—2^63-1

答案:

C

解析:

默认值 取值范围 示例

字节型 :0 -2^7—-2^7-1 byte b=10;

字符型 :‘ ′ 0—-2^16-1 char c=’c’ ;

short : 0 -2^15—-2^15-1 short s=10;

int : 0 -2^31—-2^31-1 int i=10;

long : 0 -2^63—-2^63-1 long o=10L;

float : 0.0f -2^31—-2^31-1 float f=10.0F

double : 0.0d -2^63—-2^63-1 double d=10.0;

boolean: false truefalse boolean flag=true;

8.

A.

B.

C.

D.

答案:

解析:

9.以下对选择语句描述错误的是()

A.根据某一条件重复执行一部分代码直到满足终止条件为止

B.可以根据条件控制程序流程,改变程序执行的顺序

C.选择语句可以嵌套使用

D.当条件满足时就会执行相应的语句

答案:

A

解析:

流程控制语句分类:

顺序结构

选择结构:if语句、switch语句

循环结构:while语句、for语句

10.java中将ISO8859-1字符串转成GB2312编码,语句为 ?

A.new String("ISO8859-1".getBytes("ISO8859-1"),"GB2312")

B.new String(String.getBytes("GB2312"), ISO8859-1)

C.new String(String.getBytes("ISO8859-1"))

D.new String(String.getBytes("GB2312"))

答案:

A

解析:

答案:A

注意这里"ISO8859-1"是一个普通字符串,不要被迷惑了

String.getBytes("ISO8859-1")表示获取这个字符串的byte数组,

然后new String(String.getBytes("ISO8859-1"),GB2312)是上面的字符数组按照GB2312编码成新的字符串

11.以下代码正确返回结果()?

Integer a = 1;Integer b = 1;Integer c = 500;Integer d = 500;System.out.print(a == b);System.out.print(c == d);

A.true、true

B.true、false

C.false、true

D.false、false

答案:

B

解析:

nterger的范围时[-128,127],在这个范围内比较大小,相等为true,超过范围为false

12.jdbc的事务必须在一个数据库连接上完成。编程时必须去掉数据库的自动提交功能。当成功后调用commit,当失败后调用rollback。判断这句话正确与否

A.正确

B.错误

答案:

A

解析:

在JDBC编程模式中,一个数据库连接建立时,就处于一个自动提交模式,每一个SQL语句被执行完成后就会被自动提交,反映到数据库中。当需要把几条逻辑上相关的SQL组成的一个事务执行时,就需要关闭事务自动提交模式。如下面的语句所示:con.setAutoCommit(false); // 关闭自动提交模式 一旦关闭了事务自动提交模式,不会有任何SQL语句被提交至数据库系统执行,除非显式的调用提交方法。

13.关于下面的程序Test.java说法正确的是( )。

public class Test { static String x="1"; static int y=1; public static void main(String args[]) { static int z=2; System.out.println(x+y+z); }}

A.3

B.112

C.13

D.程序有编译错误

答案:

D

解析:

被static修饰的变量称为静态变量,静态变量属于整个类,而局部变量属于方法,只在该方法内有效,所以static不能修饰局部变量

14.抽象类方法的访问权限默认都是public。( )

A.正确

B.错误

答案:

B

解析:

关于抽象类

JDK 1.8以前,抽象类的方法默认访问权限为protected

JDK 1.8时,抽象类的方法默认访问权限变为default

关于接口

JDK 1.8以前,接口中的方法必须是public的

JDK 1.8时,接口中的方法可以是public的,也可以是default的

JDK 1.9时,接口中的方法可以是private的

15.下面程序段的时间复杂度是()

i = k = 0;while( k < n ){ i ++ ;k += i ;}

A.O(n)

B.O(n^1/2)

C.O(n*i)

D.O(n+i)

答案:

B

解析:

设循环次数为 q, 时间复杂度为T(n), 也就是说,每次给定一个n的时候,根据 T(n)可以算出来时间复杂度, 那么时间复杂度就是 q, 因为其他操作都是常数时间的操作,所以决定时间复杂度的就应该是循环次数。 观察代码,在while循环中,每次 i 会自加1,循环次数 q 也得加 1 , 也就可以看成每次都是 s 每次都加上 q , 在 s > = n 的时候结束,那么 n 和 q 的关系就是 k=0 k + 1 + 2 + +3 + … + q <= n(q 是循环的次数 ), 那就是 0 + 1 + 2 + +3 + … + q <= n ,根据等差公式算一算就可以得到 T( n ) = n^0.5了 主要就是借着 q 算出来 n 和 T( n) 的关系。

16.以下代码最后输出什么?

public void test() { int a = 10; System.out.println(a++ + a--);}

A.19

B.20

C.21

D.22

答案:

C

解析:

a++ 先把10赋值给a 再+1 所以左边是10 但此时a=11。右边a-- 也是先赋值 a=11,再-1。10+11=21 此时a=10。

17.下列关于容器集合类的说法正确的是?

A.LinkedList继承自List

B.AbstractSet继承自Set

C.HashSet继承自AbstractSet

D.WeakMap继承自HashMap

答案:

C

解析:

a选项linkedlist类是实现了List接口,而不是继承

b选项AbstractSet类实现Set接口

c选项HashSet继承 AbstractSet类,同时也实现set

d选项WeakMap是js里面的

18.以下哪些类是线程安全的()

A.Vector

B.HashMap

C.ArrayList

D.StringBuffer

E.Properties

答案:

ADE

解析:

A,Vector相当于一个线程安全的List

B,HashMap是非线程安全的,其对应的线程安全类是HashTable

C,Arraylist是非线程安全的,其对应的线程安全类是Vector

D,StringBuffer是线程安全的,相当于一个线程安全的StringBuilder

E,Properties实现了Map接口,是线程安全的

19.关于struts项目中的类与MVC模式的对应关系,说法错误的是

A.Jsp文件实现视图View的功能

B.ActionServlet这一个类是整个struts项目的控制器

C.ActionForm、Action都属于Model部分

D.一个struts项目只能有一个Servlet

答案:

C D

解析:

e6f6f25546255b318c29be788fc4137c.png

工作流程

20. Hashtable 和 HashMap 的区别是:()?

A.Hashtable 是一个哈希表,该类继承了 AbstractMap,实现了 Map 接口

B.HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接口

C.Hashtable 线程安全的,而 HashMap 是线程不安全的

D.Properties 类 继承了 Hashtable 类,而 Hashtable 类则继承Dictionary 类

E.HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。

答案:

B C D E

解析:

Hashtable:

(1)Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射。

(2)Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。

(3)HashTable直接使用对象的hashCode。

HashMap:

(1)由数组+链表组成的,基于哈希表的Map实现,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。

(2)不是线程安全的,HashMap可以接受为null的键(key)和值(value)。

(3)HashMap重新计算hash值

文末

欢迎关注Coder编程公众号,主要分享数据结构与算法、Java相关知识体系、框架知识及原理、Spring全家桶、微服务项目实战、DevOps实践之路、每日一篇互联网大厂面试或笔试题以及PMP项目管理知识等。更多精彩内容正在路上~

cb195ced34b913e09477d40eb670ce4c.png

微信公众号

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值