1、 新员工考试一、 选择题共30题,每题2分1. 下面哪些是合法的标识符?多项选择题 A. $persons B. TwoUsers C. *point D. thisE. _endline 答案A,B,E 分析Java的标识符可以以一个Unicode字符,下滑线_,美元符$开始,后续字符可以是前面的符号和数字,没有长度限制,大小写敏感,不能是保存字this保存字。2. 哪些是将一个十六进制值赋值给一个long型变量?单项选择题 A. long number = 345L;B. long number = 0345;C. long number = 0345L;D. long number =
2、0x345L答案D 分析十六进制数以0x开头,long型数以L大小写均可,一般使用大写,因为小写的l和数字1不易区分。3. 下面的哪些程序片断可能导致错误? 多项选择题A. String s = Gone with the wind;String t = good ;String k = s + t;B. String s = Gone with the wind;String t;t = s3 + one; C. String s = Gone with the wind;String standard = s.toUpperCase();D. String s = home directo
3、ry;String t = s - directory;答案B,D 分析A:String类型可以直接使用+进展连接运算。B:String是一种Object,而不是简单的字符数组,不能使用下标运算符取其值的某个元素,错误。C:toUpperCase()方法是String对象的一个方法,作用是将字符串的容全部转换为大写并返回转换后的结果String类型。D:String类型不能进展减-运算,错误。4. point x处的哪些声明是句法上合法的? 多项选择题class Person private int a;public int change(int m) return m; public cla
4、ss Teacher extends Person public int b;public static void main(String arg)Person p = new Person();Teacher t = new Teacher();int i;/ point xA. i = m;B. i = b;C. i = p.a; D. i = p.change(30);E. i = t.b. 答案D,E 分析A:m没有被声明过,不能使用。B:虽然b是类Teacher的public成员变量,但是在静态方法中不能使用类中的非静态成员。C:a是类Person的private成员,在类外不能直接
5、引用。D:change(int m)方法是public方法,并且返回一个int型值,可以通过类的实例变量p引用并赋值给一个int型变量。E:b是类Teacher的public成员变量,且是int型,可以通过类的实例变量t引用并赋值给一个int型变量。5. 下面的代码片断多项选择题:1) public void create() 2) Vector myVect;3) myVect = new Vector(); 4) 下面的哪些述正确? A. 第二行的声明不会为变量myVect分配存空间。B. 第二行的声明分配一个到Vector对象的引用的存空间。C. 第二行语句创建一个Vector类对象。D
6、. 第三行语句创建一个Vector类对象。E. 第三行语句为一个Vector类对象分配存空间。 答案A,D,E 分析要为一个新对象分配空间必须执行new Xxx()调用,new调用执行以下的操作:1为新对象分配空间并将其成员初始化为0或者null。2执行类体中的初始化。例如在类中有一个成员声明int a=10;在第一步后a=0 ,执行到第二步后a=103执行构造函数。4变量被分配为一个到存堆中的新对象的引用。6. 下面的哪些答案可以用以表示八进制值8? 单项选择题 A. 010B. 0x10C. 08D. 0x8 答案A 分析八进制值以0开头,以0x开头的为十六进制值,八进制中不能出现数字8,
7、最大只有7。7.1) class Person 2) public void printValue(int i, int j) /*/ 3) public void printValue(int i)/*.*/ 4) 5) public class Teacher extends Person 6) public void printValue() /*.*/ 7) public void printValue(int i) /*.*/8) public static void main(String args)9) Person t = new Teacher();10) t.printVa
8、lue(10);11) 12) 第十行的声明将调用哪些方法? 单项选择题A. on line 2B. on line 3C. on line 6D. on line 7 答案D 分析变量t是一个Person对象,但是它是用Teacher实例化的,这个问题涉与到java的编译时多态和运行时多态的问题,就编译时多态来说,t实际上是一个Person类,这涉与到类型的自动转换将一个子类的实例赋值给一个父类的变量是不用进展强制类型转换,反之那么需要进展强制类型转换,而且被赋值的变量实际上应该是一个子类的对象,如果对t调用了子类中新增的方法那么造成编译时错误编译将不能通过,而在运行时,运行时系统将根据t实
9、际指向的类型调用对应的方法,对于本例来说,t.print(10)将调用t实际指向的Teacher类的对应方法。在java中,可以用一个子类的实例实例化父类的一个变量,而变量在编译时是一个父类实例,在运行时可能是一个子类实例。8. 给出下面的代码:单项选择题if (x0) System.out.println(first); else if (x-3) System.out.println(second); else System.out.println(third); x的取值在什么围时将打印字符串second。 A. x 0B. x -3C. x = -3D. x -3 答案D 分析x0时打
10、印first,x-3&x=0时打印second,x 10 )public static void main(String arg) int i=10;Test t= new Test();t.printValue(i);输出将是什么?A. The value is 8 B. The value is 9C. The value is 10D. The value is 11答案:c此题考察的是do while循环和 - 操作符的知识,dowhile最少被执行一次,在执行完do中的容后判断while中的条件是否为true,如果为true的话就再执行do中的容,然后再进展判断,以此类推直到whil
11、e的判断为false时退出循环执行循环后面的容,而操作符的规那么是在变量右边的- 将先进展运算,然后才是使变量的值减一,而在变量左边的是先将变量的值减一再运算。13. 给出下面的代码:单项选择题1) public void modify() 2) int i, j, k;3) i = 100;4) while ( i 0 ) 5) j = i * 2;6) System.out.println ( The value of j is + j );7) k = k + 1;8) i-;9) 10) 哪些行在编译时可能产生错误。A. line 4B. line 6C. line 7D. line
12、8答案c这个问题在前面有关变量的类型与其作用域的问题中讨论过,局部变量在使用前必须显式初始化,而代码中的变量k在使用前没有。14. 给出下面的代码片断:单项选择题1) String str = null;2) if (str != null) & (str.length() 10) 3) System.out.println(more than 10);4) 5) else if (str != null) & (str.length() 5) 6) System.out.println(less than 5);7) 8) else System.out.println(end); 哪些行将
13、导致错误? A. line 1B. line 2C. line 5D. line 8答案c此题需要将代码仔细看清楚,查询没有逻辑错误,if else的使用没有问题,也没有拼写错误,错误在于第5行的“与操作符的使用,逻辑操作符logical operator的“与应该是&,而&是位逻辑操作符bitwise logical operator的“与,使用的对象不一样,逻辑操作符的“与的左右操作数都应该是布尔型logical boolan的值,而位逻辑操作符的左右操作数都是整型integral值。15. 给出下面的代码:单项选择题public class Personstatic int arr =
14、new int10;public static void main(String a) System.out.println(arr1;)那个表达是对的。A. 编译时将发生错误。B. 编译时正确但是运行时出错。C. 输出为0。D. 输出为null答案cint型数组是类对象,它在类被加载时完成初始化,在前面题目中已经有表达,由于是原始数据类型int,其初始值为0。16. public class Parent /多项选择题public int addValue( int a, int b) int s;s = a+b;return s;class Child extends Parent 哪些方
15、法可以参加类Child中?A. int addValue( int a, int b )/ do something.B. public void addValue ()/ do something.C. public int addValue( int a )/ do something.D. public int addValue( int a, int b )throws MyException /do something.答案bc此题涉与方法重载overload,方法重写override以与类派生时方法重写的规那么。方法重载的规那么是:一、参数列表必须不同,个数的不同完全可以,如果个数
16、一样那么参数类型的不同不能引起歧意,例如int 和long,float和double就不能作为唯一的类型不同;二、返回值可以不同,但是不能是重载时唯一的不同点这点和c+中不同,c+中返回类型必须一致。方法重写发生在类继承时,子类可以重写一个父类中已有的方法,必须在返回类型和参数列表一样时才能说是重写,否那么就是重载,java中方法重写的一个重要而且容易被忽略的规那么是重写的方法的访问权限不能比被重写的方法的访问权限低!重写的另一个规那么是重写的方法不能比被重写的方法抛弃(throws)更多种类的异常,其抛弃的异常只能少,或者是其子类,不能以抛弃异常的个数来判断种类,而应该是异常类层次结果上的种
17、类。此题中答案a的错误就是重写的访问权限比被重写的方法的低,而b,c都属于重载,d的错误在于比被重写的方法抛弃了更多种类的异常。17. 共有成员变量MAX_LENGTH是一个int型值,变量的值保持常数值100。使用一个短声明定义这个变量。单项选择题A. public int MAX_LENGTH=100;B. final int MAX_LENGTH=100;C. final public int MAX_LENGTH=100;D. public final int MAX_LENGTH=100。答案dJava中共有变量使用public定义,常量变量使用final,另外注意的是修饰符的顺序,
18、一个最完整的修饰是public static final int varial_a=100;这个顺序不能错,这和c+中也是不同的。而答案c恰恰错在修饰符的顺序上。18. 下面的那个java源文件代码片断是对的? 多项选择题A. package testpackage;public class Test/do something.B. import java.io.*;package testpackage;public class Test/ do something. C. import java.io.*;class Person/ do something.public class Te
19、st/ do something.D. import java.io.*; import java.awt.*;public class Test/ do something.答案acdjava中的package语句必须是源文件中除去说明以外的第一条语句,导入包语句可以有几个,但是必须位于package语句之后,其它类定义之前,一个源文件中可以有几个类,但最多只能有一个是public的,如果有,那么源文件的文件名必须和该类的类名一样。19. 下面的哪些声明是合法的? 多项选择题A. long l = 4990;B. int i = 4L;C. float f = 1.1;D. double d
20、 = 34.4;E. double t = 0.9F.答案ade此题的考点是数字的表示法和根本数据类型的类型自动转换,没有小数点的数字被认为是int型数,带有小数点的数被认为是double型的数,其它的使用在数字后面加一个字母表示数据类型,加l或者L是long型,加d或者D是double,加f或者F是float,可以将低精度的数字赋值给高精度的变量,反之那么需要进展强制类型转换,例如将int,short,byte赋值给long型时不需要显式的类型转换,反之,将long型数赋值给byte,short,int型时需要强制转换int a=(int)123L;。20. 如下描述:多项选择题public
21、 class Parent int change() class Child extends Parent 哪些方法可被参加类Child?A. public int change()B. int chang(int i)C. private int change()D. abstract int chang()答案ab这个题目的问题在第35题中有详尽的表达。需要注意的是答案D的容,子类可以重写父类的方法并将之声明为抽象方法,但是这引发的问题是类必须声明为抽象类,否那么编译不能通过,而且抽象方法不能有方法体,也就是方法声明后面不能带上那两个大括号,这些D都不能满足。21. 给出下面的代码:单项选
22、择题1) class Parent 2) private String name;3) public Parent()4) 5) public class Child extends Parent 6) private String department;7) public Child() 8) public String getValue() return name; 9) public static void main(String arg) 10) Parent p = new Parent();11) 12) 哪些行将导致错误?A. line 3B. line 6C. line 7D.
23、 line 8E. line 10答案d第8行的getValue()试图访问父类的私有变量,错误,参看前面有关变量类型与其作用域的表达22. 变量result是一个boolean型的值,下面的哪些表达式是合法的?多项选择题A. result = true;B. if ( result ) / do something. C. if ( result!= 0 ) / so something. D. result = 1答案abJava的boolean不同于c或者c+中的布尔值,在java中boolean值就是boolean值,不能将其它类型的值当作boolean处理。23. 类Teacher和
24、Student都是类Person的子类单项选择题Person p;Teacher t;Student s;P,t和s都是非空值。if(t instanceof Person) s = (Student)t; 这个if语句导致的结果是什么A. 将构造一个Student对象。B. 表达式合法。C. 编译时非法。D. 编译时合法而在运行时可能非法。答案cinstanceof操作符的作用是判断一个变量是否是右操作数指出的类的一个对象,由于java语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,而在一些情况下需要判断变量到底是一个什么类型的对象,这时就可以使用instanceof了。当左操作数
25、是右操作数指出的类的实例或者是子类的实例时都返回真,如果是将一个子类的实例赋值给一个父类的变量,用instanceof判断该变量是否是子类的一个实例时也将返回真。此题中的if语句的判断没有问题,而且将返回真,但是后面的类型转换是非法的,因为t是一个Teacher对象,它不能被强制转换为一个Student对象,即使这两个类有共同的父类。如果是将t转换为一个Person对象那么可以,而且不需要强制转换。这个错误在编译时就可以发现,因此编译不能通过。24. 给出下面的类:单项选择题public class Samplelong length;public Sample(long l) length
26、= l; public static void main(String arg)Sample s1, s2, s3;s1 = new Sample(21L);s2 = new Sample(21L); s3 = s2;long m = 21L; 哪个表达式返回true。A. s1 = s2;B. s2 = s3;C. m = s1;D. s1.equals(m).答案b前面已经表达过=操作符和String的equals()方法的特点,另外=操作符两边的操作数必须是同一类型的可以是父子类之间才能编译通过。25. 给出下面有关List的表达式:多项选择题List l = new List(6,tr
27、ue);哪些表达是对的。A. 在没有其它的约束的条件下该列表将有6行可见。B. 一行的最大字符数是6C. 列表将允许用户多项选择。D. 列表只能有一项被选中。答案acList组件的该构造方法的第一个参数的意思是它的初始显式行数,如果该值为0那么显示4行,第二个参数是指定该组件是否可以多项选择,如果值为true那么是可以多项选择,如果不指定那么缺省是不能多项选择。26. 给出下面的代码:单项选择题class Person String name,department;public void printValue() System.out.println(name is +name);System
28、.out.println(department is +department);public class Teacher extends Person int salary;public void printValue()/ doing the same as in the parent method printValue()/ including print the value of name and department.System.out.println(salary is +salary);下面的哪些表达式可以参加printValue()方法的doing the same as.局部
29、?A. printValue(); B. this.printValue();C. person.printValue();D. super.printValue().答案d子类可以重写父类的方法,在子类的对应方法或其它方法中要调用被重写的方法需要在该方法前面加上super.进展调用,如果调用的是没有被重写的方法,那么不需要加上super.进展调用,而直接写方法就可以。这里要指出的是java支持方法的递归调用,因此答案a和b在语法上是没有错误的,但是不符合题目代码中说明处的要求:即做和父类的方法中一样的事情?打印名字和部门,严格来说也可以选a和b。27. 给出下面的代码片断:多项选择题1) s
30、witch(m)2) case 0: System.out.println(case 0);3) case 1: System.out.println(case 1); break;4) case 2:5) default: System.out.println(default);6) m为哪些值将导致default输出?A. 0 B. 1C. 2D. 3答案cd此题考察switch语句的用法,switch的判断的条件必须是一个int型值,也可以是byte、short、char型的值,case中需要注意的是一个case后面一般要接一个break语句才能完毕判断,否那么将继续执行其它case而不
31、进展任何判断,如果没有任何值符合case列出的判断,那么执行default的语句,default是可选的,可以没有,如果没有default而又没有任何值匹配case中列出的值那么switch不执行任何语句。28. 给出下面的不完整的方法:多项选择题1)2) success = connect();3) if (success=-1) 4) throw new TimedOutException();5) 6)TimedOutException 不是一个RuntimeException。下面的哪些声明可以被参加第一行完成此方法的声明。?A. public void method()B. publ
32、ic void method() throws ExceptionC. public void method() throws TimedOutExceptionD. public void method() throw TimedOutExceptionE. public throw TimedOutException void method()答案b、c如果程序在运行的过程中抛出异常,而这个异常又不是RuntimeException或者Error,那么程序必须捕获这个异常进展处理或者声明抛弃throws该异常,捕获异常可以使用trycatch()语句,而抛弃异常在方法声明是声明,在方法的声
33、明后面加上throws XxxxException,抛弃多个异常时在各异常间使用逗号,分隔,题目中的程序在运行时抛出的不是一个RuntimeException,所有必须捕获或者抛弃,而程序又没有捕获,所有应该在方法声明中声明抛弃。由于Exception是所有异常的父类,所有当然也可以代表RuntimeException了。29. 下面的哪些答案可以正确表示一个十六进制数字10?单项选择题A. 0xAB. 0x16C. 0AD. 016答案a十六进制数以0x开头,以0开头的是八进制数。十六进制表示中的a,b,c,d,e,f依次为10,11,12,13,14,15。30. 给出下面的代码:单项选择
34、题1) public class Test 2 int m, n;3 public Test() 4public Test(int a) m=a; 5 public static void main(String arg) 6 Test t1,t2;7 int j,k;8 j=0; k=0;9 t1=new Test();10 t2=new Test(j,k);11 12 在编译时哪行将导致一个错误?A. line 3B. line 5C. line 6D. line 10答案d第10行的声明调用一个带两个参数的Test的构造方法,而该类没有这样的构造方法。二、 简答题1. 读如下程序,说出结
35、果,并说明得出结果原因10分。public class BreakContinue public static void main(String args) for (int i = 0; i 10; i+) if(i = 3 | i = 5) continue;for (int j = 0; j 5) break;System.out.println(i + j);if (i = 6) break; 答案:1,2,3,4,52. 读程序,说出j值,并说明得出结果原因10分。public class Test private static int j = 0;public static voi
36、d main(String args) methodA(0);System.out.println(j);private static boolean methodB(int k) j += k; return true;public static void methodA(int i) boolean b;b = i 10 | methodB(4);b = i 10 | methodB(8); / 此处短路method不进展计算答案:三、 编程题1. 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,那么继续判断第二个字母20分。答案:1.程序分析:用情况语句比拟好,如果第一个字母一样,那么判断用情况