铁马冰河2000

导航

Java基础练习题-错题集(二)

(1)  对于abstract声明的类,下面说法正确的是

选项: A. 可以实例化

    B. 不可以被继承

    C. 子类为abstract

    D. 只能被继承

    E. 可以被抽象类继承

(2)  有变量int i = 0; int a = i++; int b = ++a; int c = a+b; int d = (a == 1)?b:c; 请问a和d的值分别是多少?( )

选项: A. 2,4

    B. 1,4

    C. 1,2
    D. 1,1

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

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

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

    C. 客户端通过new Socket()方法创建通信的Socket对象
    D. 服务器端通过new ServerSocket()创建通信的Socket对象

(4)  Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述正确的是()

选项: A.ArrayList和LinkedList均实现了List接口

    B. ArrayList的访问速度比LinkedList快

    C. 添加和删除元素时,ArrayList的表现更佳

    D. HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值

(5)  常用的servlet包的名称是?

选项: A. java.servlet

    B. javax.servlet

    C. servlet.http

    D. javax.servlet.http

===============================================解题分析========================

(1) 解析   正确答案 、E

A. 抽象类不能实例化,因为有抽象方法未实现
B. 可以被继承。派生类可以实现抽象方法
C. 子类可以是抽象的,也可以非抽象的
D. 只能被继承,不正确,抽象类不仅可以被继承,还可以直接拿来使用的,当然,这个使用是拿来声明,而不是实例化,因为抽象类不能实例化,但可以声明使用。就像接口一样。可以动态绑定,实现多态,如下例子,AbstractMap就是抽象类,它可以这样使用。

AbstractMap<String, Integer> am = new HashMap<String, Integer>();  am.put("young", 23);
am.put("strongyoung", 26);
Iterator<String> itr = am.keySet().iterator();
while(itr.hasNext()){
    String key = itr.next();
    System.out.println(key + " : " + am.get(key));
}

E. 可以被抽象类继承,也可以被非抽象类继承

(2) 解析   正确答案 、D

int i = 0; //i=0
int a = i++; //a=i,a=0,i++,i=1
int b = ++a; //a++,a=1,b=a,b=1
int c = a+b;//c=2
int d = (a == 1)?b:c;//a==1,d=b,d=1
综上a==1, d==1

(3) 解析   正确答案 、C

A 错误
  Client端通过new Socket()创建用于通信的Socket对象。
B 错误
  Client端的Socket对象是直接new出来的。
C 正确
D 错误
  Server端通过new ServerSocket()创建ServerSocket对象,ServerSocket对象的accept()方法产生阻塞,阻塞直到捕捉到一个来自Client端的请求。
  当Server端捕捉到一个来自Client端的请求时,会创建一个Socket对象,使用此Socket对象与Client端进行通信。

套接字Socket通信原理介绍:

1.ServerSocket类

创建一个ServerSocket类,同时在运行该语句的计算机的指定端口处建立一个监听服务,如:
ServerSocket MyListener=new ServerSocket(600);
这里指定提供监听服务的端口是600,一台计算机可以同时提供多个服务,这些不同的服务之间通过端口号来区别,不同的端口号上提供不同的服务。为了随时监听可能的Client请求,执行如下的语句:
Socket LinkSocket=MyListener.accept();
该语句调用了ServerSocket对象的accept()方法,这个方法的执行将使Server端的程序处于等待状态,程序将一直阻塞直到捕捉到一个来自Client端的请求,并返回一个用于与该Client通信的Socket对象Link-Socket。此后Server程序只要向这个Socket对象读写数据,就可以实现向远端的Client读写数据。结束监听时,关闭ServerSocket对象:
Mylistener.close();

2.Socket

当Client程序需要从Server端获取信息及其他服务时,应创建一个Socket对象:
Socket MySocket=new Socket(“ServerComputerName”,600);
Socket类的构造函数有两个参数,第一个参数是欲连接到的Server计算机的主机地址,第二个参数是该Server机上提供服务的端口号。
Socket对象建立成功之后,就可以在Client和Server之间建立一个连接,并通过这个连接在两个端点之间传递数据。利用Socket类的方法getOutputStream()和getInputStream()分别获得向Socket读写数据的输入/输出流,最后将从Server端读取的数据重新返还到Server端。
当Server和Client端的通信结束时,可以调用Socket类的close()方法关闭Socket,拆除连接。
ServerSocket 一般仅用于设置端口号和监听,真正进行通信的是服务器端的Socket与客户端的Socket,在ServerSocket 进行accept之后,就将主动权转让了。

(4) 解析   正确答案 、ABD

ArrayList插入和现有项的删除开销很大,除非在末端
LinkedList插入和删除开销很小
ArrayList和LinkedList都是实现了List接口
HashMap可以用null值和空字符串作为K,不过只能有一个,且  允许任何类型的键和值对象 基本数据类型就是不行的呀,公司的面试题真坑

(5) 解析   正确答案 、BD

 

 

posted on 2022-08-22 11:42  铁马冰河2000  阅读(78)  评论(0编辑  收藏  举报