java开发工程师面试笔试题(含答案)_v0内容摘要:

tion, UnmodifiableSetException, UnsupportedOperationException。 7. 给出 spring事务管理中 propagation 的至少两个可选值,并说明他们的作用。 (4分 ) 答: PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。 这是最常见的选择。 PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_MANDATORY: 使用当前的事务,如果当前没有事务,就抛出异常。 PROPAGATION_REQUIRED_NEW:新建事务,如果当前存在 事务,把当前事务挂起。 PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 PROPAGATION_NEVER: 以非事务方式执行,如果当前存在事务,则抛出异常。 PROPAGATION_NESTED: 如果当前存在事务,则在嵌套事务内执行。 如果当前没有事务,则执行与 PROPAGATION_REQUIRED 类似的操作。 8. struts2的拦截器类需要实现什么接口,该接口提供了哪些方法。 (6分 ) 答: 所 有 的 Struts 2 的 拦 截 器 都 直 接 或 间 接 实 现 接 口。 该接口提供了三个方法: 1) void init()。 在该拦截器被初始化之后,在该拦截器执行拦截之前,系统回调该方法。 对于每个拦截器而言,此方法只执行一次。 2) void destroy()。 该方法跟 init()方法对应。 在拦截器实例被销毁之前,系统将回调该方法。 3) String intercept(ActionInvocation invocation) throws Exception。 该方法是用户需要实现的拦截动作。 该方法会返回一个字符串作为逻辑视图。 9. 请列出常用的 4 种 hibernate 的主键生成方式,并描述其机制。 (8 分 ) 答: 1)assigned 主键由外部程序负责生成,无需 Hibernate 参与。 2) hilo 通过 hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主 键生成历史状态。 3) seqhilo 与 hilo 类似,通过 hi/lo 算法实现的主键生成机制,只是主键历史 状态保存在 Sequence 中,适用于支持 Sequence 的数据 库,如 Oracle。 4) increment 主键按数值顺序递增。 此方式的实现机制为在当前应用实例中维持 一个变量,以保存着当前的最大值,之后每次需要生成主键的时候 将此值加 1 作为主键。 这种方式可能产生的问题是:如果当前有多个实例访问同一个数据 库,那么由于各个实例各自维护主键状态,不同实例可能生成同样 的主键,从而造成主键重复异常。 因此,如果同一数据库有多个实 例访问,此方式必须避免使用。 5) identity 采用数据库提供的主键生成机制。 如 DB SQL Server、 MySQL 中的主键生 成机制。 6) sequence 采用数据库提供的 sequence 机制生成主键。 如 Oralce 中的 Sequence。 7) native 由 Hibernate 根据底层数据库自行判断采用 identity、 hilo、 sequence 其中一种作为主键生成方式。 8) 由 Hibernate 基于 128 位唯一值产生算法生成 16 进制数值(编码后 以长度 32 的字符串表示)作为主键。 9) 与 类似,只是生成的主键未进行编码(长度 16)。 在某些 数据库中可能出现问题(如 PostgreSQL)。 10) foreign 使用外部表的字段作为主键。 一般而言,利用 应性。 另外由于常用的数据库,如 Oracle、 DB SQLServer、 MySql 等,都提 供了易用的主键生成机制( AutoIncrease 字段或者 Sequence)。 我们可以在数 据库提供的主。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。