JAVA考试题全集

【附注信息  ----> 关注公众号:CS阿吉,大家一起分享更多的技术文章,聊天技术问题。】
 

2020-04-23 第一阶段测试

一、填空题 (题数:3,共 30.0 分)

1

class GetPort{ 共享资源类

(_________) int port; 共享的端口

 

public GetPort(int port){ 构造方法

this.port = port;

}

 

(_________) int getPort(){ 获得端口累加号

return port++;

}

}

 

class ScanThread extends (_________){ 扫描端口线程类

String host; 目标主机

GetPort port; 共享的端口资源

Thread t; 主线程

String name; 子线程名称

public ScanThread(String host, GetPort port, String name, Thread t){ 构造方法

this.host  = host;

this.t  = t;

this.port  = port;

this.name  = name;

}

 

(_________)(){ 线程运行方法

try{

Socket s = new (_________)();

RandomAccessFile raf;

int p = 0;

while((p = port.getPort())<(_________)){

SocketAddress inet = new (_________)(host, p);

s.(_________)(inet, 5000);

if(s.(_________)()){

raf = new RandomAccessFile("record.dat", "rw");

raf.(_________)(raf.length());

raf.(_________)(p);

raf.close();

}

}

s.close();

}(_________)(Exception e){

e.printStackTrace();

}(_________){

try{

t.(_________)();

}catch(Exception e){

e.printStackTrace();

}

}

}

}

 

class mainThread{ 主类

public static void main(String [] args){ 主方法

int  flag = 0; 线程累计数

String  host; 目标主机

Thread  t = Thread.currentThread(); 获得主线程

GetPort p = new GetPort(0); 共享的端口累加资源

 

try{

host = (new (_________)(System.in)).next();

for(int i=0; i<10; i++){

(new ScanThread(host, p, "Thread-"+i, t)).(_________);

 

while(flag < 10){ 采用唤醒等待的方法,保证子线程都正常结束

         synchronized(t){

flag++;

t.(_________)();

}

}

}catch(Exception e){

e.printStackTrace();

}

}

}

 

(10.0分)

我的答案:

第一空: 

private

synchronized

Thread

public void run

Socket

65535

InetSocketAddress

connect

isReachable

seek

writeUTF

catch 

finally

close

Scanner

start

wait

 

2

/*  xml格式如下

<books>

<book>

<name></name>

<price></price>

</book>

</books>

*/

import java.util.List;

import java.io.RandomAccessFile;

import (_________)ByteBuffer;

 

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.Node;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

 

class TransferDataFromXMLtoFILE{

public static void main(String [] args){

try{

SAXReader reader = (_________);

Document document = reader.(_________)("books.xml"); 打开xml文件

Element root = document.(_________)();

List<(_________)> list = root.elements("book");

 

RandomAccessFile raf = new RandomAccessFile("books.dat", "rw");

FileChannel fc = (_________)();

 

String msg = null;

ByteBuffer buf = ByteBuffer.(_________)(256);

 

while(list.(_________)()){

Element bookE1 = (_________)list.next();

msg =  bookE1.elementText("name");

msg += bookE1.elementText("price");

buf.(_________)();

buf.put(msg.(_________)());

buf.(_________)();

while(buf.(_________)())

fc.write(buf);

}

 

fc.close();

raf.close();

reader.close();

}catch(Exception e){

e.printStackTrace();

}

}

}

 

(10.0分)

我的答案:

第一空: 

java.nio.

new SAXReader()

read

getRootElement()

Element

raf.getChannel()

 

allocate

isEmpty

 

Element

clear

getBytes

flip

hasRemaining

 

3

import java.io.IOException;

import java.net.InetSocketAddress;

import java.nio.ByteBuffer;

import java.nio.channels.Channel;

import java.nio.channels.SelectionKey;

import java.nio.channels.Selector;

import java.nio.channels.ServerSocketChannel;

import java.nio.channels.SocketChannel;

 

public class ChatRoomServer {

