Java面试常见知识点总结(二)

11.构造方法(构造器):

构造方法是一种特殊的方法,具有以下特点。
    (1) 构造方法的方法名必须与类名相同
    (2) 构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
    (3) 构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
    (4) 一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
    (5) 构造方法可以重载,以参数的个数,类型,顺序

12.J2EE中常用的名词解释:

(1) Web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP, SERVLET直接和容器中的环境变量接接口互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。
   (2) EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。一个实现了J2EE体系结构中EJB组件规范的容器。 这个规范指定了一个Enterprise bean的运行时环境,包括安全,一致性,生命周期,事务, 配置,和其他的服务。
   (3) JNDI:(Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
   (4) JMS:(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。
   (5) JTA:(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
   (6) JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。
   (7) RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。RMI-IIOP出现以前,只有RMI和CORBA两种选择来进行分布式程序设计。RMI-IIOP综合了RMI和CORBA的优点,克服了他们的缺点,使得程序员能更方便的编写分布式程序设计,实现分布式计算。首先,RMI-IIOP综合了RMI的简单性和CORBA的多语言性(兼容性),其次RMI-IIOP克服了RMI只能用于Java的缺点和CORBA的复杂性(可以不用掌握IDL)。

13.Linux链接:

Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。
    ● 硬连接
    硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
    ● 软连接
    另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息

14.会话跟踪技术:

有四种方法可以实现会话跟踪技术:URL重写、隐藏表单域、Cookie、Session。
    (1) 隐藏表单域: <input type="hidden">,非常适合步需要大量数据存储的会话应用。
    (2) URL 重写: URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。
    (3) Cookie: 一个 Cookie 是一个小的, 已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至在客户端计算机重启后它仍可以保留其值。
    (4) Session: 使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话。

15.HashTable和HashMap区别:

(1) 继承不同Hashtable继承自Dictionary, HashMap继承自AbstractMap

public class Hashtable extends Dictionary implements Map
public class HashMap extends AbstractMap implements Map

(2) Hashtable 中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。在多线程并发的环境下,可以直接使用Hashtable,但是要使用HashMap的话就要自己增加同步处理了。
    (3) Hashtable中,key和value都不允许出现null值
    在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。
    (4) 两个遍历方式的内部实现上不同
     Hashtable、HashMap都使用了 Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。
    (5) 哈希值的使用不同HashTable直接使用对象的hashCode。而HashMap重新计算hash值
    (6) Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数

16.reflection是如何工作的:

(1) public Method[] getDeclaredMethods()返回类或接口声明的所有方法,包括public, protected, default (package) 访问和private方法的Method对象,但不包括继承的方法。当然也包括它所实现接口的方法。

(2) public Method[] getMethods()返回某个类的所有public方法,包括其继承类的公用方法,当然也包括它所实现接口的方法。

17.SpringMVC的原理:

SpringMVC是Spring中的模块,它实现了mvc设计模式的web框架,首先用户发出请求,请求到达SpringMVC的前端控制器DispatcherServlet), 前端控制器根据用户的url请求处理器映射器查找匹配该url的handler,并返回一个执行链,前端控制器再请求处理器适配器调用相应的handler进行处理并返回给前端控制器一个modelAndView,前端控制器再请求视图解析器对返回的逻辑视图进行解析,最后前端控制器将返回的视图进行渲染并把数据装入到request域,返回给用户。
     DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。
    DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:
     (1) 文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;
     (2) 通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器);
     (3) 通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);
     (4) 通过ViewResolver解析逻辑视图名到具体视图实现
     (5) 本地化解析
     (6) 渲染具体的视图等;
     (7) 如果执行过程中遇到异常将交给HandlerExceptionResolver来解析

18.抽象类与接口的区别:

接口(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方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码。

19.JDK中的包和他们的基本功能:

(1) java.awt: 包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面,主要用于编写GUI程序,包括按钮、标签等常用组件以及相应的事件类。
    (2) java.lang: 提供java编成语言的程序设计的基础类,是一个核心包,系统自动将这个包引入到用户程序,该包中主要的类:object类,它是所有类的父类,其中定义的方法其它类都可以使用。数据类型包装类,数学类,字符串类,系统和运行时类,操作类,线程类,错误和异常处理类,过程类。System提供一个独立于具体计算机资源的编程界面,Runtime类可用于直接访问运行时资源。
    (3) java.io:包含提供多种输出输入功能的类。
    (4) java.net:包含执行与网络有关的类,如URL,SCOKET,SEVERSOCKET。
    (5) java.applet: 包含java小应用程序的类。
    (6) java.util:包含一些实用性的类,实用包提供了各种实用功能的类,主要包括日期类、数据结构类和随机数类等。

20.Java常用关键字功能:

(1) final关键字可用于修饰类、变量和方法。final修饰的类不能被继承,final修饰的方法不能被重写,final修饰的变量不可被修改,一旦获得初始值,该变量就不能被重新赋值。
    (2) public:访问控制修饰符,用于修饰类、类的方法、属性或者构造器。
    (3) abstract:用于修饰抽象类或者抽象方法
    (4) static:用于修饰类、方法或者成员变量,表明该类是静态类或者方法、成员变量属于当前类

上一篇:孤儿文档是怎样产生的(MongoDB orphaned document)


下一篇:java获取视频缩略图