logo资料库

java网络编程考试题库.doc

第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
资料共20页,剩余部分请下载后查看
V 大发大纲 Java 网络编程期末复习题(I/O、多线程、网络编程、数据库操作) 一、单选题 ) ) 1、下列关于 Java 线程的说法那些是正确的( A、每一个 Java 线程可以看成由代码、一个真实的 CPU 以及数据三部份组成。 B、创建线程的两种方法中,从 Thread 类中继承的创建方式可以防止出现多父类问题。 C、Thread 类属于 java.util 程序包。 D、以上说法无一正确。 2、运行下列程序, 会产生什么结果?( public class X extends Thread implements Runable{ public void run(){ System.out.println("this is run()"); } public static void main(String args[]) { Thread t=new Thread(new X()); t.start(); } } A、第一行会产生编译错误 B、第六行会产生编译错误 C、第六行会产生运行错误 D、程序会运行和启动 ) 3、下列选项中,用于定义接口的关键字是( A、import B、implements C、interface D、protected 4.定义类头时能使用的修饰符是( A) private B) static C) abstract D) protected )。 5、下面哪个方法不可以在任何时候被任何线程调用?( A、wait() B、sleep() C、yield() )
D、synchronized(this) 6. 下列关于线程优先级的说法中,正确的是 A) 线程的优先级是不能改变的 B) 线程的优先级是在创建线程时设置的 C) 在创建线程后的任何时候都可以设置 D) B 和 C 7.线程生命周期中正确的状态是 A) 新建状态、运行状态和终止状态 B) 新建状态、运行状态、阻塞状态和终止状态 C) 新建状态、可运行状态、运行状态、阻塞状态和终止状态 D) 新建状态、可运行状态、运行状态、恢复状态和终止状态 8.Thread 类中能运行线程体的方法是 A) start() C) init() B) resume() D) run() 9 在程序读入字符文件时,能够以该文件作为直接参数的类是 A) FileReader C) FileInputStream 10)java.io 包的 File 类是 A) 字符流类 C) 对象流类 11)下列描述中,正确的是 B) BufferedReader D) ObjectInputStream B) 字节流类 D) 非流类 A) 在 Serializable 接口中定义了抽象方法 B) 在 Serializable 接口中定义了常量 C) 在 Serializable 接口中没有定义抽象方法,也没有定义常量 D) 在 Serializable 接口中定义了成员方法 12. java 中用于创建文件对象的类是( ) A.File B. Object C. Thread D. Frame 13. 从键盘上输入一个字符串创建文件对象,若要判断该文件对象为目录文件或数据文件, 可使用下列哪个方法?( ) A.getPath() B. getName() C.isFile() D. isAbsolute() 14. 下列哪个类不对直接创建对象?( ) A.InputStream B. FileInputStream C. BufferedInputStream D. DataInputStream 15. 从键盘上输入多个字符时,为了避免回车换行符的影响,需要使用下列哪个流方法? ( ) A.write() B. flush() C. close() D. skip() 16. 以对象为单位把某个对象写入文件,则需要使用什么方法? ( ) A. writeInt() B writeObject() C. write() D.writUTF() 17. 下列哪个类的方法能够直接把简单数据类型写入文件?( ) A.OutputStream B. BufferedWriter C. ObjectOutputStream. D.FileWriter 18. 若一个类对象能被整体写入文件,则定义该类时必须实现下列哪个接口?( ) A.Runnable B. ActionListener C. WindowsAdapter D. Serializable 19. 下列哪种类型的数据能以对象的形式写入文件?( ) A.String B. Frame C. Dialog D. Button
20. File 类的方法中,用于列举某目录下的子目录及文件的方法是( ) A.long length() B. long lastModified() C. String [] list() D. String getName() 21. 能够以字符串为单位写入文件数据的流类是( ) A. FileOutputStream B. FileWriter C. BufferedWriter C. OutputStream 22. 能够向文件输入逻辑型数据的类是:( ) A. FileOutputStream B. OutputStream C. FileWriter D.DataOutputStream 23. 在线程同步中, 为了唤醒另一个等待的线程,使用下列方法( ) A. sleep() B. wait() C notify() D. join() 24. 为了得到当前正在运行的线程,可使用下列哪个方法?( ) D. run() A.getName() B. Thread.CurrentThread(). B. sleep() 25. 以下( )不属于线程的状态。 A.就绪状态 B。运行状态 C。挂起状态 D。独占状态 26.当线程被创建后,其所处的状态是( ) A.阻塞状态 B。运行状态 C、就绪状态 D、新建状态 27. 当线程调用 start()后,其所处状态为( ) A.阻塞状态 B。运行状态 C、就绪状态 D、新建状态 28. Thread.sleep()方法调用后,当等待时间未到,该线程所处状态为( ) A.阻塞状态 B。运行状态 C、就绪状态 D、新建状态 29.新生状态的线程其可能直接进入的状态是( ) A.阻塞状态 B、运行状态 C、新建状态 D、结束状态 30.Thread.sleep()方法调用后,当等待时间已到,该线程所处状态为( ) A.阻塞状态 B。运行状态 C、就绪状态 D、新建状态 31.当线程因异常而退出 run()后,其所处状态为( ) A.阻塞状态 B。运行状态 C、就绪状态 D、结束状态 32.wait()方法首先是哪个类的方法?( ) A. Object B. Thread. C. Runnable D. File 33. 如果我们想实现“先把要写入文件的数据先缓存到内存中,再把缓存中的数据写入文件 中”的功能时,则需要使用下列哪个类?( ) A. FileReader B. OutputStream C. FilterOutputStream D. DataOutputStream 34. 用 read()方法读取文件内容时,判断文件结束的标记为( ) A. 0 B. 1 C -1 D. 无标记 35. 以下哪个方法只对使用了缓冲的流类起作用?( ) A. read() B. write() C skip() D. flush() 36. Java 提供的类 InetAddress 来进行有关 Internet 地址的操作.( ) A. Socket B.ServerSocket C. DatagramSocket D InetAddress 37. InetAddress 类中哪个方法可实现正向名称解析?( ) A. isReachable() B. getHostAddress() C. getHosstName() D.getByName() 38. 为了获取远程主机的文件内容,当创建 URL 对象后,需要使用哪个方法获取信息( ) A.getPort() B.getHost C.openStream() D.openConnection() 39. java 程序中,使用 TCP 套接字编写服务端程序的套接字类是( ) A. Socket B. ServerSocket C. DatagramSocket D.DatagramPacket 40. ServerSocket 的监听方法 accept()的返回值类型是( ) D. DatagramSocket A. void B. Object C. Socket 41. ServerSocket 的 getInetAddress()的返回值类型是( )
A. Socket B ServerSocket D.InetAddress D,.URL 42. 当使用客户端套接字 Socket 创建对象时,需要指定( ) A.服务器主机名称和端口 D.服务器地址和文件 B、服务器端口和文件 C、服务器名称和文件 43.使用流式套接字编程时,为了向对方发送数据,则需要使用哪个方法( ) A.getInetAddress() B. getLocalPort() C.getOutputStream() D.getInputStream() 44. 使用 UDP 套接字通信时,常用哪个类把要发送的信息打包? ( ) A. String B. DatagramSocket C. MulticastSocket D.DatagramPacket 45. 使用 UDP 套接字通信时,哪个方法用于接收数据 ( ) A. read() B. receive() C. accept() D. Listen() 46. 若要取得数据包的中源地址,可使用下列哪个语句( )? D.getData() A. getAddress() B. getPort() C. getName() 47. 要使用 java 程序访问数据库,则必须首先与数据库建立连接,在建立连接前,应加载数 据库驱动程序,该语句为( ) A Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”) B. DriverManage.getConnection(“”,””,””) C.Result rs= DriverManage.getConnection(“”,””,””).createStatement() D. Statement st= DriverManage.getConnection(“”,””,””).createStaement() 48. 要使用 java 程序访问数据库,则必须首先与数据库建立连接,该语句为( ) A Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”) B. DriverManage.getConnection(“”,””,””) C.Result rs= DriverManage.getConnection(“”,””,””).createStatement() D. Statement st= DriverManage.getConnection(“”,””,””).createStaement() 49. 50. java 程序与数据库连接后,需要查看某个表中的数据,使用下列哪个语句?( ) A. executeQuery() java 程序与数据库连接后,需要查看某个表中的数据,使用下列哪个语句?( ) A. executeQuery() B.executeUpdate() C executeEdit() D.executeSelect() B.executeUpdate() C executeEdit() D.executeSelect() 二、填空题 1.Stdout System.out 作为 PrintStream 的实例,来实现 stdout,它代表的是 屏幕 2.Stdin System.in 作为 InputStream 类的一个实例来实现 stdin,它代表的是键盘,你 可以使用其中两个成员函数, read()让你从输入中读一个字节,skip(long n)让你在输 入中跳过 n 个字节。 3. Java 中的 IO 流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示 (每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。 它们通过重载 read()和 write()方法定义了 6 个读写操作方法。 4. File 类不是一個標準的 I/O 类,在 java.io 类库中它是唯一的 non-stream 類別,既不能讀 取文件內容,也不能修改文件內容,主要作用是收集檔案(或目錄)的相關信息,例如:建 立文件对象、修改文件名、设置文件属性、测试文件属性
5.目录是一个包含其他文件和路径列表的 File 类。当你创建一个 File 对象且它是目录时, isDirectory( ) 方法返回 ture。这种情况下,可以调用该对象的 String [ ]list( )方法来提取该 目录内部其他文件和目录的列表 6. 所有的输出过滤流都是抽象类_ ____的子类。(FilterOutputStream) ____技术。(PrintStream) 7、字符输入流 BufferedReader 使用了__ 8 、 InputStreamReader 负 责 将 InputStream 转 化 成 Reader , 而 OutputStreamWriter 则将 OutputStream 转化成 Writer。实际上是通过 byte[]和 String 来关联。 9、设 a.txt 为当前目录下的一个文本文件,则以字符方式向该文件写数据时,需要建立的输 出流通道为:new FileWriter(“a.txt”); 10. 随 机 访 问 文 件 类 是 RandomAccessFile , 它 实 现 了 与 DataInputStream, DataOutputStream 类同样实现的接口 DataInput, DataOutput.。 11.实现多线程的两种方式是:1、继承 Thread 类;2、实现 Runnable 接口。 12、取得当前线程的语句是: Thread.currentThread(); 13.主线程的名称是 main, 默认创建的第一个子线程的名称是 thread-0 14. 可以调用 Thread 类的方法 getPriority() 和 setPriority()来存取线程的优先级,线 程 的 优 先 级 界 于 1 ( MIN_PRIORITY ) 和 10 ( MAX_PRIORITY ) 之 间 , 缺 省 是 5 (NORM_PRIORITY)。 15.(1) 当多个线程同时运行时,会产生数据错误及其它冲突问题。Java 语言提供了线程同步 控制机制,一是 锁定共享资源,使得在任何时刻只有一个线程能够访问共享资源,以 保持共享资源的完整和一致,二是让互相通信的线程 运行,以保证通信的正确性。 (2)线程之间的通信有两种方法:一是把共享变量和方法封闭在一个类中,二是利用系统 方法 synchronized 关键字来声明一个访问共享资源的方法,或者通过 synchronized 关键字来声明 synchronized 块。 控制线程通信. 实现对共享资源互拆访问的方法是在方法声明中加入 和 16、 守护线程一般被用于在后台为其它线程提供服务。调用方法 isDaemon() 来判断一个 线程是否是守护线程,也可以调用方法 setDaemon()将一个线程设为守护线程。 17、InetAddress 是用于封装 IP 地址和 DNS 的一个类。 18、TCP/IP 套接字是最可靠的双向流协议。等待客户端的服务器使用 ServerSocket 类, 而要连接到服务器的客户端则使用 Socket 类。 19、java.net 包中提供了一个类 MulticastSocket,允许数据报以广播方式发送到该端口的 所有客户。 20. 在 TCP/IP 协议的传输层除了 TCP 协议之外还有一个 UDP 协议。几个标准的应用层 协议 HTTP,FTP,SMTP…使用的都是 TCP 协议。 UDP 协议主要用于需要很强的实时交 互性的场合,如网络游戏,视频会议等 21、当我们得到一个 URL 对象后,就可以通过它读取指定的 WWW 资源。这时我们将使用 URL 的方法 openStream(),其定义为:InputStream openStream(); 22、URL 的构造方法都声明抛弃非运行时异常 MalformedURLException ,因此生成 URL 对象时,我们必须要对这一例外进行处理,通常是用 try-catch 语句进行捕获。 23、一个 Statement 对象,可以执行多个 sql 语句以后,批量更新。这多个语句可以是 delete、
update、insert 等或兼有 24、Java 数据库操作基本流程:取得数据库连接 、执行 sql 语句、处理执行结果、释放 数据库连接。 25、下列程序的功能是在监控台上每隔一秒钟显示一个字符串“Hello”,能够填写在程序 中下划线位置,使程序完整并能正确运行的语句是 public class Test implements Runnable{ public static void main(String args[]){ Test t=new Test(); Thread tt=new Thread(t); tt.start(); } public void run(){ for(;;){ try{ ; }catch( System.put.println("Hello"); } e){} } } 答: Thread.sleep(1000) InterruptedException 三、简答与程序分析、填空、设计题 第一部分:简答 1、线程的生命期内包括哪些状态? 答:新建状态、就绪状态、运行状态、阻塞状态、死亡状态 见下图:各状态之间的切换关系
死亡 阻塞 创建 就绪 运行 2、什么是线程的新建状态? 答: 线程对象已经创建,还没有在其上调用 start()方法。 3、什么是线程的可运行状态? 答:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。 当 start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠 状态回来后,也返回到可运行状态。 4、什么是线程的死亡态? 答:当线程的 run()方法完成时就认为它死去。这个线程对象也许是活的,但是,它已 经不是一个单独执行的线程。线程一旦死亡,就不能复生。 如果在一个死去的线程上调用 start()方法,会抛出 java.lang.IllegalThreadStateException 异常。 5、调用 join()方法有何作用? 答: 保证当前线程停止执行,直到该线程所加入的线程完成为止。然而,如果它加入的 线程没有存活,则当前线程不需要停止。 6.现有字符串 S=”hello,java!”,则以此字符串生成待发送 DatagramPacket 包 dgp 的语句是: 答: Byte[] str=s.getbytes(); DatagramPacket dgp=new DatagramPacket(str, str.length(),目的主机,目的端口); 7、介绍使用 java Socket 创建客户端 Socket 的过程。 答:try{ Socket socket=new Socket(目标主机,目标端口); }catch(IOException e){ System.out.println("Error:"+e); } 8、介绍使用 java ServerSocket 创建服务器端 ServerSocket 的过程。 答: ServerSocket server=null; try {
server=new ServerSocket(监听端口); }catch(IOException e){ System.out.println("can not listen to :"+e); } Socket socket=null; try { socket=server.accept(); }catch(IOException e){ System.out.println("Error:"+e); } 9、写出一种使用 java 流式套接式编程时,创建双方通信通道的语句。 答: PrintStream os=new PrintStream(new BufferedOutputStreem(socket.getOutputStream())); DataInputStream is=new DataInputStream(socket.getInputStream()); PrintWriter out=new PrintWriter(socket.getOutStream(),true); BufferedReader in=new ButfferedReader(new InputSteramReader(Socket.getInputStream())); 10、对于建立功能齐全的 Socket,其工作过程包含以下四个基本的步骤: (1) 创建 Socket; (2) 打开连接到 Socket 的输入/出流; (3) 按照一定的协议对 Socket 进行读/写操作; (4) 关闭 Socket. 11、简述基于 TCP 及 UDP 套接字通信的主要区别 答:TCP,可靠,传输大小无限制,但是需要连接建立时间,差错控制开销大。 UDP,不可靠,差错控制开销较小,传输大小限制在 64K 以下,不需要建立连接。 12、写出 DatagramSocket 的常用构造方法: 答: DatagramSocket(); DatagramSocket(int prot); DatagramSocket(int port, InetAddress laddr) port 指明 socket 所使用的端口号,如果未指明端口号,则把 socket 连接到本地主机上 一个可用的端口。laddr 指明一个可用的本地地址。 13、介绍一下 DatagramPacket 的常用构造方法 : DatagramPacket(byte buf[],int length); DatagramPacket(byte buf[], int length, InetAddress addr, int port); DatagramPacket(byte[] buf, int offset, int length); DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port); 其中,buf 中存放数据报数据,length 为数据报中数据的长度,addr 和 port 旨明目的地 址,offset 指明了数据报的位移量。 14、在接收端接收数据报的主要语句: 答: byte buf[ ]=new byte[n]; DatagramPacket packet=new DatagramPacket(buf, n); Socket.receive (packet);
分享到:
收藏