北京邮电大学研究生java技术-孟祥武老师-期末复习题整理

合集下载

北邮《高级语言程序设计(基于Java)》期末复习题(含答案)

北邮《高级语言程序设计(基于Java)》期末复习题(含答案)

一.简答题。

12.简述Java的特点Java的特点有:简单性;面向对象;跨平台性;健壮性;安全性;可移植性;多线程性;动态性。

3.Java有哪些基本数据类型,它们的关键字和字长以及变量的默认值4.面向对象程序设计与面向过程程序设计有哪些不同?从思维方式角度看,面向过程编程注重用功能构造系统,思维方式更贴近于计算机逻辑。

而面向对象编程则注重从现实世界中的客观存在建立系统,强调直接以问题域中的事物为中心思考问题和认识问题,并根据这些事物的本质特征和系统责任,把它们抽象为系统中的对象,用对象作为系统的基本构成单位。

从程序构造角度看,在过程性语言编写的程序中,待处理的数据和处理数据的方法分散在程序的各个地方。

而面向对象语言编写的程序中,待处理的数据和处理数据的方法都放在同一实体(entity)(程序模块)中,形成“封装”。

通过封装,可以最大限度的实现代码重用,减小数据的依赖性,从而解决面向过程语言中存在的问题。

5.什么是访问控制修饰符?访问控制修饰符的种类有哪些?它们各有什么作用?修饰符是用于限定类对象使用的权限,从而实现类中成员的信息隐藏。

访问修饰符适用于类成员,而不是方法内部的局部变量。

Java常见的访问修饰符有这4种:private、default、protected和public。

public 可以被所有的类访问pravite 只能被类本身访问,其他类无法访问protected 可以被类本身、它的子类(包括同一个包中以及不同包中的子类)default 属于默认的访问状态,可以被类本身和同一个包中的类访问6.类变量和实例变量有哪些不同?在定义成员变量时,如果用static修饰符修饰,则该变量是类变量(也称“静态变量”),否则是实例变量。

类变量的本质特点是:它是类的变量,不属于类的任何一个具体对象。

它保存在类的内存区域的公共存储单元。

类的任何一个对象对类变量的存取都是对同一个内存单元进行操作。

与类变量相对,实例变量属于类的某个具体的对象。

北邮高操期末试题答案及知识点总结(孟祥武)

北邮高操期末试题答案及知识点总结(孟祥武)

1.论述下分布式操作系统的透明性是什么?设计、实现一个分布式操作系统时,实现透明性的难点是什么?所谓分布式透明性就是在编写程序时好像数据没有被分布一样。

实现透明性的难点在于创建一个分布式数据库系统可提供有效的存取手段来操纵这些结点上的子数据库。

2.论述远程过程调用RPC与本地调用的区别?论述RPC调用语义,系统实现中的问题。

所谓过程调用,就是将控制从一个过程 A 传递到另一个过程B, 返回时过程 B 将控制进程交给过程A。

目前大多数系统中, 调用者和被调用者都在给定主机系统中的一个进程中, 它们是在生成可执行文件时由链接器连接起来的, 这类过程调用称为本地过程调用。

远程过程调用(RPC)指的是由本地系统上的进程激活远程系统上的进程, 我们将此称为过程调用是因为它对程序员来说表现为常规过程调用。

处理远程过程调用的进程有两个, 一个是本地客户进程, 一个是远程服务器进程。

对本地进程来说, 远程过程调用表现这对客户进程的控制, 然后由客户进程生成一个消息, 通过网络系统调用发往远程服务器。

网络信息中包括过程调用所需要的参数, 远程服务器接到消息后调用相应过程, 然后将结果通过网络发回客户进程, 再由客户进程将结果返回给调用进程。

因此, 远程系统调用对调用者表现为本地过程调用, 但实际上是调用了远程系统上的过程调用语义:(1)、last-of-many 对执行一个远程过程调用而言,被调用的过程可能执行若干次,但规定其最后一次执行的结果作为返回结果(2)、at-most-once 若调用者收到了回复消息,则被调用的过程正确地完成了它的一次(仅仅一次)执行。

如果调用者没收到回复消息,或者,如果调用者在获得回复消息之前发生故障,那么,这时的调用效果就看作是根本就没有执行相应的过程(3)、at-least-once 在场点正常情况下,则远程过程至少执行一次,且回复消息可能返回一次或多次。

