自己遇到的面试题

1.hibernate 主键的生成方式:

    Hibernate主键生成方式 <id name="id" type="interger"> <column name="id"> <generator class="identity"/> </id>

     1 increment: 当向数据库中插入新的纪录时,主键会自动增长1。increment主键生成方式的特点是与底层数据库无关性,大部分数据库如 Mysql,MSSQL 和ORACLE等都支持increament生成方式。increment方式的不足之处是当多个线程并发对数据库表进行写操作时,可能出现相同的主键值,发生主键重复的冲突,因此多线程并发操作时,不应该使用此方法

    2 identity: 使用数据库提供的主键生成机制,自动为主键赋值,indentity方式的特点是与底层数据库无关性,不便于不同数据库之间的移植。identity的优点是不会发生 increment方式的并发错做问题。

     3 native: 由hibernate根据不同的数据库方言,自动选择不同的主键生成方式,native的优点是与底层性无关,便于不同数据库之间的移植,由hibernate根据不同数据库选择主键的生成方式

     4 uuid.hex: 采用基于128位的算法生成唯一值,并编制成32位长度的唯一字符串作为主键值,uuid.hex的优点是支持大部分数据库,缺点就是要占用较大的存储空间。

     5 uuid.string 使用UUID算法,UUID被编码为一个16个字符长的任意ASCII字符组成的字符串。不能再PostgreSQL数据库中使用。uuid.string同uuid.hex类似,需要占很大的存储空间。

      6 hilo: 通过一定的算法生成主键,需要一个表来保存额外的主键信息。这样生成的标识符只在特定的数据库是唯一的,在使用JTA(Java分布式事务) 获得链接或用户自定义提供的链接中,不要使用这种生成器。hilo方式需要维护表信息,因此对数据的影响的要率会造成一定影响。

       7 sequence: 在ORACLE等数据库中使用sequence生成主键。sequence的特点是于数据库的相关性,seqhio要求底层能支持sequence,列如Oracle。

       8 seqhio: 通过一定的算法来生成主键,采用给定的数据库的sqlsequence开生成外键。ceqhio方式的特点外还具有Hil哦的大。

 

2.Spring Bean的作用域:

作用域                                                                       描述

singleton                                           在每个Spring IOC容器中一个Bean定义对应一个对象实例prototype 一个bean定义对应多个对象实例

request                                              再一次HTTP请求中,一个bean定义对应一个实例,即每次HTTP请求 将会有各自的bean实例

session                                              在每一次HTTPSession中,一个bean定义对应一个实例。该作用域仅在基 于web的Spring ApplicationContext情形下有效

global session                                  在每一次HTTP Session中,一个bean定义对应一个实例。该作用域仅使用 portlet context的时候有效

 

3.Struts1  和 struts2 的区别?

    1.struts1的action是单例模式且必须是线程安全的,action的一个实例处理所有请求.struts2的action对象为每个请求产生一个实例,没有线程安全问题.struts1的action依赖于       servlet api,struts2的action不依赖与容器,允许脱离容器单独测试.

     2.struts1的execute方法依赖于servlet api,使得测试要依赖于容器.struts2的action可以通过初始化,设置属性,调用方法来测试,依赖注入支持是测试更容易.struts1试用ActionForm对象捕获输入,普通JavaBean不能捕获输入.动态bean可以作为ActionForm的选择,但是是在重复描述已经存在的Javabean.struts2直接试用action属性作为输入属性,消除了对第二个输入对象的需求.也支持ActionForm模式,这种ModelDriven特性简化了tiglib对POJO对象的应用.

      3.struts1整合的JSTL,试用JSTL EL,EL有基本对象图遍历功能,但是对集合和索引属性的支持很弱struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--Object Graph Notation Language(OGNL)

    4.struts1试用标准jsp机制把对象绑定到页面中来访问struts2试用ValueStack技术,允许试用一系列名称相同但类型不同的属性重用页面

     5.struts1的ActionForm通常都是String类型,试用BeanUtils进行类型转换struts2使用OGNL进行类型转换,提供基本和常用对象的转化器.

    6.struts1支持在ActionForm的validate方法中手动效验,或者通过validator扩展效验struts2支持通过validate方法和XWork效验框架来进行效验

     7.struts1支持每个模块有单独的request生命周期,但是模块中的所有action必须共享相同的生命周期struts2支持通过拦截器interceptor stacks为每个action创建不同的生命周期

 

4.数据连接池的工作机制??

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

 

5.一个数组中有N个元素,找出其中重复次数最多的那个元素? JAVA LIST 集合

import java.util.HashSet;

import java.util.Set;

import java.util.List;

import java.util.ArrayList;

public class TestJ {

     public static void main(String[] args) {

                 /*List<Object> list = new ArrayList<Object>();

                list.add(....); list.add(....);

               Object[] obj1 = list.toArray();*/ //以上注释部分代码意思是:可以自己给list中加入元素,然后赋给数组obj1Object[] obj1 = {1,1,2,2,2,3,3,3,4,4,4}; //这里用你给的这个数组简单测试一下。 //Object数组中存放对象,

              Set<Object> s = new HashSet<Object>();//HashSet用来去掉重复

              for(Object o:obj1){s.add(o);} //现在的集合s中无重复的包含obj1中的所有元素

                       Object[] obj2 = s.toArray();//把集合s中的元素存入数组obj2中

                        int[] n = new int[obj2.length];//这个数组用来存放每一个元素出现的次数

                        int max = 0;for(int i=0;i<obj2.length;i++){int cout = 0;for(int j=0;j<obj1.length;j++)

                     {

                     if(obj2[i].equals(obj1[j]))

                         cout++; //用obj2中的元素跟obj1中的每一个比较,如果相同cout自增

                       }

                          n[i] = cout;//每一个元素出现的次数存入数组n //数组n的下标i跟数组obj2的下标是一一对应的。

                         if(max<cout){//得到元素出现次数最多是多少次max = cout;}

            }

          for(int i=0;i<n.length;i++){if(max==n[i]){

                    / /如果出现的次数等于最大次数,就输出对应数组obj2中的元素

              System.out.println(obj2[i]);

           }

        }

     }

}        输出结果; 2 3 4

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值