java 面试题
来源:互联网 发布:怎么在淘宝上找兼职 编辑:程序博客网 时间:2024/06/09 18:14
Java基础方面:
1、char型变量中能不能存贮一个中文汉字?为什么?
答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16字节,所以放一个中文是没问题的
2:垃圾回收机制,如何优化程序?
A:java中的垃圾收集(Garbage Collection,GC)用来回收那些过去分配的不再有用的对象的堆空间。
查找和移动无效对象的过程不仅可以使java应用程序停止,同时会消耗大约25%的吞吐量。
可以通过System.gc();进行垃圾收集。
3、Java中异常处理机制,事件机制?
4、JAVA中的多态与继承?
:当一个类拥有另一个类的所有数据和操作时,就称这两个类之间存在着继承关系。
被继承的类称为父类或超类,继承了父类的所有数据和操作的类就为子类。
一个父类可以同时拥有多个子类,父类实际是所有子类的公共域和公共方法的集合;
而每一个子类则是父类的特殊化,是对父类公共域和方法在功能、内涵方面的扩展和延伸。
Java语言的多态是指程序中同名的不同方法共存的情况。多态是面向对象程序设计的又一个特性。
面向对象程序设计中,利用这种多态来提高程序的抽象性,突出Java语言的继承性。
5、抽象类与接口?
答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。
6、Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示?
答:Server端程序:
package test;
import java.net.*;
import java.io.*;
public 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();
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!");
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 java.net.*;
public class Client
{
Socket socket;
BufferedReader in;
PrintWriter out;
public Client()
{
try
{
System.out.println("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);
out.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();
}
};
7、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如在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;i<num ;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<al.size();i++)
{
tempInt = (Integer)al.remove(i);
if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
{
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
} else {
for (int j=0;j<MaxSize ;j++ )
{
if
(((Integer)al.get(j)).intValue()>=tempInt.intValue())
{
al.add(j,tempInt);
MaxSize++;
System.out.println(al.toString());
break;
}
}
}
}
System.out.println("The ArrayList Sort After:");
for(int i=0;i<al.size();i++)
{
System.out.println("al["+i+"]="+al.get(i));
}
}
public static void main(String[] args)
{
InsertSort is = new InsertSort(10,100);
is.SortIt();
}
}
JAVA类实现序例化的方法是实现java.io.Serializable接口
Collection框架中实现比较要实现Comparable 接口和 Comparator 接口
8、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
答:代码如下:
package test;
class SplitString
{
String SplitStr;
int SplitByte;
public SplitString(String str,int bytes)
{
SplitStr=str;
SplitByte=bytes;
System.out.println("The String is:'"+SplitStr+"';SplitBytes="+SplitByte);
}
public void SplitIt()
{
int loopCount;
loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split
Byte+1);
System.out.println("Will Split into "+loopCount);
for (int i=1;i<=loopCount ;i++ )
{
if (i==loopCount){
System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
} else {
System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));
}
}
}
public static void main(String[] args)
{
SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人
0ewldfls=103",4);
ss.SplitIt();
}
}
9、文件读写的基本类
答案:FileInputStream,FileOutputStream,File,IOException等。
答:File Reader 类和FileWriter类分别继承自Reader类和Writer类。FileReader类用于读取文件,File Writer类用于将数据写入文件,这两各类在使用前,都必须要调用其构造方法创建相应的对象,然后调用相应的read()或 write()方法。
10、串行化的注意事项以及如何实现串行化
11、线程的基本概念、线程的基本状态以及状态之间的关系
新建 (Born) : 新建的线程处于新建状态
就绪 (Ready) : 在创建线程后,它将处于就绪状态,等待 start() 方法被调用
运行 (Running) : 线程在开始执行时进入运行状态
睡眠 (Sleeping) : 线程的执行可通过使用 sleep() 方法来暂时中止。在睡眠后,线程将进入就绪状态
等待 (Waiting) : 如果调用了 wait() 方法,线程将处于等待状态。用于在两个或多个线程并发运行时。
挂起 (Suspended) : 在临时停止或中断线程的执行时,线程就处于挂起状态。
恢复 (Resume) : 在挂起的线程被恢复执行时,可以说它已被恢复。
阻塞 (Blocked) – 在线程等待一个事件时(例如输入/输出操作),就称其处于阻塞状态。
死亡 (Dead) – 在 run() 方法已完成执行或其 stop() 方法被调用之后,线程就处于死亡状态。
12、 串行化的注意事项以及如何实现串行化
答:如果有循环引用是不可以串行化的。对象输出流的WriteObject方法和 对象输入流的ReadObect 方法
13、线程的同步、如何实现线程的同步
答:当两个或多个线程同时访问同一个变量,并且以个线程需要修改这个变量。就要用到线程同步。在Java 中,同步是通过 synchronized 关键字来定义的。 诺是想同步化某程序段,可以使用 synchronized(object){}方法,其中{}内的程序语句被同步化。
14、几种常用的数据结构及内部实现原理。
15、Socket通信(TCP、UDP区别及Java实现方式)
TCP——传输控制协议,具有极高的可靠性,保证数据包按照顺序准确到达,但其也有着很高的额外负担。UDP——使用者数据元协议,并不能保证数据包会被成功的送达,也不保证数据包到达的顺序,但其传输速度很快。大多数我们会使用TCP,偶尔才会动用UDP,如声音讯号,即使少量遗失,也无关紧要。
16、Java的事件委托机制和垃圾回收机制
java 事件委托机制的概念,一个源产生一个事件并将它送到一个或多个监听器那里。在这种方案中,监听器简单的等待,直到它收到一个事件。一旦事件被接受,监听器将处理这个事件,然后返回。垃圾 回收机制 垃圾收集是将分配给对象但不在使用的内存回收或释放的过程。如果一个对象没有指向它的引用或者其赋值为null,则次对象适合进行垃圾回收
17、JDBC调用数据库的基本步骤
导入必要的类,装入JDBC驱动程序,识别数据源,分配一个Connection对象,分配一个Statement对象,使用Statement执行一个查询,从返回的ResultSet对象中检索数据,关闭ResultSet,关闭Statement对象,关闭Connection对象
18、解析XML文件的几种方式和区别
答:Dom解析 在内存中创建一个DOM树,能随机访问文件内容,也可以修改原文件内容SAX解析 线性解析,不能随机访问,也无法修改原文件Dom解析要先用SAX解析创建DOM树
19、Java四种基本权限的定义
public private protected 默认
20、Java的国际化
答:Java 中提供了诺干国际化明感类,来实现国际化的。例如:dateformat timezone 等等。
- Java面试题-朋友的面试题
- java 阿里面试题 百度面试题 CVTE面试题
- Java面试题集
- JAVA面试题
- Java面试题集
- Java 面试题
- JAVA面试题集
- java面试题1
- JAVA华为面试题
- java常用面试题
- java面试题
- JAVA面试题集
- JAVA面试题集
- java面试题集
- [转载] JAVA面试题
- Java面试题集
- JAVA面试题-1
- [转载] JAVA面试题
- 使用匿名管道传输对象
- SQL Server SQL for xml auto 添加根节点
- AVI文件的展开结构
- Flash小玩意图案创作:跟随的齿轮和太极
- Linux串口通信程序
- java 面试题
- 百度产品经理探秘:需求把握和正确决策【转载】
- 关于JVM GC
- 批量更新
- 计息方式
- Studying note of GCC-3.4.6 source (42)
- socket的错误码总结(Windows和unix) 收藏
- IoC与AOP
- 检查Windows的本地连接状态方法