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

下载本文档

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

文档简介

1 / 21 架面试经典问题 1、写出你熟悉的开源框架以及各自的作用 (项目中为什么使用 答:框架: 要用于数据持久化;封装了 提供了一个易用的、高效率的对象关系映射框架; 控制反转能起到解耦合的作用; 要用于请求处理的流程控制; 基于 式的 ,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现; 能灵活运用,则能大大提高开发效率。 示层) +务层) +久层) 关 2、简述 说下 简述: 发 用程序的开放源码的 采用 计模式的应用构架。 如下的主要功能: 一 将用户的请求发送到相应的 21 对象。 二 ,并且在 提供关联支持,帮助开发员创建交互式表单应用。 三 过 性、国际化的提示和消息。 流程: 在 用 启 动 时 就 会 加 载 初 始 化,把它们存放到各种配置对象当收到一个客户请求时 ,将执行如下流程 . (1)检索和用户请求匹配的 如果不存在 ,就返回请求路径无效信息 ; (2)如果 例不存在 ,就创建一个把客户提交的表单数据保存到 (3)根据配置信息决定是否需要表单验证 就调用 方法 ; (4)如果 方法返回 返回一个不包含 象 , 就表示表单验证成功 ; (5)果相应的 就先创建这个实例 ,然后调用 3 / 21 方法 ; (6)方法返回一个 (7)象指向 件生成动态网页 ,返回给客户 ; 3、 M: 在 ,模型由 件组成 ,用来实现程序的业务逻辑部分 . C: 是业务的代理 ,在 V: 架中的视图主要由 在 签和自定义标签来表现模型组件中的数据进行简单的处理。 际上是一个遵循了特殊约定的 4、 区别? a、 : 4 / 21 求 继承一个基类。 以是简单的 象或者(都会)继承类 b、线程模式 因为仅有一个 单例策略限制了 做的事情 ,并且开发时特别小心。 必须是线程安全的或同步的。 每一个请求产生一个实例 ,因此没有线程安全问题。 c、 赖 赖于 为当一个 调 用 时 传递给 允许 果需要 ,然可以访问初始的 但是 ,其他的元素减少或者消除了直接访问 必要性。 d、可测性 测试 一个主要问题是 使得测试要依赖于容器 )。一个5 / 21 第三方扩展: 供了一套 以通过初始化、设置属性、调用方法 来测试 ,“ 依赖注入 ” 也使得测试更容易。 5、 何实现国际化 以下以两国语言 (中文,英文 )为例: 1. 在工程中加入 2. 编辑 ,在其中加入要使用国际化的信息 , 例如: 3. 创建英文资源文件 . 创建临时中文资源文件 5. 对临时中文资源文件进行编码转换。可以使用插件 ,也可以在 . 在 6、 架的数据验证可分为几种类型? 表单验证(由 理):如果用户没有在表单中输入姓名,就提交表单,将生成表单验证错误 业务逻辑验证(由 如果用户在表单中输入的姓名为 “,按照本应用的业务规则,不允6 / 21 许向 “ 打招呼,因此将生成业务逻辑错误。 7、简述 1、当用户提交了 单, 。 2、接下来 架会调用 方法进行表单验证。 3、如果 方法返回的 象为 者不包含任何 象,就表示没有错误,数据验证通过。 4、 如果 包含 象,就表示发生了验证错误, 架会把 象保存到 围内,然后把请求转发到恰当的视图组件,视图组件通过标签把 围内的 示用户修改错误。 8、简单叙述 作用 1、 是一种 了具有一些 常规方法,还包含一些特殊的方法,用于验证 2、 架利用 进行 件之间表单数据的传递。 3、 件接受到的用户输入的表单数据保存在 ,把它传递给 21 组件, 件可以对 的数据进行修改 件使用 签读取修改后的 新设置 单。 9、 缺点 优点: 1. 实现 式,结构清晰 ,使开发者只关注业务逻辑的实现 . 2有丰富的 ,如能灵活动用,则能大大提高开发效率 3. 页面导航 使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。 4. 提供 . 5. 数据库链接池 管理 6. 支持 点 一、 转到展示层时,需要配置 果有十个展示层的 要配置十次 且还不包括有时候目录、文件变更,需要重新修改 意,每次修改配置之后,要求重新部署整个项目,而 21 器,还必须重新启动服务器 二、 二、 需是 仅仅允许一个实例去处理所有的请求。所以 个就引起了线程安全的问题 。 三、 测试不方便 . 样它的测试依赖于 元测试也很难实现。不过有一个 以实现它的单元测试。 四、 类型的转换 . 所有的数据都作为 型,它可以使用工具 它的转化都是在 别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。 五、 对 依赖性过强 . 有它摆脱不了 器。 六、 前端表达式语言方面 成了 以它主要使用 表达式语言来获取数据。可是 索引属性方面处理显得很弱。 七、 对 行的控制困难 . 建一个果想控制它的执行顺序将会非常困难。甚至你要9 / 21 重新去写 实现你的这个 功能需求。 八、 对 行前和后的处理 . 理时候是基于 难在 九、 对事件支持不够 . 在 ,实际是一个表单 或 换一句话说:在 对应一个事件, 比是一 种粗粒度的事件 关 1、 架的认识(工作原理) 一个轻量级的持久层开源框架 ,它是连接 用程序和关系数据库的中间件 ,负责 象和关系数据之间的映射 . 部对 负责 因为它封装了所有的数据访问细节 ,使得业务逻辑层可以专注于实现业务逻辑 . 它是一种优秀的 射工具 ,提供了完善的对象关系映射服务 ,开发过程不依赖容器 ,灵活性非常大 ,可以无缝集成到任何一个 2、 为什么要用 0 / 21 1. 封装了 化了很多重复性代码。 2. 简化了 使开发更对象化了。 3. 移植性好 ,支持各种数据库 ,如果换个数据库只要在配置文件中变换配置就可以了 ,不用改变 4. 支持透明持久化 ,因为 没有实现任何接口 ,没有侵入性。所以说它是一个轻量级框架。 3、缓存 : 存 :被称为 第一级缓存 存 : 被称为 第二级缓存 它是线程安全的 ,是重量级的 . 它需要一个很大的缓存 ,用来存放预定义的 句以及映射元数据等 . 4、对象的 3 个状态 瞬时:一个实体通过 作符创建后,没有和 也没有手动赋值过该实体的持久化标识(持久 化标识可以认为映射表的主键)。 此时该实体中的任何属性的更新都不会反映到数据库表中。 11 / 21 持久化:当一个实体和 建了关系, 并获取了持久化标识,而且在 此时针对该实体任何属性的更改都会直接影响到数据库表中一条记录对应字段的更新, 也即与对应数据库表保持同步。 脱管 :当一个实体和 建了关系,并获取了持久化标识, 而此时 生命周期结束,实体的持久化标识没有被改动过。 针对该实体的任何属性的修改都不会及时反映到数据库表中。 5、性能问题 在批操作性能和 你要熟悉 否则不但性能低下,还可能导致 档中的 提到, in 也就是说在某些性能瓶颈的地方考虑使用硬编码12 / 21 6、 者的区别 ? 们必须遵守复杂的 范 ,强迫必须满足特定的规范 . 目前 ,对于复杂的域模型 ,器提供的对象 力有限 供了完善的对象 然是一种可以移植的组件 ,但是实际上却受到很大的限制 ,因为各个产商生产 它们使用的对象 元数据各不相同 ,使得 能顺利的从一个 器移植到另一个 器当中 以无缝集成到任何一个 现业务逻辑的代码和访问数据库的代码混杂在一起 ,使程序结构不清晰 ,可读性差 7、 1不存在对应记录 时表现不一样 2),等到真正用到对象的内容才会发出 3会延迟 13 / 21 无论是 会首先查找缓存(一级缓存),如果没有,才会去数据库查找,调用 方法,可以强制清除 8、 如何延迟加载 ? 1. 迟加载实现: a)实体对象 b)集合( 2. 供了属性的延迟加载功能 当 查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 9、如何对 1. 使用双向一对多关联,不使用单向一对多 2. 灵活使用单向一对多关联 3. 不用一对一,用多对一取代 4. 配置对象缓存,不使用集合缓存 5. 一对多集合使用 对多集合使用 . 继承类使用显式多态 7. 表字段要少,表关联不要怕多,有二级缓存 10、 核心类是什么 ,它们的相互关系是什么 ?重要的方法是什么 ? 口 :配置 据其启动14 / 21 建 象 ; 口 :初始化 当数据存储源的代理 ,创建 象 ,线程安全的 ,意味着它的同一个实例可 以被应用的多个线程共享 ,是重量级、二级缓存 ; 口 :负责保存、更新、删除、加载和查询对象 ,是线程不安全的 ,避免多个线程共享同一个 轻量级、一级缓存 ; q= 口 :管理事务 ; 口 :执行数据库的查询。 关 1、 理解 一个轻量级的容器 ,非侵入性的框架 提供 念的实现方式 ,提供对持久层 , 事 务 的 支 持 , 对 当 前 流 行 的 一 些 框 架(提供了与它们的相整合的方案 . 使用 们能够减少类之间的依赖性和程序之15 / 21 间的耦 合度 ,最大程度的实现松耦合 ,使程序更加灵活 ,可扩展性更强 . 文翻译为 ” 反转控制 ,”;” 依赖注入 ”指的是:我们不必自己在程序代码中维护对象的依赖关系 ,而是通过一个 置文件 ,将类的属性和实例悄悄的注入到类里面 使得类和类之间可以方便的切换 (通过接口 ). 这种设计方式的思想表现为 :高层模块不应该依赖低层模块 ,而是模块都必须依赖于抽象 而是依赖于抽象接口 而是容器给我们所有想要的对象 . 另一个重要的方面是支持 中文翻译是 :面向切面编程 ,也称为面向问题编程 对面向对象编程( 补充, 面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。 程序运行角度考虑程序的结构,提取业务处理过程的切面, 静态的抽象, 动态的抽象,是对应用执行过程中的步骤进行抽象,从而获得步骤之间的逻辑划分。 架具有的两个特征: 2、 解 16 / 21 除了提供 释外,还定义了几个拥有特殊语义的注释,它们分别是: 目前的 本中,这 3 个注释和 等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层( )相对应。虽然目前这 3 个注释和 比没有什么新意,但 在以后的版本中为它们添加特 殊的功能。所以,如果 用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 分层中的类进行注释,而用 那些比较中立的类进行注释。 在 一个稍大的项目中,通常会有上百个组件,如果这些组件采用 义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。 我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了 解的类,并把这些类纳入进 的作用 和在 于标注业务层组件, 于标注控制层组件(如 的, 于标注数据访问组件,即 件, 17 / 21 指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。 3、 优点都有哪 些? ,实现了软件各层之间的解耦 事务管理,消息服务等 术,利用它很容易实现如权限拦截,运行期监控等功能 加快应用的开发 ,如 ,代 码的污染极低 ,并不强制应用完全依赖于 发者可以自由选择 部分或全部 4、 面如何配置数据库驱动? 18 / 21 使用 ” 数据源来配置数据库驱动。 5、 ? 一个它在你的 省情况下, 它会在 。 你可以通过定义一个元素名字为 ”来改变 例如下: 、 面重要的几个名词概念解释 切面( 一个关注 点的模块化,这个关注点可能会横切多个对象。事务管理是 用中一个关于横切关注点的很好的例子。 在 ,切面可以使用通用类(基于模式的风格) 或者在普通类中以 解( 格)来实现。 连接点( 在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。 在个连接点 总是 代表一个方法的执行。 通过声明一个 ( 主体部 分获得连接点信息。 19 / 21 通知( 在切面的某个特定的连接点( 执行的动作。通知有各种类型,其中包括“、 “和 “等通知。 通知的类型将在后面部分进行讨论。许多 架,包括 是以拦截器做通知模型, 并维护一个以连接点为中心的拦截器链。 切入点( 匹配连接点( 断言。通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行(例如,当执行某个特定名称的方法时)。 切入 点表达式如何和连接点匹配是 省使用 引入( (也被称为内部类型声明( 。声明额外的方法或者某个类型的字段。 许引入新的接口(以及一个对应的实现)到任何被代理的对象。 例如,你可以使用一个引入来使 口,以便简化缓存机制。 目标对象( 被一个或者多个切面( 通知( 对象。也有人把它叫做 被通知( 对象。 既然 通过运行时代理实现的,这个对象永远是一个 被代理( 对象。 理( 来实现切面契约( 包括通知方法执行等功20 / 21 能)。 在 。 注 意 : 新 引 入 的 基 于 模 式( 格和 解风格的切面声明,对于使用这些风格的 用户来说,代理的创建是透明的。 织入( 把切面( 接到其它的应用程序类型或者对象上,并创建一个被通知( 对象。 这些可以在编译时(例如使用 类加载时和运行时完成。 其他纯 架一样,在运行时完成织入。 通知的类型: 前置通知( 在某连接点( 前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。 返回后通 知( 在某连接点( 常完成后执行的通知:例如,一个方法没有抛出任何异常,

温馨提示

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

评论

0/150

提交评论