Java 面试资料整理之J2SE

来源:互联网 发布:哈萨克软件qorjin 编辑:程序博客网 时间:2024/05/05 08:12
下面所有资料纯属自我参考之用!

资料不断补充和更新中……

J2SE部分

1.谈一下你知道的JDK提供的Java基本包

1) java.lang 包——包含 线程类(Thread) 异常类(Exception) 系统类(System) 整数类(Integer) 字符串类(String )等,这个包是 JVM 自动引入的包.

2) java.awt 包—— 抽象窗口工具包(Abstract Window Toolkit)用于构建 GUI 界面的类和绘图类

3) java.io 包——输入/输出包,包含各种输入/输出流类。如:FileInputStream / FileOutputStream 等。

4) java.util 包——提供一些实用类,如日期类(Data)和集合类(Collection)

5) java.net 包——支持TCP/IP网络协议,包含 Socket  和 URL 相关的类,用于网络编程

JDK的所有的包中的类构成了JAVA 类库,或者叫做 J2SE API.

2.Java 里面的保留字和关键字的特点

Java 里面的保留字包括:const 和 goto

关键字的特点就是:所有的关键字都是小写。friendly,sizeof 不是 Java 的关键字,区分于C++

3.谈一下JVM以及涉及到的堆区,方法区和 Java栈区

 Java Virtual Machine --JVM 是由JDK (Java Development Kit--Java 开发语言包,它提供了基本的开发和运行环境)

提供的一个软件程序,它的任务是执行Java 程序。JVM 封装了底层操作系统的差异,不管是在哪种平台上,都按照下列步骤来运行程序:

1) 把 .class 文件中的二进制数据加载到内存中

2) 对类的二进制数据进行验证

3) 解析并执行命令

JVM 提供了程序运行时环境,其中最重要的一个资源就是运行时数据区,这是操作系统为JVM进程分配的内存区域。JVM管理这块区域,又把这个区域进一步划分为多个子区域:

1) 堆区:存放对象,分配的对象,实例化

2) 方法区:存放类的类型信息,静态变量和方法

3) Java栈区:局部变量

4.谈一下在使用 classpath 环境变量的优先级别

1) 在java javac 命令中的 -classpath 优先级别最高

2) 其次是在当前 DOS 窗口中设置的环境变量 classpath

3) 然后是系统环境变量 classpath

5.引用类型和基本类型的区别

1) 基本类型代表简单的数据类型,如整数和字符;

引用类型所引用的实例能表示任意一种复杂的数据结构,如Person 类,有基本类型,还包含Person引用类型的变量

public class Person{

long id; // 身份证号码

String name;

int age;

char sex;

Person mother; //母亲

}

2) JVM 处理引用类型变量和基本类型变量的方式不一样

对于基本类型的变量,JVM 会为其分配数据类型实际所占用的内存空间

引用变量,仅仅是一个指向堆区中某个实例的指针,即内存地址,它所占的空间取决于JVM的实现,对Java程序是透明的

6.Java 中的异常处理机制 的简单原理和应用,还有错误(Exception and Error)

所有的Exception  和 Error 都是 java.lang.Throwable类 的子类。

首先,Error 是系统级错误,不必再处理的异常,用于指示合理的应用程序不应该捕获的严重的错误。比如 Error 下面的子类 TreadDeath ,在调用Thread 类中带有零参数的 Stop () 方法的时候,受害线程将抛出一个 TreadDeath 实例。

其次,Exception,指明了合理的应用程序应该捕获的条件,需要处理的异常。

1)当Java 程序违反了 Java 语义规则时,JVM就会将发生的错误表示为一个异常。比如:空对象引用的 NullPointerException  或者 数组下标越界引发的 IndexOutOfBoundsException。还有比如:IOException,RuntimeException(JVM 在正常运行期间抛出的异常的超类)

2)Java 允许程序员扩展这种语义检查,可自己创建自己的异常,并自由选择在何时用 throw 关键字引发异常。

如,我的一个DAOException类中

public class DAOException extends Exception {

 /**
  * @Simon Lv
  */
 private static final long serialVersionUID = -1996525365417702366L;
 
 public DAOException(){
  super();
 }
 
 public DAOException(String message){
  super(message);
 }

}

DataNotFoundException 异常类中

public class DataNotFoundException extends Exception {

 /**
  * @Simon Lv
  */
 private static final long serialVersionUID = -35712932323040622L;
 
 public DataNotFoundException(){
  super();
 }
 
 public DataNotFoundException(String message){
  super(message);
 }

}

那么在引用时候 请注意 throws  和 throw  关键字的区别

public UserId findUser(UserId userId)throws DAOException,DataNotFoundException{

 /**
  * @Simon Lv
  */
  if(userId==null){
   throw new DAOException("User is null");
  }
  
  if(this.connection==null){
   throw new DAOException("Connection created failed Or the Connection is closed!");
  }
  
  String hql ="from com.accp.entity.UserId where userName=? and userPassword=?";
  
  Query query = this.connection.createQuery(hql);
  
  query.setParameter(0, userId.getId());
  
  List users =null;
  
  try{
   users = query.list();
  } catch (HibernateException ex) {
   ex.printStackTrace();
   throw new DAOException("Hql Execute Failes");
  }
   
   if(users==null||users.size()<=0){
    throw new DataNotFoundException("Error User or Password!");
   }
   
   userId = (UserId)users.get(0);
  
   return userId;
 }

 

 

 
原创粉丝点击