    private Selector selector = null; 事件选择器

    static final int port = 9999;

    

    public void init() throws IOException

    {

        selector = Selector.(_________)(); 获得selector对象

        ServerSocketChannel server = ServerSocketChannel.(_________)(); 获得channel对象

        server.(_________)(new InetSocketAddress(port));

        server.configureBlocking(_________);

        server.register(selector, (_________)); 注册监听事件

        

        System.out.println("Server is listening now...");

        

        while(true) {

            int readyChannels = selector.select();

            if(readyChannels == 0) continue; 

            Set selectedKeys = selector.(_________)();   获得事件列表

            Iterator keyIterator = selectedKeys.iterator();

            while(keyIterator.hasNext()) {

                 SelectionKey sk = (SelectionKey) keyIterator.next();

                 keyIterator.(_________)(); 移除已处理过的事件

                 dealWithSelectionKey(server,sk);

            }

        }

    }

    

    public void dealWithSelectionKey(ServerSocketChannel server,SelectionKey sk) throws 

 

IOException {

        if(sk.isAcceptable()) 有连接请求

        {

            SocketChannel sc = server.(_________)();

            sc.(_________)(false);

            sc.register(selector, SelectionKey.OP_READ);

            sk.interestOps(SelectionKey.OP_ACCEPT);

        }

        if(sk.isReadable()) 有数据到达

        {

            SocketChannel sc = (SocketChannel)sk.(_________)(); 

            ByteBuffer buff = ByteBuffer.(_________)(1024);

            StringBuilder content = new StringBuilder();

            try

            {

                while(sc.read(buff) > 0)

                {

                    buff.(_________)();

                    content.append(buff);

                    

                }

                System.out.println(content);

                sk.(_________)(SelectionKey.OP_READ); 追加关注事件

            }

            catch (IOException io)

            {

                sk.cancel();

                if(sk.channel() != null)

                {

                    sk.channel().close();

                }

            }

        }

    }

    

    public static void main(String[] args) throws IOException 

    {

        new ChatRoomServer().init();

    }

}

 

(10.0分)

我的答案:

第一空: 

open

open

bind

false

selectionKey.OP ACCEPT

selectedKeys

remove

accept

configureBlocking

channel

allocate

flip

interestOps

------------------------------------------

一、论述题 (题数:1,共 10.0 分)

1

  1. 编写 一对一 的服务器和客户端程序

1)  服务器端开启8080端口,并只接收1个客户端的连接

2)  服务器确认客户端连接后,发送“ welcome to my Server”字符串

3)  客户端收到欢迎信息后,发送 你的姓名和学号。

 

(10.0分)

我的答案

 

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintStream;

import java.net.InetAddress;

import java.net.Socket;

 

public class Client {

 

public static void main(String[] args)throws Exception 

{

InetAddress ip = InetAddress.getByName("192.168.1.1");

Socket s = new Socket(ip, 8899);

 

PrintStream ps = new PrintStream(s.getOutputStream());

 

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = null;

while(null != (str=br.readLine()))

{

ps.println(str);

}

 

 

}

 

}

 

 

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

public class Server {

 

public static void main(String[] args) throws Exception

{

ServerSocket server = new ServerSocket(8899);

 

 

 Socket  s = server.accept();

 System.out.println("welcome to my Server");

 

 InputStream is = s.getInputStream();

 OutputStream os = s.getOutputStream();

 

 BufferedReader br = new BufferedReader(new InputStreamReader(is));

 String str=null;

 while(null != (str=br.readLine()))

 {

 System.out.println("Client应答:"+str);

 }

 

 

}

 

}

------------------------------------------

一、论述题 (题数:1,共 10.0 分)

1

  1. 有以下学生信息info.xml,采用NIO方式转存到 学号-姓名.txt 文件中

<?xml version="1.0" encoding="utf-8"?>

