java面试题2

来源:互联网 发布:php 数组合并 覆盖 编辑:程序博客网 时间:2024/04/25 06:41
1.    抽象类和接口有什么区别
abstract class和interface在Java语言中都是用来进行抽象类(本文中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract class为Java语言中用于定义抽象类的一种方法,请读者注意区分)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢? 
abstract class Demo { 
abstract void method1(); 
abstract void method2(); 
… 
} 
使用interface的方式定义Demo抽象类的方式如下: 
interface Demo { 
void method1(); 
void method2(); 
… 

在abstract class方式中,Demo可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface方式的实现中,Demo只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员),所有的成员方法都是abstract的。从某种意义上说,interface是一种特殊形式的abstract class。
这种实现方式基本上能够明确的反映出我们对于问题领域的理解,正确的揭示我们的设计意图。其实abstract class表示的是"is a"关系,interface表示的是"like a"关系,大家在选择时可以作为一个依据

2.    怎样定义一个内部类
3.    进程和线程有什么区别
关于进程较实质的定义?   
  1. 进程是程序的一次执行?   
  2. 进程是可以和别的计算器并发执行的计算?   
  3. 可定义为一个数据结构及能在其上进行操作的一个程序?   
  4. 一个程序及其数据在处理机上顺序执行时所发生的活动?   
  5. 是程序在一个数据集合上的运行过程?是系统进行资源分配和调度的一个独立单位。   
  综合定义为?可并发执行的程序在一个数据集合上的运行过程。
线程?比进程更小的能独立运行的基本单位
  一个进程通常对应于一个程序(但程序是一个静态的概念,进程是动态的)。而一个程序可以由多个不同的线程做成!
简单的说,你每启动一个程序,就启动了一个进程。在Windows 3.x下,进程是最小运行单位。在Windows 95/NT下,每个进程还可以启动几个线程,比如每下载一个文件可以单独开一个线程。在Windows 95/NT下,线程是最小单位。WINDOWS的多任务特性使得线程之间独立运行,但是它们彼此共享虚拟空间,也就是共用变量,线程有可能会同时操作一片内存。
4.    如何使类线程化
定义一个类继承Thread或者使用Runnable接口
如:public class GreatRace extends Thread{
}
或者  public class GreatRace extends java.applet implements Runnable{
}
5.    如何启动一个线程,如何让一个线程停止,如何同步化一个线程变量
thisThread = new Thread(this);
thisThread.start();
thisThread.sleep(100);
public synchronized void setVar(int){
}
6.    Mvc结构
Struts是一种mvc模式,m代表model,v代表view,c代表control,即servelet

7.    有关设计模式的理解
一、创建型模式 

FACTORY?人才市场:以往是要哪个人才,就找哪个人才,效率低,现在有了人才市场,我们只需直接去人才市场挑一个好了; 

BUILDER?生产流水线:以前是手工业作坊式的人工单个单个的生产零件然后一步一步组装做,好比有了工业革命,现在都由生产流水线代替了。如要造丰田汽车,先制定汽车的构造如由车胎、方向盘、发动机组成。再以此构造标准生产丰田汽车的车胎、方向盘、发动机。然后进行组装。最后得到丰田汽车; 

PROTOTYPE?印刷术的发明:以前只能临贴才能保持和别人的字迹基本相同,直从印刷技术发明,从而保证了复制得和原物一模一样; 

SINGLETON?唯一:以前是商标满天飞,相同的商标难免造成侵权,直从有商标保护法后,就保证了不会再产生第家企业使用相同的商标; 


二、结构型模式 

ADAPTER?集众人之私,成一己之公:武当派张三丰会太极拳,少林派智空大师会金刚般若掌,如果他们两个都成为我的师傅,我就既会太极拳,又会金刚般若掌了; 

DECORATOR?青出于蓝而胜于蓝:武当派张三丰会太极拳,是我师傅,他教会了我太极拳,但我自己还会点蒙古式摔交,张三丰却不会。于是我就成了DECORATOR模式的实现; 

BRIDGE?白马非马:马之颜色有黑白,马之性别有公母。我们说"这是马"太抽象,说"这是黑色的公马"又太死板,只有将颜色与性别和马动态组合,"这是(黑色的或白色的)(公或母)马"才显得灵活而飘逸,如此bridge模式精髓得矣。 

COMPOSITE?大家族:子又生孙,孙又生子,子子孙孙,无穷尽也,将众多纷杂的人口组织成一个按辈分排列的大家族即是此模式的实现; 

