1、说明:该面试题集共54页,目前仅供0603班学员参考使用,不能作为标准化试题,上述试题收集渠道来源较为广泛,难度上无法控制,有些题是针对五年以上开发人员的,我对试题的答案无法作出正确地保证,试题答案供大家参考使用。学员们应该尽量举一反三,主动思考。我接触的招聘企业现在普遍反映学员们自己主动学习和自学能力以及对基础知识的掌握比较弱,希望这些试题能够帮助大家加深理解和记忆,该试题只供达内的学员参考,请勿外传!最后预祝0603班的同学们揾工顺利! 达内广州中心 大客户运营经理 贾元峥JAVA面试题集基础知识: 1.C+或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规
2、则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 2. Java的接口和C+的虚类的相同和不同处。 由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足
3、要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。 4. 请说出你所知道的线程同步的方法。 wait():使一个线程处于等待状态,并且释放所持有的对象的lock。 sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线
4、程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 5. 请讲一讲析构函数和虚函数的用法和作用。 6. Error与Exception有什么区别? Error表示系统级的错误和程序不必处理的异常, Exception表示需要捕捉或者需要程序进行处理的异常。 7. 在java中一个类被声明为final类型,表示了什么意思? 表示该类不能被继承,是顶级类。 8. 描述一下你最常用的编程风格。 10. 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以
5、及设计一种算法来实现超大整数加法运算)。 public class BigInt() int ArrOne = new ArrOne1000; String intString=; public int Arr(String s) intString = s; for(int i=0;i 0); / throws an Assertionerror if a (一千零一拾一元整)输出。 3、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 答:父类: package test; public class FatherClass public FatherClass() Syste
6、m.out.println(FatherClass Create); 子类: package test; import test.FatherClass; public class ChildClass extends FatherClass public ChildClass() System.out.println(ChildClass Create); public static void main(String args) FatherClass fc = new FatherClass(); ChildClass cc = new ChildClass(); 输出结果: C:java
7、 test.ChildClass FatherClass Create FatherClass Create ChildClass Create 4、内部类的实现方式? 答:示例代码如下: package test; public class OuterClass private class InterClass public InterClass() System.out.println(InterClass Create); public OuterClass() InterClass ic = new InterClass(); System.out.println(OuterClass
8、 Create); public static void main(String args) OuterClass oc = new OuterClass(); 输出结果: C:java test/OuterClass InterClass Create OuterClass Create 再一个例题: public class OuterClass private double d1 = 1.0; /insert code here You need to insert an inner class declaration at line 3. Which two inner class d
9、eclarations are valid?(Choose two.) A. class InnerOne public static double methoda() return d1; B. public class InnerOne static double methoda() return d1; C. private class InnerOne double methoda() return d1; D. static class InnerOne protected double methoda() return d1; E. abstract class InnerOne
10、public abstract double methoda(); 说明如下: 一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 故 A、B 错 二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错。 故 D 错 三.非静态内部类的非静态成员可以访问外部类的非静态变量。 故 C 正确 四.答案为C、E 5、Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示? 答:Server端程序: package test; import .*; import java.io.*; pub
11、lic class Server private ServerSocket ss; private Socket socket; private BufferedReader in; private PrintWriter out; public Server() try ss=new ServerSocket(10000); while(true) socket = ss.accept(); String RemoteIP = socket.getInetAddress().getHostAddress(); String RemotePort = :+socket.getLocalPort
12、(); System.out.println(A client come in!IP:+RemoteIP+RemotePort); in = new BufferedReader(new InputStreamReader(socket.getInputStream(); String line = in.readLine(); System.out.println(Cleint send is : + line); out = new PrintWriter(socket.getOutputStream(),true); out.println(Your Message Received!)
13、; out.close(); in.close(); socket.close(); catch (IOException e) out.println(wrong); public static void main(String args) new Server(); ; Client端程序: package test; import java.io.*; import .*; public class Client Socket socket; BufferedReader in; PrintWriter out; public Client() try System.out.printl
14、n(Try to Connect to 127.0.0.1:10000); socket = new Socket(127.0.0.1,10000); System.out.println(The Server Connected!); System.out.println(Please enter some Character:); BufferedReader line = new BufferedReader(new InputStreamReader(System.in); out = new PrintWriter(socket.getOutputStream(),true); ou
15、t.println(line.readLine(); in = new BufferedReader(new InputStreamReader(socket.getInputStream(); System.out.println(in.readLine(); out.close(); in.close(); socket.close(); catch(IOException e) out.println(Wrong); public static void main(String args) new Client(); ;6、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如
16、在COLLECTION框架中,实现比较要实现什么样的接口? 答:用插入法进行排序代码如下 package test; import java.util.*; class InsertSort ArrayList al; public InsertSort(int num,int mod) al = new ArrayList(num); Random rand = new Random(); System.out.println(The ArrayList Sort Before:); for (int i=0;inum ;i+ ) al.add(new Integer(Math.abs(rand.nextInt() % mod + 1); System.out.println(al+i+=+al.get(i); public void SortIt() Integer tempInt; int MaxSize=1; for(int i=1;i=(Integer)al.get(MaxSize-1).intVal