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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 逆风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 个回复

倒序浏览
感谢分享~
回复 使用道具 举报
棒棒的分享
回复 使用道具 举报
感谢分享~感谢分享~感谢分享~感谢分享~感谢分享~
回复 使用道具 举报
                           
回复 使用道具 举报
6666666666666666
回复 使用道具 举报
666666666666666666666
回复 使用道具 举报
感谢分享
回复 使用道具 举报
回复 使用道具 举报
辛苦分享!!!!
回复 使用道具 举报
6666666666666
回复 使用道具 举报
666666666666666666666
回复 使用道具 举报
666666666666666666666
回复 使用道具 举报
666666666666666666666666666666666
回复 使用道具 举报
666666
回复 使用道具 举报
6666666666666666666666666666666666666666
回复 使用道具 举报
感谢分享感谢分享~~~~~~~
回复 使用道具 举报
回复 使用道具 举报
格子衫真的是程序员的标配
回复 使用道具 举报

感谢分享~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马