蜜蜂职场文库 > 求职面试 > 面试技巧 >

一般java面试问题

时间: 小龙 面试技巧

  Java面试中,一般有哪些面试问题呢?对于Java面试者来说,做好准备很有必要,以下是小编帮你们整理的java一般面试问题,一起来学习啦。

  java一般面试问题(一)

  1、描述一下 JVM 加载 class 文件的原理机制?

  JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader是一个重要的 Java运行时系统组件。它负责在运行时查找和装入类文件的类。

  2、heap和stack有什么区别。

  java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。

  堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用new 创建的对象都放在堆里,所以,它不会随方法的结束而消失。方法中的局部变量使用final 修饰后,放在堆中,而不是栈中。

  3、GC 是什么?为什么要有 GC?

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

  4、列举出一些常用的类,包,接口,请各举 5 个

  要让人家感觉你对java ee开发很熟,所以,不能仅仅只列core java中的那些东西,要多列你在做ssh项目中涉及的那些东西。就写你最近写的那些程序中涉及的那些类。

  常用的类:BufferedReaderBufferedWriter

  Class,List,HashMap

  常用的包:java.lang java.io FileReaderFileWirterStringIntegerjava.util.Date,System,

  java.utiljava.sql,javax.servlet,org.apache.strtuts.action,org.hi

  bernate常用的接口:RemoteListMap Document

  NodeList,Servlet,HttpServletRequest,HttpServletResponse,Transaction(Hibernate)、

  Session(Hibernate),HttpSession

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

  字节流,字符流。字节流继承于InputStreamOutputStream,字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

  java一般面试问题(二)

  1、多线程有几种实现方法?同步有几种实现方法?

  多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

  同步的实现方面有两种,分别是synchronized,wait与notify wait():使一个线程处于等待状态,并且释放所持有的对象的lock。

  sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 InterruptedException(中断异常)异常。

  notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

  2、说一说 Servlet 的生命周期?

  答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。

  Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service 方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

  web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。

  3、说出数据连接池的工作机制是什么?

  J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

  实现方式,返回的Connection是原始Connection的代理,代理Connection的close方法不是真正关连接,而是把它代理的Connection对象还回到连接池中。

  4、这段代码有什么不足之处?

  try{

  Connection conn =...;

  Statementstmt=...;

  ResultSetrs =stmt.executeQuery("select*fromtable1");

  while(rs.next()){

  }

  }catch(Exception ex){

  }

  答:没有finally语句来关闭各个对象,另外,使用finally之后,要把变量的定义放在try语句块的外面,以便在try语句块之外的finally块中仍可以访问这些变量。

  java一般面试问题(三)

  1.什么是Java集合API?

  Java集合API是用来表示和操作集合的统一框架,包括接口、实现类以及帮助程序员完成一些编程的算法。

  2.Java集合框架的接口有哪些?

  具体来说,Java集合框架有6个集合接口,最基本的是Collection接口,由三个接口Set、List、SortedSet继承,另外两个接口是Map、SortedMap,这两个接口不继承Collection,表示映射而不是真正的集合。

  Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口任何直接的实现。

  Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合。

  List是一个有序集合,可以包含重复元素。可以通过它的索引来访问任何元素,更像长度动态变换的数组。Map是一个将key映射到value的对象.一个Map不能包含重复的key。

  3.Iterator是什么?

  Iterator接口提供遍历任何Collection的接口。我们可以从一个Collection中使用迭代器方法来获取迭代器实例。迭代器取代了Java集合框架中的Enumeration。迭代器允许调用者在迭代过程中移除元素。

  4.Iterator和Listlterator的区别是什么?

  (1)Iterator可以遍历Set和List集合,而ListIterator只能遍历List。

  (2)Iterator只可以向前遍历,而LIstIterator可以双向遍历。

  (3)ListIterator从Iterator接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。

  5.对比HashMap和HashTable。

  两者都是用key-value方式获取数据。Hashtable是原始集合类之一(也称作遗留类)。HashMap作为新集合框架的一部分在Java2的1.2版本中加入。它们之间有以下区别:

  (1) HashMap允许key和value为null,而HashTable不允许。

  (2)HashTable是同步的,而HashMap不是。所以HashMap适合单线程环境,HashTable适合多线程环境。

  (3)HashMap提供对key的Set进行遍历,因此它是fail-fast的,但HashTable提供对key的Enumeration进行遍历,它不支持fail-fast。

  (4)HashTable被认为是个遗留的类,如果寻求在迭代的时候修改Map,应使用CocurrentHashMap。

  6.如何决定选用HashMap还是TreeMap?

  对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。基于你的collection的大小,也许向HashMap中添加元素会更快,将map换为TreeMap进行有序key的遍历。

  7.在HashTable中上下文同步是什么意思?

  同步意味着在一个时间点只能有一个线程可以修改哈希表,任何线程在执行hashtable的更新操作前需要获取对象锁,其他线程等待锁的释放。

  
看了“java一般面试问题”

50427