将年龄mysql 修改字段约束限制是属于什么约束

当前位置:
sql学习资料
来源: 联系QQ: 作者: myeducs.cn
发布时间: 13/03/16
【网学网提醒】:本文主要为会员提供sql学习资料,希望对需要sql网友有所帮助,学习一下!&&&&1、数据库的概念模型______。A、独立于计算机硬件,依赖于DBMSB、依赖于计算机硬件,独立于DBMSC、依赖于计算机硬件和DBMSD、独立于硬件和DBMS2、关系代数是关系型数据库操作的理论基础,它的3个基本运算是______、投影和连接。A、关系或B、蕴含C、关系与D、选择3、在关系数据库中,建立数据库表时,将年龄字段值限制在12~40岁之间的这种约束属于______。A、视图完整性约束B、域完整性约束C、参照完整性约束D、实体完整性约束4、数据库系统是由______组成的。A、数据库、数据库管理系统和用户B、数据文件、命令文件和报表C、数据库文件结构和数据D、常量、变量和函数5、在教学管理中,一名学生可以选择多门课程,一门课程可以被多名学生选择,这说明学生记录型与课程记录型之间的联系是______。A、一对一B、一对多C、多对多D、未知6、在下列类型的数据库系统中,应用最广泛的是______。A、分布型数据库系统B、逻辑型数据库系统C、关系型数据库系统D、层次型数据库系统7、下列四组SQL命令,全部属于数据定义语句的命令是______。A、CREATE,DROP,ALTERB、CREATE,DROP,UPDATEC、CREATE,DROP,GRANTD、CREATE,DROP,SELECT8、在下列命题中,不正确的命题是______。A、若冗余数据是可控的,则数据更新的一致性得以保证B、数据库减少了不必要的数据冗余C、数据库中的数据可以共享D、数据库中不存在冗余数据9、能实现绝对的与平台无关性的Web数据库访问技术是______。A、ADOB、ActiveXC、WebbaseAPID、JDBC10、下列叙述中错误的是______。A、一个表可以有多个外部关键字B、数据库表可以设置记录级的有效性规则C、永久性关系建立后,主表记录指针将随子表记录指针相应移动D、对于临时性关系,一个表不允许有多个主表11、在下列关于视图的叙述中,正确的一条是______。A、视图和一样B、若导出某视图的数据库表被删除了,该视图不受任何影响C、视图一旦建立,就不能被删除D、当某一视图被删除后,由该视图导出的其他视图也将自动删除&&&& 12、在SQL语句中,与XBETWEEN20AND30等价的表达式是____。A、X&=20ANDX&30B、X&20ANDX&30C、X&20ANDX&=30D、X&=20ANDX&=3013、数据库镜像可以用于______。A、实现数据库的安全性B、实现数据共享C、进行数据库恢复或并发操作D、保证数据库的完整性14、一个关系相当于一张二维表,二维表中的各栏目相当于该关系的______。A、元组B、结构C、数据项D、属性15、用二维表来表示实体及实体之间联系的数据模型称为______。A、实体C联系模型B、层次模型C、关系模型D&&&&、网状模型16、下列说法中正确的是____。A、从数据库中移出来的表仍然是数据库表B、将某个表从数据库中移出的操作不会影响当前数据库中其他表C、一旦某个表从数据库中移出,与之联系的所有主索引、默认值及有关的规则都随之消失D、如果移出的表在数据库中使用了长表名,那么表移出数据库后仍然可以使用长表名17、在基本SQL语言中,不可以实现______。A、定义视图B、并发控制C、定义基表D、视图和基表18、通过Internet及浏览器处理的数据库,应该是______处理。A、以上3种模式B、分布式C、主从结构式D、集中式19、如果要改变一个关系中属性的排列顺序,应使用的关系运算是______。A、连接B、选取C、投影D、重建20、数据库系统与文件系统的主要区别是______。A、文件系统简单,而数据库系统复杂B、文件系统只能管理数据文件,而数据库系统能管理各种类型的文件C、文件系统只能管理少量数据,而数据库系统能管理大量数据D、文件系统不能解决数据冗余和数据独立性,而数据库系统可以21、一般说来,数据库管理系统主要适合于用作______。A、表格计算B、管理C、数据通讯D、文字处理22、在设置数据库中的表之间的永久关系时,以下说法正确的是______。A、父表必须建立主索引,子表可以不建立索引B、父表、子表都必须建立主索引C、父表必须建立主索引,子表必须建立候选索引D、父表必须建立主索引,子表可以建立普通索引23、数据的逻辑独立性是指______。A、数据与存储结构的逻辑独立性B、数据元素之间的逻辑独立性C、存储结构与物理结构的逻辑独立性D、数据与的逻辑独立性&&&& 24、在SQL查询时,使用WHERE子句指出的是______。A、查询目标B、查询条件C、查询视图D、查询结果25、查找工资在600元以上并且职称为工程师的纪录,逻辑表达式为____。A、”工资”&600.OR.职称=”工程师”B、工资&600.AND.职称=工程师C、”工资”&600.AND.“职称”=”工程师”D、工资&600.AND.职称=”工程师”26、关系数据库管理系统存储与管理数据的基本形式是____。A、关系树B、二维表C、文本文件D、结点路径27、一个关系型数据库管理系统所应具备的3种基本关系操作是______。A、筛选、投影与连接B、排序、索引与C、插入、删除与修改D、编辑、浏览与替换28、数据库管理系统更适合于______方面的应用。A、CADB、过程控制C、科学计算D、数据处理29、数据库系统的控制中枢是____。A、数据库B、数据库管理系统C、数据库管理员D、数据库应用系统30、数据库类型是按照______来划分的。A&&&&、数据模型B、记录形式C、数据存取方法D、文件形式31、要在数据库中的各个表之间建立一对一关系,子表的关键字段必须建立______。A、惟一索引B、主索引C、普通索引D、候选索引或惟一索引32、设计性能较优的关系模式称为规范化,规范化的主要理论依据是______。A、关系规范化理论B、代数运算理论C、数理逻辑理论D、关系运算理论33、数据库的并发操作可能带来的问题包括______。A、非法用户的使用B、丢失更新C、数据独立性会提高D、增加数据冗余度34、在数据库技术中,独立于系统的模型是______。A、面向对象的模型B、关系模型C、E-R模型D、层次模型35、在关系型数据库管理系统中,所谓关系是指______。A、各个字段数据之间存在着一定的关系B、各条数据记录之间存在着一定的关系C、一个数据库与另一个数据库之间存在着一定的关系D、满足一定条件的一个二维数据表格36、以下叙述中正确的是______。A、删除一个数据库后,其内的表也一定被删除B、任何一个表只能为一个数据库所有,不能同时添加到多个数据库C、候选关键字的值不能有重复的数据,但可以有空值&&&& D、可为自由表设置主索引、普通索引、惟一索引37、SQL是____英文单词的缩写A、StandardQueryLanguangeB、StructuredQueryLanguageC、SelectQueryLanguageD、以上都不是38、作为MicrosoftOffice家族成员之一的______数据库,能够与其他Office组件进行数据交换共享数据资源,易于生成集文字处理、图表生成和数据管理于一体的办公自动化系统。A、AccessB、OracleC、SybaseD、Informix38、数据库、数据库系统、数据库管理系统这3者之间的关系是____。A、数据库系统包含数据库和数据库管理系统B、数据库包含数据库系统和数据库管理系统C、数据库管理系统包含数据库和数据库系统D、数据库系统就是数据库,也就是数据库管理系统39、在关系数据库中,模式对应的是______。A、视图和所有基本表B、视图和部分基本表C、基本表D、索引40、在关系型数据库管理系统中,一个关系对应一个____。A、记录B、字段C、表文件D、数据库文件41、在有关数据库的概念中.若干记录的集合称为______。A、文件B、字段C、数据项D、表42、在数据库中,概念模型是______。A、用于现实的建模,与具体的DBMS有关B、用于信息世界的建模,与具体的DBMS有关C、用于现实的建模,与具体的DBMS无关D、用于信息世界的建模,与具体的DBMS无关43、在下列描述中,正确的描述是______。A、SQL是一种过程化语言B、SQL采用集合操作方式C、SQL不能嵌入到高级语言中D、SQL是一种&&&&DBMS44、下列说法中正确的是______。A、SQL语言不可以直接以命令方式交互使用,只能嵌入到程序设计语言中以程序方式使用。B、SQL语言只能直接以命令方式交互使用,不能嵌入到程序设计语言中以程序方式使用。C、SQL语言既不可以直接以命令方式交互使用,也不可以嵌入到程序设计语言中以程序方式使用,是在一种特殊的环境下使用的语言。D、SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以方式使用。&&&& 一、技术问题部分(数据库部分)1、表空间的管理方式有哪几种?数据字典管理方式本地文件管理方式2、谈谈你对索引的理解?索引是若干数据行的关键字的列表,查询数据时,通过索引中的关键字可以快速定位到要访问的记录所在的数据块,从而大大减少读取数据块的I/O次数,因此可以显著提高性能。3、说说索引的组成?索引列、rowid4、分区表用过么?谈谈分区表的应用?分区表在对表的DML的并行处理上有极大得优势,而且可以一部分设为只读,用在销售记录,医院处方等地方!!5、你对分区表的理解?怎样截断分区表一个分区的记录?一个分区表有一个或多个分区,每个分区通过使用范围分区、散列分区、或组合分区分区的行分区表中的每一个分区为一个段,可各自位于不同的表空间中对于同时能够使用几个进程进行或操作的大型表分区非常有用altertabletable_nametruncatepartitionpartition_6、物理文件有哪几种?控制文件包含了什么信息?1)数据文件2)控制文件3)日志文件包含维护和验证有选举权据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个有选举权据库至少需要一个控制文件7、表空间用完了如何增加?三种种扩展方式:1增加数据文件altertablespacenameadddatafile‘路径’size4M;2扩展数据文件大小alterdatabasedatafile‘路径’resize4M;3把数据文件设为自动增长alterdatabasedatafile‘路径’autoextendonnext1Mmaxsize20M;8、SGA包含几部分?Sharedpool(共享池),DataBaseBufferCache(数据缓冲区)RedoLogBuffer(重做日志缓冲区),LargePool,大池,JAVA池。9、DECODE函数的用法?DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,…,else),表示如果value等于if1时,DECODE函数的结果返回then1,…,如果不等于任何一个if值,则返回else。初看一下,DECODE只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。还可以转化表结构!10、DELETE和TRUNCATE的区别?答:1、TRUNCATE在各种表上无论是&&&&大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提&&&& 交,不能对TRUNCATE使用ROLLBACK命令。3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。4、TRUNCATE不能触发任何DELETE触发器。5、不能授予任何人清空他人的表的权限。6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。7、不能清空父表。11、谈谈你对事务的理解?ORACLE事务从COMMIT、ROLLBACK、连接到数据库或开始第一条可执行的SQL语句时开始,到一条COMMIT、ROLLBACK语句或退出数据库时结束。如果在一个事务中包含DDL语句,则在DDL语句的前后都会隐含地执行COMMIT语句,从而开始或结束一个事务。如果一个事务由于某些故障或者由于用户改变主意而必须在提交前取消它,则数据库被恢复到这些语句和过程执行之前的状态。利用ROLLBACK语句可以在COMMIT命令前随时撤消或回退一个事务。可以回退整个事务,也可以会退部分事务,但是不能回退一个已经被提交的事务。回退部分事务的ROLLBACK命令为:ROLLBACKtosavepoint存储点名存储点是用户放入事务中的标记,用来表示一个可被回退的位置。存储点通过在事务中放入一个SAVEPOINT命令而被插入。该命令的语法是:SAVEPOINT存储点名如果在ROLLBACK语句中没有给出存储点名,则整个事务被回退。12、给表A加一列abc口述?数据库正在应用时应先使数据库处于静默状态再altertableaaddabcvarchar2(10),如果不是就直接用!!13、客户端连接服务器需要修改什么文件?tnsname.ora,listener.ora14、索引重建的概念?说说索引重建的意义?当我们创建索引时,oracle会为索引创建索引树,表和索引树通过rowid(伪列)来定位数据。当表里的数据发生更新时,oracle会自动维护索引树。但是在索引树中没有更新操作,只有删除和插入操作。例如在某表id列上创建索引,某表id列上有值“101”,当我将“101”更新为“110”时,oracle同时会来更新索引树,但是oracle先将索引树中的“101”标示为删除(实际并未删除,只是标示一下),然后再将“110”写到索引树中。如果表更新比较频繁,那么在索引中删除标示会越来越多,这时索引的效率必然降低,所以我们应该定期重建索引。来消除索引中这些删除标记。&&&& 一般不会选择先删除索引,然后再重新创建索引,而是rebuild索引。rebuild在期间,用户还可以使用原来的索引,&&&&并且rebuild新的索引时也会利用原来的索引信息,这样重建索引会块一些。15、你对游标的理解,游标的分类,使用方法?游标是结果集数据中的指针,作用是为遍历结果集时,存储每条记录的结果,1.声明游标,2.打开游标,3.提取游标,4.关闭游标游标for循环显式游标,隐式游标,游标变量!16、存储过程的用法?在存储过程中异常的处理,分类?举两个预定义异常的例子?存储过程:是预编译数据库SQL的集合存储过程是预编译过的,执行时勿须编译,执行速度更快,存储过程封装了一批SQL语句,便于维护数据的完整性与一致性。并且可以多次调用。异常:自定义,预定义,非预定义No_Data_FoundToo_Many_RowsCASE_NOT_FOUND17、谈谈你对分区索引的理解,说说分类和区别?分区表和一般表一样可以建立索引,分区表可以创建局部索引和全局索引。当分区中出现许多事务并且要保证所有分区中的数据记录的唯一性时采用全局索引。1.3.1.局部索引分区的建立:SQL&createindexdinya_idx_tondinya_test(item_id)2local3(4partitionidx_1tablespacedinya_space01,5partitionidx_2tablespacedinya_space02,6partitionidx_3tablespacedinya_space037);Indexcreated.SQL&看的执行计划,从下面的执行计划可以看出,系统已经使用了索引:SQL&select*fromdinya_testpartition(part_01)twheret.item_id=12;ExecutionPlan―――――――――――――――――――0SELECTSTATEMENTOptimizer=CHOOSE(Cost=2Card=1Bytes=187)10TABLEACCESS(BYLOCALINDEXROWID)OF’DINYA_TEST’(Cost=2Card=1Bytes=187)21INDEX(RANGESCAN)OF’DINYA_IDX_T’(NON-UNIQUE)(Cost=1Card=1)Statistics―――――――――――――――――――0recursivecalls0dbblockgets4consistentgets0physicalreads&&&& 0redosize334bytessentviaSQL*Nettoclient309bytesreceivedviaSQL*Netfromclient2SQL*Netroundtripsto/fromclient1sorts(memory)0sorts(disk)2rowsprocessedSQL&1.3.2.全局索引分区的建立全局索引建立时global子句允许指定索引的范围值,这个范围值为索引字段的范围值:SQL&createindexdinya_idx_tondinya_test(item_id)2globalpartitionbyrange(item_id)3(4partitionidx_1valueslessthan(1000)tablespacedinya_space01,5partitionidx_2valueslessthan(10000)tablespacedinya_space02,6partitionidx_3valueslessthan(maxvalue)tablespacedinya_space037);Indexcreated.SQL&本例中对表的item_id字段建立索引分区,当然也可以不指定索引分区名直接对整个表建立索引,如:SQL&createindexdinya_idx_tondinya_test(item_id);Indexcreated.SQL&同样的,对全局索引根据执行计划可以看出索引已经可以使用:SQL&select*fromdinya_testtwheret.item_id=12;ExecutionPlan―――――――――&&&&――――――――――0SELECTSTATEMENTOptimizer=CHOOSE(Cost=2Card=3Bytes=561)10TABLEACCESS(BYGLOBALINDEXROWID)OF’DINYA_TEST’(Cost=2Card=3Bytes=561)21INDEX(RANGESCAN)OF’DINYA_IDX_T’(NON-UNIQUE)(Cost=1Card=3)Statistics―――――――――――――――――――5recursivecalls0dbblockgets10consistentgets0physicalreads0redosize420bytessentviaSQL*Nettoclient309bytesreceivedviaSQL*Netfromclient2SQL*Netroundtripsto/fromclient&&&& 3sorts(memory)0sorts(disk)5rowsprocessed18、创建用户的语句?Createuseruser_nameidentifiedbypassworddefaulttablgrantcre19、谈谈你对实例的理解?Oracle是用实例来进行数据库管理的,实例在用户和orale数据库之间充当中间层的角色。每当在服务器上启动数据库时,就在内存中创建一个oracle实例,即oracle为数据库分配内存和创建并启动一个或多个oracle进程,然后由实例加载并打开数据库,最后由这个实例来访问和控制硬盘中的数据文件。20、触发器中能用COMMIT,为什么?在触发器中不能使用COMMIT;等事务控制语句。因为触发器是事务触发的如果有事务控制语句就会影响到触发它的事务。即连带触发它的语句之前的已经完成的没有提交的语句都要受到影响。这是会影响到数据的一致性的。21、有几种表空间?数据表空间(永久表空间)、临时表空间、撤销表空间22、归档模式与非归档模式?为什么归档模式可以恢复到任意时刻?归档是在重做日志文件被覆盖之前,将该重做日志文件通过复制操作系统文件的方式,保存到指定的位置。保存下来的重做日志文件的集合被称为归档重做日志文件,复制的过程被称为归档。在归档日志(ARCHIVELOG)模式下,ORACLE对重做日志文件进行归档操作。非归档日志(NOARCHIVELOG)模式下,不会对重做日志文件进行归档操作。由于非归档模式不会在覆盖之前保存,这样就造成了数据库在一定时间之前的重做日志文件丢失,也就不能恢复到被覆盖之前。而归档模式在任意时间上都有重做日志文件,故可以恢复到任意时刻。二、技术问题(JAVA部分)1、Struts和Hibernate分别属于持久层,用例层,表示层的那一层?Struts是表示层,Hibernate是持久层。2、Struts里如何体现MVC模式?Html或文件是MVC模式中的视图层ActionForm是MVC模式中的模式层Action是MVC模式中的控制层通过控制层可以对视图层和模式层进行业务逻辑的处理3、用Struts做过那些项目?4、谈谈对Struts的认识?Struts跟Tomcat诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制&&&&。除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,&&&& 或许Struts是一个很好的起点。关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。但是我觉得它虽然还有不少缺点,但它是一种非常优秀的J2EEMVC实现方式,对项目的开发有很大的帮助。5、String在JAVA里是固定长度的吗?为什么可以用”+”连接?String在JAVA中是有固定长度的可以用”+”连接的原因是Java语言提供对字符串串联符号(”+”)和其他对象到字符串的转换的特殊支持。字符串串联是通过StringBuilder(或StringBuffer)类及其append方法实现的。再通过调用StingBuffer中的toString方法,将StringBuffer的对象转换String的对象。6、String和StringBuffer的区别?STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法7、使用过什么集合类型?你一般用什么类?集合类型List,Set,Map一般用Arraylist,Vector,HashMap,HashTable,HashSet,TreeSet8、ArrayList里如何取得对象的长度?通ArrayList中的size()可以取得对象长度。9、事务的4个特性?原子性、一致性、持久性、隔离性。10、Oracle用了多久?char与varchar2的区别?Char是固定长度字符串,varchar2是变长字符串。比如在char(10)和varchar2(10)中插入test字符串那么char(10)类型长度就是10,不足的用空格补齐,而varchar2(10)类型长度就是4。11、Oracle用什么获得字符集?Userenv(‘’)函数SELECTuserenv(‘language’)FROMDUAL;12、查询需要COMMIT吗?插入呢?查询不需要,插入需要,因为做DML操作时需要commit命令确认事务更改。13、在Oracle中你用什么工具执行SQL语句?PLSQLDeveloper,SQLPLUS等数据库面试题11.在一个中,使用哪一个关键字能够除去重复列值?:使用distinct关键字&&&& 2.什么是快照?它的作用是什么?:快照Snapshot是一个文件系统在特定时间里的镜像,对于在线实时数据备份非常有用。快照对于拥有不能停止的应用或具有常打开文件的文件系统的备份非常重要。对于只能提供一个非常短的备份时间&&&&而言,快照能保证系统的完整性。3.解释存储过程和触发器答案:存储过程是一组Transact-SQL语句,在一次编译后可以执行多次。因为不必重新编译Transact-SQL语句,所以执行存储过程可以提高性能。触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。4.SQLServer是否支持行级锁,有什么好处?答案:支持动态行级锁定SQLServer2000动态地将查询所引用的每一个表的锁定粒度调整到合适的级别。当查询所引用的少数几行分散在一个大型表中时,优化数据并行访问的最佳办法是使用粒度锁,如行锁。但是,如果查询引用的是一个表中的大多数行或所有行,优化数据并行访问的最佳办法可以是锁定整个表,以尽量减少锁定开销并尽快完成查询。SQLServe2000通过为每个查询中的每个表选择适当的锁定级别,在总体上优化了数据并发访问。对于一个查询,如果只引用一个大型表中的几行,则数据库引擎可以使用行级锁定;如果引用一个大型表的几页中的多行,则使用页级锁定;如果引用一个小型表中的所有行,则使用表级锁定。5.数据库日志干什么用,数据库日志满的时候再数据库时会出现什么情况。答案:每个数据库都有事务日志,用以记录所有事务和每个事务对数据库所做的修改。6.存储过程和函数的区别?答案:存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表7.事务是什么?:事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:(1)原子性事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。(2)一致性事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如B树索引或双向链表)都必须是正确的。(3)隔离性&&&& 由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事&&&&务执行的状态相同。(4)持久性事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。8.游标的作用?如何知道游标已经到了最后?答案:游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。9.触发器分为事前触发和事后触发,这两种触发有何区别?语句级触发和行级触发有何区别?答案:事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。10.解决死锁的方法有哪些?答案:解决手段一:SQLServer自动检测和消除死锁解决手段二:设置死锁优先级解决手段三:设置锁定超时解决手段四:使用更新锁避免死锁11.提高数据库运行效率的办法有哪些?:在给定的系统硬件和系统软件条件下,提高数据库系统的运行效率的办法是:(1)在数据库物理设计时,降低范式,增加冗余,少用触发器,多用存储过程。(2)当计算非常复杂、而且记录条数非常巨大时(例如一千万条),复杂计算要先在数据库外面,以文件系统方式用C++语言计算处理完成之后,最后才入库追加到表中去。这是电信计费系统设计的经验。(3)发现某个表的记录太多,例如超过一千万条,则要对该表进行水平分割。水平分割的做法是,以该表主键PK的某个值为界线,将该表的记录水平分割为两个表。若发现某个表的字段太多,例如超过八十个,则垂直分割该表,将原来的一个表分解为两个表。(4)对数据库管理系统DBMS进行系统优化,即优化各种系统参数,如缓冲区个数。(5)在使用面向数据的SQL语言进行程序设计时,尽量采取优化算法。总之,要提高数据库的运行效率,必须从数据库系统级优化、数据库设计级优化、实现级优化,这三个层次上同时下功夫。&&&& 12.通俗地理解三个范式:通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最准确的理解):第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。没有冗余的数据库设计可以做到。但是,没有冗余&&&&的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。13.简述存储过程的优缺点优点:1.更快的执行速度:存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度;2.与事务的结合,提供更好的解决方案:当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query和Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用;3.支持代码重用:存储过程可以重复使用,可减少数据库开发人员的工作量;4.安全性高:可设定只有某此用户才具有对指定存储过程的使用权。缺点:1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新GetValue()调用,等等,这时候估计比较繁琐了。2.可移植性差由于存储过程将应用程序绑定到SQLServer,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于RDBMS的中间层中可能是一个更佳的选择。14.主键和唯一索引有什么区别?:相同点:它们都属于实体完整性约束。不同点:(1)唯一性约束所在的列允许空值,但是主键约束所在的列不允许空值。(2)可以把唯一性约束放在一个或者多个列上,这些列或列的组合必须有唯一的。但是,唯一性约束所在的列并不是表的主键列。(3)唯一性约束强制在指定的列上创建一个唯一性索引。在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创建的索引是聚簇索引。(4)建立主键的目的是让外键来引用。(5)一个表最多只有一个主键,但可以有很多唯一键。&&&& 15.简述索引存取的方法的作用和建立索引的原则作用:加快查询速度。原则:(1)如果某属性或属性组经常出现在条件中,考虑为该属性或属性组建立索引;(2)如果某个属性常作为最大值和最小值等聚集函数的参数,考虑为该属性建立索引;(3)如果某属性经常出现在连接操作的连接条件中,考虑为该属性或属性组建立索引;16.简述数据库的设计过程数据库设计分为五个阶段:需求分析:主要是准确收集用户信息需求和处理需求,并对收集的结果进行整理和分析,形成需求说明。概念&&&&结构设计:对用户需求进行综合、归纳、抽象,形成一个与与具体的DBMS无关概念模型(一般为ER模型)。逻辑结构设计:将概念结构设计的概念模型转化为某个特定的DBMS所支持的数据模型,建立数据库逻辑模式,并对其进行优化,同时为各种用户和应用设计外模式。物理结构设计:为设计好的逻辑模型选择物理结构,包括存储结构和存取方法等,建立数据库物理模式。实施和维护:实施就是使用DLL语言建立数据库模式,将实际数据载入数据库,建立真正的数据库。维护阶段是对运行中的数据库进行评价、调整和修改。17.什么是内存泄漏?:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创建对象时,就从堆中为它分配一块内存,使用完后调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。18.什么是基本表?什么是视图?:基本表是本身独立存在的表,在SQL中一个关系就对应一个表。视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表19.(1)(2)(3)(4)试述视图的优点视图能够简化用户的操作视图使用户能以多种角度看待同一数据;视图为数据库提供了一定程度的逻辑独立性;视图能够对机密数据提供安全保护。&&&&20.所有的视图是否都可以更新?为什么?:不是。视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。&&&& 因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更新的。21.哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明。答案:基本表的行列子集视图一般是可更新的。若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的。22.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么?:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。23.在为视图创建索引前,视图本身必须满足哪些条件?(1)视图以及视图中引用的所有表都必须在同一数据库中,并具有同一个所有者(2)索引视图无需包含要供优化器使用的中引用的所有表。(3)必须先为视图创建唯一&&&&群集索引,然后才可以创建其它索引。(4)创建基表、视图和索引以及修改基表和视图中的数据时,必须正确设置某些SET选项(在本文档的后文中讨论)。另外,如果这些SET选项正确,查询优化器将不考虑索引视图。(5)视图必须使用架构绑定创建,视图中引用的任何用户定义的函数必须使用SCHEMABINDING选项创建。(6)另外,还要求有一定的磁盘空间来存放由索引视图定义的数据。24.什么是SQLServer的确定性函数和不确定性函数?答案:只要使用特定的输入值集并且数据库具有相同的状态,不管何时调用,始终都能范围相同结果的函数叫确定性函数。几十访问的数据库的状态不变,每次书用特定的输入值都可能范围不同结果的函数叫非确定性函数。一、技术问题部分(数据库部分)1、表空间的管理方式有哪几种?数据字典管理方式本地文件管理方式2、谈谈你对索引的理解?索引是若干数据行的关键字的列表,查询数据时,通过索引中的关键字可以快速定位到要访问的记录所在的数据块,从而大大减少读取数据块的I/O次数,因此可以显著提高性能。3、说说索引的组成?索引列、rowid4、分区表用过么?谈谈分区表的应用?分区表在对表的DML的并行处理上有极大得优势,而且可以一部分设为只读,用在销售记录,医院处方等地方!!5、你对分区表的理解?怎样截断分区表一个分区的记录?一个分区表有一个或多个分区,每个分区通过使用范围分区、散列分区、或组合分区分区的行&&&& 分区表中的每一个分区为一个段,可各自位于不同的表空间中对于同时能够使用几个进程进行查询或操作的大型表分区非常有用altertabletable_nametruncatepartitionpartition_6、物理文件有哪几种?控制文件包含了什么信息?1)数据文件2)控制文件3)日志文件包含维护和验证有选举权据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个有选举权据库至少需要一个控制文件7、表空间用完了如何增加?三种种扩展方式:1增加数据文件altertablespacenameadddatafile‘路径’size4M;2扩展数据文件大小alterdatabasedatafile‘路径’resize4M;3把数据文件设为自动增长alterdatabasedatafile‘路径’autoextendonnext1Mmaxsize20M;8、SGA包含几部分?Sharedpool(共享池),DataBaseBufferCache(数据缓冲区)RedoLogBuffer(重做日志缓冲区),LargePool,大池,JAVA池。9、DECODE函数的用法?DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,…,else),表示如果value等于if1时,DECODE函数的结果返回then1,…,如果不等于任何一个if值,则返回else。初&&&&看一下,DECODE只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。还可以转化表结构!10、DELETE和TRUNCATE的区别?答:1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。4、TRUNCATE不能触发任何DELETE触发器。5、不能授予任何人清空他人的表的权限。6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。7、不能清空父表。11、谈谈你对事务的理解?ORACLE事务从COMMIT、ROLLBACK、连接到数据库或开始第一条可执行的SQL语句时开始,到一条COMMIT、ROLLBACK语句或退出数据库时结束。如果在一个事务中包含DDL语句,则在DDL语句的前后都会隐含地执行COMMIT语句,从而开始或结束一个事务。如果一个事务由于某些故障或者由于用户改变主意而必须在提交前取消它,则数据库被恢复到这些语句和过程执行之前的状态。利用ROLLBACK语句可以在COMMIT命令前随时撤消或回退一个&&&& 事务。可以回退整个事务,也可以会退部分事务,但是不能回退一个已经被提交的事务。回退部分事务的ROLLBACK命令为:ROLLBACKtosavepoint存储点名存储点是用户放入事务中的标记,用来表示一个可被回退的位置。存储点通过在事务中放入一个SAVEPOINT命令而被插入。该命令的语法是:SAVEPOINT存储点名如果在ROLLBACK语句中没有给出存储点名,则整个事务被回退。12、给表A加一列abc口述?数据库正在应用时应先使数据库处于静默状态再altertableaaddabcvarchar2(10),如果不是就直接用!!13、客户端连接服务器需要修改什么文件?tnsname.ora,listener.ora14、索引重建的概念?说说索引重建的意义?当我们创建索引时,oracle会为索引创建索引树,表和索引树通过rowid(伪列)来定位数据。当表里的数据发生更新时,oracle会自动维护索引树。但是在索引树中没有更新操作,只有删除和插入操作。例如在某表id列上创建索引,某表id列上有值“101”,当我将“101”更新为“110”时,oracle同时会来更新索引树,但是oracle先将索引树中的“101”标示为删除(实际并未删除,只是标示一下),然后再将“110”写到索引树中。如果表更新比较频繁,那么在索引中删除标示会越&&&&来越多,这时索引的查询效率必然降低,所以我们应该定期重建索引。来消除索引中这些删除标记。一般不会选择先删除索引,然后再重新创建索引,而是rebuild索引。rebuild在期间,用户还可以使用原来的索引,并且rebuild新的索引时也会利用原来的索引信息,这样重建索引会块一些。15、你对游标的理解,游标的分类,使用方法?游标是结果集数据中的指针,作用是为遍历结果集时,存储每条记录的结果,1.声明游标,2.打开游标,3.提取游标,4.关闭游标游标for循环显式游标,隐式游标,游标变量!16、存储过程的用法?在存储过程中异常的处理,分类?举两个预定义异常的例子?存储过程:是预编译数据库SQL的集合存储过程是预编译过的,执行时勿须编译,执行速度更快,存储过程封装了一批SQL语句,便于维护数据的完整性与一致性。并且可以多次调用。异常:自定义,预定义,非预定义No_Data_FoundToo_Many_RowsCASE_NOT_FOUND17、谈谈你对分区索引的理解,说说分类和区别?分区表和一般表一样可以建立索引,分区表可以创建局部索引和全局索引。当分&&&& 区中出现许多事务并且要保证所有分区中的数据记录的唯一性时采用全局索引。1.3.1.局部索引分区的建立:SQL&createindexdinya_idx_tondinya_test(item_id)2local3(4partitionidx_1tablespacedinya_space01,5partitionidx_2tablespacedinya_space02,6partitionidx_3tablespacedinya_space037);Indexcreated.SQL&看查询的执行计划,从下面的执行计划可以看出,系统已经使用了索引:SQL&select*fromdinya_testpartition(part_01)twheret.item_id=12;ExecutionPlan―――――――――――――――――――0SELECTSTATEMENTOptimizer=CHOOSE(Cost=2Card=1Bytes=187)10TABLEACCESS(BYLOCALINDEXROWID)OF’DINYA_TEST’(Cost=2Card=1Bytes=187)21INDEX(RANGESCAN)OF’DINYA_IDX_T’(NON-UNIQUE)(Cost=1Card=1)Statistics―――――――――――――――――――0recursivecalls0dbblockgets4consistentgets0physicalreads0redosize334bytessentviaSQL*Nettoclient309bytesreceivedviaSQL*Netfromclient2SQL*Netroundtripsto/fromclient1sorts(memory)0sorts(disk)2rowsprocessedSQL&1.3.2.全局索引分区的建立全局索引建立时global子句允许指定索引的范围值,这个范围值为索引字段的范围值:SQL&createindexdinya_idx_tondinya_test(item_id)2globalpartitionbyrange(item_id)3(4partitionidx_1valueslessthan(1000)tablespacedinya_space01,5partitionidx_2valueslessthan(10000)tablespacedinya_space02,6partitionidx_3valueslessthan(maxvalue)tablespacedinya_space03&&&& 7);Indexcreated.SQL&本例中对表的item_id字段建立索引分区,当然也可以不指定索引分区名直接&&&&对整个表建立索引,如:SQL&createindexdinya_idx_tondinya_test(item_id);Indexcreated.SQL&同样的,对全局索引根据执行计划可以看出索引已经可以使用:SQL&select*fromdinya_testtwheret.item_id=12;ExecutionPlan―――――――――――――――――――0SELECTSTATEMENTOptimizer=CHOOSE(Cost=2Card=3Bytes=561)10TABLEACCESS(BYGLOBALINDEXROWID)OF’DINYA_TEST’(Cost=2Card=3Bytes=561)21INDEX(RANGESCAN)OF’DINYA_IDX_T’(NON-UNIQUE)(Cost=1Card=3)Statistics―――――――――――――――――――5recursivecalls0dbblockgets10consistentgets0physicalreads0redosize420bytessentviaSQL*Nettoclient309bytesreceivedviaSQL*Netfromclient2SQL*Netroundtripsto/fromclient3sorts(memory)0sorts(disk)5rowsprocessed18、创建用户的语句?Createuseruser_nameidentifiedbypassworddefaulttablgrantcre19、谈谈你对实例的理解?Oracle是用实例来进行数据库管理的,实例在用户和orale数据库之间充当中间层的角色。每当在服务器上启动数据库时,就在内存中创建一个oracle实例,即oracle为数据库分配内存和创建并启动一个或多个oracle进程,然后由实例加载并打开数据库,最后由这个实例来访问和控制硬盘中的数据文件。20、触发器中能用COMMIT,为什么?在触发器中不能使用COMMIT;等事务控制语句。因为触发器是事务触发的如果有事务控制语句就会影响到触发它的事务。即连带触发它的语句之前的已经完成的没有提交的语句都要受到影响。这是会影响到数据的一致性的。&&&& 21、有几种表空间?数据表空间(永久表空间)、临时表空间、撤销表空间22、归档模式与非归档模式?为什么归档模式可以恢复到任意时刻?归档是在重做日志文件被覆盖之前,将该重做日志文件通过复制操作系统文件的方式,保存到指定的位置。保存下来的重做日志文件的集合被称为归档重做日志文件,复制的过程被称为归档。在归档日志(ARCHIVELOG)模式下,ORACLE对重做日志文件进行归档操作。非归档日志(NOARCHIVELOG)模式下,不会对重做日志文件进行归档操作。由于非归档模式不会在覆盖之前保存,这样就造成了数据库在一定时间之前的重做日志文件丢失,也就不能恢复到被覆盖之前。而归档模式在任意时间上都有重做日志文件,故可以恢复到任意时刻。二、技术问题(JAVA部分)1、Struts和Hibernate分别属于持久层,用例层,表示层的那一层?Struts是表示层,Hibernate是持久层。2、Struts里如何体现MVC模式?Html或jsp文件是MVC模式中的视图层ActionForm是MVC模式中的模式层Action是MVC模式中的控制层&&&&通过控制层可以对视图层和模式层进行业务逻辑的处理3、用Struts做过那些项目?4、谈谈对Struts的认识?Struts跟Tomcat诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。但是我觉得它虽然还有不少缺点,但它是一种非常优秀的J2EEMVC实现方式,对项目的开发有很大的帮助。5、String在JAVA里是固定长度的吗?为什么可以用”+”连接?String在JAVA中是有固定长度的可以用”+”连接的原因是Java语言提供对字符串串联符号(”+”)和其他对象到字符串的转换的特殊支持。字符串串联是通过StringBuilder(或StringBuffer)类及其append方法实现的。再通过调用StingBuffer中的toString方法,将StringBuffer的对象转换String的对象。6、String和StringBuffer的区别?STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最&&&& 后需要String,那么使用StringBuffer的toString()方法7、使用过什么集合类型?你一般用什么类?集合类型List,Set,Map一般用Arraylist,Vector,HashMap,HashTable,HashSet,TreeSet8、ArrayList里如何取得对象的长度?通ArrayList中的size()可以取得对象长度。9、事务的4个特性?原子性、一致性、持久性、隔离性。10、Oracle用了多久?char与varchar2的区别?Char是固定长度字符串,varchar2是变长字符串。比如在char(10)和varchar2(10)中插入test字符串那么char(10)类型长度就是10,不足的用空格补齐,而varchar2(10)类型长度就是4。11、Oracle用什么获得字符集?Userenv(‘’)函数SELECTuserenv(‘language’)FROMDUAL;12、查询需要COMMIT吗?插入呢?查询不需要,插入需要,因为做DML操作时需要commit命令确认事务更改。13、在Oracle中你用什么工具执行SQL语句?PLSQLDeveloper,SQLPLUS等&&&&笔试题?一、Java笔试题?单项选择题1.Java是从()语言改进重新设计。A.AdaB.C++C.PasacalD.BASIC答案:B2.下列语句哪&&&&一个正确()A.Java程序经编译后会产生machinecodeB.Java程序经编译后会产生bytecodeC.Java经编译后会产生DLLD.以上都不正确答案:B3.下列说法正确的有()A.class中的constructor不可省略&&&& B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行D.一个class只能定义一个constructor答案:C4.提供Java存取数据库能力的包是()A.java.sqlB.java.awtC.java.langD.java.swing答案:A5.下列运算符合法的是()A.&;&;B.&&C.ifD.:=答案:A6.执行如下代码a=0;c=0;do{--c;a=a-1;}while(a&0);后,C的值是()A.0B.1C.-1D.死循环答案:C7.下列哪一种叙述是正确的()A.abstract修饰符可修饰字段、方法和类B.抽象方法的body部分必须用一对大括号{}包住C.声明抽象方法,大括号可有可无D.声明抽象方法不可写出大括号&&&& 答案:D8.下列语句正确的是()A.形式参数可被视为localvariableB.形式参数可被字段修饰符修饰C.形式参数为方法被调用时,真正被传递的参数D.形式参数不可以是对象答案:A9.下列哪种说法是正确的()A.实例方法可直接调用超类的实例方法B.实例方法可直接调用超类的类方法C.实例方法可直接调用其他类的实例方法D.实例方法可直接调用本类的类方法答案:D二、Java笔试题?多项选择题笔试题?1.Java程序的种类有()A.类(Class)B.AppletC.ApplicationD.Servlet2.下列说法正确的有()A.环境变量可在编译sourcecode时指定B.在编译时,所能指定的环境变量不包括classpathC.javac一次可同时编译数个Java源文件D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD3.下列标识符不合法的有()A.newB.$UsdollarsC.1234D.car.taxi&&&& 答案:ACD4.下列说法错误的有()A.数组是一种对象B.数组属于一种原生类C.intnumber=[]={31,23,33,43,35,63}D.数组的大小可以任意改变答案:BCD5.不能用来修饰interface的有()A.privateB.publicC.protectedD.static答案:ACD6.下列正确的有()A.callbyvalue不会改变实际参数的数值B.callbyreference能改变实际参数的参考地址C.callbyreference不能改变实际参数的参考地址D.callbyreference能改变实际参数的内容答案:ACD7.下列说法错误的有()A.在类方法中可用this来调用本类的类方法B.在类方法中调用本类的类方法时可直接调用C.在类方法中只能调用本类中的类方法D.在类方法中绝对不能调用实例方法答案:ACD8.下列说法错误的有()A.Java面向对象语言容许单独&&&&的过程与函数存在&&&& B.Java面向对象语言容许单独的方法存在C.Java语言中的方法属于类中的成员(member)D.Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同答案:ABC9.下列说法错误的有()A.能被java.exe成功运行的javaclass文件必须有main()方法B.J2SDK就是JavaAPIC.Appletviewer.exe可利用jar选项运行.jar文件D.能被Appletviewer成功运行的javaclass文件必须有main()方法答案:BCD笔试题?三、Java笔试题?判断题1.Java中的起始类名称必须与存放该类的文件名相同。()答案:正确2.Unicode是用16位来表示一个字的。()答案:正确3.原生类中的数据类型均可任意转换。()答案:错误&&&&(一)1.Stringstr=newString("abc")在内存中是怎么分配的?答:在运行时才在内存创建一个内存空间。2.Stringstr1="abc"和Stringstr1=newString("abc");这两个的区别是什么?答:Stringstr1="abc"在编译时已经在一个常量池中生成一个拷贝,其中str1中的"abc"是字符串常量。而对于Stringstr1=newString("abc")的话,它是在运行时才创建。这两句在内在中所产生的对象并不是同一个对象。3.GC是什么?有几种算法实现?(这题到现在也不大明白..如果GC是垃圾回收的话.后面为什么要问有几种算法实现呢?)答:??????????&&&& 4.JavaServerPage和servlet的联系与区别5.collection和collections的区别?答:Collection是集合类的上级接口,继承与他的接口主要有Set和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的、排序、线程安全化等操作。=====================================================6.ArrayList和Vector的区别,HashMap和HashTable的区别?答:Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用ArrayList是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销。Hashtable和HashMap的区别:1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:MapCollections.synchronizedMap(Mapm)这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashM&&&&ap即使是在多线程的环境中也是安全的。3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Mapinterface的一个实现。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。================================================7.overload和override的区别?override(重写)1、方法名、参数、返回值相同。2、子类方法不能缩小父类方法的访问权限。3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。&&&& 4、存在于父类和子类之间。5、方法被定义为final不能被重写。overload(重载)1、参数类型、个数、顺序至少有一个不相同。2、不能重载只有返回值不同的方法名。3、存在于父类和子类、同类中。8.char能不能存储汉字?答:javachar型变量是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的(二)1.interface和abstract的区别?(1)关于抽象类和接口,我想还是看具体的要求,什么模式之类的东西都是有了应用才出现的,需求才是第一位的。它们之间的区别是:1.在抽象类中可以实现某些方法,而接口不行2.抽象类是用来extends的,而继承有一定的局限性,只能继承一个类而接口就不同,可以同时实现多个接口这两者也可以联合使用。看具体的要求了。如果有共同方法的那些类它们的共同的方法的实现是一样的,那么可以考虑用抽象类,把方法在抽象类中实现,如果还有一些方法定义相同而实现不同,那么可以考虑定义一个接口,让抽象类来implements这个接口然后各个子类只用继承抽象类即可。(2)接口是“likea”象一个什么东西、或是具备什么功能&&&&抽象类是“isa”是一个什么东西。一个带锁的门,那么一定是“somthingextends门impliment锁”决不能说“带门的锁”(3)经过自己写代码的测试结果:I代表interface,A代表abstractIimplemetsI错IextendsI对IextendsA错(4)一个是接口,一个是虚函数java中的接口相当C++中纯虚函数也就是一个也不实现,具体是在子类中实现,这体现了多态性同时java接口也是java实现多重继承的一个方法&&&& 1.interface的所有函数都是abstract的;2.interface的数据成员默认都是publicstaticfinal的;3.Interface可以被多继承,abstractclass单继承interface是接口,abstractclass是抽象类主要区别:1、接口可以多重implement(实现),抽象类只能单一extends(继承)2、接口内只能是功能的定义,抽象类中可以包括功能的定义和功能的实现。3、接口字段定义默认为publicstaticfinal,而抽象类的则默认为friendly。3.GC是什么?常用的两种方法是什么?(1)GC是垃圾收集的意思(GarbageCollection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。(2)答案:System.gc()用来强制立即回收垃圾,即释放内存。java对内存的释放采取的垃圾自动回收机制,在编程的时候不用考虑变量不用时释放内存,java虚拟机可以自动判断出并收集到垃圾,但一般不会立即释放它们的内存空间,当然也可以在程序中使用System.gc()来强制垃圾回收,但是要注意的是,系统并不保证会立即进行释放内存.gc首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象引用遍历。==========================================================4.线程常用的方法是什么?Thread类的常用方法:staticThreadcurrentThread()//静态方法,通过这个方法可以获得主线程的引用,从而达到操作主线程的目的。staticintactiveCount()//静态方法,获得当前活动线程数量longgetId()//获得当前线程idStringgetName()//获得当前线程名字intgetPriority()//获得优先级booleanisAlive()//当前线程是否处于活动状态。booleanisDaemon()//是否为守护线程voidrun()//run()方法,我们用线程,主要就是对run()方法的重写voidstart()//使该线程开始执行;Java虚拟机调用该线程的run()方法。voidsleep()//使当前线程休眠,以执行其他线程,如Thread.sleep(1000)休眠1秒5.Sleep()和wait()的区别?搞线程的最爱sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后&&&&,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程具有更高的优先级,(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。6.Servlet中forward()和redirct()的区别?&&&& 答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。7.EJB和JavaBean都是什么?答案:javabean是客户端组件,EJB是服务器端组件。其实ejb与javaBean的最根本区别是:分布性。这是关键!!!JavaBean是可复用的组件,对JavaBean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于JavaBean是被容器所创建(如Tomcat)的,所以JavaBean应具有一个无参的构造器,另外,通常JavaBean还要实现Serializable接口用于实现Bean的持久性。JavaBean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。EnterpriseJavaBean相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。8.EJB都有哪些构成?答案:SessionBean,EntityBean,MessageDrivenBean.9.Servlet的生命周期,比CGI有什么优点?web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。Servlet是Java平台上的CGI技术。Servlet在服务器端运行,动态地生成Web页面。与传统的CGI和许多其它类似CGI的技术相比,JavaServlet具有更高的效率并更容易使用。对于Servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。14.存储过程和函数的区别?本质上没区别。&&&&只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少。(一)1.Stringstr=newString("abc")在内存中是怎么分配的?答:在运行时才在内存创建一个内存空间。2.Stringstr1="abc"和Stringstr1=newString("abc");这两个的区别是什么?答:Stringstr1="abc"在编译时已经在一个常量池中生成一个拷贝,其中str1中的"abc"是字&&&& 符串常量。而对于Stringstr1=newString("abc")的话,它是在运行时才创建。这两句在内在中所产生的对象并不是同一个对象。3.GC是什么?有几种算法实现?(这题到现在也不大明白..如果GC是垃圾回收的话.后面为什么要问有几种算法实现呢?)答:??????????4.JavaServerPage和servlet的联系与区别5.collection和collections的区别?答:Collection是集合类的上级接口,继承与他的接口主要有Set和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。=====================================================6.ArrayList和Vector的区别,HashMap和HashTable的区别?答:Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用ArrayList是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销。Hashtable和HashMap的区别:1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:MapCollections.synchronizedMap(Mapm)这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。HashMap是Hashtable的轻&&&&量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Mapinterface的一个实现。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。&&&& ================================================7.overload和override的区别?override(重写)1、方法名、参数、返回值相同。2、子类方法不能缩小父类方法的访问权限。3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。4、存在于父类和子类之间。5、方法被定义为final不能被重写。overload(重载)1、参数类型、个数、顺序至少有一个不相同。2、不能重载只有返回值不同的方法名。3、存在于父类和子类、同类中。8.char能不能存储汉字?答:javachar型变量是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的(二)1.interface和abstract的区别?(1)关于抽象类和接口,我想还是看具体的要求,什么模式之类的东西都是有了应用才出现的,需求才是第一位的。它们之间的区别是:1.在抽象类中可以实现某些方法,而接口不行2.抽象类是用来extends的,而继承有一定的局限性,只能继承一个类而接口就不同,可以同时实现多个接口这两者也可以联合使用。看具体的要求了。如果有共同方法的那些类它们的共同的方法的实现是一样的,那么可以考虑用抽象类,把方法在抽象类中实现,如果还有一些方法定义相同而实现不同,那么可以考虑定义一个接口,让抽象类来implements这个接口然后各个子类只用继承抽象类即可。(2)接口是“likea”象一个什么东西、或是具备什么功能抽象类是“isa”是一个什么东西。一个带锁的门,那么一定是“somthingextends门impliment锁”决不能说“带门的锁”(3)经过自己写代码的测试结果:I代表interface,A代表abstractIimplemetsI错&&&& IextendsIIextendsA&&&&对错&&&&(4)一个是接口,一个是虚函数java中的接口相当C++中纯虚函数也就是一个也不实现,具体是在子类中实现,这体现了多态性同时j&&&&ava接口也是java实现多重继承的一个方法1.interface的所有函数都是abstract的;2.interface的数据成员默认都是publicstaticfinal的;3.Interface可以被多继承,abstractclass单继承interface是接口,abstractclass是抽象类主要区别:1、接口可以多重implement(实现),抽象类只能单一extends(继承)2、接口内只能是功能的定义,抽象类中可以包括功能的定义和功能的实现。3、接口字段定义默认为publicstaticfinal,而抽象类的则默认为friendly。3.GC是什么?常用的两种方法是什么?(1)GC是垃圾收集的意思(GarbageCollection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。(2)答案:System.gc()用来强制立即回收垃圾,即释放内存。java对内存的释放采取的垃圾自动回收机制,在编程的时候不用考虑变量不用时释放内存,java虚拟机可以自动判断出并收集到垃圾,但一般不会立即释放它们的内存空间,当然也可以在程序中使用System.gc()来强制垃圾回收,但是要注意的是,系统并不保证会立即进行释放内存.gc首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象引用遍历。==========================================================4.线程常用的方法是什么?Thread类的常用方法:staticThreadcurrentThread()//静态方法,通过这个方法可以获得主线程的引用,从而达到操作主线程的目的。staticintactiveCount()//静态方法,获得当前活动线程数量longgetId()//获得当前线程idStringgetName()//获得当前线程名字intgetPriority()//获得优先级booleanisAlive()//当前线程是否处于活动状态。booleanisDaemon()//是否为守护线程voidrun()//run()方法,我们用线程,主要就是对run()方法的重写voidstart()//使该线程开始执行;Java虚拟机调用该线程的run()方法。voidsleep()//使当前线程休眠,以执行其他线程,如Thread.sleep(1000)休眠1秒5.Sleep()和wait()的区别?搞线程的最爱sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不&&&& 一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程具有更高的优先级,(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。6.Servlet中forward(&&&&)和redirct()的区别?答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。7.EJB和JavaBean都是什么?答案:javabean是客户端组件,EJB是服务器端组件。其实ejb与javaBean的最根本区别是:分布性。这是关键!!!JavaBean是可复用的组件,对JavaBean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于JavaBean是被容器所创建(如Tomcat)的,所以JavaBean应具有一个无参的构造器,另外,通常JavaBean还要实现Serializable接口用于实现Bean的持久性。JavaBean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。EnterpriseJavaBean相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。8.EJB都有哪些构成?答案:SessionBean,EntityBean,MessageDrivenBean.9.Servlet的生命周期,比CGI有什么优点?web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。Servlet是Java平台上的CGI技术。Servlet在服务器端运行,动态地生成Web页面。与传统的CGI和许多其它类似CGI的技术相比,JavaServlet具有更高的效率并更容易使用。对于Servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。14.存储过程和函数的区别?本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少。&&&& &&&&
上一篇资讯:
下一篇资讯:
文章排行榜

我要回帖

更多关于 mysql 字段约束 的文章

 

随机推荐