在场点故障时,就不能保证远程过程是否已被执行或曾返回任何回复消息(4)、exactly-once若server正常,则远程过程将恰好执行一次,并返回一个调用结果。

2019年秋季北邮《Java技术》期末考试复习题

2019年秋季北邮《Java技术》期末考试复习题

2019年秋季北邮《Java技术》期末考试复习题《Java技术》课程2019年秋季期末考试复习题《Java技术》课程2019年春季期末考试复习题⼆、考试重点(占期末考试成绩60%)⼀、单项选择题1.计算机硬件能直接执⾏的只能是(B)。

A.符号语⾔程序B.机器语⾔程序C.汇编语⾔程序D.⾼级语⾔程序2.Java语⾔属于(C)。

A.⾯向过程的解释型语⾔B.⾯向过程的编译型语⾔C.⾯向对象的解释型语⾔D.⾯向对象的编译型语⾔3.根据TIOBE编程语⾔社区排⾏榜的统计,使⽤率居于前三的编程语⾔是(A)。

A.Java、C、C++B.Java、C#、C++C.Java、Python、RubyD.Objective-C、C++、Java4.下述Java平台中,最适于开发嵌⼊式系统应⽤程序的是(C)。

A.JavaSEB.JavaEEC.JavaMED.JavaApplet5.下⾯关于Java类⽂件的说法错误的是(D)。

A.Java编译器会为源程序中的每个类单独⽣成⼀个类⽂件B.Java类⽂件中存储的代码必须符合JVM规范C.Java类⽂件中存储的代码是⼆进制形式的代码D.Java 类⽂件必须⽤Java语⾔编写得到6.下列关于Eclipse说法错误的是(A)。

A.使⽤Eclipse开发Java程序时,程序员编辑源程序后即可运⾏该程序,因此⽆编译程序的过程B.Eclipse中的Workspace⽤于存储⼯程的路径C.在Windows系统下,Eclipse程序包解压缩后即可直接使⽤,⽆需安装D.Eclipse是⼀个基于Java的、可扩展的、开放源代码的开发平台7.下列关于IDE开发环境Eclipse的说法错误的是(D)。

A.Eclipse可以通过插件(plugin)的⽅式扩展其功能B.Eclipse联盟是由IBM公司捐资组建的C.Eclipse使⽤了SWT图形界⾯技术D.Eclipse 的运⾏不需要有JRE的⽀持8.关于Eclipse的视景说法错误的是(C)。

Java程序设计_北京大学中国大学mooc课后章节答案期末考试题库2023年

Java程序设计_北京大学中国大学mooc课后章节答案期末考试题库2023年

Java程序设计_北京大学中国大学mooc课后章节答案期末考试题库2023年1.Java不直接使用指针。

答案:正确2.可以使用jar来打包程序。

答案:正确3.字符串连接运算符其实是用append来实现的。

答案:正确4.break及continue后面可以跟一个语句标号。

答案:正确5.增强的for语句可以方便地遍历数组。

答案:正确6.数组元素都会隐式初始化。

答案:正确7.如果没有定义任何构造方法,系统会自动产生一个构造方法。

答案:正确8.方法重载是多态(polymorphism)的一种方式。

答案:正确9.Java中的继承是通过extends关键字来实现的。

答案:正确10.如果没有extends子句,则该类默认为ng.Object的子类。

答案:正确11.使用super访问父类的域和方法。

答案:正确12.在构造方法中,使用super()时,必须放在第一句。

答案:正确13.子类对象实例可以被视为其父类的一个对象。

答案:正确14.同一包中的各个类,默认情况下可互相访问。

答案:正确15.final所修饰的变量,是只读量。

答案:正确16.在定义final局部变量时,也必须且只能赋值一次。

答案:正确17.在接口中定义的常量具有public, static, final的属性。

答案:正确18.虚方法调用是由对象实例的类型来动态决定的。

答案:正确19.在构造方法中,如果没有this及super,则编译器自动加上super()。

答案:正确20.实例初始化,先于构造方法{}中的语句执行。

答案:正确21.getCause()可以得到异常的内部原因。

答案:正确22.JavaSE的源代码是开放的,我们可以阅读。

答案:正确23.任何类都可以覆盖toString()方法。

答案:正确24.字符串的+运算,实际表示StringBuffer、StringBuiler的append运算。

答案:正确25.SimpleDateFormat类可以用来解析日期字符串。

