已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
平安面试题集平安面试题集 一一、基础知识基础知识问题问题 1.jsp 九大内置对象九大内置对象? 答: (request,response,pageContext,session,application,out,config,page,exception) ; 2.jsp 与与 servlet 的区别的区别? 答: jsp 编译后是类 servlet,jsp 是 servlet 技术的扩展,是 servlet 的简易方式,jsp 注重于视图,而 servlet 更注重逻辑。 3.重定向重定向(sendRedirect)与转发与转发(forward)的区别的区别? 答:一个值被存在 request 中,如果用的重定向方式跳转到页面的话,页面将取不到 request 对象中的值,而转发就能取到。 调用 HttpServletResponse.sendRedirect 方法重定向的访问过程结束后,浏览器地址栏中显示的 URL 会发生改变,由初始的 URL 地址变成重定向的目标 URL; 而调用 RequestDispatcher.forward 方法的请求转发过程结束后,浏览器地址栏保持初始的 URL 地址不变. 4.怎么解析怎么解析 XML,解析解析 XML 的方式有那些的方式有那些? 答:没答完整。 常用方式:dom、sax、JDOM、DOM4J dom:由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。 DOM 使用起来也要简单得多。 另一方面,对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这样的数据会更好 sax:这种处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将 数据存储在内存中。 这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX 还比它的替代者 DOM 快许多。 jdom:JDOM 与 DOM 主要有两方面不同。首先,JDOM 仅使用具体类而不使用接口。这在某些方面简化了 API,但是也限制了灵活性。 第二,API 大量使用了 Collections 类,简化了那些已经熟悉这些类的 Java 开发者的使用 dom4j:它合并了许多超出基本 XML 文档表示的功能,包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。 它还提供了构建文档表示的选项,它通过 DOM4J API 和标准 DOM 接口具有并行访问功能。 DOM4J 使用接口和抽象基本类方法。DOM4J 大量使用了 API 中的 Collections 类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的 编码方法。 直接好处是,虽然 DOM4J 付出了更复杂的 API 的代价,但是它提供了比 JDOM 大得多的灵活性。 5.为什么要建立索引为什么要建立索引? 答:索引方便用户对数据的访问。在应用系统中,为数据库中的表建立正确、合理的索引,可以极大地提高应用系统的性能: 在存取数据时,避免进行表扫描。没有索引,对表中数据的任何访问都要进行表扫描。在表上建立索引,虽然不会完全避免表扫描的执行,但会大大降低它的执行次 数。 6.唯一索引与主键的区别唯一索引与主键的区别? 主键约束是不可以为空也不可以重复,而唯一索引是可以为空不可以重复。 两者的概念不一样,主键是相对表而言,用来防止表中的数据元素重复而设定的唯一标识,索引是为了加快数据检索,提高数据库性能而建立的。 一个表的主键只能有 一个,但是唯一索引可能有多个。 主键一定是唯一索引,唯一索引不一定是主键。 7.知不知道知不知道 Collection? 答:Collection 是最基本的集合接口,它的子接口有 List、Set,List 下又有 LinkedList、ArrayList、Vector。 (千万不要把 Map 说进去了,因为 Collection 跟 Map 是同级别的) 。 8.Collection 与与 Collections 的区别的区别? 答:Collection:java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection 接口在 Java 类库中有很多具体的实现。 Collection 接口的意义是为各种具体的集合提供了最大化的统一操作方式。 Collections:java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于 Java 的 Collection 框架。 (例:申明一个 list,并向 list 里添加值,然后通过 Collections.sort(list),此 list 里的值就会排序). 9.Hashtable 和和 HashMap 的区别的区别: 答:1.Hashtable 是 Dictionary 的子类,HashMap 是 Map 接口的一个实现类; 2.Hashtable 中的方法是同步的,而 HashMap 中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用 Hashtable 了; 而对于 HashMap,则需要额外的同步机制。但 HashMap 的同步问题可通过 Collections 的一个静态方法得到解决: Map Collections.synchronizedMap(Map m) 这个方法返回一个同步的 Map,这个 Map 封装了底层的 HashMap 的所有方法,使得底层的 HashMap 即使是在多线程的环境中也是安全的。 3.在 HashMap 中,null 可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为 null。当 get()方法返回 null 值时,即可以表示 HashMap 中没有该键,也可 以表示该键所对应的值为 null。 因此,在 HashMap 中不能由 get()方法来判断 HashMap 中是否存在某个键,而应该用 containsKey()方法来判断。 Hashtable 继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map interface 的一个实现 HashMap 允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许 还有就是,HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。因为 contains 方法容易让人引起误解。 最大的不同是,Hashtable 的方法是 Synchronize 的,而 HashMap 不是,在 多个线程访问 Hashtable 时,不需要自己为它的方法实现同步,而 HashMap 就必须为之提 供外同步。 Hashtable 和 HashMap 采用的 hash/rehash 算法都大概一样,所以性能不会有很大的差异。 10. 数字签名数字签名 概念:数字签名就是我们现实签名的电子化,是用来 给电子消息进行签名的方法。一般认为附加上数据单元上的数据或对数据单元的密码转换,这些附加数据或密码转换 能被消息接收者用来辨别消息的来源,消息的安全完整性,防止第三方伪造,称为数字签名。 如果 A 要把消息传给 B。要 用到 A 的私钥和 A 的公钥。 11.Http1.0 和和 Http1.1 的区别的区别 1.HTTP/1.0 协议使用非持久连接,即在非持久连接下,一个 tcp 连接只传输一个 Web 对象.HTTP/1.1 默认使用持久连接(然而,HTTP/1.1 协议的客户机和服务器可以配置成 使用非持久连接).在持久连接下,不必为每个 Web 对象的传送建立一个新的连接,一个连接中可以传输多个对象! 2.HTTP/1.1 对请求和响应增加了请求头和响应头。 3HTTP1.1 支持断点续传,HTTP1.0 不支持。 4HTTP1.1 通过 Host 请求头部,使得在一台 WEB 服务器可以用同一个 IP,端口,使用不同的主机名创建多个 WEB 虚拟站点 5.HTTP1.1 有身份认证机制,HTTP 提供特殊的状态码和头部来帮助 Web 站点执行身份认证 12.http 和和 https 的区别的区别 1.http 使用的端口号是 80,而 https 使用但是 43; 2.Https 需要到证书管理机构申请证书。 3.HTTP 的连接简单,无状态,明文传输。Https 采用 SSL 加密的传输+HTTP 协议构建的可进行加密传输、身份认证的网络协议更安全 13.XHTML 和和 HTML 的区别的区别 XHTML 可以认为是 XML 版本的 HTML, 为符合 XML 要求, XHTML 语法上要求更严谨些, XHTML 要求正确嵌套 XHTML 所有元素必须关闭, XHTML 区分大小写, XHTML 属 性值要用双引号,XHTML 用 id 属性代替 name 属性,XHTML 特殊字符的处理,XHTML 不能用属性简写。 14.运行时异常和一般异常有什么区别运行时异常和一般异常有什么区别! 异常表示程序运行过程中可能出现的非正常状态, 运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误.java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被 捕获的运行时异常. 15.异常需要继承哪个类异常需要继承哪个类 基类为 Throwable,Error 和 Exception 继承 Throwable,RuntimeException 和 IOException 等继承 Exception,具体的 RuntimeException 继承 RuntimeException。 16.常见的异常有哪些常见的异常有哪些? 1、 SQLException:操作数据库异常类 2、 ClassCastException:数据类型转换异常。 3、 NumberFormatException:字符串转换为数字类型时抛出的异常。 4、ArrayIndexOutOfBoundsException 数组越界 5、StringIndexOutOfBoundsException 字符串越界 6、UnsupportedOperationException 该操作不被支持 7、ArithmeticException 算术错误 8、IllegalArgumentException 非法参数 17.重载和重写的区别重载和重写的区别 重载就是一个类中多态性的一种表现,如果在一个类中定义了多个同名的方法,他们或有不同的参数个数或有不同的参数类型,则称为方法的重载。重载可以改变返回 值类型。因为构造方法不能被继承,所以构造方法能被重载不能被重写。 重写就是子类与父类之间多态性的一种表现,如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 18.在什么情况下建立索引在什么情况下建立索引?如果我的数据访问量都很大那怎么办如果我的数据访问量都很大那怎么办? (一) :在反问量过大或是访问频繁或访问大表中一小部分的时候需要建立索引,以便提高效率。 (二) :可以对大表进行分区,减少 I/O 操作。 19.子类可以继承父类的子类可以继承父类的 private 属性吗属性吗? 不能,子类只能继承父类的非私有性方法及属性 20.反射机制是什么反射机制是什么? 反射机制是 JAVA 里面的一个特性 ,在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法; 这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。 21.事物是怎么控制的事物是怎么控制的? 事物是通过并发控制的, 22.事物有哪些特性事物有哪些特性 原子性,一致性,隔离性,持久性 23. A:Oracle 中索引的是怎么一回事中索引的是怎么一回事?干什么用的干什么用的? 答:索引是数据库专门为提高查询性能而设定的一种机制 B:那索引会影响插入的性能吗? 答:会,如果用的得当是会提高其性能,如果用的不恰当的话就会影响性能,因为插入一条数据要给数据建立索引,还要分配存储空间,并且可能出现索引区块的结构变 化。 24:JDBC 中中 Statement 跟跟 PreparedStatement 有什么不同有什么不同? 答:后者采用的是预编译方式,所以它的安全行要比前的高 后者的执行速度要比前者快很多 25Servlet 是继承那个类是继承那个类,说出里面几个常用的方法说出里面几个常用的方法? 答:继承的是 HttpServlet 类,里面的方法有:init()、destroy()、service()、doGet()、doPost() 26.EJB 熟悉吗熟悉吗? 答:比如:Session Bean、Entity Bean、Massage Driver Bean) 27.Applet 的作用的作用: 在 Java Applet 中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。 28.weblogic 的配置的配置 29.403 表示什么错误表示什么错误 禁止访问。 30:weblogic 中部署中部署 EJB 的的 jar 包需要包含的部署描述符文件有包需要包含的部署描述符文件有: ejb-jar.xml;weblogic-ejb-jar.xml 31.JAVA 源代码的编译器是源代码的编译器是: 答:javac 32.Oracle 数据库属于哪种类型的数据库数据库属于哪种类型的数据库 答:关系型数据库 33.在在 JDBC 的程序中的程序中,Statement 的对象表示什么的对象表示什么? 答:向数据库发送 SQL 语句的对象 34.EJB 部署描述文件是什么部署描述文件是什么? Ejb-jar.xml 35.在项目开发中在项目开发中,为了减少软件开发中的技术风险为了减少软件开发中的技术风险,程序员采取的方式是什么程序员采取的方式是什么? 答:代码复审;技术测试 36:你了解异常吗你了解异常吗? 了解。异常是 java 程序执行时遇到的非正常情况或意外行为。它可以分为一般异常和运行时异常。一般异常是要自己捕获的,运行时异常不需要自己捕获的。 37:你见过索引吗你见过索引吗?恩恩。访问索引有哪三种方式访问索引有哪三种方式? 访问索引三种方式:索引唯一扫描,如主键,唯一索引。 索引范围扫描,如有比较符合的时候。 全索引扫描。 38:hibernate 是干什么的是干什么的?有什么作用有什么作用? Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序使用,也可以在 Servlet/JSP 的 Web 应用中使用,最具革命意义的是,Hibernate 可以在应用 EJB 的 J2EE 架构中取代 CMP,完成数据持久化的重任 39。MVC 是什么是什么,能具体讲下吗能具体讲下吗? MVC 结构是为那些需要为同样的数据提供多个视图的应用程序而设计的,它很大地实现了数据层与表示层的分离. MVC 作为一种开发模型,通常用于分布式应用系统的设计和分析中,以及用于确定系统各部分间的组织关系. 对于界面设计可变性的需求,MVC(Model-View_Controller)把交互系统的组成分解成模型、视图、控制器三种部件。 40:你用过重载吗你用过重载吗? 重载的方法和构造函数(构造函数只能被重载)使用具有不同参数列表的相同方法名称(或构造函数) 。 可以改变被重载的方法的修饰符吗?重载时可以改变方法的修饰符的、 41:jfreechart 是干什么的是干什么的?jfreechart 是开源的吗是开源的吗? 他是用来做图形报表的,用的时候导进去就可以了,jfreechart 是开源的,你可以自己编写 jfreechart; 42.String 与与 StringBuffer 的区别的区别? 每次对 String 类型进行赋值操作是都将生成一个新的 String 实例; StingBuffer 则不然,它始终是同一个实例 所以在经常动态的改变字符串的值是用 StingBuffer 效率比较高。 43.数据库索引数据库索引.? 主要有唯一索引,主键索引,聚集索引,函数索引,域索引等 优点: 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 缺点: 第一,创建索引和维护索引要耗费时间,这种时间随着数据 量的增加而增加。 第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 应该在那些列上创建索引: 在经常需要搜索的列上,可以加快搜索的速度; 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; 在经常用在连接的列上,这 些列主要是一些外键,可以加快连接的速度; 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的; 在经常需要排序的列上创 建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间; 在经常使用在 WHERE 子句中的列上面创建索引,加快条件的判断速度。 44.java 集合集合.? List、Set、Map 是这个集合体系中最主要的三个接口。 其中 List 和 Set 继承自 Collection 接口 Set 不允许元素重复。HashSet 和 TreeSet 是两个主要的实现类。 List 有序且允许元素重复。ArrayList、LinkedList 和 Vector 是三个主要的实现类。 Map 也属于集合系统,但和 Collection 接口不同。Map 是 key 对 value 的映射集合,其中 key 列就是一个集合。key 不能重复,但是 value 可以重复。HashMap、TreeMap 和 Hashtable 是三个主要的实现类。 SortedSet 和 SortedMap 接口对元素按指定规则排序,SortedMap 是对 key 列进行排序。 45.关于关于 Serializable 接口接口? 任何类型只要实现了 Serializable 接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。这样子极大的简化了 类的设计。只要设计一个保存一个读取功能就能解决上面说得所有问题。 实现 serializable 接口的作用是就是可以把对象存到字节流,然后可以恢复! 所以你想如果你的对象没实现序列化怎么才能进行网络传输呢,要网络传输就得转为字节流,所以在分布式应用中,你就得实现序列化,如果你不需要分布式应用,那就没那个必 要实现序列化 软件设计: /wiki/%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1 ! 46. 用用 tcp 作为传输协议作为传输协议,要在服务器和客户端之间建立几次通信要在服务器和客户端之间建立几次通信。 由于 TCP 和 IP 是大家熟悉的协议,以至于用 TCP/IP 或 IP/TCP 这个词代替了整个协议集。 建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由 TCP 的半关闭(half- close)造成的。 . TCP 是因特网中的传输层协议,使用三次握手协议建立连接。 47 什么是分布式事物什么是分布式事物? 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。为了实现分布式事务,需要使 用下面将介绍的两阶段提交协议。 * 阶段一:开始向事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次机会来异常结束事务。如 果任意一个资源决定异常结束事务,则整个事务取消,不会进行资源的更新。否则,事务将正常执行,除非发生灾难性的失败。为了防止会发生灾难性的失败, 所有资源的更新都会写入到日志中。这些日志是永久性的,因此,这些日志会幸免遇难并且在失败之后可以重新对所有资源进行更新。 * 阶段二:只在阶段一 没有异常结束的时候才会发生。此时,所有能被定位和单独控制的资源管理器都将开始执行真正的数据更新。 在分布式事务两阶段提交协议中,有一个主事务 管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。 为了实现分布式事务,必须使用一种协议在 分布式事务的各个参与者之间传递事务上下文信息,IIOP 便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事 务。 48什么是分布式开发什么是分布式开发? 在数据库应用程序的开发过程中,网络已走到社会的各个角落。从金融行业的银行联网、交通行业的售票系统、公安系统的全国户籍管理等等,这些企业或 行业单位之间地理分布性或业务分布性,使得一个企业或行业拥有多个网络服务器,如何在这种分布式的网络环境下实现高效的数据库应用程序的开发是一个 重要的问题。 分布式应用开发简单的说,是指将用户界面、控制台服务、数据库管理三个层次部署在不同的位置上。其中用户界面是客户端实现的功能,控制台服务是 一个专门的服务器,数据管理是在一个专门的数据库服务器上实现的。 49.EJB 中中 SessionBean 与与 EntityBean 的区别的区别? EJB 包括 Session Bean、Entity Bean、Message Driven Bean,基于 JNDI、RMI、JAT 等技术实现。 SessionBean 在 J2EE 应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他 EJB 组件。EntityBean 被用来代表应用系统中用到的数据。 对于客户机,SessionBean 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。 对于客户机,EntityBean 是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 50.有状态的有状态的 SeesionBean 与与 EntityBean 的区别的区别? Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean 都可以将系统逻辑放在 method 之中执行,不同 的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻 辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来 执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者 的状态。 实体 Bean 如前一题。 51.什么情况下用有状态的什么情况下用有状态的 SessionBean.举例举例你曾经在哪里用到了你曾经在哪里用到了? 可以在不同的方法调用间保持针对各个客户端的状态 。 与客户端的联系必需被维持;通常开销较大 。 有状态会话 Bean 会保存客户端的状态 。 如果要频繁的访问,并且多次访问之间会共享一些信息,这时候应该使用有状态会话 Bean。对于不经常使用的功能,可以使用无状态会话 Bean。无状态会话 Bean 的使用要比有状态会话 Bean 的使用多。 52 为什么要用为什么要用 Spring。有什么好处有什么好处。 (1)松耦合问题. 这个问题我不费太多笔墨.因为太多的文章解释这个问题. 大名叫:依赖注入. 说白了就是根据配置文件动态组装复杂对象. 或许有人又问, 我就是用程序组合也很简单啊. 是的, 你程序组装简单业务的是很简单. 如果组装的对象里面包含了 Ejb, 包含了 JMS, 包含了远程 RMI 那就没有这样组装简单了. 就说到这里.不说那么多废话. (2) AOP, 面向切面编程. 这个功能我们自己是不好设计. 这个功能大家也都知道是干什么, 例如思路方法事务管理, 用户安全验证, 日志记录, 等等. 为了避免将 更多代码放进思路方法中去.spring 使用这个 AOP 来监控符合你配置正则表达式思路方法名字. 并允许在执行这个思路方法前后执行你思路方法. 这个是建立在 spring 上 虽然 spring AOP 对于大多员就足够了. 但和 AspectJ 相比, 他只能是功能比较弱解决方案. AspectJ 提供了 SpringAOP 不可能实现多种切点类型. 如果不够用,你 可以引入 AspectJ. 来帮助你做更多工作. 上面两个是大方面个简单介绍说明. Spring 在更多细节中方便了大家工作. 下面我继续依次给以介绍说明. (3) Bean 工厂节省了. 你不用再自己构造工厂了. 不用再用自己构造单例模式了. 不用自己再关心对象创建了. 不用对象了. 切都直接从 上下文框架中取就行了. 框架会帮助你构造 你需要对象. 你只需要跟上下文打交道就可以了. 当然,你多出了装配工作. 但这是必须要付出代价. 复杂性被集成在了配置里面. 使得你在开发层面只关心业 务. 要是配置有可视化工具就太好了. 但别着急, 找找, 现在只有想不到,没有找不到. (4) 集成 Hibernate 使用节省了事务显式代码. 这个其实还是切面个好处应用. 配置进去是很简单. 既然能节省工作, 我就给你说下. (5) Spring 针对区别数据库访问模式提供了区别模板. 分别适用于区别持久机制. 包括: 针对 JCA CCI链接, 针对 JDBC, 支持命名参数JDBC链接, Hebernate,针对 iBATIS sqlMap, Oraclede TopLink. 这些模板使用方式统降低了员 使用区别数据库成本.模板使用让你只关心数据准备, 而看不到那些样板代码, 其实那些样板代码都还在, 只是被巧妙隐含到了 template 中了. 例如: List list = jdbcTemplate.query(“select * from table1”, Object“a”,”b”, RowMapper ); 意思表达到了. 其中对数据源引用可以配置使用 JNDI 以从应用服务器中获取数据库连接. 这样就可以集中处理业务逻辑而不必关心数据库具体情况 . 如果不能从 JNDI 中取得, 那就必须在 spring 中配置个连接池. 可以使用开源DBCP. 这个支持多种数据库连接. (6) 数据库层面缓存 Cache使用. Spring 并不提供实际缓存 Cache 解决方案, 而是要以来第 3 方缓存 Cache 方案. 包括: EHcache,Gigaspaces, JBoss Bache, JCS, OSCache, Coherence .无论采用哪种 缓存 Cache 方案, 对于 spring配置都是样. 但缓存 Cache配置文件都是要分开. 简化了使用缓存 Cache成本. (7) 安全验证方面节省工作. 基于多种方式用户验证. 都节省了很多工作. (8) 访问 RMI , 访问 Http Invoker, 访问 Web Service 如果要穿越防火墙最后是后两种. 但 httpInvoder 局限于 spring对象. webService 可以多种.平台. 不管使用哪种, spring 都为他们配置提供了统简单配置. 使用 起来非常方便. Xfire 协助你访问 webService 简单易用. (9) JMS访问. 大量冗余代码被节省了. 配置好了即可使用. 当然你需要使用 activeMQ 第 3 方队列服务器来接受消息. (10) 访问 EJB JNDI 都非常简单了. 所有额外工作,你配置好的后, spring 都帮你做了. 你要做就是: 使用 (11) 发送邮件的支持. 说实在的. Spring 只是更进一层的包装了 javaMail. 抽象出来 MailSender 接口. 配置好 bean 即可使用. 如果需要验证则配置好用户名密码. 否则只需要配置地址端口即 可 . 配置好之后可以注入到各种需要发送邮件的 bean 中去. 具体发送方式,参考文档去吧. (12) 调度任务 终于不用自己构造复杂的定时器代码了. Spring 通过 TimerFactoryBean 向应程序上下文提供对 javaTimer 的支持. 不用自己再搞出 xml 配置了. 配置格式 都设计好了.非常方便. 可以调度定时任务, 可以启动定时器, 可以严师定时器启动. 也可以使用 Quartz 执行定时调度器. JavaTimer 没有提供足够的支持这样的调度. 53.什么是域访问什么是域访问? 同一个 IP,同一个网络协议,同一个端口,三者都满足就是同一个域,否则就是跨域访问 54.Pafa 中是如何处理异常的中是如何处理异常的? 55.常见的常见的 SQL 优化方法优化方法。 (1).查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE %parm1% 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用。 解决办法: 其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下: a、修改前台程序把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就帮忙定位到具体的供应商,这样 在调用后台程序时,这列就可以直接用等于来关联了。 b、直接修改后台根据输入条件,先查出符合条件的供应商,并把相关记录保存在一个临时表里头,然后再用临时表去做复杂关联 (2).索引问题 在做性能跟踪分析过程中,经常发现有不少后台程序的性能问题是因为缺少合适索引造成的,有些表甚至一个索引都没有。这种情况往往都是因为在设计表时,没去定 义索引,而开发初期,由于表记录很少,索引创建与否,可能对性能没啥影响,开发人员因此也未多加重视。然一旦程序发布到生产环境,随着时间的推移,表记录越来越 多,这时缺少索引,对性能的影响便会越来越大了。 这个问题需要数据库设计人员和开发人员共同关注 法则:不要在建立的索引的数据列上进行下列操作: 避免对索引字段进行计算操作 避免在索引字段上使用 not, =trunc(:date1) and create_date 或者是 where create_date between trunc(:date1) and trunc(:date1)+1-1/(24*60*60) 注意:因 between 的范围是个闭区间(greater than or equal to low value and less than or equal to high value.) , 故严格意义上应该再减去一个趋于 0 的小数,这里暂且设置成减去 1 秒(1/(24*60*60)) ,如果不要求这么精确的话,可以略掉这步 (7).对 Where 语句的法则 7.1 避免在 WHERE 子句中使用 in,not in,or 或者 having。 可以使用 exist 和 not exist 代替 in 和 not in。 可以使用表链接代替 exist。 Having 可以用 where 代替,如果无法代替可以分两步处理。 例子 SELECT * FROM ORDERS WHERE CUSTOMER_NAME NOT IN (SELECT CUSTOMER_NAME FROM CUSTOMER) 优化 SELECT * FROM ORDERS WHERE CUSTOMER_NAME not exist (SELECT CUSTOMER_NAME FROM CUSTOMER) 7.2 不要以字符格式声明数字,要以数字格式声明字符值。 (日期同样) 否则会使索引无效,产生全表扫描。 例子 使用:SELECT emp.ename, emp.job FROM emp WHERE emp.empno = 7369; 不要使用:SELECT emp.ename, emp.job FROM emp WHERE emp.empno = 7369 (8).对 Select 语句的法则 在应用程序、包和过程中限制使用 select * from table 这种方式。 例子 使用 SELECT empno,ename,category FROM emp WHERE empno = 7369 而不要使用 SELECT * FROM emp WHERE empno = 7369 (9). 排序 避免使用耗费资源的操作 带有 DISTINCT,UNION,MINUS,INTERSECT,ORDER BY 的 SQL 语句会启动 SQL 引 执行,耗费资源的排序(SORT)功能。DISTINCT 需要一次排序操作, 而其他的至少 需要执行两次排序 (10).临时表 慎重使用临时表可以极大的提高系统性能。 56.什么是轻量级开发什么是轻量级开发。什么是重量级开发什么是重量级开发。 轻量级框架侧重于减小开发的复杂度,相应的它的处理能力便有所减弱(如事务功能弱、不具备分布式处理能力) ,比较适用于开发中小型企业应用。采用轻量框架一方 面因为尽可能的采用基于 POJOs 的方法进行开发,使应用不依赖于任何容器,这可以提高开发调试效率;另一方面轻量级框架多数是开源项目,开源社区提供了良好的设计 和许多快速构建工具以及大量现成可供参考的开源代码,这有利于项目的快速开发。例如目前 Tomcat+Spring+Hibernate 已经成为许多开发者开发 J2EE 中小型企业应用偏爱 的一种架构选择。随着可供选择的框架层出不穷,开发者可以根据需要对应于企业应用三个层次的轻量级框架选择,本文第 2 节的内容可供选择参考。 而作为重量级框架 EJB 框架则强调高可伸缩性,适合与开发大型企业应用。在 EJB 体系结构中,一切与基础结构服务相关的问题和底层分配问题都由应用程序容器或服 务器来处理,且 EJB 容器通过减少数据库访问次数以及分布式处理等方式提供了专门的系统性能解决方案,能够充分解决系统性能问题。 轻量级框架的产生并非是对重量级框架的否定, 甚至在某种程度上可以说二者是互补的。 轻量级框架在努力发展以开发具有更强大, 功能更完备的企业应用; 而新的 EJB 规范 EJB3.0 则在努力简化 J2EE 的使用以使得 EJB 不仅仅是擅长处理大型企业系统,也利用开发中小型系统,这也是 EJB 轻量化的一种努力。对于大型企业应用以及将来 可能涉及到能力扩展的中小型应用采用结合使用轻量级框架和重量级框架也不失为一种较好的解决方案 57.Spring 里面的三里面的三个名词个名词,它们分别是什么意思它们分别是什么意思? IoC (Inversion Of Control)中文名为控制反转,就是由容器来控制业务对象之间的依赖关系,而非传统实现中,由代码直接操控。这也就是所谓“控制反转”的概念所在: 控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。控制权的转移带来的好处就是降低了业务对象之间的依赖程度。 DI 依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色需要另外一个角色协助的时候,在传统的程序设计过程 中,通常由调用者来创建被调用者的实例。但在 spring 中创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由 spring 来完成,然后注入 调用者 因此也称为依赖注入。 AOP 面向切面编程完善 spring 的依赖注入(DI) ,面向切面编程在 spring 中主要表现为两个方面 。 (1)面向切面编程提供声明式事务管理 (2)spring 支持用户自定义的切面 面向切面编程(aop)是对面向对象编程(oop)的补充, 面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。 AOP 从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop 是静态的抽象,aop 是动态的抽象,是对应用执行过程中的步骤进行抽象,从而获得步骤之间的 逻辑划分。 aop 框架具有的两个特征: (1).各个步骤之间的良好隔离性 (2).源代码无关性 58. PAFA 里面有个什么类是和面向对象里面很像的里面有个什么类是和面向对象里面很像的? 59.单例模式用过吗单例模式用过吗?PAFA 框架里面哪里用到过的单例模式框架里面哪里用到过的单例模式? 单例模式即在整个应用中只有一个实例 60.你知道哪些设计模式你知道哪些设计模式? (1) 创建型模式 1) Abstract Factory.(抽象工厂)提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。 2) Builder(生成器) 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 3) Factory Method.(工厂方法)定义一个用于创建对象的接口,让子类决定实例化哪一个类。使一个类的实例化延迟到其子类。 4) Prototype(原型)用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 5) Singleton(单例) 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 (2) 结构型模式 1) Adapter(适配器)将一个类的接口转换成客户希望的另外一个接口。 2) Bridge(桥接)将抽象部分与它的实现部分分离,使它们都可以独立的变化。 3) Composite(组合)将对象组合成树形结构以表示“部分-整体”的层次结构。 4) Decorator(装饰)动态地给一个对象添加一些额外的职责。 5) Faade(外观)为子系统中的一组接口提供一个一致的界面,Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 6) Flyweight(享元)运用共享技术有效地支持大量细粒度的对象。 7) Proxy(代理)为其它对象提供一种代理以控制对这个对象的访问。 (3) 行为模式 1) Chain of Responsibility(职责链) 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 2) Command(命令) 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 3) Interpreter(解释器)给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语句中的句子。 4) Iterator(迭代器) 提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。 5) Mediator(中介者) 用一个中介对象来封装一系列的对象交互。 6) Memento(备忘录)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 7) Observer(观察者) 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。 8) State.(状态)允许一个对象在其内部状态改变时改变它的行为。 9) Strategy(策略) 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 10) Template Method(模板方法)定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 11) Visitor.(访问者)表示一个作用于某对象结构中的各元素的操作。 61.JAVA 组件有哪些组件有哪些? 类本身是个细粒度的可重用实现,为了解决功能或机制层面更大粒度重用的问题,又引入了组件的概念。组件的英文是 Component。 组件对外暴露一个或多个接口, 供外界调用。组件内部由多个类来协同实现指定的功能。对于复杂的组件,会包括很多类,还可能包含配置文件、界面、依赖的库文件等,组件也可以包含或者使用其他的 组件,构成更大粒度的组件。 一些特定范畴的组件,由软件厂家或者国际权威组织制定并颁布了组件规范,如 COM、ActiveX、EJB、JavaBean 等。 62.现在已经有很多框架了现在已经有很多框架了,为什么还要开发框架为什么还要开发框架? 框架的最大好处就是重用 框架的再一个好处就是可以优化架构。软件架构,亦即体系结构,包括组件元素、元素互助合作模式、基础要求与限制。这说明架构的设计就是将各组件元素以某些理 想的合作模式组织起来,以达成系统的基本功能和限制。框架其实就是在特定领域基于体系结构的可重用的设计,即框架是体系结构在特定领域下的应用。框架代表了一种 优秀的软件架构。框架定义了扩展方式,从而规范了框架的使用行为。这使得软件能够保持整体架构的稳定性和一致性。 采用框架技术进行软件开发的主要特点包括:领域内的软件结构一致性好;建立更加开放的系统;重用代码大大增加,软件生产效率和质量也得到了提高;软件设计人员要 专注于对领域
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心电图机自动分析算法的研究与实现
- 浅谈《诗经》的现代意义
- 浅论戏曲演员的修养
- 略论刘知几的史学理论的影响
- 熔点、沸点、凝固点与压强的关系原因分析
- 浅议中医药技术对新型冠状病毒肺炎的防治
- 工程合同验收报告书(3篇)
- mba毕业论文选题
- 汉语言文学专业毕业设计(论文)概要
- 基于峰谷分时电价机制的节能发电调度优化模型
- 海洋守护:捕捞业新篇章-推动可持续发展建设绿色渔业
- 后勤人员消防安全课件
- 2025中国煤炭科工集团有限公司二级企业8岗位招聘9人笔试历年参考题库附带答案详解
- 现代特色历史街区教案
- 生态环保模块化湿地建设方案
- 2025年国家公务员考试行测试题(含答案)
- 燃气管道勘察与设计方案
- 消防安全生命至上培训课件
- 储罐施工应急预案
- 国家事业单位招聘2025中国农业科学院农业经济与发展研究所招聘笔试笔试历年参考题库附带答案详解
- 2025年宜昌市市直机关公开遴选公务员40人备考考试题库附答案解析
评论
0/150
提交评论