昨天把这套题做了一下 也许存在很多问题 望大家多多指教!
无锡中软国际有限公司笔试题(Java)
(本卷总分100分,60分及格,时间60分钟)
一,不定项选择题(每小题3分,共15题,总计45分)
1.下面哪些是合法的变量名? (D E) (B C选项后第二个.后有空格不能用.开头的撒)
A.2variable B..variable2 C.._whatavariable D._3_
E.$anothervar F.#myvar
2.请问 “abcd” instanceof Object返回的值是? ( B )
A. “abcd” B. true C. false D. String
3.下面说法正确的是: (A )
A. 如果源代码中有package语句,则该语句必须放在代码的第一行(不考虑注释和空格);
B. 如果源代码中有import语句,则该语句必须放在在代码的第一行(不考虑注释和空格)
(如果没有package,必定是第一行;
如果有package, 必定位于程序中第二行,也就是紧跟在package之后)
C. 如果源代码中有main()方法,则该方法必须被放在代码的第一行
D. 如果某文件的源代码中定义了一个public的接口,接口名和文件名可以不同。(Java保存的文件名必须与public类或接口名一致)
4.下面有关方法覆盖说法不正确的是:(A C)
A. 方法覆盖要求覆盖和被覆盖的方法有相同的名字,参数列以及返回值
B. 方法覆盖要求覆盖和被覆盖的方法必须具有相同的访问权限;
C. 覆盖的方法不能比被覆盖的方法抛出更多的异常
D. 覆盖的方法一定不能是private的
(1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类更多的异常(子类可以不抛出异常或抛出父类的子异常))
5.一个Java程序运行从上到下的环境次序是( C )
A. 操作系统、Java程序、JRE/JVM、硬件
B. JRE/JVM、Java程序、硬件、操作系统
C. Java程序、JRE/JVM、操作系统、硬件
D. Java程序、操作系统、JRE/JVM、硬件
(这题记住就好了)
6. 下面选项中哪个关键字可以用来修饰接口中的变量和方法? (A)
A. static B. private C. synchronized D. Protected
(抽象类中不能用private、static、synchronized、native访问修饰符修饰 接口中包括抽象类中的但是多了个protected不能用 因为接口可以让所有的类去实现(非继承),不只是其子类 )
7. 下面代码段中:( B )
String s=”abcde”;
System.out.println(s.charAt(4));
A. d B. e C. 什么都没有,抛出ArrayIndexOutOfB.ondsException
D. 代码编译不成功,因为charA.t()方法不属于String类
(自己在机器上跑一下就OK啦)
8. 下面哪种是正确的创建Map集合的方式:( D )
A. Map m=new Map();
B. Map m=new Map(init capacity, increment capacity);
C. Map m=new Map(new Collection());
D. Map是接口,所以不能实例化。
(Map 本身是接口,若要创建map对象可使用他的实现类,常用有HashMap,TreeMap new一下就OK了)
9.关于被私有保护访问控制符protected修饰的成员变量,以下说法正确的是? ( A B)
A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B. 可以被两种类访问和引用:该类本身、该类的所有子类
C. 只能被该类自身所访问和修改
D.只能被同一个包中的类访问
(这个老师上课讲过啦 还让咱本下来的)
10.下列有关继承的说法。正确的是: (B)
A. 子类能继承父类的所有方法和状态;B. 子类能继承父类的非私有方法和状态 C. 子类只能继承父类public方法和状态
D. 子类能继承父类的方法,而不是状态。
(如果排除内部类的话,子类是不能访问父类被private修饰的成员方法和成员属性
当子类没有重新定义静态属性则子类的静态属性与父类的静态属性为同一个变量)
11.对于构造方法,下列叙述正确的是:(A C)
A. 构造方法的方法名必须与类名相同;
B. 构造方法必须用void申明返回类型
C. 构造方法可以被程序调用
D. 若编程人员没再类中定义构造方法,程序将报错。
12.为了区分类中重载的同名的不同的方法,要求:( A )
A. 采用不同的形式参数列表
B. 返回值得数据类型不同
C. 调用时用类名或者对象名做前缀
D. 参数名不同
13.下面是有关子类继承父类构造函数的描述,其中正确的是:(B C )
A. 创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数。
B. 子类无条件的继承父类不含参数的构造函数
C. 子类必须通过super()关键字调用父类的构造函数
D. 子类无法继承父类的构造函数。
(1如果子类没有定义构造方法,则调用父类的无参数的构造方法 2如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法 找super() 3如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法 切记super放在子类构造方法第一行哈!!!)
14. 下列说法中,正确的是:( A )
A. 类是变量和方法的集合体
B. 数组是无序数据的集合
C. 抽象类可以实例化
D. 类成员数据必须是公有的
(数组是一种最简单的复合数据类型,数组是有序数据的集合)
15. 代码段如下:( A )
1. public class Test {
2. public static void main(String args[]) {
3. class Foo {
4. public int i = 3;
5. }
6. Object o = (Object)new Foo(); (上转型 用子类去实例化父类 再强转成父类类型)
7. Foo foo = (Foo)o; (下转型 将父类对象强转成子类对象)
8. System.out.println(“i = “ + foo.i);
9. }
10. }
上述程序运行后的结果是:
A. i=3; B. 编译失败
C. 第6行抛出ClassCastException
D. 第7行抛出ClassCastException
二,填空题 (每小题2分,共5题,总计10分)
1. 请问构造函数、成员变量初始化以及静态成员变量初始化三者的先后顺序_____。
静态成员变量初始化,成员变量初始化,构造函数
(先是静态,然后是非静态,最后构造函数)
2. 用于将一个类修饰为最终类的关键字是___final____。用于声明一个类为抽象类的关键字是___abstract_____
3. java基本数据类型中整型,字符型分别占用字节数为 4 2 (char占2个字节 一个字节是不是只有byte啊)
4. java中提供了两种用于多态的机制 __覆盖____,____重载______.
5. 一般有两种用于创建线程对象的方法,一是__继承Thread类___,二是___实现Runnable接口____
三,问答题 (每小题10分,共5题,总计55分)
1. 面向对象的特征有哪些方面?
封装,继承,多态
2. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类?
可以,可以,可以
3. String and StringBuffer的区别?
String是一个不可变对象,StringBuffer用于处理可变的字符串,在字符串的连接上,如果是同一个字符串对象,那么String的连接速度要比StringBuffer速度快,但是连接多个不用的字符串对象,这时候StringBuffer的连接速度远远超过String。
4. 说出ArrayList,Vector, LinkedList的存储性能和特性HashMap和Hashtable的区别?
Vector是线程同步安全的,ArrayList是线程不同步,不安全的,当只有一个线程,或者多线程访问时能确保线程安全,使用ArrayList比使用Vector效率高,因为不用额外的开销检查监视器
LinkedList在插入数据的时候效率要高于ArrayList和Vector,而在添加数据的时候,效率远远低于后两者。
区别:
1.Hashtable继承自Dictionary类,HashMap是Map接口的一个实现类(继承自AbstractMap抽象类);
2.在HashMap中,null可以作为键,这样的键只能有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。而在Hashtable中不允许有null健和null值。
3.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:
正因为同步的问题:Hashtable比HashMap慢。
5.描述final, finally, finalize的区别?
final可以修饰属性,方法,类,修饰属性不可被修改,修饰方法不可被覆盖,修饰类不可被继承;finally是被动捕获异常的时候不管是否有异常,finally里面的代码都要运行;finalize是垃圾回收机制里的一个方法。
四, 附加题 (每小题10分,共2题,总计20分)
1.排序都有哪几种方法?请列举。用JAVA实现一个插入排序?
2.编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"?
1:冒泡排序,插入排序,快速排序,基数排序,堆排序,归并排序,选择排序,希尔排序
代码实现:
public class Test {
public static void main(String args[]){
int [] a = {2,4,1,134,94,0,333,22,10,954};
Test.insertSort(a);
}
public static void insertSort(int[] elements){
for(int i = 1;i <elements.length; i++){
int j = -1;
while(j <= i && elements[i] > elements[++j]);
if(j < i){
int temp = elements[i];
for(int k = i-1;k >= j;k--){
elements[k+1] = elements[k];
}
elements[j] = temp;
}
}
for (int i : elements) {
System.out.println(i);
}
}
}
2代码实现:
public class Test {
public static boolean isLetter(char c){
int k=0X80;
return c/k==0?true:false;
}
public static int lengths(String strSrc){
if (strSrc==null){
return 0;
}
int len=0;
char[] strChar=strSrc.toCharArray();
for (int i=0;i<strChar.length;i++){
len++;
if (!isLetter(strChar[i]))
len++;
}
return len;
}
public static String subString(String origin,int len){
if (origin==null || origin.equals("")|| len<1){
return "";
}
if (len>lengths(origin)){
return origin;
}
byte[] strByte=new byte[len];
System.arraycopy(origin.getBytes(),0,strByte,0,len);
int count=0;
for (int i=0;i<len;i++){
int value=(int)strByte[i];
if (value<0) count++;
}
if (count % 2 !=0){
len=(len==1)?++len:--len;
}
return new String(strByte,0,len);
}
public static void main(String[] args) {
System.out.println(""+ subString("我ABC汉DEF",8));
}
}