2019年秋季北邮《Java技术》期末考试复习题

2019年秋季北邮《Java技术》期末考试复习题

《Java技术》课程2019年秋季期末考试复习题《Java技术》课程2019年春季期末考试复习题二、考试重点(占期末考试成绩60%)一、单项选择题1.计算机硬件能直接执行的只能是(B)。

A.符号语言程序B.机器语言程序C.汇编语言程序D.高级语言程序2.Java语言属于(C)。

A.面向过程的解释型语言B.面向过程的编译型语言C.面向对象的解释型语言D.面向对象的编译型语言3.根据TIOBE编程语言社区排行榜的统计,使用率居于前三的编程语言是(A)。

、C、C++、C#、C++、Python、Ruby、C++、Java4.下述Java平台中,最适于开发嵌入式系统应用程序的是(C)。

5.下面关于Java类文件的说法错误的是(D)。

编译器会为源程序中的每个类单独生成一个类文件类文件中存储的代码必须符合JVM规范类文件中存储的代码是二进制形式的代码类文件必须用Java语言编写得到6.下列关于Eclipse说法错误的是(A)。

A.使用Eclipse开发Java程序时,程序员编辑源程序后即可运行该程序,因此无编译程序的过程中的Workspace用于存储工程的路径C.在Windows系统下,Eclipse程序包解压缩后即可直接使用,无需安装是一个基于Java的、可扩展的、开放源代码的开发平台7.下列关于IDE开发环境Eclipse的说法错误的是(D)。

可以通过插件(plugin)的方式扩展其功能联盟是由IBM公司捐资组建的使用了SWT图形界面技术的运行不需要有JRE的支持8.关于Eclipse的视景说法错误的是(C)。

A.每个视景都定义了工作台中各个视图的初始设置和布局B.一个工作台窗口包含多个独立的视景,但同一时刻只有一个视景是对用户可见的C.视景的布局是可以改变的,但改变多次后无法再恢复到初始设置D.每个视景都有自己的视图和编辑器,用户可以在各个视景间切换9.在Java中,由Java编译器自动导入,而无需在程序中用import导入的包是(A)。

JAVA期末考试题及答案.doc

JAVA期末考试题及答案.doc

卷号:A 卷二0——一二0—二 学年第一学期JAVA 程序设计一试题(09gb 计算1班、09gb 软件1班用)一.判断题(共10小题,每题2分,共20分)1、 程序是算法和实体在计算机系统屮的体现。

( T )2、 语句是组成一个程序的最小单位。

(F )。

3、 执行while 语句吋,先对条件表达式求值,结果为true 执行一次循环体;为false 则终止while 语句,继续执行while 语句的下一语句。

(T )4、 方法是将操作行为描述为一个具有惟一名字、能与外界交互的独立成分。

(T )5、 类是对一组具有相同属性、表现相同行为的对象的描述。

(T )6、 数组是一种复合数据类型,数组变量遵循“先声明、后使用”的原则。

(T )7、 在子类的内部,不仅能够访问子类自己定义的所有成员,也能够访问超类中的 所有成员。

(F )8、 接口可以定义各种形式的数据成员,只能定义公有的抽彖方法,不能定义其他 形式的成员方法。

(F )9、 异常是程序出现致命性错误,这些错误必须要处理。

(F ) 10、 面向字节的输入流类都是类Reader 的后代类。

(F )二单选题(共10小题,每题2分,共20分)注意一、密封线内不准答题。

二、 姓名、准考证号不许涂改,否则试卷无效。

三、 考生在答题前应先将姓名、学号、年级和班级填写在指定的方框内。

四、试卷印刷不清楚。

可举手向监考教师询问。

题号二三四五六七八总分题分2020202020得分I所在年级、班级 :密注意:学号、姓名和所在年级班级不写、不写全或写在密封线外者,试卷作废。

1、下面选项中,不是面向对彖程序设计语言的选项是(A )oA) C 语言B) Simula C) Smalltalk D) Java 2.(B )是由高级语言赋予了特殊意义并留作专门用途的单词,程序员不能将这些单词作为普通的标识符使用。

A)变量B)保留字C)常量D)数组3.结构化N_S流程图由Nassi和Schneiderman提出,又称为(C )。

北京邮电大学-JAVA技术-阶段作业

北京邮电大学-JAVA技术-阶段作业

