您的当前位置:首页正文

JavaSE面试题

来源:九壹网
1. 下面那几个函数是 public void method(){...}的重载函数 A)public void method( int m){...} B)public int method(){...}

C) public void method2(){...} D) public int method(int m, float f ){...} AD

2 关于下面的说法 哪些是正确的:

A)一旦一个线程被创建,它就立即开始运行。

B)使用 start()方法可以使一个线程成为可运行的,但是它不一定立即开始运 行。

C)当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。 D)一个线程可能因为不同的原因停止并进入可运行状态 答案:c 3:class Test{ private int m;

public static void fun() { ,new Test().m..

4: 以下哪个方法用于定义线程的执行体

A)start() B)init() C)run() D)main() E)synchronized() 答案:c

5:public class Person{

static int arr[ ] =new int[10];

public static void main(String a [ ]){ (arr[ 1 ]); } }

哪个选项是正确的 A. 编译时将产生错误;

B. 编译时正确,运行时将产生错误; C. 输出 0; D. 输出空 答案:c

6: 运算符>>和>>>是做什么用的

答案.>>执行有符号右移,>>>执行无符号右移

7:下列关于栈结构的叙述正确的是 A 栈是非线性结构 B 栈是一种树状结构

C 栈具有先进先出的特征 D 栈具有后进先出的特征 答案:D

8:字符(char)的整型表示范围byte呢int呢long呢 答案

byte为-128~127,占用1个字节(-2的7次方到2的7次方-1)

short为-32768~32767,占用2个字节(-2的15次方到2的15次方-1) int为(-48~47),占用4个字节(-2的31次方到2的31次方-1) long为(-808~807),占用8个字节(-2的63次方到2的63次方-1)

9: String是否是java中的基本数据类型java中都有哪些基本数据类型 String不是基本数据类型,

八个基本数据类型是char, int, double, float, byte, long, short, boolean, 对应八个包装类是 Character,Integer,Double, Float, Byte, Long, Short, Boolean

10: A. int k=new String(“aa”); B. String str=String(“bb”); C. char c=74; D. long j=8888;

上述表达式正确的是哪些 CD

11:下述代码的执行结果是 class Super {

public int getLength() {return 4;} }

public class Sub extends Super { public long getLength() {return 5;} public static void main (String[]args) { Super sooper = new Super (); Super sub = new Sub(); “,” + () ); } }

A. 4, 4 B. 4, 5 C. 5, 4 D. 5, 5

E. 代码不能被编译

答案:E switch 不能够作用在 String 类型上 B. List, Set, Map 都继承自 Collection 接口 C. Java 语言支持 goto 语句

D. GC 是垃圾收集器,程序员不用担心内存管理

答案:d

13: 指出下列程序运行的结果 public class Example{

String str=new String(\"good\"); char[]ch={'a','b','c'};

public static void main(String args[]){ Example ex=new Example();

,;

\" and \"); }

public void change(String str ,char ch[]){ str=\"test ok\"; ch[0]='g'; } }

A good and abc B good and gbc C test ok and abc D test ok and gbc 答案:b

int[][] myArray=new int[][]{new int[]{5,6,2},new int[]{6,9,7,8,3},new int[]{3,2}}; myArray[2][2]的值是() A. 9 B. 2 C. 6 D. 越界 答案 D越界

15、关于异常(Exception),下列描述正确的是(多选)

A. 异常的基类为 Exception,所有异常都必须直接或者间接继承它 B. 异常可以用 try{ . . .}catch(Exception e){ . . .}来捕获并进行处理

C. 如果某异常继承 RuntimeException,则该异常可以不被声明 异常可以随便处理,而不是抛给外层的程序进行处理 答:ABC

16:声明一个委托 public int myCallBack(int x); 则用该委托产生的回调方 法的原型应该是

A. void myCallBack(int x) B. int receive(int num) C. String receive(int x) D. 不确定的 答:B

17:三种字符串判空串方法: 1: bool isEmpty = () == 0); 2: bool isEmpty = (str == ; 3: bool isEmpty = (str == \"\"); 哪种方法正确 A. 1 B. 2

C. 3 答:A

18:String s=new String(“hello”); String t =new String(“hello”); char c [ ] ={„h‟,‟e‟,‟l‟,‟l‟,‟o‟}; 下列哪些表达式返回 true A.(t); B.(c);

C.s= =t ;

D. (new String(“hello”)); E.t= = c; 答:AD

19:类 Teacher 和 Student 是类 Person 的子类; Teacher t; Student s;

if (t instanceof Person ){ s=(Student)t; } 最后一条语句的结果是:

A.将构造一个 Student 对象; B.表达式是合法的; C.表达式是错误的;

D.编译时正确, 但运行时错误。 答:D

20给定下列代码: public void test() { try {

oneMethod(); “condition 1”);

} catch (ArrayIndexOutOfBoundsException e){ 2”);

}catch(Exception e){ 3”); }finally{ }

oneMethod 正常运行, 将显示 A. condition 1 B. condition 2 C. condition 3 D. finally 答:AD

21请选出下面两个类间关系描述错误的项 a. public interface A {} public class B extends A {} b. public interface A {}

public interface B extends A {} c. public interface A {}

public class B implements A {} d. public class A {}

public class B { protected A a;} 答:A

22下列创建数组的方法正确的是 A)int two Dim[ ][ ] = new int[4][ ]; B)int two Dim[ ][ ] = new int[ ][4]; C)int two Dim[ ][ ] = new int[4][5]; D)char a[ ] = {‘A’, ‘B’}; E)char c[ ] = “ABC” ; 答:ACD

