资源描述:
关注java技术 java试题 Java基础方面 1,作用域public,PRotected,private,以及不写时的区别 答区别如下 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ friendly √ √ private √ 不写时默认为friendly 2,ArrayList和Vector的区别,HashMap和Hashtable的区别 答就ArrayList与Vector主要从二方面来说. 一.同步性Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长当需要增长时,Vector默认增长为原来一倍,而ArrayList却是原来的一半 就HashMap与HashTable主要从三方面来说。 一.历史原因Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 二.同步性Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 三.值只有HashMap可以让你将空值作为一个表的条目的key或value 3,char型变量能不能定义为一个中文为什么 答是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的 4,多线程有几种表示方法,都是什么同步有几种实现方法,都是什么 答多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 5,继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么 答父类 package test; public class FatherClass { public FatherClass { System.out.println“FatherClass Create“; } } 子类 package test; import test.FatherClass; public class ChildClass extends FatherClass { public ChildClass { System.out.println“ChildClass Create“; } public static void mainString[] args { FatherClass fc new FatherClass; ChildClass cc new ChildClass; } } 输出结果 C\java test.ChildClass FatherClass Create FatherClass Create ChildClass Create 6,内部类的实现方式 答示例代码如下 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 Create“; } public static void mainString[] 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 declarations are validChoose two. A. class InnerOne{ public static double a {return d1;} } B. public class InnerOne{ static double a {return d1;} } C. private class InnerOne{ double a {return d1;} } D. static class InnerOne{ protected double a {return d1;} } E. abstract class InnerOne{ public abstract double a; } 说明如下 一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 故 A、B 错 二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错。 故 D 错 三.非静态内部类的非静态成员可以访问外部类的非静态变量。 故 C 正确 四.答案为C、E 7,垃圾回收机制,如何优化程序 答使用New操作创建对象后,JAVA虚拟机自动对该对象分配内存并保持跟踪,JAVA虚拟机能判断出对象是否还被引用,对不再被引用的对象释放其占 用的内存. 8,float型float f3.4是否正确 答不正确。精度不准确,应该用强制类型转换,如下所示float ffloat3.4 9、介绍JAVA中的Collection FrameWork包括如何写自己的数据结构 答Collection FrameWork如下 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements) Map提供key到value的映射 10、Java中异常处理机制,事件机制 11、JAVA中的多形与继承 希望大家补上,谢谢 12、抽象类与接口 答抽象类与接口都用于抽象,但是抽象类JAVA中可以有自己的部分实现,而接口则完全是一个标识同时有多重继承的功能。 13、Java 的通信编程,编程题或问答,用JAVA SOCKET编程,读服务器几个字符,再写入本地显示 答Server端程序 package test; import .*; import java.io.*; public class Server { private ServerSocket ss; private Socket socket; private BufferedReader in; private PrintWriter out; public Server { try { ssnew ServerSocket10000; whiletrue { socket ss.accept; String Remoteip socket.getInetAddress.getHostAddress; String RemotePort ““socket.getLocalPort; System.out.println“A client come inIP“RemoteIPRemotePort; in new BufferedReadernew StreamReadersocket.getStream; String line in.readLine; System.out.println“Cleint send is “ line; out new PrintWritersocket.getOutputStream,true; out.println“Your Message Received“; out.close; in.close; socket.close; } }catch IOException e { out.println“wrong“; } } public static void mainString[] args JAVA面试题集 基础知识 1.C或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检 查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩 展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 2. Java的接口和C的虚类的相同和不同处。 由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比 ,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性 在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。 3. 垃圾回收的优点和原理。并考虑2种回收机制。 Java语言中一个显著的特点就是引入了垃圾回收机制,使c程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再 需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止 内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时 间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记 垃圾回收,增量垃圾回收。 4. 请说出你所知道的线程同步的方法。 wait使一个线程处于等待状态,并且释放所持有的对象的lock。 sleep使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。 notify唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程 ,而且不是按优先级。 Allnotity唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 5. 请讲一讲析构函数和虚函数的用法和作用。 6. Error与Exception有什么区别 Error表示系统级的错误和程序不必处理的异常, Exception表示需要捕捉或者需要程序进行处理的异常。 7. 在java中一个类被声明为final类型,表示了什么意思 表示该类不能被继承,是顶级类。 8. 描述一下你最常用的编程风格。 9. heap和stack有什么区别。 栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 10. 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算 )。 public class BigInt { int[] ArrOne new ArrOne[1000]; String intString““; public int[] ArrString s { intString s; forint i0;i 0; // throws an Assertionerror if a 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 declarations are validChoose two. A. class InnerOne{ public static double a {return d1;} } B. public class InnerOne{ static double a {return d1;} } C. private class InnerOne{ double a {return d1;} } D. static class InnerOne{ protected double a {return d1;} } E. abstract class InnerOne{ public abstract double a; } 说明如下 一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 故 A、B 错 二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错。 故 D 错 三.非静态内部类的非静态成员可以访问外部类的非静态变量。 故 C 正确 四.答案为C、E 5、Java 的通信编程,编程题或问答,用JAVA SOCKET编程,读服务器几个字符,再写入本地显示 答Server端程序 package test; import .*; import java.io.*; public class Server { private ServerSocket ss; private Socket socket; private BufferedReader in; private PrintWriter out; public Server { try { ssnew ServerSocket10000; whiletrue { socket ss.accept; String RemoteIP socket.getInetAddress.getHostAddress; String RemotePort ““socket.getLocalPort; System.out.println“A client come inIP“RemoteIPRemotePort; in new BufferedReadernew StreamReadersocket.getStream; String line in.readLine; System.out.println“Cleint send is “ line; out new PrintWritersocket.getOutputStream,true; out.println“Your Message Received“; out.close; in.close; socket.close; } }catch IOException e { out.println“wrong“; } } public static void mainString[] args { new Server; } }; Client端程序 package test; import java.io.*; import .*; public class Client { Socket socket; BufferedReader in; PrintWriter out; public Client { try { System.out.println“Try to Connect to 127.0.0.110000“; socket new Socket“127.0.0.1“,10000; System.out.println“The Server Connected“; System.out.println“Please enter some Character“; BufferedReader line new BufferedReadernew StreamReaderSystem.in; out new PrintWritersocket.getOutputStream,true; out.printlnline.readLine; in new BufferedReadernew StreamReadersocket.getStream; System.out.printlnin.readLine; out.close; in.close; socket.close; }catchIOException e { out.println“Wrong“; } } public static void mainString[] args { new Client; } }; 6、用JAVA实现一种排序,JAVA类实现序列化的方法二种 如在COLLECTION框架中,实现比较要实现什么样的接口 答用插入法进行排序代码如下 package test; import java.util.*; class InsertSort { ArrayList al; public InsertSortint num,int mod { al new ArrayListnum; Random rand new Random; System.out.println“The ArrayList Sort Before“; for int i0;inum ;i { al.addnew IntegerMath.absrand.nextInt mod 1; System.out.println“al[“i“]“al.geti; } } public void SortIt { Integer tempInt; int MaxSize1; forint i1;iIntegeral.getMaxSize-1.intValue { al.addMaxSize,tempInt; MaxSize; System.out.printlnal.toString; } else { for int j0;jtempInt.intValue { al.addj,tempInt; MaxSize; System.out.printlnal.toString; break; } } } } System.out.println“The ArrayList Sort After“; forint i0;ial.size;i { System.out.println“al[“i“]“al.geti; } } public static void mainString[] args { InsertSort is new InsertSort10,100; is.SortIt; } } JAVA类实现序例化的方法是实现java.io.Serializable接口 Collection框架中实现比较要实现Comparable 接口和 Comparator 接口 7、编程编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我 ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC汉的半个”。 答代码如下 package test; class SplitString { String SplitStr; int SplitByte; public SplitStringString str,int bytes { SplitStrstr; SplitBytebytes; System.out.println“The String is′“SplitStr“′;SplitBytes“SplitByte; } public void SplitIt { int loopCount; loopCountSplitStr.lengthSplitByte0SplitStr.length/SplitByteSplitStr.length/Split Byte1; System.out.println“Will Split into “loopCount; for int i1;iloopCount ;i { if iloopCount{ System.out.printlnSplitStr.substringi-1*SplitByte,SplitStr.length; } else { System.out.printlnSplitStr.substringi-1*SplitByte,i*SplitByte; } } } public static void mainString[] args { SplitString ss new SplitString“test中dd文dsaf中男大3443n中国43中国人 0ewldfls103“,4; ss.SplitIt; } } 8、JAVA多线程编程。 用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。 希望大家补上,谢谢 9、STRING与STRINGBUFFER的区别。 答STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用 StringBuffer,如果最后需要String,那么使用StringBuffer的toString方法 jsp方面 1、jsp有哪些内置对象作用分别是什么 答JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应) request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是
展开阅读全文