3月份复习笔试题第四套

1.多选

下列正确的有()

A call by value不会改变实际参数的数值

B call by reference能改变实际参数的参考地址

C call by reference不能改变实际参数的参考地址

D call by reference能改变实际参数的内容

解析:

选ACD。该题考察的是值传递和引用传递参数的调用。 值传递是将变量的一个副本传递到方法中,方法中如何操作该变量副本,都不会改变原变量的值。 引用传递是将变量的内存地址传递给方法,方法操作变量时会找到保存在该地址的变量,对其进行操作。会对原变量造成影响。

2.多选

下面哪项技术可以用在WEB开发中实现会话跟踪实现?

A session

B Cookie

C 地址重写

D 隐藏域

解析:

ABCD 会话跟踪是一种灵活、轻便的机制,它使Web上的状态编程变为可能。 HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题。当一个客户在多个页面间切换时,服务器会保存该用户的信息。 有四种方法可以实现会话跟踪技术:URL重写、隐藏表单域、Cookie、Session。 1).隐藏表单域:,非常适合步需要大量数据存储的会话应用。 2).URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。 3).Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP 响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个 Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至 在客户端计算机重启后它仍可以保留其值 4).Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话

3.多选

下面有关 JAVA 异常类的描述,说法正确的有()

A 异常的继承结构:基类为 Throwable,Error 和 Exception 。实现 Throwable, RuntimeException 和 IOException 等继承 Exception

B 非 RuntimeException 一般是外部错误(不考虑Error的情况下),其可以在当前类被 try{}catch 语句块所捕获

C Error 类体系描述了 Java 运行系统中的内部错误以及资源耗尽的情形,Error 不需要捕捉

D RuntimeException 体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须 被 try{}catch 语句块所捕获

img

Java数据库连接库JDBC用到哪种设计模式?

A 生成器

B 桥接模式

C 抽象工厂

D 单例模式

下列说法正确的有( )

A 构造方法的方法名必须与类名相同

B 构造方法也没有返回值,但可以定义为void

C 在子类构造方法中调用父类的构造方法,super() 必须写在子类构造方法的第一行,否则编译不通过

D 一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个默认的构造方法,这个构造方法不执行任何代码

关于equals和hashCode描述正确的是 ()

A 两个obj,如果equals()相等,hashCode()一定相等(符合代码规范的情况下)

B 两个obj,如果hashCode()相等,equals()不一定相等

C 两个不同的obj, hashCode()可能相等

D 其他都不对

下面哪些选项是正确的()

A >>是算术右移操作符

B >>是逻辑右移操作符

C >>>是算术右移操作符

D >>>是逻辑右移操作符

解析:

运算符“>>”执行算术右移,它使用最高位填充移位后左侧的空位。

右移的结果为:每移一位,第一个操作数被2除一次,移动的次数由第二个操作数确定。

逻辑右移或叫无符号右移运算符“>>>“只对位进行操作,没有算术含义,它用0填充左侧的空位。

算术右移不改变原数的符号,而逻辑右移不能保证这点。

移位运算符约简其右侧的操作数,当左侧操作数是int类型时,右侧以32取模;当左侧是long类型时,右侧以64取模。

java有8种基本类型,请问byte、int、long、char、float、double、boolean各占多少个字节?

A 1 2 8 2 4 8 1

B 1 4 8 2 4 8 1

C 1 4 4 2 4 4 2

D 1 4 4 2 4 8 2

下面代码输出结果是?

`class` `C {``    ``C() {``        ``System.out.print(``"C"``);``    ``}``}` `class` `A {``    ``C c = ``new` `C();` `    ``A() {``        ``this``(``"A"``);``        ``System.out.print(``"A"``);``    ``}` `    ``A(String s) {``        ``System.out.print(s);``    ``}``}` `class` `Test ``extends` `A {``    ``Test() {``        ``super``(``"B"``);``        ``System.out.print(``"B"``);``    ``}` `    ``public` `static` `void` `main(String[] args) {``        ``new` `Test();``    ``}``}`

A BB

B CBB

C BAB

D None of the above

代码片段:

`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编译出错

C 语句:b3=b1+b2编译出错

D 运行期抛出异常

解析:

被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了 而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。 Java中的byte,short,char进行计算时都会提升为int类型。

下面哪些类实现或继承了 Collection 接口?

A HashMap

B ArrayList

C Vector

D Iterator

img

子类要调用继承自父类的方法,必须使用super关键字。

A 正确

B 错误

解析:

1、子类构造函数调用父类构造函数用super

2、子类重写父类方法后,若想调用父类中被重写的方法,用super

3、未被重写的方法可以直接调用。

4、子类不能访问父类的私有方法

关于 Socket 通信编程,以下描述正确的是:( )

A 客户端通过new ServerSocket()创建TCP连接对象

B 客户端通过TCP连接对象调用accept()方法创建通信的Socket对象

C 客户端通过new Socket()方法创建通信的Socket对象

D 服务器端通过new ServerSocket()创建通信的Socket对象

客户端通过new Socket()方法创建通信的Socket对象
服务器端通过new ServerSocket()创建TCP连接对象  accept接纳客户端请求

在JAVA中,下列哪些是Object类的方法()

A synchronized()

B wait()

C notify()

D notifyAll()

E sleep()

解析:

A    synchronized     Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。

B  C   D 都是Object类中的方法 notify():  是唤醒一个正在等待该对象的线程。 notifyAll(): 唤醒所有正在等待该对象的线程。         
           
E	sleep 是Thread类中的方法 wait 和 sleep的区别:      
	wait指线程处于进入等待状态,形象地说明为“等待使用CPU”,此时线程不占用任何资源,不增加时间限制。         sleep指线程被调用时,占着CPU不工作,形象地说明为“占着CPU睡觉”,此时,系统的CPU部分资源被占用,其他线	程无法进入,会增加时间限制。

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

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);

A 语句2

B 语句1

C 语句3

D 语句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修饰,即只可赋值一次,便不可再改变

java用()机制实现了线程之间的同步执行

A 监视器

B 虚拟机

C 多个CPU

D 异步调用

解析:

首先jvm中没有进程的概念 ,但是jvm中的线程映射为操作系统中的进程,对应关系为1:1。那这道题的问的就是jvm中线程如何异步执行 。 在jvm中 是使用监视器锁来实现不同线程的异步执行, 在语法的表现就是synchronized 。

以下哪个类包含方法flush()?()

A InputStream

B OutputStream

C A 和B 选项都包含

D A 和B 选项都不包含

解析:

flush()函数强制将缓冲区中的字符流、字节流等输出,目的是如果输出流输出到缓冲区完成后,缓冲区并没有填满,那么缓冲区将会一直等待被填满。所以在关闭输出流之前要调用flush()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值