FACADE?求同存异:高中毕业需读初中和高中,博士也需读初中和高中,因此国家将初中和高中普及成九年制义务教育; 

FLYWEIGHT?一劳永逸:认识三千汉字,可以应付日常读书与写字,可见头脑中存在这个汉字库的重要; 

PROXY?垂帘听政:犹如清朝康熙年间的四大府臣,很多权利不在皇帝手里,必须通过辅佐大臣去办; 


三、行为模式 

CHAIN OF RESPONSIBLEITY?租房:以前为了找房到处打听,效率低且找不到好的房源。现在有了房屋中介,于是向房屋中介提出租房请求,中介提供一个合适的房源,满意则不再请求,不满意继续看房,直到满意为止; 

COMMAND?借刀杀人:以前是想杀谁就杀,但一段时间后领悟到,长此以往必将结仇太多,于是假手他人,挑拨他人之间的关系从而达到自己的目的; 

INTERPRETER?文言文注释:一段文言文,将它翻译成白话文; 

ITERATOR?赶尽杀绝:一个一个的搜索,绝不放掉一个; 

MEDIATOR?三角债:本来千头万绪的债务关系,忽出来一中介,包揽其一切,于是三角关系变成了独立的三方找第四方中介的关系; 

MEMENTO?有福同享:我有多少,你就有多少; 

OBSERVER?看守者:一旦被看守者有什么异常情况,定会及时做出反应; 

STATE?进出自由:如一扇门,能进能出,如果有很多人随时进进出出必定显得杂乱而安全,如今设一保安限制其进出,如此各人进出才显得规范; 

STRATEGY?久病成良医:如人生病可以有各种症状,但经过长期摸索,就可以总结出感冒、肺病、肝炎等几种; 


TEMPLATE METHOD??理论不一定要实践:教练的学生会游泳就行了,至于教练会不会则无关紧要; 

VISITOR?依法治罪:因张三杀人要被处死,李四偷窃要被罚款。由此势必制定处罚制度,故制定法律写明杀人、放火、偷窃等罪要受什么处罚,经通过后须变动要小。今后有人犯罪不管是谁,按共条例处罚即是,这就是访问者模式诞生的全过程。
8.    关于string 和stringbuffer有什么区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。

9.    有关静态变量static的理解
类的变量和常量定义
10.    有关final finally finalize的区别
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是java.lang.Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

11.    有关构造函数的描述
构造函数与类同名,可以根据参数不同来创建一个对象
12.    简要介绍java api的结构
13.    介绍有关jdbc类
14.    怎样定义一个数组,如何初始化一个二维数组
Int myArray[] = new int[500];
Long black[];// the value is null
15.    怎样定义一个常量
    public static final String MODIFY = "2";
16.    jdk 1.5有什么新增特性
17.    arraylist 和vector有什么区别
arrylist线程不安全,vector线程安全
18.    hashmap和hashtable有什么区别
       HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 

19.    怎样指定jdk的path路径和class path路径
20.    关于java的main函数的执行
    
21.    什么是gc,java是如何处理垃圾收集的
    GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 

22.    java的关键字有哪些
23.    有关linux的命令
24.    怎样定义一个克隆类
25.    有关public ,protected ,private的使用范围
26.    jsp的常用定义方式
27.    j2ee是什么
28.    有关ejb的理解
    一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。这六个角色分别是EJB组件开发者(Enterprise Bean Provider) 、应用组合者(Application Assembler)、部署者(Deployer)、EJB 服务器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系统管理员(System Administrator)
三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类

29.    简要介绍struts结构和spring hibernate结构各自的优缺点
有关xml文件的理解
a: 两种形式 dtd  schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等 
    DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问
SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问 
    STAX:Streaming API for XML (StAX)

30.    java中如何进行数据库连接
31.    有关类名的命名:使用字符或者下划线和货币符$
32.    有关i++和++i的区别
33.    有关java exception的处理
    error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
    exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

34.    有关java error的处理
35.    有关java的编译原理
36.    简要介绍几种字符串操作方法
37.    有关日期型的方法介绍
38.    有关java的输入和输出
39.    java的远程访问方法
40.    什么时候用assert。 
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 Assertionerror。它用于调试目的: 

assert(a > 0); // throws an Assertionerror if a <= 0 
42.EJB与JAVA BEAN的区别?
Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。
 
原创粉丝点击