8月15日华为面试题(附答案)_第1页
8月15日华为面试题(附答案)_第2页
8月15日华为面试题(附答案)_第3页
8月15日华为面试题(附答案)_第4页
8月15日华为面试题(附答案)_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一 技术问题部分 数据库部分 1 表空间的管理方式有哪几种 数据字典管理方式 本地文件管理方式 2 谈谈你对索引的理解 索引是若干数据行的关键字的列表 查询数据时 通过索引中的关键字可以快速定 位到要访问的记录所在的数据块 从而大大减少读取数据块的 I O 次数 因此可以 显著提高性能 3 说说索引的组成 索引列 rowid 4 分区表用过么 谈谈分区表的应用 分区表在对表的 DML 的并行处理上有极大得优势 而且可以一部分设为 只读 用在销售记录 医院处方等地方 5 你对分区表的理解 怎样截断分区表一个分区的记录 一个分区表有一个或多个分区 每个分区通过使用范围分区 散列分区 或组合分 区分区的行 分区表中的每一个分区为一个段 可各自位于不同的表空间中 对于同时能够使用几个进程进行查询或操作的大型表分区非常有用 alter table table name truncate partition partition name 6 物理文件有哪几种 控制文件包含了什么信息 1 数据文件 2 控制文件 3 日志文件 包含维护和验证有选举权据库完整性的必要信息 例如 控制文件用于识别数据文 件和重做日志文件 一个有选举权据库至少需要一个控制文件 7 表空间用完了如何增加 三种种扩展方式 1 增加数据文件alter tablespace name add datafile 路径 size 4M 2扩展数据文件大小 alter database datafile 路径 resize 4M 3把数据文件设为自动增长 alter database datafile 路径 autoextend on next 1M maxsize 20M 8 SGA 包含几部分 Shared pool 共享池 DataBase Buffer Cache 数据缓冲区 Redo Log Buffer 重做日志缓冲区 Large Pool 大池 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 命令为 ROLLBACK to savepoint 存储点名 存储点是用户放入事务中的标记 用来表示一个可被回退的 位置 存储点通过在事务中放入一个 SAVEPOINT 命令而被插入 该 命令的语法是 SAVEPOINT 存储点名 如果在 ROLLBACK 语句中没有给出存储点名 则整个事务被回 退 12 给表 A 加一列 abc 口述 数据库正在应用时应先使数据库处于静默状态再 alter table a add abc varchar2 10 如果不是就直接用 13 客户端连接服务器需要修改什么文件 tnsname ora listener ora 14 索引重建的概念 说说索引重建的意义 当我们创建索引时 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 Found Too Many Rows CASE NOT FOUND 17 谈谈你对分区索引的理解 说说分类和区别 分区表和一般表一样可以建立索引 分区表可以创建局部索引和全局索引 当分区中出现许多事务并且要保证所有分区中的数据记录的唯 一性时采用全局索引 1 3 1 局部索引分区的建立 SQL create index dinya idx t on dinya test item id 2 local 3 4 partition idx 1 tablespace dinya space01 5 partition idx 2 tablespace dinya space02 6 partition idx 3 tablespace dinya space03 7 Index created SQL 看查询的执行计划 从下面的执行计划可以看出 系统已经使用了索 引 SQL select from dinya test partition part 01 t where t item id 12 Execution Plan 0 SELECT STATEMENT Optimizer CHOOSE Cost 2 Card 1 Bytes 187 1 0 TABLE ACCESS BY LOCAL INDEX ROWID OF DINYA TEST Cost 2 Card 1 Bytes 187 2 1 INDEX RANGE SCAN OF DINYA IDX T NON UNIQUE Cost 1 Card 1 Statistics 0 recursive calls 0 db block gets 4 consistent gets 0 physical reads 0 redo size 334 bytes sent via SQL Net to client 309 bytes received via SQL Net from client 2 SQL Net roundtrips to from client 1 sorts memory 0 sorts disk 2 rows processed SQL 1 3 2 全局索引分区的建立 全局索引建立时 global 子句允许指定索引的范围值 这个范围值为索 引字段的范围值 SQL create index dinya idx t on dinya test item id 2 global partition by range item id 3 4 partition idx 1 values less than 1000 tablespace dinya space01 5 partition idx 2 values less than 10000 tablespace dinya space02 6 partition idx 3 values less than maxvalue tablespace dinya space03 7 Index created SQL 本例中对表的 item id 字段建立索引分区 当然也可以不指定索引分 区名直接对整个表建立索引 如 SQL create index dinya idx t on dinya test item id Index created SQL 同样的 对全局索引根据执行计划可以看出索引已经可以使用 SQL select from dinya test t where t item id 12 Execution Plan 0 SELECT STATEMENT Optimizer CHOOSE Cost 2 Card 3 Bytes 561 1 0 TABLE ACCESS BY GLOBAL INDEX ROWID OF DINYA TEST Cost 2 Card 3 Bytes 561 2 1 INDEX RANGE SCAN OF DINYA IDX T NON UNIQUE Cost 1 Card 3 Statistics 5 recursive calls 0 db block gets 10 consistent gets 0 physical reads 0 redo size 420 bytes sent via SQL Net to client 309 bytes received via SQL Net from client 2 SQL Net roundtrips to from client 3 sorts memory 0 sorts disk 5 rows processed 18 创建用户的语句 Create user user name identified by password default tablespace tablespacename grant create session to username 19 谈谈你对实例的理解 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 是一个很好的起点 关于页面导航 我认为那将是今后的一个发展方向 事实上 这样 做 使系统的脉络更加清晰 通过一个配置文件 即可把握整个系统各 部分之间的联系 这对于后期的维护有着莫大的好处 尤其是当另一批 开发者接手这个项目时 这种优势体现得更加明显 但是我觉得它虽然还有不少缺点 但它是一种非常优秀的 J2EE MVC 实现方式 对项目的开发有很大的帮助 5 String 在 JAVA 里是固定长度的吗 为什么可以用 连接 String 在 JAVA 中是有固定长度的 可以用 连接的原因是 Java 语言提供对字符串串联符号 和 其他对象到字符串的转换的特殊支持 字符串串联是通过 StringBuilder 或 StringBuffer 类及其 append 方法实现的 再通 过调用 StingBuffer 中的 toString 方法 将 StringBuffer 的对象转换 String 的对象 6 String 和 StringBuffer 的区别 STRING 的长度是不可变的 STRINGBUFFER

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论