JAVA
1.(多选题)关于 Java 语言,下列描述正确的是(AD)
A)switch不能够作用在String类型上
B)List, Set, Map都继承自Collection接口-Map没有继承Collection接口; C)Java语言支持goto语句---------------java不支持goto语句 D)GC是垃圾收集器,程序员不用担心内存管理
排序
(单选题)序列[15, 67, 26, 43, 61, 25, 84, 80, 34, 70]进行冒泡排序时,第三趟排序的结果是:(B)。
A.[15, 26, 43, 61, 25, 67, 80, 34, 70, 84] B.[15, 26, 25, 43, 61, 34, 67, 70, 80, 84] C.[15, 26, 43, 25, 61, 67, 34, 70, 80, 84] D.[15, 25, 26, 43, 34, 61, 67, 70, 80, 84]
数组
1、关于数组下列说法错误的是(C)。 A.数组中的每个元素都有相同的类型
B.数组中的元素可以是基本数据类型,也可以是对象 C.一旦数组被声明,大小就不能改变 D.一旦数组被创建,大小就不能改变 2( 多选题)下列说法错误的有( BCD) A)数组是一种对象
B)数组属于一种原生类----------------数组不是原生类 C)int number=[]={31,23,33,43,35,63} D)数组的大小可以任意改变
整理
能存储汉字“达”的是:()。1.int 2.char
字符类型事实上是一个16位无符号整数,这个整数对应字符的Unicode字符集编码。本题中,int类型和char类型都可以存储汉字“达”。
Java Card、Java Me、Java Se、Java EE都属于Java技术体系 Java虚拟机解释执行字节码
Java的类是对具有相同行为对象的一种抽象 Java中的垃圾回收机制是一个系统级的线程
在JDK目录结构中,lib目录下存放的都是库文件,而bin目录下有编译器、解释器和许多工具(如服务器工具、IDL、package工具和jdb等)。 (多选题)下列描述中,哪些符合 Java 语言的特征 支持跨平台(Windows,Linux,Unix等) 提高了代码安全性支持与其它语言书写的程序进行通讯) 没有指针的概念,拥有GC垃圾自动回收机制。
String类型变量取值应为小写null或其他用\"\"双引号括起来的内容 在java中,char是一个无符号16位类型,取值范围为0到65535。 隐式类型转换规则是: byte→short(char)→int→long→float→double
二 面向对象
1.(单选题)关于以下代码描述正确的有( ) public class Cats {
public static void main(String args[]) {
List Animal b = new Animal(); Cat a = null; if(b instanceof Animal) 强转成类型为Cat-应该判断b instanceof Cat判断前者是否是后者的一个实例 a = (Cat)b; if(a != null) cats.add(a); System.out.println(cats.size() +\"cats\"); } } class Animal {} class Cat extends Animal{} A)编译失败 B)输出1 cats C)输出2 cats D)运行时抛出异常 解析: 类型,并且具体引用对象是Animal对象,不能强转成Cat类型。 1 (单选题)请问,以下哪些修饰符不能用于顶层类?(BCD) A)publicB)privateC)abstractD)final 对于顶层类(外部类)来说,只有两种修饰符:public和默认(default)。 因为外部类的上一单元是包,所以外部类只有两个作用域:同包,任何位置。 因此,只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符:public和默认(default)。 但是private可以修饰class的,只不过该类不能使顶层类,可以是内部类 构造方法的作用是在实例化对象的时候给属性成员进行初始化。 A.类中如 果没有显示的给出构造方法,系统会提供一个无参构造方法。 B.构造方法 与类同名,类中可以有和类名相同的方法。 C.constructor 在一个对象被 new 时执行 D.构造方法可以重载。 静态块是类加载的时候就会被执行到的,静态执行顺序是按照在类中出现 的先后顺序执行。 对象是先声明,声明后会在给对象在内存里开辟空间,之后初始化,再进行使用 2.(单选题)关于实例方法和类方法,以下描述正确的是(D) oA)实例方法只能访问实例变量-------------------------------A 实例方法可以访问类变量; oB)类方法既可以访问类变量,也可以访问实例变量 B 类方法只能访问类变量; oC)类方法只能通过类名来调用-------------------------------C 类方法可以调用静态方法; oD)D实例方法只能通过对象来调用 3.(多选题)下列说法错误的有(ACD) oA)在类方法中可用 this 来调用本类的类方法A在类方法中不能使用 this 关键字。 oB)在类方法中调用本类的类方法时可直接调用 oC)在类方法中只能调用本类中的类方法C在类方法中可以调用其它类中的类方法。 oD)在类方法中绝对不能调用实例方法---D在类方法中可以通过实例化对象调用实例方法。 程序中的对象是一种数据信息,并非现实中的实际物体 静态变量是所有对象所共享的,所以上述代码中的几个对象操作是同一静 态变量x, 静态变量可以通过类名调用。 java中,null、true、false都不属于java 的关键字,它们都属于字面量值,都有着特殊的用途,且不建议作为标识符使用。 栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。 4 (单选题)程序执行的结果是:(D)。 public class Answer { public static void main(String[] args) { int score = 20; Answer ans= new Answer(); ans.add(score); System.out.println(\" main: score = \" + score); } void add(int score) { System.out.println(\" add: score=\" + score++); }} A . 1 add: score=21 2 B. 1 2 main: score = 21 add: score=20 main: score = 21 C. 1 add: score=21 2 main: score = 20 D. 1 add: score=20 2 main: score = 20 形参score在add方法中发生变化时不会影响到main方法中局部变量score的值。 在Java中方法参数传递只有值传递,其特点如下: 1)基本数据类型传递的是值本身。 2)引用数据类型传递也是引用的值,是对象的地址,而不是对象本身。 final修饰局部变量时若是未使用可以不初始化,使用前必须要初始化 java中的局部变量不能加上访问权限修饰符 final关键字的用法如下: 1.final关键字修饰的类不可以被继承。 2.2.final关键字修饰的方法不可以在子类中被重写。 3. 3.final关键字修饰成员变量,意为初始化后不可改变。该成员变量必需在初始化时赋值,对象一旦创建即不可改变。可以在声明时初始化或在构造方法中进行初始化。 不同包子类的关系, 可以访问到父类 B 的 protected 成员 5.(多选题)属性的可见性有(ABD) A)公有的 B)私有的 C)私有保护的 D)保护的 属性的可见性有四种:公有的(public)、保护的(protected)、默认的(default)、私有的(private) 6.(多选题)给定java代码如下所示,在1处新增下列(AC)方法,是对show方法的重载 public class Test{ public void show(int x, int y, int z) { } } A.public int show(int x,int y,float z){return 0;} B.public int show(int x,int y,int z){return 0;} C.public void show(int x,int z){} D.public viod show(int z,int y,int x){} 方法的重载必须满足方法名相同和参数不同(类型或个数) 三 API String System.out.println(\"\\\\\".length());//1 System.out.println(\"\\633\".length());//2 System.out.println(\"\\63\".length());//1 System.out.println(\"\\6\".length());//1 1(单选题)以下表达式那个是否不合法 String x=\"Hello\";int y=9;if(x==y) { } 因为\"==\"两边的类型不匹配,无法比较,所以此表达式是错误的。 2(单选题)-----------------------------------------D public class Base{ private void test() { String aStr = \"? One? \"; String bStr = aStr; aStr.toUpperCase(); aStr.trim(); System.out.println(\"[\" + aStr + \} static public void main(String[] a) { new Base().test(); } } A)[ONE,?One?] B)[?One?,One] C)[ONE,ONE] D)[?One?,?One?] 对字符串的任何改动都是创建新的对象,只要做出改变后未将其地址赋给原字符串的引用,该引用指向的字符串值不变 File directory = new File(\"d\");如果当前目录下不存在d目录会抛出异常java.io.IOException: 系统找不到指定的路径。 2. 下面程序运行的结果是( C ) String str = “abcdefg”; str.substring(0,2);-------对字符串的改变就是创建新对象 System.out.println(str); a) ab b) abc c) abcdefg d) 出现下标越界异常 3.(单选题)以下程序运行结果是:(C) class Demo { int x; public static void main(String[] args) { Demo d = new Demo(); d.x = 8; -----------------引用地址相同 show(d); System.out.println(\"x=\"+d.x); } public static void show(Demo d) { d.x = 7;-----------------引用地址相同 }} A.x=8 B.会出现语法编译错误 C.x=7D.以上都不对 本题考查调用带有引用类型的参数 调用带有引用类型的参数,传递的是对象的引用,方法中操作该参数,操作的 是传递到该方法中的具体对象。 4.(多选题)请看下列代码,关于运行后的输出结果说法正确的是:()- - - - -AC 1 package util; 2 class Point {} 3 public class Test{ 4 public static void main(String[] args) { 5 Point p=new Point(); System.out.println(p); 6 System.out.println(p.toString()); 7 } 8 } A.输出结果相同 B.输出结果不同 C.输出结果都是util.Point@hashCode D.其中一个输出结果是Point@hashCode 所有的Java类都继承了Object的toString方法,该方法默认返回的字符串的形式为:类名@ hashCode值,其中类名包括“包名.类”。 Java类可以根据需要重写toString方法以返回更有意义的信息。在输出对象时没有显式调用toString方法,系统也会默认调用toString方法。 5.下面所有描述String类中equals()方法正确的是( d ) a) equals()方式是覆盖Object类中的equals()方法 b) equals()比较字符串中的内容,区分大小写 c) equals()方法的的返回值是布尔类型 d) 以上说法都正确 6.(单选题)下面的程序输出的结果是(-32) // 已知 'T' 的int值为84,'t' 的int值为116 String s1=\"TEDU\ System.out.println(s1.compareTo(s2)); A. 考查compareTo()方法。 7.关于null和””说法正确的是( a b d ) a) null是常量(空常量) b) “”是字符串对象 c) null可以调用方法 d) “”可以调用方法 8.(单选题)下列程序运行结果是(C)。 public class Test { String str=new String(\"tedu\"); char[]ch={'x','y','z'}; public static void main(String args[]){ Test t = new Test(); t.change(ex.str,ex.ch); System.out.print(t.str+\"and\"); System.out.print(t.ch);} public void change(String str,char ch[]){ str=\"tarena\";------形参传入在经过改变若最终未对原参数进行赋值覆盖,则原参数不变 ch[0]='w';---------在方法中对数组的改动直接作用于原数组 } } A.tedu and xyz B.tarena and xyz C.tedu and wyz D.tarena and wyz 集合 1.选项中哪个方法不是Collection接口所定义的(C ) A)int size() B)boolean containsAll(Collection c) C)int compareTo(Object obj) D)boolean equals(Object o); 2.(单选题)下面哪个是链式存储并快速顺序(不需要随机访问)访问的集合类型(B) A)java.util.LinkedList B)java.util.Queue C)java.util.ArrayList D)java.util.LinearList 请参考集合队列的结构特点及元素的存取 3.(单选题)请看下列代码: 1 public class Emp { 2 private String name; 3 public Emp(String name) { 4 this.name = name; 5 } 6 public int hashCode() { 7 return 520; 8 } 9 } 下列说法正确的是:(D)。 A.由于没有覆盖equals方法,Emp类编译失败 错误,equals是Object类方法,Emp类默认继承Object类的方法,不进行覆盖不会编译失败 B.从HashMap中,删除一个Emp类型Key,那么HashMap中的所有对象将被删除 错误,由于没有覆盖equals方法,不会删除HashMap中的对象 C.向HashMap中放入已存在的name字符序列的Emp对象,将更改对应的value 错误,由于Emp类没有覆盖equals方法,不会认为name字符序列相同的两个Emp对象是同一个对象,因此,会将向HashMap中放入已存在的name字符序列的Emp对象作为新的key存入到Map中. D.HashMap对象可以包含多个name字符序列相同的Emp对象作为Key 4.(多选题)链表具有的特点是(ACD) A)不必事先估计存储空间 采用动态存储分配,不会造成内存浪费和溢出。 B)可随机访问任一元素-----不可随机访问 C)插入删除不需要移动元素 插入、删除时,只要找到对应前驱结点,修改指针即可,无需移动元素 D)所需空间与线性表长度成正比 需要用额外空间存储线性表的关系,存储密度小 5.(单选题)如果要按照特定顺序保存元素,应当使用的容器是(C) A.HashMap B.ArrayList C.TreeSet D.数组 TreeSet保存元素,会以特定的顺序保存元素 7.(单选题)对保存在List中的数据进行查找,方法不正确的是(D)。 A.对元素进行遍历,依次比较 B.对内容有序的List可以进行二分法查找 C.调用indexOf方法查找 D.无论是否有序都可以用二分法查找,比线性查找快很多 二分查找法,必须是对有序的元素。 9.(多选题)关于集合框架,说法正确的是(ABD)。 A.与数组不同,集合框架是容量可变的容器 B.集合框架不能保存基本类型,但是可以将它们转换为包装类后保存 C.集合框架中的List, Set, Map接口都是Collection接口的子接口 D.集合类除了提供可变容量的存储外,还提供了对数据的算法 本题考查集合框架 选项C错误,Map接口不是Collection接口的子接口。 I/O流 FilterOutputStream是BufferedOutputStream、DataOutputStream及PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数类型( )OutputStream RandomAccessFile是java.io包中的一个兼有输入输出功能的类它继承了Object类,用DataInput和DataOutput接口来实现。。由于它是随机访问,所以文件读写一个记录的位置是任意位置 正则 11.(多选题)腾讯QQ号从10000开始的,下列能正确表示QQ号的正则是(CD)。 A. ^\\d{5,}$-------------5位数,包括0开头,故为错,不能以0开头 B. ^[1-9][0-9]{4,8}$-------限制总个数不能超过9,故错 C. ^[1-9]\\d{4,}$ D. ^[1-9][0-9]{4,}$ 线程 11.(多选题)以下集合对象中哪几个是线程安全的(CD) A)LinkedList B)ArrayList C)Vector------------Vector是线程安全的 D)Hashtable 12.(单选题)请选择正确的一项(B) public class Threads3 implements Runnable { public void run() { } public static void main(String[] args) { Thread t = new Thread(new Threads3()); t.run(); t.run(); t.start(); } } System.out.print(\"running\"); A)The code executes and prints \"runningrunning\". B)The code executes and prints \"runningrunningrunning\". C)The code executes and prints \"running\". D)An exception is thrown at runtime. 在执行t.start();之前所执行的两个t.run();只是单纯的通过虚拟机进行调用该方法,t.start();执行后会将该线程置于就绪状态,等待系统分配时间片段给该线程去执行线程任务。 13.(单选题)代码执行后输出的结果是( ) public class Z{ public static void main(String[] args){ new Z(); } Z(){ Z alias1 = this; Z alias2 = this; synchronized (alias1){ try{ alias2.wait(); System.out.println(\"DONE WAITING\"); } catch (InterruptedException e) { System.out.println(\"IN TEEEUPTED\"); } catch (Exception e) { System.out.println(\"OTHER EXCEPTION\"); } finally { System.out.println(\"FINALLY\"); } } System.out.println(\"ALL DONE\"); } } A)The application compiles but doesn't print anything. B)The application compiles and print \"DONE WAITING\". C)The application compiles and print \"FINALLY\". D)The application compiles and print \"ALL DONE\". wait方法和sleep方法很类似,都是处于等待状态,但是不同的是,wait方法执行后会释放锁对象,所以此段代码中wait方法后面的语句不会被执行,而是一直处于 等待状态中。 在主线程中启动新线程后,新线程处于就绪状态,那么新线程对象中的哪个方法被系统执行时,视为已经进入执行新线程的内容( ) public void run() 解析: 14.(单选题)下面程序的运行结果:(B) public static void main(String args[]) { Thread t = new Thread() { public void run() { pong(); } }; t.run(); System.out.print(\"ping\"); } static void pong() { System.out.print(\"pong\"); } A)pingpong B)pongping C)pingpong和pongping都有可能 D)都不输出 start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程,进而调用run()方法来执行任务,而单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。因此在启动一个线程的时候一定要使用start()而不是run() 15.(多选题)下面能让线程停止执行的有(ABD) A)sleep();--------导致此线程暂停执行指定时间; B)stop();---------这个方法将终止所有未结束的方法,包括 run 方法; C)notify(); D)wait();---------当前正在被服务的线程需要睡一会,醒来后继续被服务。 16.(多选题)有关线程的哪些叙述是对的(BCD) A)一旦一个线程被创建,它就立即开始运行。 B)使用 start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。 C)当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。 D)一个线程可能因为不同的原因停止并进入就绪状态。 异常 17.(单选题)getCustomerInfo()方法如下,try中可以捕获三种类型的异常,如 果在该方法运行中产生了一个IOException,将会输出什么结果(A) public void getCustomerInfo() { try { // do something that may cause an Exception } catch (java.io.FileNotFoundException ex) { System.out.print(\"FileNotFoundException!\"); } catch (java.io.IOException ex) { System.out.print(\"IOException!\"); } catch (java.lang.Exception ex) { System.out.print(\"Exception!\"); } } A)IOException! 找到了相对应的异常类型,就不会再去找父类型的异常 Exception了 B)IOException!Exception! C)FileNotFoundException!IOException! D)FileNotFoundException!IOException!Exception! 7.(多选题)关于异常(Exception),下列描述正确的是(ABC ) A)异常的基类为 Exception,所有异常都必须直接或者间接继承它 B)异常可以用 try{ . . .}catch(Exception e){ . . .}来捕获并进行处理 C)如果某异常继承 RuntimeException,则该异常可以不被声明 D)异常可以随便处理,而不是抛给外层的程序进行处理 异常可以在自己方法内部处理,当自己无法解决时,需要抛出给调用者来处理。 整理 1. 如果在方法声明时给该方法加锁,只需要使用synchronized关键字来修饰该方法即可,不需要传入任何对象,只有在方法内部的某些代码块中才需要传入对象参数。 2. suspend 可以挂起一个线程,就是把这个线程暂停了,它占着资源,但不运行,用 resume 是恢复挂起 的线程,让这个线程继续执行下去。 3.String类中的getBytes()方法的作用是( C ) 将字符串变成字节数组 4.字符串间不能直接比大小 5.System.exit()的作用是( b ) 退出当前JVM 因篇幅问题不能全部显示,请点此查看更多更全内容