<students>

           <student>

                    <id>12345</id>

                    <name>宋江</name>

                    <major>行政管理</major>

           </student>

           <student>

                    <id>23456</id>

                    <name>吴用</name>

                    <major>计算机</major>

           </student>

</students>

1)  采用DOM4J的解析方法,引用以下类库

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

 

基本操作

SAXReader reader = new SAXReader();
Document document = reader.read("info.xml");

Element element = document.getRootElement();

遍历的方法

public static void treeWalk(Element element) {

     for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
    Node node = element.node(i);
    if ( node instanceof Element ) {
      System.out.println(node.getName() + "-" + node.getText());
      treeWalk( (Element) node );
} } }

2)  NIO的使用方法

RandomAccessFile raf = new RandomAccessFile

FileChannel fc = raf.getChannel();   获得channel

ByteBuffer buf = ByteBuffer.allocate(64);

将xml中数据put到buf中,加载完毕后要调用 ByteBuffer.flip 方法

再将buf数据write到channel中 

while(buf.hasRemaining()) {

    channel.write(buf);

}

 

(10.0分)

我的答案

public class Util {

    public static void main(String[] args) throws java.io.IOException{

        Person p1 = new Person("04172066","刘鑫海",22);

        java.io.File file = new java.io.File("C:\\04172066刘鑫海.txt");

        java.io.BufferedWriter bw = new java.io.BufferedWriter(new java.io.OutputStreamWriter(new java.io.FileOutputStream(file)));

        bw.write("学号:" + p1.id);

        bw.write("\r\n姓名:" + p1.name);

        bw.write("\r\n性别:" + p1.age);

        bw.flush();

        bw.close();

    }

}

class Person{

    public String id;

    public String name;

    public int age;

    public Person(String id, String name, int age){

        this.id = id;

        this.name = name;

        this.age = age;

    }

}

-----------------------------------------

1

  1. 假设你的IP地址是192.168.0.100,现在需要探测目标C类网络(222.24.16.0)中主机可连通数,将可连通主机的IP地址保存在文件中(学号-姓名.dat)。

思路:

1)  一个C类网络主机数254台,必须开启多线程,设立共享的资源主机号

线程的构成方法中,至少包括 (线程名称、共享资源)

class GetPort{

         private int host = 0;

         (                      ) int getHost(){

                   return (                    );

    }

}

 

class ScanThread extends Thread{

         public ScanThread(String threadName, GetPort gp)

         public void run(){

                  ……………..

         }

}

2)  你的IP地址是内网地址,目标网络是外网,在探测过程中可能受到防火墙的阻塞,建议采用ping的方法,根据返回的字符串判断 目标主机是否能连通

Process pro = Runtime.getRuntime().exec("ping " + ipAddress);

BufferedReader buf = new BufferedReader(

                    new InputStreamReader(pro.getInputStream()));

要逐行读取,判断是否能连通目标主机

3)  将可连通的IP地址保存在  学号-姓名.dat 中

设主机IP为 String host

