Java 笔试中经常遇到的10道笔试题

来源:互联网 发布:淘宝介入后买家会怎样 编辑:程序博客网 时间:2024/05/16 16:56
1、sleep() 和 wait() 有什么区别? 
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 

wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 


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


3、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的? 
SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。 
EntityBean:Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans自己管理。EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),Sun Microsystems的Transaction Service(JTS)、Java Transaction API(JTA),开发组(X/Open)的XA接口。 


4、编程题: 写一个Singleton出来。 
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 
一般Singleton模式通常有几种种形式: 
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。 

public class Singleton { 
private Singleton(){} 
   //在自己内部定义自己一个实例,是不是很奇怪? 
   //注意这是private 只供内部调用 
   private static Singleton instance = new Singleton(); 
   //这里提供了一个供外部访问本class的静态方法,可以直接访问   
   public static Singleton getInstance() { 
     return instance;    
   } 
} - 
第二种形式: 
public class Singleton { 
  private static Singleton instance = null; 
  public static synchronized Singleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次使用时生成实例,提高了效率! 
  if (instance==null) 
    instance=new Singleton(); 
return instance;   } 

其他形式: 
定义一个类,它的构造函数为private的,所有方法为static的。 
一般认为第一种形式要更加安全些 。


5、四种会话跟踪技术是什么,请进行描述。 
会话作用域ServletsJSP 页面描述 
page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面,request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系) 
session是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求 
application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域


6、J2EE是技术还是平台还是框架?它包括是技术? 
J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 
J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。


7、EJB容器提供的服务是什么? 
主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。


8、j2ee常用的设计模式有哪些?详细说明工厂模式。 
Java中的23种设计模式: 
Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), 
Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), 
Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), 
Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), 
Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), 
Observer(观察者模式), State(状态模式), Strategy(策略模式), 
Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 


9、说出一些常用的类,包,接口,请各举5个 
常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer 常用的包:java.lang java.awt java.io java.util java.sql 
常用的接口:Remote List Map Document NodeList 


10、Jdo是什么? 
JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

原创粉丝点击