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 语句块所捕获
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
子类要调用继承自父类的方法,必须使用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()。