FileOutputStream fos = new FileOutputStream(             

fos.write(主机IP的字节数组形式)

 

 

(10.0分)

我的答案

package com.zhu.experiment1;

 

public class GetHost{

 

private int host = 0;

 

   public GetHost(){ }

  

   synchronized int add(){

      return ++host; 

    }  

}

 

package com.zhu.experiment1;

 

import java.io.BufferedReader;

import java.io.File;

import java.io.InputStreamReader;

import java.io.RandomAccessFile;

import java.net.InetAddress;

 

public class ScanThread extends Thread{ 

 

private GetHost host ; 

private String netid;

 

 

public ScanThread(String netid, GetHost host){

this.host = host; 

this.netid = netid;

}

 

public void run(){

     try{

         int i;

         while((i = host.add()) < 255) {

         String ip = netid + "." + i;

 

         RandomAccessFile raf = new RandomAccessFile(new File("E:\\04172066-刘鑫海.dat"), "rw");

 

         Process pro = Runtime.getRuntime().exec("ping " + ip);

         BufferedReader buf = new BufferedReader(

                             new InputStreamReader(pro.getInputStream()));

         String line;

         while ((line = buf.readLine()) != null) {

        

                if(line.indexOf(ip) > 0){

         raf.seek(raf.length());

         raf.writeBytes(ip + "\r\n");

         }

         }

 

         }

     }catch(Exception e){

          e.printStackTrace();

     }

    }

}

        

package com.zhu.experiment1;

 

public class SumDemo{

 

public static void main(String [] args) throws Exception{

 

GetHost host = new GetHost();

ScanThread st1 = new ScanThread("222.24.16", host);   

st1.start();

st1.join();    

}

}

=--------------------------------------

一、多选题 (题数:1,共 1.0 分)

1

以下()是NIO的三要素

(1.0分)

  • A、

    Buffer

  • B、

    Channel

  • C、

    Cache

  • D、

    Selector

我的答案:ABD

二、单选题 (题数:9,共 9.0 分)

1

FileWriter是字节输出流

 

 

(1.0分)

  • A、

     正确

     

     

  • B、

     错误

     

我的答案:B

2

new RandomAccessFile(file, true)表示可以file尾部进行追加内容操作

(1.0分)

  • A、

    正确

  • B、

    错误

我的答案:B

3

Buffer属性中position表示

(1.0分)

  • A、

    最大容量

  • B、

    缓冲当前操作位置

我的答案:B

4

Buffer的flip()表示

(1.0分)

  • A、

    将limit设置为position值,并将position设置为0

  • B、

    将limit设置为capacity值,并将capacity设置为最大

我的答案:A

5

用户向Buffer写数据方法是

(1.0分)

  • A、

    put

  • B、

    write

我的答案:A

6

获得File的Channel方法是

(1.0分)

  • A、

    FileChannel ch = new Channel(filename);

  • B、

    FileInputStream f = new FileInputStream(filename);

    FileChannel ch = f.getChannel();

     

我的答案:B

7

StringTokenizer是利用()形式拆分字符串

(1.0分)

  • A、

    正则表达式

  • B、

    对象

我的答案:B

8

XML文件的第一行往往是

(1.0分)

  • A、

    根元素

  • B、

    文件XML版本和编码申明

我的答案:B

9

JSON文件中{ }表示

(1.0分)

  • A、

    数组

  • B、

    对象

我的答案:B

----------------------------

一、单选题 (题数:9,共 9.0 分)

1

InetAddress类的作用

(1.0分)

  • A、

    实现主机名与IP地址的关联

  • B、

    •实现目标主机的连通性探测

我的答案:A

2

isReachable使用ICMP协议

(1.0分)

  • A、

    正确

  • B、

    错误

我的答案:A

3

以下哪个InetAddress的getByName方法使用是正确的

(1.0分)

  • A、

    InetAddress inet = new InetAddress.getByName("www.xupt.edu.cn");

  • B、

    InetAddress inet = InetAddress.getByName("www.xupt.edu.cn");

我的答案:A

4

使用getByName实例化对象时,如果使用的IP地址不符合规则,例如(“322.24.12.700”),则会抛出什么异常

 

(1.0分)

  • A、

    UnknowHostException

  • B、

    IllegalArgumentException

我的答案:A

5

使用InetAddress.getAddress()获得对象IP地址为"222.24.12.128",如

byte[] bytes =
addr.getAddress();//获取字节数组形式的

那么通过语句的结果为

for(byte b: bytes)System.out.print(b+".");

(1.0分)

  • A、

    222.24.12.128.

  • B、

    -34.24.12.-128.

我的答案:B

6

Java通过以下(    )调用外部ping命令

(1.0分)

  • A、

    Runtime.getEnvironment().exec("ping -c 1 222.24.101.1")

  • B、

    Runtime.getRuntime().exec("ping -c 1 222.24.101.1")

我的答案:B

7

在JAVA语言中(     )是给按钮组件增加一个按键监听 该按键是否被按下事件

 

(1.0分)

  • A、

    button.addActionListener(new ActionListener());

  • B、

    button.addClickListener(new ActionListener());

我的答案:A

8

(    )是申明Vector对象内元素为String类型的语句

(1.0分)

  • A、

    Vector<String> rs = new Vector<String>();

  • B、

    Vector String rs = new Vector(10);

我的答案:B

9

在Java中使用implement Runnable接口的类实例化对象后,以下哪项是错误的

class WorkLine implement Runnable{}

 

(1.0分)

  • A、

    WorkLine wl = new WorkLine();

    wl.start();

  • B、

    WorkLine wl = new WorkLine();

    Thread t = new Thread(wl);

    t.start();

     

我的答案:A

二、多选题 (题数:1,共 1.0 分)

1

在JAVA的网络编程中,需要引入以下哪个类库

(1.0分)

  • A、

    java.io.*

  • B、

    java.util.*

  • C、

    java.net.*

我的答案:B

---------------------------------------------

1 NIO中(   )是Buffer的状态值 (1.0分) A、  capacity B、  postion C、 limit D、  head 我的答案:ABC 2 (      )是SelectionKey的常量 (1.0分) A、  OP_ACCEPT B、 OP_CONNECT C、 OP_READ D、 OP_WRITE 我的答案:ABCD 3 以下(   )句正确 (1.0分) A、 SocketAddress sa = new InetSocketAddress("localhost", 8080); B、 InetAddress inet = InetAddress.getByName("localhost"); 我的答案:AB 二、单选题 (题数:7,共 7.0 分) 1 SelectableChannel中的 register方法用于 (1.0分) A、  注册监听端口号 B、  注册监听事件 我的答案:B 2 在SocketChannel中设置非阻塞模式的方法是(  ) (1.0分) A、  socketChannel.configureBlocking(false); B、  socketChannel.configureBlocking(true); 我的答案:A 3 Hashtable存储的是(    ) (1.0分) A、  对象 B、  键值对 我的答案:B 4 Socket.getPort方法获得(  ) (1.0分) A、  对方端口号 B、 本地端口号 我的答案:B 5 new ServerSocket(8000)表示,8000端口的状态是 (1.0分) A、  ESTABLISHED B、  LISTENNING 我的答案:B 6 Socket的由(    )组成 (1.0分) A、  IP,port B、  protocol, IP, port 我的答案:A 7 http的默认端口是(   ),https的默认端口是(    ) (1.0分) A、  80, 443 B、  80, 334 我的答案:A

--------------------------------------

URL类对象可以执行POST操作 (1.0分) A、 是 B、 否 我的答案:B 2 www.xupt.edu.cn是正确的URL地址 (1.0分) A、 是 B、 否 我的答案:B 3 URL类的openStream()方法是创建一个 (1.0分) A、 InputStream B、 OutputStream 我的答案:A 4 以下语句说明 Value = new String(Value.getBytes(“utf8”), “GBK”); (1.0分) A、 字符编码由utf8转为gbk B、 字符编码由gbk转为utf8 我的答案:A 5 URLConnection类是URL类的子类 (1.0分) A、 是 B、 否 我的答案:A 6 URLConnection提供了对HTTP首部的访问 (1.0分) A、 是 B、 否 我的答案:A 7 当访问服务器页面成功时,返回代码 (1.0分) A、 200 B、 404 我的答案:A 8 HttpClient是否支持https访问 (1.0分) A、 不支持 B、 支持 我的答案:B 9 JEditPane属于 (1.0分) A、 AWT控件组 B、 swing控件组 我的答案:B 二、多选题 (题数:1,共 1.0 分) 1 URLConnection类可以使用以下(    )获得流 (1.0分) A、 getInputStream() B、 getOutputStream() C、 openStream() 我的答案:AB

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值