您的位置:首页 > 职场人生

Java面试题之基础篇

2007-07-22 12:23 260 查看
答案有自己写的,也有网上copy的。如有错误之处,请指出。

1.Java有哪些基本数据类型,String是不是基本数据类型,他们有何区别?

8种基本数据类型:(4个整型)int、short、long、byte,(2个浮点型)float、double,char,boolean。

引用数据类型:类、接口、数组。String不是基本数据类型,String属于类。

区别:对于基本数据类型,变量中直接存放数据;而对于引用数据类型,对象变量存放的是地址,其引用一个对象。

2.数据类型之间的转换

同种数据类型之间可以强制转换,如基本数据类型之间、引用数据类型之间都可以强制转换。

下面看下不同数据类型之间的转换。
a.基本数据类型(type)->引用数据类型(Type):valueOf( )方法。

  如int i->Integer,用Integer.valueOf(i)。double d->Double,用Double.valueOf(d)。

b.引用数据类型->基本数据类型:typeValue方法。

如Integer obj->int,用obj.intValue()。Integer obj->double,用obj.doubleValue()。

c.基本数据类型->String:valueOf( )方法。

如int i->String,用String.valueOf(i)。

d.String->基本数据类型:parseType方法。

如String s->int,用Integer.parseInt(s)。String s->double,用Double.parseDouble(s)。

e.引用数据类型->String:toString方法

如Integer obj->String,用obj.toString()。

f.String->引用数据类型:valueOf( )方法

如String s->Integer,用Integer.valueOf(s)。

3.日期和时间

如何取得从1970年到现在的毫秒数:Date类的getTime()方法。

如何取得年月日,小时分秒:Calendar.get(Calendar.YEAR) 、Calendar.get(Calendar.MONTH) ……

4.面向对象的特征有哪些方面  ?

三个基本特征:封装、继承、多态。

封装:是指将类内部的数据结构和实现机制封装起来,即类对外表现的只是一些数据结构和成员方法的调用形式和外在功能的说明。

继承:是指从已有的一个类来构造新的类,使得新的类具有原有类的所有特征,并且新类还可以增加一些新的特征。这样可以提高code的复用率,充分利用原有的代码。

多态:有两种,静态多态性(重载、overloading)和动态多态性(重写、overide)。静态多态性是指同一个类中同名方法在功能上的重载(完全相同的方法名和不同的参数列表,返回类型可以不同);动态多态性是指子类方法对父类相同声明的方法的覆盖。(相同声明的方法,即有相同的名字和类型)。

 

5.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。

    访问数据库的步骤:

    A.加载并注册驱动程序,以mysql为例,下同。Class.forName("com.mysql.jdbc.Driver");

    B.创建一个Connection对象。例如,


String url = "jdbc:mysql://localhost:3306/test";


            Connection conn = java.sql.DriverManager.getConnection(url, "root", "123");

    C.创建一个Statement或PreparedStatement对象。例如,PreparedStatement ps =conn.prepareStatement(sql)。

    D.执行sql语句 E.使用ResultSet对象  F.关闭ResultSet对象   G.关闭Statement或PreparedStatement对象

    H.关闭连接conn

 

6.掌握类和对象的概念,掌握面向对象编程的本质

    任何一种事物都可以被认为是对象。 具有相同或相似性质的对象的抽象就是类。OOP的本质:封装、继承、多态--见上面。

 

7.用关键字final修饰一个类或者方法时,有何意义?

   final修饰一个方法时,这个方法是不能被overide的;修饰类时,这个类不能被继承。

 

8. HashMap和Hashtable的区别。 

一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

未完待续,不断更新ing……

9.GC是什么? 为什么要有GC? 

  GC是垃圾收集的意思(Gabage  Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。  

10.String s = new String("xyz");创建了几个String Object?
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

 

11.sleep() 和 wait() 有什么区别?

   sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。。

 

12.数组有没有length()这个方法? String有没有length()这个方法?

   数组没有length()这个方法,有length的属性。String有有length()这个方法。

 

13.写出常见到的runtime exception。

    ClassCastException、IllegalArgu
4000
mentException、IndexOutOfBoundsException、NoSuchElementException、NullPointerException、ArithmeticException

14.String和StringBuffer的区别

   String实例一旦被创建,就不能再修改其内容;而StringBuffer实例可以修改实例所包含的字符串。

 

15.error和exception有什么区别?
   error一般指各种致命性错误,在程序中无法被处理;exception是一种设计或实现问题,也就是说,它表示如果程序运行正常,从不会发生的情况。

 

16.List, Set, Map是否继承自Collection接口? 存取元素时,各有什么特点?

  List,Set是,Map不是。List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。

 

17.是否可以继承String类? String类是final类故不可以继承。

 

18.什么时候用assert?

   assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。

 

19.abstract  class和interface有什么区别?
   声明方法的存在而不去实现它的类被叫做抽象类(abstract  class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract  类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract  类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static  final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof  运算符可以用来决定某对象的类是否实现了接口。

 

20.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

  多线程有两种实现方法,分别是继承Thread类与实现Runnable接口。同步的实现方面有两种,分别是synchronized,wait与notify 。

 

21.什么是java序列化,如何实现java序列化?
   序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

 

22.java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
字节流,字符流。字节流继承于InputStream、OutputStream,字符流继承于InputStreamReader、OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息