23:public class X extends Thread implements Runnable{ public void run(){ \"this is run()\"); }

public static void main(String args[]) { Thread t=new Thread(new X()); (); } }

A 第一行会产生编译错误 B 第六行会产生编译错误 C 第六行会产生运行错误 D 程序会运行和启动 答:D

24: 根据线程安全的相关知识,分析以下代码,当调用 test 方法时 i>10 时是否 会引起死锁

public void test(int i) {

lock(this) { if (i>10) { i--; test(i); } } }

A. 会锁死 B. 不会锁死 答:B

25:欲构造 ArrayList 类得一个实例,此类实现了 List 接口,下列哪个方法是正 确的:

A ArrayList myList = new Object(); B List myList = new ArrayList();

C ArraylList myList = new List(); D List myList = new List(); 答:B

26:Java 网络程序设计中,下列正确的描述是(多选) A. Java 网络编程 API 建立在 Socket 基础之上 B. Java 网络接口只支持 TCP 以及其上层协议 C. Java 网络接口只支持 UDP 以及其上层协议 D. Java 网络接口支持 IP 以上的所有高层协议 答:AD

27:Java I/O 程序设计中,下列描述正确的是 A. OutputStream 用于写操作 B. InputStream 用于写操作

C. I/O 库不支持对文件可读可写 API 答:A

28:选出对于 XML 的评论正确的选项___ A. XML 是一种语言无关平台无关的自描述语言。

B. 标签实际上包含了元素和属性两部分。用元素来描述有规律的数据,用属性 来描述系统数据。

C. XML 不可跨平台,不具备扩展性。

文档中的每一个元素都处在一个名字空间中;如果没有指定的名字空间, 缺省的名字空间就是和该元素相关联的名字空间。 答:AD

29:说说下面语句是否有错误,或可能出现的缺陷,并指出错误,或缺陷在哪 里

public class MyFile implements Runnable{ public void run(){ while (true){ try{

FileReader fr=new FileReader(new File(\"\")) ; String line=(); err) { }

Sleep(1000); } }

答: 没有这个方法 (1000)需要用 (1000); 3.没有关闭 FileReader

4.死循环,没有退出的可能

30:判断下列语句是否正确,如果有错误,请指出错误所在 List a = new ArrayList(); (5);

答:错误,5 的默认类型为 int。

31:class BubbleSort{

public static void main(String[] args) {

int[] arr = {8,4,2,3,5}; arr = sort(arr); for(int a : arr) { \"\\"); } }

public static int[] sort(int[] array) { int cnt; int n = ; do{ cnt = 0;

for( int i=1; iif( array[i]int temp = array[i]; array[i] = array[i-1]; array[i-1] = temp; cnt++; } } n--;

}while( cnt!=0 ); return array; }

} 冒泡排序,选择排序...重点掌握

32:public class WorkerThread extends Thread { private String message;

public WorkerThread(String message) { = message; }

public void run(){

static void main(String[] args) {

new WorkerThread(\"hello world!\").start(); } }

33、 在 web 应用开发过程中经常遇到输出某种编码的字符,如从 GBK 到 iso8859-1 等,如何输出一个某种编码的字符串

答:public static String translate(String str) { String tempStr = \"\";

try {

tempStr = new String(\"GBK\"), \"ISO-8859-1\"); tempStr = ();

} catch (Exception e) { tempStr; }

34:public class Singleton {

private Singleton sin = new Singleton(); private Singleton(){ }

public static Singleton init(){ return sin; } }

35:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节

截取的字符串。 但是要保证汉字不被截半个,如\"我 ABC\", 4,应该截为\"我 AB\", 输入\"我 ABC 汉 DEF\",6,应该输出为\"我 ABC\"而不是\"我 ABC+汉的半个\"。 答:

class SplitString {

public static String split(String str,int num) {

byte[] strs = (); if(strs[num-1]<0) {

num=num-1; }

byte[] news = new byte[num]; (strs,0,news,0,num); return new String(news); }

public static void main(String[] args) {

String str = split(\"我 ABC\

str2 = split(\"我 ABC 走 DEF\ }

.}

上面面的代码,如果你用“&”替换“&&”将发生什么错误

答:会抛出空指针异常; &&会短路,只要遇到 boolean 值为 false 就不会再往后

执行了;而&则是会把两边的运算都执行完。注:这个题略坑,经常报nullException不过有时候要用到这个东西。

40:abstract class 和 interface 有什么区别 想插一句 有人用过 @interface嘛

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用

于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现

该类的情况。不能创建 abstract 类的实例。然而可以创建一个变量,其类型是 一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态 方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也 是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中 实现这些方法。接口(interface)是抽象类的变体。新型多继承性可通过实现 这样的接口而获得。接口中的所有方法都是抽象的,所有成员变量都是 public static final 的。一个类可以实现多个接口,当类实现接口时,必须实现接口

的所有方法。抽象类在 Java 语言中表示的是一种单继承的关系,而接口表示的 是多继承的关系;抽象类中可以定义自己的成员变量,也可以包含非抽象的方法, 而在接口中只能有静态的常量,所有方法必须是抽象的;实现抽象类时可以只实 现其中的部分方法,而要是实现一个接口的话就必须实现这个接口中的所有抽象 方法。

41:谈谈 final, finally, finalize 的区别

答:final —修饰符(关键字)如果一个类被声明为 final,意味着它不能再派 生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract 的 ,又被声明为 final 的。将变量或方法声明为 final,可以保证它们在使用中不 被改变。被声明为 final 的变量必须在声明时给定 初值,而在以后的引用中只 能读取,不可修改。被声明为 final 的方法也同样只能使用,不能重载 finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个 异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块( 如果有的话)

finalize —方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对

象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定 这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此 所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其 他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

42:has a ,is a关系: has a:

public class A{ private B b = new B(); }

class B{} is a: public interface A{ }

public class B impliments A{ }

43Math类自己下去看API把...太多了。

44:java 语言中 public、private、protected 三个关键字的用法,重写和重载 的区别。

答:

作用域 当前类 同包 子类 默认 public √ √ √ √ protected √ √ √ × default √ √ × × private √ × × ×

45:说一下 “==”和 equals()方法在字串变量操作中的不同 答:”==”比较的是两个字符串对象的地址, equals()是比较的两个字符串的具体值。

46:异常机制中 try{}后一定要跟 catch 和 finally 吗

答:一定要有 catch 或者 finally,catch 子句紧跟在 try 块后面,用来指定你 想要捕捉的“异常”的类型。如果有 catch 的话,可以没有 finally。

47:能用 foreach 遍历访问的对象需要实现 答:需要实现 Iterable 接口

48:说出一些 JDK 常用的类,包,接口,Exception请各举 5 个 类:

HashSet 、Thread 、String 、FileInputStream 、Class 包:

、 、 、 、 接口:

Collection 、Set 、List 、Comparable 、Serializable Exception:

ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException,

ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

49: Anonymous Inner Class (匿名内部类) 是否可以 extends(继承)其它类,是 否可以 implements(实现)interface(接口)

答:匿名内部类是可以继承其它类,同样也可以去实现接口的,用法为: JButton button = new JButton(); (new ActionListener() {

public void actionPerformed(ActionEvent e){.} });

这样的用法在 swing 编程中是经常使用的,就是因为它需要用到注册监听器 机制,而该监听类如果只服务于一个组件,那么,将该类设置成内部类/匿名类是 最方便的。

注:著名的监听者模式

50:接口是否可继承接口 抽象类是否可实现接口 抽象类是否可继承实体 类

答:接口是可以继承接口的并且可以继承多个其它接口;抽象类可以实现接口中 的方法;抽象类可以继承实体类。

注:想当架构师的,这个一定要搞得非常清楚,反射也要搞清楚。

51:构造器 Constructor 是否可以被继承是否可以被 Override

答:构造器 Constructor 不能被继承,因此不能重写 Overriding,但可以被重 载 Overloading。

52:Java反射:

程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程

序集、模块和类型的对象。可以使用反射动态地创建类型的实例,将类型绑定到 现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段 和属性。 具体的有很多东西...自己去慢慢看API

53:同步和异步有何异同,在什么情况下分别使用他们请举例说明

答:如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到, 或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据, 必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的 方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况 下采用异步途径往往更有效率。

54:详细阐述一下 Collection 接口所包含的内容 答:

List:有序允许重复存放

ArrayList---按顺序存放数据的数组 LinkList----按顺序存放数据的链表

Vector------线程安全的按顺序存放数据的数组 Set:--------无序不允许重复存放

HashSet-----根据 HashCode()和 equals()方法来判断是否有重复 SortedSet:--有序

TreeSet-----通过实现 Comparable 接口和 Comparator 接口而具有排序功能的集合

55:j2ee 常用的设计模式

答:Java 中的 23 种设计模式:

Factory (工厂模式), Builder (建造模式), Factory Method (工厂方法模式), Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式), Adapter(适配器模式),Bridge(桥梁模式),Composite(组合模式), Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式),

Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式), Iterator(迭代器模式),Mediator(调停者模式),Memento(备忘录模式), Observer(观察者模式),State(状态模式),Strategy(策略模式),

Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)

一般要求面试者掌握:监听,工厂,单例,迭代以及观察

因篇幅问题不能全部显示,请点此查看更多更全内容

Top