Java由基础到高级面试题经典问答

标签: java 基础 面试 | 发表时间:2012-11-05 22:34 | 作者:lijizh1013
出处:http://blog.csdn.net


//20、String 和StringBuffer的区别
String:
   (1)String 类代表字符串。 Java 程序中的所有字符串字面值都作为此类的实例实现。              
    (2)String的长度是不可变的
StringBuffer:
    (1)线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。
    (2)StringBuffer的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
19、启动一个线程是用run()还是start()? .
   
    start():
     线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。     
    run():
      线程获得CPU资源正在执行任务,此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。

18、final, finally的区别。
   final:       
   (1)final关键字可用于修饰类、变量和方法,用于表示它所修饰的类、变量和方法不可改变。
          变量: final修饰变量时,表示该变量一旦获得了初始值之后就不可被改变,final既可修饰成员变量(包括类变量和实例变量),也可以修饰局部变量、形参。
          
          方法:final修饰的方法不可被重写,如果出于某些原因,不希望子类重写父类的某个方法,则可以使用final修饰该方法。
           
          类:final修饰的类不可有子类。

   finally:
        (1)finally关键字用于异常处理机制中往往跟在try-catch语句块之后,finally语句所包含的代码在任何情况下都会被执行 会被执行,且在try-catch语句块中只能有一个finally语句块。

   
17、List 和 Map 区别?
       列表(List):
          (1)List列表区分元素的顺序,即List列表能够精确的控制每个元素插入的位置,用户能够使用索引来访问List中的元素。
          (2)List允许包含重复元素。
       映射(Map):
         (1)保存的是“键-值”对信息,即Map中存储的每个元素都包括起标识作用的“键”和该元素的“值”两部分,查找数据时需要提供相应的“键”,才能查找到该“键”所映射的“值”。
          (2)Map集合中不能包含重复的“键”,并且每个“键”最多只能映射一个值。

16、JDBC中的PreparedStatement相比Statement的好处
         
  PreperedStatement是Statement的子类,相对于Statement对象而言:
         (1) PreperedStatement可以避免SQL注入的问题。
         (2)Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。    
         (3)PreparedStatement 可对SQL进行预编译,对相同的插入操作可进行批量添加从而提高数据库的执行效率。并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。
          

//15、你所知道的集合类都有哪些?主要方法?
         线性表型的集合:List——ArrayList、LinkedList、Vector、Stack
          不允许有重复元素的Set集合:Set——HashSet
          “键-值”对型的集合:Map——HashMap、HashTable
       
          主要方法:
               ArrayList:
                     add(int index, E element)、add(E e)、remove(int index)
                  remove(Object o)、get(int index)、size()、indexOf(Object obj)
                 subList(int fromIndex, int toIndex)、clear()

               LinkedList:
                      push(E e)、pop()、pollLast()、pollFirst()、peek()、
                    get(int index)、getFirst()、getLast()、addFirst(E e)
                   addLast(E e)、add(E e)、remove()、remove(int index)
                    remove(Object o)
 
               Vector:
                  firstElement()、elements()、contains(Object o)、
            add(int index, E element) 、clear()

 
                Stack:
                 构造方法:
                      Stack st=new Stack(); Stack <String> st = new Stack();
               其他方法:
                    peek() 、pop() 、push(E item) 、empty()、search(Object o)

            
             HashSet:
                 构造方法
                      HashSet()
                         HashSet(<E> c)
                  其他方法
                       contains(Object o) 、isEmpty()、iterator()、remove(Object o)
                          size()
 

            HashMap:
                 entrySet() 、get(Object key)、isEmpty()、keySet()、
             put(K key, V value)
 
 

 
14、abstract class和interface有什么区别?
   
设计目的不同:
     
        接口体现的是一种规范,类似于整个系统的“总纲”,它制定了系统各模块应该遵循的标准 。
        抽象类作为多个子类的共同父类,体现的是模板式设计。抽象类可以被当成系统实现过程中的中间产品,这个中间产品已经实现了部分功能,但这个产品还不能当成最终产品,必须交由其子类作更进一步的完善,这种完善可能有几种不同方式。

用法不同:

   在接口里:
