A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 逆风TO 于 2018-12-11 16:18 编辑

公司名称:西安恪诚电子科技有限公司
公司经营范围:铁路各系统的软件系统开发,研发了一些列的铁路软件服务产品
注册规模:20-99人
公司地址:陕西省西安市雁塔区南三环雁翔路口旺座曲江K座802
人事面试不做整理,正常沟通就行!
技术面试的一些问题整理出来了,希望可以帮到最近面试找工作的小伙伴!

1.之前开发中主要使用 Spring 的什么技术 ?
①. IOC 容器管理各层的组件
②. 使用 AOP 配置声明式事务
③. 整合其他框架.

2.简述 AOP 和 IOC 概念
AOP: Aspect Oriented Program, 面向(方面)切面的编程;
     Filter(过滤器)也是一种 AOP.
     AOP 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming, 面向对象编程) 的补充.
     AOP 的主要编程对象是切面(aspect), 而切面模块化横切关注点.
     
IOC: Invert Of Control, 控制反转. 也成为 DI(依赖注入)
            其思想是反转资源获取的方向. 传统的资源查找方式要求组件向容器发起请求查找资源.
            作为回应, 容器适时的返回资源. 而应用了 IOC 之后, 则是容器主动地将资源推送给它所管理的组件,
            组件所要做的仅是选择一种合适的方式来接受资源. 这种行为也被称为查找的被动形式

3. IOC 容器对 Bean 的生命周期:
①. 通过构造器或工厂方法创建 Bean 实例
②. 为 Bean 的属性设置值和对其他 Bean 的引用
③. 将 Bean 实例传递给 Bean 后置处理器的 postProcessBeforeInitialization 方法
④. 调用 Bean 的初始化方法(init-method)
⑤. 将 Bean 实例传递给 Bean 后置处理器的 postProcessAfterInitialization方法
⑥. Bean 可以使用了
⑦. 当容器关闭时, 调用 Bean 的销毁方法(destroy-method)

4. load()和get()的区别  
①:如果数据库中,没有 OID 指定的对象。通过 get方法加载,则返回的是一个null;通过load加载,则返回一个代理对象,
如果后面代码如果调用对象的某个属性会抛出异常:org.hibernate.ObjectNotFoundException;
②:load 支持延迟加载,get 不支持延迟加载。

5.hibernate 优缺点
①. 优点:
> 对 JDBC 访问数据库的代码做了封装,简化了数据访问层繁琐的重复性代码
> 映射的灵活性, 它支持各种关系数据库, 从一对一到多对多的各种复杂关系.
> 非侵入性、移植性会好
> 缓存机制: 提供一级缓存和二级缓存
②. 缺点:
> 无法对 SQL 进行优化
> 框架中使用 ORM 原则, 导致配置过于复杂
> 执行效率和原生的 JDBC 相比偏差: 特别是在批量数据处理的时候
> 不支持批量修改、删除

6.Struts2 中的默认包 struts-default 有什么作用?
①. struts-default 包是 struts2 内置的,它定义了 struts2 内部的众多拦截器和 Result 类型,
        而 Struts2 很多核心的功能都是通过这些内置的拦截器实现,
        如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。
        当包继承了struts-default包才能使用struts2为我们提供的这些功能。   
②. struts-default 包是在 struts-default.xml 中定义,struts-default.xml 也是 Struts2 默认配置文件。
   Struts2 每次都会自动加载 struts-default.xml文件。  
③. 通常每个包都应该继承 struts-default 包。

7.具体问题:
①. 简述下你的项目.
I.   整体介绍,大致说明下项目所实现的功能、多少人、用了多少时间、什么技术、什么数据库
CRM 项目 - 客户关系管理系统。
3 个人做了 1 年。50 个人月。 30 个人月左右
SpringMVC、Spring、Shiro、Oracle
II.  介绍自己实现了哪些功能模块
主要负责 "系统权限管理" 和 "营销管理" 模块.
②. 项目有什么亮点 ?
I.   全程注解
II.  SpringMVC 对比 Struts2 使用注解开发更便捷。而且在处理 Aajx, 文件上传、下载也更方便
III. 使用 Shiro 处理权限部分。相对于之前使用的 SpringSecurity 更容易上手。且配置也方便。而且支持方法级别的权限。
IV.  使用 Spring Data 做数据库层,提高了开发效率。
③. 项目中遇到困难,怎么办 ?
I.  如果是业务问题:问同事 -> 问项目经理, 由项目经理解决 -> 有时候也直接和产品经理沟通.
II. 技术问题:自己解决:Debug 测试, 查看部分源代码 -> 百度、Google -> 问技术较好的同事 -> 项目经理 -> 把问题记录下来,有时间整理
④. 项目用到了哪些技术 ? 或者说用到了哪些框架 ?
SpringMVC、Spring、JPA & SpringDATA、Shiro、Quartz、jQuery
⑤. 在该项目中有哪些提高或思考(不仅是技术上可能也包括团队上) ?
I.   新技术的引入:第一次使用 SpringMVC 和 Shiro。相比 Struts2 和 SpringSecurity 更轻量级,使用也更顺手。
            虽然开始时不是很适应。所以不能排斥新技术
II.  感觉时间安排的还不是很好。后期项目周期比较急,所以在和产品团队的沟通上有些问题。(因为需求总会发生修改)
⑥. 你在项目中的角色 ? 或者说你都做了什么 ?
I. 研发、测试、新技术问题的汇总和解决。

141 个回复

正序浏览
作者棒棒哒!!!
回复 使用道具 举报
1098018910 发表于 2018-12-14 17:36
感谢分享感谢分享~~~~~~~

应该的,努力加油~
回复 使用道具 举报
小西西哦 发表于 2018-12-14 14:56
66666666666666666666666666666666

应该的,努力加油~
回复 使用道具 举报
哦嗨呦 发表于 2018-12-14 10:14
顶!!!!!!!

应该的,努力加油~
回复 使用道具 举报
回复 使用道具 举报

应该的,努力加油~
回复 使用道具 举报

应该的,努力加油~
回复 使用道具 举报
独上兰舟 发表于 2018-12-13 18:44
66666666666666666666666666

应该的,努力加油~
回复 使用道具 举报

应该的,努力加油~
回复 使用道具 举报

应该的,努力加油~
回复 使用道具 举报
760486198 发表于 2018-12-13 18:34
666666666666666666666666666666

应该的,努力加油~
回复 使用道具 举报
kdhdjdj 发表于 2018-12-13 16:21
666666666666666666666666666

应该的,努力加油~
回复 使用道具 举报

应该的,努力加油~
回复 使用道具 举报
1467584 发表于 2018-12-13 16:02
666666666666666666666666666666

应该的,努力加油~
回复 使用道具 举报

应该的,努力加油~
回复 使用道具 举报

应该的,努力加油~
回复 使用道具 举报

应该的,努力加油~
回复 使用道具 举报
小公举 发表于 2018-12-13 14:59
感谢楼主的分享    哈哈哈

应该的,努力加油~
回复 使用道具 举报

应该的,努力加油~
回复 使用道具 举报
SharkSSB 发表于 2018-12-13 13:19
谢谢楼主,辛苦了...........

应该的,努力加油~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马