ssh框架常见面试问题_第1页
ssh框架常见面试问题_第2页
ssh框架常见面试问题_第3页
ssh框架常见面试问题_第4页
ssh框架常见面试问题_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1 / 28 架常见面试问题 原理: 1. 读取并解析配置文件 2. 读取并解析映射信息,创建 . 打开 . 创建事务 . 持久化操作 6. 提交事务 7. 关闭 . 关闭 什么要用: * 对 问数据库的代 码做了封装,大大简化了数据访问层繁琐的重复性代码。 * 一个基于 主流持久化框架,是一个优秀的 很大程度的简化 * 用 不是字节码增强程序来实现透明性。 * 性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2 / 28 如何延迟加载 ? * 迟加载实现: a)实体对象 b)集合( * 供了属性的延迟加载功能 当 查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 怎样实现类之间的关系 ?(如:一对多、多对多的关系 ) 类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置 文件中的 说下 缓存机制 * 内部缓存存在 又叫一级缓存,属于应用事物级缓存 * 二级缓存: a)应用及缓存 b)分布式缓存 条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键3 / 28 数据 c) 第三方缓存的实现 查询方式 * 属性查询 * 参数查询、命名参数查询 * 关联查询 * 分页查询 * 统计函数 如何优化 * 使用双向一对多关联,不使用单向一对多 * 灵活使用单向一对多关联 * 不用一对一,用多对一取代 * 配置对象缓存,不使用集合缓存 * 一对多集合使用 对多集合使用 继承类使用显式多态 * 表字段要少,表关联不要怕多,有二级缓存撑腰 作机制?为什么要使用 工作机制: 工作流程 : 在 用 启 动 时 就 会 加 载 初 始 化4 / 28 ,把它们存放到各种配置对象当收到一个客户请求时 ,将执行如下流程 . (1)检索和用户请求匹配的 如果不存在 ,就返回请求路径无效信 息 ; (2)如果 例不存在 ,就创建一个把客户提交的表单数据保存到 (3)根据配置信息决定是否需要表单验证 就调用 方法 ; (4)如果 方法返回 返回一个不包含 象 , 就表示表单验证成功 ; (5)果相应的 就先创建这个实例 ,然后调用 方法 ; (6)方法返回一个 (7)象指向 件生成动态网页 ,返回给客户 ; 5 / 28 为什么要用: 术的出 现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架, 基于 发的应用由 3 类组件构成:控制器组件、模型组件、视图组件 在 置文件中配置具体的错误提示,再在方法具体调用。 说下 设计模式 式 : 用程序启 动时就会加载并初始化户提交表单时,一个配置好的 被填入表单相应的数据, 据 ,如果需要就调用 验证后选择将请求发送到哪个 果 存在,先创建这个对象,然后调用 方法。 从 象中获取数据,完 成业务逻辑,返回一个 象,件, 象指定的 成动态的6 / 28 网页,返回给客户。 单例模式 厂模式 ): 定义一个基类 =实现基类方法(子类通过不同的方法) =定义一个工厂类(生成子类实例) =开发人员调用基类方法 理模式 ) 作机制及为什么要用 ? ,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 ,找到处理请求的 ,会返回一个 ,找到 为什么用: 7 / 28 开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 ,公共服务 (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。 许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如 单词 倒置 所表明的,像反 过来的 有使用一堆抽象工厂、服务定位器、单元素( 直接构造( 每一个对象都是用 其协作对象构造的。因此是由容器管理协作对象( 使一个 是一 好的地方是它有助于您替换对象。有了 要用 性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。 网友自出的几道题 1、 简述你对 理解,描述一下 实现 几种方式。 2、 括: 定义 8 / 28 3、 简单描述 不同之处,整合 种最好,为什么? 4、 的 和 的区别 5、 多种 单描述在 方法,并结合事务管理。 如何优化 ? 量让 快定位数据,不要让 该走索引 ,把数据量大的表排在 前面 用的字段不要,已经对返回结果的控制,尽量返回少量数据 2.在 每个表中各取几个字段 ,也就是说查询出来的结果集并没有一个实体类与之对应 ,如何解决这个问题 ? 解决方案一,按照 数据取出数据,然后自己组 决方案二,对每个表的 构造函数,比如表一要查出 个字段,那么有一个构造函数就是 ,然后在 面就9 / 28 可以直接生成这个 。具体怎么用请看相关文档,我说的不是很清楚。 ()和 ()的区别 ,并返回与之对应的实体对象。其区别在于: 如果未能发现符合条件的记录, 法返回 法永远直接返回实体类。 法可以充分利用内部缓存和二级缓存中的现有数据,而 没有发现对应数据,将越过二级缓存,直接调用 成数据读取。 经过的过程: 首先, 维持了两级缓存。第一级缓存由例维护,其中保持了 前所有关联实体的数据,也称为内部缓存。而第二级缓存则存在于次,由当前所有由本 造的 于性能考虑,避免无谓的数据库访问, 调用数据库查询功能之前,会先在缓存中10 / 28 进行查询。首先在第一级缓存中,通过实体类型和 行查找,如果第一级缓存查找命中,且数据状态合法,则直接返回。 之后, 记录中进行查找,如果 “记录中存在同样的查询条件,则返回 “记录了当前 能查询到有效数据的查询条件(相当于一个查询黑名单列表)。如此 一来,如果 一个无效的查询条件重复出现,即可迅速作出判断,从而获得最佳的性能表现。 对于 法而言,如果内部缓存中未发现有效数据,则查询第二级缓存,如果第二级缓存命中,则返回。 如在缓存中未发现有效数据,则发起数据库查询操作( 如经过查询未发现对应记录,则将此次查询的信息在 “中加以记录,并返回 根据映射配置和 到的 建对应的数据对象。 将其数据对象纳入当前 级缓存)。 执行 (如果有对应的 将数据对象纳入二级缓存。 11 / 28 如果数据对象实现了 口,则调用数据对象的 法。 返回数据对象。 主键生成机制 1) 键由外部程序负责生成,无需 与。 2) 过 hi/法实现的主键生成机制,需 要额外的数据库表保存主键生成历史状态。 3) 似,通过 hi/法实现的主键生成机制,只是主键历史状态保存在 用于支持 4) 键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加 1作为主键。这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态 ,不同实例可能生成同样的主键,从而造成主键重复异常。因此,如果同一数据库有多个实例访问,此方式必须避免使用。 5) 2 / 28 采用数据库提供的主键生成机制。如 6) 用数据库提供的 制生成主键。如的 7) 据底层数据库自行判断采用种作为主键生成方式。 8) (编码后以长度 32 的字符串表示)作为主键。 9) ,只是生成的主键未进行编码(长度 16)。在某些数据库中可能出现问题(如 10) 用外部表的字段作为主键。一般而言,利用。 这 10中生成 较常用 ,把标识符生成的权力交给 理 用操作同一个数据库 ,甚至同一张表的时候 28 推荐使用 赖底层数据库实现 ,但是数据库必须支持自动增长 ,当然针对不同的数据库选择不同的方法 可以选择用 另外由于常用的数据库,如 ,都提供了易用的主键生成机制( 段或者 我们可以在数据库提供的主键生成机制上,采用 主键生成方式。 不过值得注意的是,一些数据库提供的主键生成机制在效率上未必最佳,大量并发 据时可能会引起表之间的互锁。数据库提供的主键生成机制,往往是通过在一个内部表中保存当前主键状态(如对于自增型主键而言 ,此内部表中就维护着当前的最大值和递增量),之后每次插入数据会读取这个最大值,然后加上递增量作为新记录的主键,之后再把这个新的最大值更新回内部表中,这样,一次作可能导致数据库内部多次表读写操作,同时伴随的还有数据的加锁解锁操作,这对性能产生了较大影响。因此,对于并发 求较高的系统,推荐采用, 指 定*,它们的相互关系是什么 ?重要的方法是什么 ? q= 数据表映射关系主要有什么 类型 控方,外键的关系有谁控制 15 / 28 主控方,外键是由它控制的 被控方,外键与它没关系 要想实现主控方的控制必须将被控方作为主控方的属性 联 主表增从表增 主表修从表修 主表删从表删 迟 下将所有的内容取出,不延时 (常用 ) 取出部分内容,其余内容动态去取 通过 作用是什么 c=(); /设置条件 (“ 字段名 ”,” 值对象 ”) = 16 / 28 /排序 (“ 字段名 ”) /分页 (1)/从第 2行开始提取 (5)/返回 5行 生时不需要 () c=( 象的使用 1 个或多个属性查询 : (” l=(); i=0;i )(i); 17 / 28 分组 : “),by by 取值与属性一样 配置的查询 ,在 * ( 联接 1 ”as ” :将多的放到 性中,得出的结是 一个, 联接 2 “as ”: 得出的对象 ,对 1 子查询 : ”as ) )1 何实现数据表映射的继承关系 1、两个表,子类重复父类的属性。 2、一个表,子类父类共用一个表 18 / 28 3、两个表,子类引用父类的主键,享用公共的字段或属性。 批量删除 (“ ”; (); 动 手动写 将对象的值一个一个取出传到 ,不能直接传入一个对象。 回的是一个 从 一行一行、一个字段一个字段的取出,然后封装到一个对象中,不直接返回一个对象。 特点 :半自 动化 手动写 接传入一个对象 接返回一个对象 自动 不写 动封装 接传入一个对象 接返回一个对象 19 / 28 离对象)可以传递到任何层直到表现层而不是用任何 然后你还可以重新把游离对象赋给另外一个 三种状态 瞬时态 ( 持久态 (脱管态(处于持久态的对象也称为 瞬时对象和脱管对象也称为 瞬时态 由 “ 女 ”); 如果没有变量对该对象进行引用,它将被 拟机回收。 瞬时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系,在 通过 或 方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变成持久化对象。 持久态 处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识。如果是用 方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已20 / 28 被删除,该对象不再与数据库的记录关联 。 当一个 或 、 之后,持久对象变成脱管对象,此时持久对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在 持久对象具有如下特点: 1. 和 例关联; 2. 在数据库中有与之关联的记录。 脱管态 当与某持久对象关联的 持久对象转变为脱管对象。当脱管对象被重新关联到 再次转变成持久对象。 脱管对象拥有数据库的识别值,可通过 、等方法,转变成持久对象。 脱管对象具有如下特点: 1. 本质上与瞬时对象相同,在没有任何变量引用它时, 2. 比瞬时对象多了一个数据库记录标识值。 1. 哪几种查询数据的方式 3 种: y 生通过 立) 2. 谈谈 作用 21 / 28 是说关系的两端都来维护关系。 比如 一个中间表 护。 Gp)i 如果 那么关系由另一端 护,就是说当插入 ,不会操作(中间表)。只有 入或删除时才会触发对中间表的操作。所以两边都 是不对的,会导 致任何操作都不触发对中间表的影响;当两边都 或默认时,会导致在中间表中插入两次关系。 3. 说说 和 的区别, 和 的区别。 方法可以实现 的功能,但会多些步骤,具体如下: 如果对象在该 进行操作;对象的标识符属性 (数据库中不存在或者是个暂时 的值,调用 方法保存它;如果 上皆不符合则调用 更新之。 ,并返回与之对应的实体对象。22 / 28 其区别在于: 如果未能发现符合条件的记录, 法返回 法会抛出一个 二级缓存中的现有数据,而 没有发现对应数据,将越过二级缓存,直接调用 成数据读取。 作原理及为什么要用? 原理: 建 什么要用: 1. 对 问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. 一个基于 主流持久化框架,23 / 28 是一个优秀的 现。他很大程度的简化 3. 用 射机制,而不是字节码增强程序来实现透明性。 4. 为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2 1. 迟加载实现: a)实体对象 b)集合( 2. 供了属性的延迟加载功能 当 查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 3 怎样实现类之间的关系 ?(如:一对多、多对多的关系 ) 类与类之间的关系主要体现在表与表之 间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的 4 说下 缓存机制 24 / 28 1. 内部缓存存在 又叫一级缓存,属于应用事物级缓存 2. 二级缓存: a) 应用及缓存 b) 分布式缓存 条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据 c) 第三方缓存的实现 5 查询方式 1、 属性查询 2、 参数查询、命名参数查询 3、 关联查询 4、 分页查询 5、 统计函数 6 如何优化 使用单向一对多 多对一取代 存,不使用集合缓存 25 / 28 对多集合使用 . 继承类使用显式多态 7. 表字段要少,表关联不要怕多,有二级缓存撑腰 7 作机制?为什么要使用 工作机制: 工作流程 : 在 用 启 动 时 就 会 加 载 初 始 化 ,把

温馨提示

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

评论

0/150

提交评论