(1)接口里只能包含不带方法体的非静态的抽象方法。
(2)接口里只能定义静态常量属性
(3)接口里不能包含初始化块和构造方法
(4)一个类可以实现多个接口,并且必须实现接口中所有的抽象方法。

   在抽象类里:
    (1)抽象类中既可以包含普通方法也可以定义静态方法 。
    (2)抽象类既可以包含普通属性,也可以包含静态常量属性
    (3)抽象类中以包含初始化块并且也可以有构造方法,但是不用于创建对象,而是让子类调用
    (4)一个只能继承一个父类当一个抽象类被子类继承时子类要么重写父类的抽象方法要么将子类定义为抽象类。


//13、作用域public,private,protected,以及不写时的区别?
     作用关系如下:


如果不使用任何访问控制符修饰的类只能被本类和同一个包中的所有类访问。

    
12、== 与 equals  的区别

        "==":是关系运算符,在数值运算方面可用来比较数值是否相等;在比较对象时则表示所比较对象是否是同一个对象。
       "equals":是对象用于比较的一种方法,在Object对象中用来表示两个对象是否相等,但是该方法大多被其他类的对象所重写用来表示对象中的内容是否相等。

11、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?
 
        Java中有两种实现方法,分别是继承Thread类与实现Runnable接口;synchronized

10、面向对象的特征有哪些方面
          
        封装,继承,多态三方面。                                  

//9、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
         可以。

          /*不可以,当某个对象用synchronized修饰时,表明该对象已启动“互斥锁”机制,在任一时刻只能由一个线程访问,即使该线程出现堵塞,该对象的被锁定状态也不会解除,其他线程任不能访问该对象。*/

         
8、事务的特性有哪些?
     
     事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。
   
7、得到Class的三个方法是什么?
     (1)类对象.getClass()
       (2)类名.class
        (3)Class.forName(“类名”);
         
6、数组有没有length()这个方法? String有没有length()这个方法
     数组没有length()这个方法,只有length的属性。String有有length()这个方法。

//5、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

   字节流,字符流。
       
         字节流——InputStream 或 OutputStream
         字符流——Reader或Writer

4、字节流与字符流的区别
   (1)按传输数据的“颗粒大小”:
                ——字节流:   
                    字节流以字节为单位进行数据传输,每次传送一个或多个字节;
                  ——字符流:  
                  字符流以字符为单位进行数据传输,每次传送一个或多个字符;
    (2)按照处理数据类型:
               ——字节流:
                   字节流可以处理所有类型的数据,如图片、mp3、avi
                ——字符流:   
                   字符流只能处理字符数据。
              结论:只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流

3、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
 
  Override:
      (1)作用范围:重写Override是父类与子类之间多态性的一种表现。
      (2)如果在子类中定义的某些方法与其父类有相同的名称、参数列表、返回值类型并且子类的修饰限定符必须大于或者等于父类的修饰限定符才可以重写。
      (3)子类的对象使用重写方法时,将遵循“编译看左边,运行看右边”的原则。即:在编译时,看引用类型的类是否有此方法;在运行时,看对象所在的类是否有调用的方法。

  Overload:
      (1) 重载Overload是同一个类中多态性的一种表现。
       (2)只要在一个类中具有相同方法名的方法的参数列表在顺序、个数、类型上存在不同即可发生重载,与方法的返回值类型无关。
        (3)如果在一个类中定义了多个重载的方法,只需根据所传参数列表的不同来调用不同的重载方法。

可以。
2、Integer与int的区别
     int:
    (1)int是基本数据类型;
    (2)使用时无需使用new创建对象,也不需要额外的引用空间保存辅助信息,因此运行开销较小并且迎合了人们早已根深蒂固的行为习惯 。
    (3)但是由于不是对象,没有相应的方法等在有些场合其使用是受到限制的 。
     Integer;
        (1)Integer是一种封装类它用final关键字修饰,不能被继承
        (2)Integer弥补了基本数据类型在面向对象方面的欠缺,它可以实例化对象且该类中还提供了多个用于处理int型数据的功能方法。        
        (3)Integer可以通过自动的拆箱和封箱在int和Integer类型之间自动转换。

             

