动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

面试官亲自整理java数据库面试题

07-03 17:38 512浏览
举报 T字号
  • 大字
  • 中字
  • 小字

相信所有人都知道数据库是什么意思,在不同的行业和专业下,数据库的定义肯定是不同的。在java语言中,狭义的数据库仅仅是指存储数据的文件,广义的数据库还包括建立、管理数据文件的软件,如foxpro,sqlserver。数据库是java中不可缺少的一部分,所以今天整理了一些常考java数据库面试题,有面试需要的朋友们一起赶紧往下看。

1、请列出Java常见的开源数据连接池,并对参数做出简单的说明

答:在Java中开源的常用的数据库连接池有以下三种 :(1)DBCP。DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。

2)c3p0。c3p0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

3)Druid。阿里出品,淘宝和支付宝专用数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。

2、数据库MySQLOracle,SqlServer分页时用的语句

答:Mysql:使用limit关键字。Select * from 表名 where 条件 limit 开始位置,结束位置。通过动态的改变开始和结束位置的值来实现分页。

Oracle:通过rownum来实现。select * from ( select rownum rn,t.* from addressbook where rownum<= 20 ) where rownum > 10。

Sqlserver:select top 20 * from addressbook where id not in (select top 10 id from addressbook)。

3、SQL怎么优化执行效率更高?

答: 1. SQL优化的原则是:将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。调整不良SQL通常可以从以下几点切入:检查不良的SQL,考虑其写法是否还有可优化内容;检查子查询,考虑SQL子查询是否可以用简单连接的方式进行重新书写;检查优化索引的使用;考虑数据库的优化器;避免出现SELECT * FROM table 语句,要明确查出的字段;在一个SQL语句中,如果一个where条件过滤的数据库记录越多,定位越准确,则该where条件越应该前移;查询时尽可能使用索引覆盖。即对SELECT的字段建立复合索引,这样查询时只进行索引扫描,不读取数据块;使用内层限定原则,在拼写SQL语句时,将查询条件分解、分类,并尽量在SQL语句的最里层进行限定,以减少数据的处理量;在查询时尽量减少对多余数据的读取包括多余的列与多余的行。

4、存储过程与函数的区别是什么?

答:(1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强;(2)对于存储过程来说可以返回参数(output),而函数只能返回值或者表对象;(3)存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

5、存储过程的优点有什么?

答:(1)执行速度更快,在数据库中保存的存储过程语句都是编译过的;(2)允许模块化程序设计,类似方法的复用;(3)提高系统安全性,防止SQL注入;(4)减少网络流通量,只要传输存储过程的名称。

6、数据库创建索引的缺点是什么?

答:缺点有(1)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加;(2)索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大;(3)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

7、什么是DAO模式?

答:DAO(DataAccess Object)顾名思义是一个为数据库或其他持久化机制提供了抽象接口的对象,在不暴露数据库实现细节的前提下提供了各种数据操作。为了建立一个健壮的Java EE应用,应该将所有对数据源的访问操作进行抽象化后封装在一个公共API中。用程序设计语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口,在逻辑上该类对应一个特定的数据存储。DAO模式实际上包含了两个模式,一是Data Accessor(数据访问器),二是Data Object(数据对象),前者要解决如何访问数据的问题,而后者要解决的是如何用对象封装数据。

8、Oracle完成分页功能的三层子查询语句及其含义?

答:如:select * from (select t.*,rownum r from (select * from A) t where rownum < 10) where r >5

select * from A:要查询的数据

select t.*,rownum r from (select * from A) t where rownum < 10:取前10行

select * from (select t.*,rownum r from (select * from A) t where rownum < 10) where r >5:取5-10行

9、简单叙述一下MYSQL的优化?

答:1.数据库的设计,尽量把数据库设计的更小的占磁盘空间。(1)尽可能使用更小的整数类型(mediumint就比int更合适);(2)尽可能的定义字段为not null,除非这个字段需要null;(3)如果没有用到变长字段的话比如varchar,那就采用固定大小的纪录格式比如char;(4)表的主索引应该尽可能的短.这样的话每条纪录都有名字标志且更高效;(5)只创建确实需要的索引;(6)所有数据都得在保存到数据库前进行处理;(7)所有字段都得有默认值。

2.系统的用途方面:(1)尽量使用长连接;(2)explain 复杂的SQL语句;(3)如果两个关联表要做比较话,做比较的字段必须类型和长度都一致;(4)LIMIT语句尽量要跟order by或者 distinct;(5)如果想要清空表的所有记录,建议用truncate table tablename而不是delete from tablename;(6)能使用STORE PROCEDURE 或者 USER FUNCTION的时候;(7)在一条insert语句中采用多重纪录插入格式.而且使用load data infile来导入大量数据,这比单纯的indert快好多;(8)经常OPTIMIZE TABLE 来整理碎片;(9)date 类型的数据如果频繁要做比较的话尽量保存在unsigned int 类型比较快。

10、以Oracle11R为例简述数据库集群部署

答:命令行工具,crsctl管理集群相关的操作,启动和关闭Oracle集群,启用和禁用Oracle集群后台进程,注册集群资源,srvctl 管理Oracle 资源相关操作,启动和关闭数据库实例和服务。

Oracle Grid安装的home路径下的命令行工具crsctl和srvctl用来管理Oracle集群。使用crsctl可以监控和管理任何集群节点的集群组件和资源。srvctl工具提供了类似的功能,来监控和管理Oracle相关的资源,例如数据库实例和数据库服务。crsctl命令只能是集群管理者来运行,srvctl命令可以是其他用户,例如数据库管理员来使用。

数据库就是指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。所有学习java的程序员都知道在java中数据库的重要性是什么,所有在java面试中,面试官对于数据库方面的知识考查还是很重视的,所以,无论是在工作岗位上的java程序员还是刚学习java零基础的新手,都要把上面提到的常考java数据库面试题学会搞懂,顺利通过面试。

0人推荐
共同学习,写下你的评论
0条评论
摩一摩
程序员摩一摩

5篇文章贡献24633字

作者相关文章更多>

推荐相关文章更多>

MySQL开发规范

达芬奇09-04 11:38

必须掌握的30种SQL语句优化

不写代码你养我啊08-23 11:30

ES(Elasticsearch)支持PB级全文搜索引擎入门教程

HelloWorld09-29 17:28

Java面试中的hadoop面试题及答案整理

兔子06-15 17:15

数据库分类之速成篇

呵呵呀06-17 18:54

发评论

举报

0/150

取消