首页 >  面试题 > JAVA,PHP企业面试宝典 > 

14道常用的经典Java面试题

14道常用的经典Java面试题

作者:eld 来源:华育国际 时间:2015-04-23 访问次数:2292
精心收集的一些大型企业在Java岗位面试时,经常会问到的问题,有需要的同学,赶紧收藏!

1.数据库设计和建模必要性

    好的数据库结构有利于:-节省数据的存储空间-能够保证数据的完整性-方便进行数据库应用系统的开发•设计不好的数据库结构将导致-数据冗余、存储空间浪费-内存空间浪费

2.不管数据库的大小和复杂程度如何,可以用下列基本步骤来设计数据库:

    –收集信息–标识对象–设计数据模型–标识每个对象 存储的信息类型–标识对象之间的关系

3.什么是规范化

    从关系数据库的表中,除去冗余数据的过程称为规范化。—精简数据库的结构—从表中删除冗余的列—标识所有依赖于其它数据的数据

4.何为“事务处理”,谈谈你对它的理解

    事务处理是指一个单元的工作,这些工作要么全做,要么全部不做。作为一个逻辑单元,必须具备四个属性:自动性、一致性、独立性和持久性。自动性是指事务必须是一个自动的单元工作,要么执行全部数据的修改,要么全部数据的修改都不执行。一致性是指当事务完成时,必须使所有数据都具有一致的状态。在关系型数据库中,所有的规则必须应用到事务的修改上,以便维护所有数据的完整性。所有的内部数据结构,在事务结束之后,必须保证正确。独立性是指并行事务的修改必须与其他并行事务的修改相互独立。一个事务看到的数据要么是另外一个事务修改这些事务之前的状态,要么是第二个事务已经修改完成的数据,但是这个事务不能看到正在修改的数据。

5.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别

    PreparedStatement对象与Statement对象的不同点在于它的SQL语句是预编译过的,并且可以有占位符使用运行时参数。

6.存储过程和函数的区别

    存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。

7.事务是什么?

    事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:

    原子性,事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

    一致性,事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。

    隔离性,由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

    持久性,事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

8.触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别

    事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。

9.动态查询如何实现?表的结构变化后,如果不需要修改程序,如何设计和实现查询?

    讲查询封装进存储过程中,通过调用存储过程实现动态调用;表结构发生变化后修改相应的存储过程即可再不修改程序的情况下实现查询。

10.如何优化数据库,如何提高数据库的性能?

    优化数据库主要是优化查询语句,通过高性能的查询语句提高数据库的性能。

11.设计数据库应注意那些问题

    首先应尽量满足三范式的要求,在一定程度上打破3范式的要求以提高数据库的性能。

12.表与表之间的关联关系 

    分为3种:一对一、一对多、多对多。

13.主键和外键的区别 

    主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。

14.JDBC调用数据库的基本步骤

    导入必要的类,装入JDBC驱动程序,识别数据源,分配一个Connection对象,分配一个Statement对象,使用Statement执行一个查询,从返回的ResultSet对象中检索数据,关闭ResultSet,关闭Statement对象,关闭Connection对象