1.JAVA的基本数据类型有哪些 ?String 是不是基本数据类型?

数值型:
     ——整型:byte(字节型)、short(短整型)、int(整型)、long(长整型)
     ——浮点型:float(单精度浮点数)、double(双精度浮点数)
字符型:char
布尔类型:boolean

String不是基本数据类型,它属于引用数据类型当中的class类型。

作者:lijizh1013 发表于2012-11-5 22:34:23 原文链接
阅读:0 评论:0 查看评论

相关 [java 基础 面试] 推荐:

JAVA面试精选【Java基础】

- - CSDN博客编程语言推荐文章
  这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱. 只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了. 对于那些正打算找工作JAVA软件开发工作的童鞋们来说,当你看到这份题目的时候,你应该感动很幸运,因为,只要你把题目中的内容都搞懂了,在笔试的时候就可以游刃有余,通过面试只有半步之遥了,笔试只能反映你的JAVA技能.

JAVA多线程和并发基础面试问答

- - 企业架构 - ITeye博客
原文链接    译文连接  作者:Pankaj   译者: 郑旭东   校对:方腾飞. 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一. 在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题. ( 校对注:非常赞同这个观点).

Java由基础到高级面试题经典问答

- - CSDN博客推荐文章
//20、String 和StringBuffer的区别.    (1)String 类代表字符串. Java 程序中的所有字符串字面值都作为此类的实例实现.     (2)String的长度是不可变的.     (1)线程安全的可变字符序列. 一个类似于 String 的字符串缓冲区,但不能修改.

JAVA多线程和并发基础面试问答

- - 并发编程网 - ifeve.com
原文链接    译文连接 作者:Pankaj   译者:郑旭东   校对:方腾飞. 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一. 在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题. ( 校对注:非常赞同这个观点).

java基础知识

- - CSDN博客互联网推荐文章
JAVA相关基础知识. 1、面向对象的特征有哪些方面. 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面. 抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节. 抽象包括两个方面,一是过程抽象,二是数据抽象. 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.

java面试题

- - Java - 编程语言 - ITeye博客
 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面. 抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节. 抽象包括两个方面,一是过程抽象,二是数据抽象.  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法. 对象的一个新类可以从现有的类中派生,这个过程称为类继承.

Java并发编程基础

- - 并发编程网 - ifeve.com
并发是一种能并行运行多个程序或并行运行一个程序中多个部分的能力. 如果程序中一个耗时的任务能以异步或并行的方式运行,那么整个程序的吞吐量和可交互性将大大改善. 现代的PC都有多个CPU或一个CPU中有多个核. 是否能合理运用多核的能力将成为一个大规模应用程序的关键. 进程是以独立于其他进程的方式运行的,进程间是互相隔离的.

Java基础—ClassLoader的理解

- - ZJD'S NOTES
} ``` 其余两个ClassLoader都是继承自`ClassLoader`这个类. Java的类加载采用了一种叫做“双亲委托”的方式(稍后解释),所以除了`Bootstarp ClassLoader`其余的ClassLoader都有一个“父”类加载器, 不是通过集成,而是一种包含的关系. ``` ##“双亲委托” 所谓“双亲委托”就是当加载一个类的时候会先委托给父类加载器去加载,当父类加载器无法加载的时候再尝试自己去加载,所以整个类的加载是“自上而下”的,如果都没有加载到则抛出`ClassNotFoundException`异常.

Java面试宝典2013版

- - Java - 编程语言 - ITeye博客
Java基础部分......................................................................................................2. 1、一个".java"源文件中是否可以包括多个类(不是内部类). 2、Java有没有goto?..........................................................................................2.

JAVA基础之理解JNI原理

- shuangxi - 博客园-首页原创精华区
JNI是JAVA标准平台中的一个重要功能,它弥补了JAVA的与平台无关这一重大优点的不足,在JAVA实现跨平台的同时,也能与其它语言(如C、C++)的动态库进行交互,给其它语言发挥优势的机会. 有了JAVA标准平台的支持,使JNI模式更加易于实现和使用. 环境说明:ubuntu 10.4.2 LTS系统.