JAVA技术阶段作业1:一、单项选择题(共10道小题,共100.0分)1. 设有如下程序public class Try2 {public static void main(String[] args) {B objb = (B) new A();objb.show();}}class A {void show() {System.out.println("a");}}class B extends A { void show() { System.out.println("b");}}则下面说法正确的是()A. 编译时发生错误B. 运行时发生错误C. 输出为aD. 输出为b2. 设有如下程序public class Try2 {Fruit f = new Fruit();f.setGrames(100);System.out.println(f.grams);}}class Fruit { // 水果类int grams; // 克数(质量)void setGrames(int grams) {grams = grams;}}则下面说法正确的是()A. 编译时发生错误B. 运行时发生错误C. 输出为0D. 输出为1003. 设有下面程序:public class Person {static int arr[] = new int[10];System.out.println(arr[0]);}}则以下叙述正确的是()A. 编译时发生错误B. 运行时发生错误C. 输出为0D. 输出为null4. 设有如下类定义class Fruit { // 水果类int grams; // 克数(质量)int totalCalories(){ // 卡路里(热量)return grams * 10;}}则创建一个Fruit类的对象变量f,同时创建一个对象实体,并且把对象实体的引用赋给f的语句是()A. Fruit f;B. new Fruit();C. new Fruit;D. Fruit f = new Fruit();5. 设有如下类定义class Fruit { // 水果类int grams; // 克数(质量)int totalCalories(){ // 卡路里(热量)return grams * 10;}}则创建一个Fruit类的对象变量的语句是()A. Fruit f;B. new Fruit();C. new Fruit;D. int f;6. 语句System.out.printf("%o", 12);的输出结果是()A. 12B. cC. 14D. 10107. 格式化输出123456.789,要求保留两位小数。

《JAVA语言程序设计》期末考试试题及答案3(应考必备题库)(K12教育文档)

《JAVA语言程序设计》期末考试试题及答案3(应考必备题库)(K12教育文档)

《JAVA语言程序设计》期末考试试题及答案3(应考必备题库)(word版可编辑修改)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(《JAVA语言程序设计》期末考试试题及答案3(应考必备题库)(word版可编辑修改))的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为《JAVA语言程序设计》期末考试试题及答案3(应考必备题库)(word版可编辑修改)的全部内容。

《JA V A语言程序设计》期末考试试题及答案3(应考必备题库)一、单项选择题1、如下哪个是Java中的标识符()A、publicB、superC、3numberD、width2、如下哪个是Java中的标识符( )A、fieldnameB、superC、3numberD、#number3、已知如下定义:String s = ”story";下面哪个语句不是合法的()A、s += "books";B、s = s + 100;C、int len = s.length;D、String t = s + “abc”;4、如下哪个是Java中有效的关键字()A、nameB、helloC、falseD、good5、下面的代码段执行之后count的值是什么( )int count = 1;for(int i = 1; i <= 5; i++) {count += i;}System.out。

println(count);A、5B、1C、15D、166、定义一个类,必须使用的关键字是( )A、publicB、classC、interfaceD、static7、定义一个接口必须使用的关键字是( )A、publicB、classC、interfaceD、static8、如果容器组件p的布局是BorderLayout,则在p的下边中添加一个按钮b,应该使用的语句是()A、p。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.判断闰年import java.util.Scanner;public class DemoTest {/*** @param args 此处代码无实际意义,可删除*/public static void main(String[]args){Scanner scan = new Scanner(System.in);//创建输入流扫描器;System.out.println("请输入一个年份:");//向控制台输出一个提示信息long year;try{year = scan.nextLong();if(year%4 == 0 && year%100!=0 || year%400 == 0){//是闰年System.out.print(year+"是闰年!");}else{System.out.print(year+"不是闰年!");}}catch(Exception e){System.out.println("你输入的不是有效的年份");}}} 2.Socket编程对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。

服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。

首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。

这样就有两个Socket了,客户端和服务端各一个。

对于Socket之间的通信其实很简单,服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。

Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。

下面来看一些服务端与客户端通信的例子:1、客户端写服务端读服务端代码Java代码public class Server {public static void main(String args[]) throws IOException { //为了简单起见,所有的异常信息都往外抛int port = 8899;//定义一个ServerSocket监听在端口8899上ServerSocket server = new ServerSocket(port);//server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的Socket socket = server.accept();//跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了。

Reader reader = new InputStreamReader(socket.getInputStream());char chars[] = new char[64];int len;StringBuilder sb = new StringBuilder();while ((len=reader.read(chars)) != -1) {sb.append(new String(chars, 0, len));}System.out.println("from client: " + sb);reader.close();socket.close();server.close();}}服务端从Socket的InputStream中读取数据的操作也是阻塞式的,如果从输入流中没有读取到数据程序会一直在那里不动,直到客户端往Socket的输出流中写入了数据,或关闭了Socket的输出流。

当然,对于客户端的Socket也是同样如此。

在操作完以后,整个程序结束前记得关闭对应的资源,即关闭对应的IO流和Socket。

客户端代码Java代码public class Client {public static void main(String args[]) throws Exception {//为了简单起见,所有的异常都直接往外抛String host = "127.0.0.1"; //要连接的服务端IP地址int port = 8899; //要连接的服务端对应的监听端口//与服务端建立连接Socket client = new Socket(host, port);//建立连接后就可以往服务端写数据了Writer writer = new OutputStreamWriter(client.getOutputStream() );writer.write("Hello Server.");writer.flush();//写完后要记得flushwriter.close();client.close();}}对于客户端往Socket的输出流里面写数据传递给服务端要注意一点,如果写操作之后程序不是对应着输出流的关闭,而是进行其他阻塞式的操作(比如从输入流里面读数据),记住要flush一下,只有这样服务端才能收到客户端发送的数据,否则可能会引起两边无限的互相等待。

在稍后讲到客户端和服务端同时读和写的时候会说到这个问题。

2、客户端和服务端同时读和写前面已经说了Socket之间是双向通信的,它既可以接收数据,同时也可以发送数据。

服务端代码Java代码public class Server {public static void main(String args[]) throws IOException { //为了简单起见,所有的异常信息都往外抛int port = 8899;//定义一个ServerSocket监听在端口8899上ServerSocket server = new ServerSocket(port);//server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的Socket socket = server.accept();//跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了。

Reader reader = new InputStreamReader(socket.getInputStream());char chars[] = new char[64];int len;StringBuilder sb = new StringBuilder();while ((len=reader.read(chars)) != -1) {sb.append(new String(chars, 0, len));}System.out.println("from client: " + sb);//读完后写一句Writer writer = new OutputStreamWriter(socket.getOutputStream() );writer.write("Hello Client.");writer.flush();writer.close();reader.close();socket.close();server.close();}}在上述代码中首先我们从输入流中读取客户端发送过来的数据,接下来我们再往输出流里面写入数据给客户端,接下来关闭对应的资源文件。

而实际上上述代码可能并不会按照我们预先设想的方式运行,因为从输入流中读取数据是一个阻塞式操作,在上述的while循环中当读到数据的时候就会执行循环体,否则就会阻塞,这样后面的写操作就永远都执行不了了。

除非客户端对应的Socket关闭了阻塞才会停止,while循环也会跳出。

针对这种可能永远无法执行下去的情况的解决方法是while循环需要在里面有条件的跳出来,纵观上述代码,在不断变化的也只有取到的长度len和读到的数据了,len已经是不能用的了,唯一能用的就是读到的数据了。

针对这种情况,通常我们都会约定一个结束标记,当客户端发送过来的数据包含某个结束标记时就说明当前的数据已经发送完毕了,这个时候我们就可以进行循环的跳出了。

那么改进后的代码会是这个样子:Java代码public class Server {public static void main(String args[]) throws IOException { //为了简单起见,所有的异常信息都往外抛int port = 8899;//定义一个ServerSocket监听在端口8899上ServerSocket server = new ServerSocket(port);//server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的Socket socket = server.accept();//跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了。

Reader reader = new InputStreamReader(socket.getInputStream());char chars[] = new char[64];int len;StringBuilder sb = new StringBuilder();String temp;int index;while ((len=reader.read(chars)) != -1) {temp = new String(chars, 0, len);if ((index = temp.indexOf("eof")) != -1) {//遇到eof时就结束接收sb.append(temp.substring(0, index));break;}sb.append(temp);}System.out.println("from client: " + sb);//读完后写一句Writer writer = new OutputStreamWriter(socket.getOutputStream() );writer.write("Hello Client.");writer.flush();writer.close();reader.close();socket.close();server.close();}}在上述代码中,当服务端读取到客户端发送的结束标记,即“eof”时就会结束数据的接收,终止循环,这样后续的代码又可以继续进行了。

相关文档
最新文档