首页 > 代码库 > Java研发岗位面试归类(附答案)

Java研发岗位面试归类(附答案)

    题目来自http://www.codeceo.com/article/201-java-interview-qa.html,答案自己网上找的,如有疏漏,欢迎斧正。一起学习,共同进步。

一.Java基础

   1. String类为什么是final的。

   2. HashMap的源码,实现原理,底层结构。

   3. 说说你知道的几个Java集合类:list、set、queue、map实现类咯。

   4. 描述一下ArrayList和LinkedList各自实现和区别。

   5. Java中的队列都有哪些,有什么区别。

   6. 反射中,Class.forName和classloader的区别。

   7. Java7、Java8的新特性(baidu问的,好BT)。

   8. Java数组和链表两种结构的操作效率,在哪些情况下(从开头开始,从结尾开始,从中间开始),哪些操作(插入,查找,删除)的效率高。

   9. Java内存泄露的问题调查定位:jmap,jstack的使用等等。

   10. string、stringbuilder、stringbuffer区别。

   11. hashtable和hashmap的区别。

   13.异常的结构,运行时异常和非运行时异常,各举个例子。

   14.String a= “abc” String b = “abc” String c = new String(“abc”) String d = “ab” + “c” .他们之间用 == 比较的结果。

   15. String 类的常用方法。

   16. Java 的引用类型有哪几种。

   17. 抽象类和接口的区别?

 接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。另外,接口和抽象类在方法上有区别:
    (1) 抽象类可以有构造方法,接口中不能有构造方法。
    (2) 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。Java 8里的接口可以有default方法。
    (3) 抽象类中可以有普通成员变量,接口中没有普通成员变量。
    (4) 抽象类中的抽象方法的访问类型可以是public,protected和默认类型。
    (5) 抽象类中可以包含静态方法,接口中不能包含静态方法。
    (6) 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
    (7) 一个类可以实现多个接口,但只能继承一个抽象类

    二者在应用方面也有一定的区别:接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的Servlet都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码。

    18. java的基础类型和字节大小。

     Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。8 中类型表示范围如下:

   byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。

   short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。

   int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。

   long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

   float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

   double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

   boolean:只有true和false两个取值。

   char:16位,存储Unicode码,用单引号赋值。

   Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。下表列出了Java中定义的简单类型、占用二进制位数及对应的封装器类。

   19. Hashtable,HashMap,ConcurrentHashMap底层实现原理与线程安全问题?

可参考的文章:Hashmap实现原理浅析:http://www.cnblogs.com/lzrabbit/p/3721067.html

                      ConcurrentHashMap原理分析:http://www.cnblogs.com/ITtangtang/p/3948786.html

   20.如果不让你用Java Jdk提供的工具,你自己实现一个Map,你怎么做。说了好久,说了HashMap源代码,如果我做,就会借鉴HashMap的原理,说了一通HashMap实现。

   21.Hash冲突怎么办?哪些解决散列冲突的方法?

   22.HashMap冲突很厉害,最差性能,你会怎么解决? 从O(n)提升到log(n),用二叉排序树的思路说了一通。
   23.rehash。
   24.hashCode() 与 equals() 生成算法、方法怎么重写。

二.Java IO

  1.讲讲IO里面的常见类,字节流、字符流、接口、实现类、方法阻塞。
  2.讲讲NIO。
  3.String 编码UTF-8 和GBK的区别?
  4.什么时候使用字节流、什么时候使用字符流?
  5.递归读取文件夹下的文件,代码怎么实现。

三.Java Web

  1.session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。
  2.servlet的一些相关问题。
  3.webservice相关问题。
  4.jdbc连接,forName方式的步骤,怎么声明使用一个事务。举例并具体代码。

参考文章:http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html 

  5.无框架下配置web.xml的主要配置内容。
  6.jsp和servlet的区别。

 

Java研发岗位面试归类(附答案)