bos物流面试题
BOS物流项目问题汇总
1 请描述一下这个系 统?
从两个方面回答,
第一个方面:系统背景及系统概述
本系统是基于B/S架构而设计开发的,是某物流公司的一个后台管理系统,属于物流公司整个ERP平台的一个组成部分。本系统是此物流公司的一个二期改造项目,原来此公司存在一个C/S架构的系统,后来业务不断扩大,所以公司决定进行改造。该系统主要有基础设置、取派、中转、路由、报表几大部分组成。
第二个方面:系统包括的业务模块及主业务流程
本系统包括了:基础设置、取派、中转、路由、报表几大部分组成。
扩展问题:
这个系统你做了哪些模块?
负责系统管理模块、基础设置模块的开发。其他模块没有接触到,所以不太清楚。
2 项目周期是多长?团队人数多少?
整个项目周期大概是一年的时间,其中编码阶段大概有4个多月,团队人数20多个人。
3 说说系统的架构?spring的作用?
n 功能架构:
本系统是基于B/S架构而设计开发的,是某物流公司的一个后台管理系统,属于物流公司整个ERP平台的一个组成部分。本系统是此物流公司的一个二期改造项目,原来此公司存在一个C/S架构的系统,后来业务不断扩大,所以公司决定进行改造。该系统主要有基础设置、取派、中转、路由、报表几大部分组成。
n 技术架构:
本系统采用ssh框架开发(struts2.3.24、spring4.2、hibernate5.0.7),web层使用struts2、持久层采用hibernate5,spring管理web层 的action、业务层的service、持久层的dao。前台使用jQuery EasyUI进行页面展示。
spring的作用:
spring管理web层 的action、业务层的service、持久层的dao,对struts的action采用多例的方式管理,对service和dao采用单例方式。
本系统采用声明式事务控制方式对service层进行事务控制,spring和hibernate整合后, spring在service方法开发执行前创建session,开启事务,方法结束提交事务,关闭session。
spring和shiro进行整合开发,spring管理shiro框架的securityManager、realm等bean,另外spring通过cglib方式生成action的代理对象,实现权限控制。
spring和CXF框架整合开发远程调用接口。
4 项目中如何进行事务管理的?
这个项目的事务管理是通过spring的声明式事务进行管理的,具体做法是使用spring提供的事务注解,为Service创建代理对象,由代理对象进行事务控制。
5 这个系统hibernate是怎么用的?或这个系统持久层如何实现的?
本系统使用hibernate5.0.7 版本。
本系统使用hibernate的QBC和HQL两种方式开发。使用hibernate可以大大简化持久层开发。
本系统对Dao层进行封装,采用泛型封装BaseDao,在spring定义bean的配置中通过BaseDao的构造方法动态获得操作的实体类型,这样做的好处是只需要在系统定义一个BaseDao即可,根据模型的不同在spring的配置文件定义不同的Dao。
6 在开发中是否遇到hibernate延迟加载问题?怎么解决的?
在开发中遇到延迟加载问题了,通过spring的OpenSessionInViewFilter过滤器解决这个问题。但这个还不够,比如在页面中使用easyUI的datagrid展示数据,这时在服务端查询到数据后,需要转为json返回给datagrid,这时如果查询到的对象内部引用了关联对象,而这个关联对象是延迟加载的,就无法转为json,这时就需要使用立即加载策略。
7 在你们开发过程中是否使用到了hibernate自动建表功能?
没有使用到,我们所有的数据表都是通过sql自己创建的。
8 这个项目中是否使用到了hibernate的二级缓存?
没有使用到二级缓存,因为虽然缓存可以起到优化的作用,但我们项目要求的都是实时数据,所以没有使用缓存。
ehcache
9 这个系统struts是怎么用的?
本系统采用模型驱动方式编写action,视图层采用jsp。
开发中封装BaseAction,采用泛型由子类指定具体的模型对象类型。
struts中的所有action对象都交由spring创建。
10 这个项目中是否用到struts2的值栈了?
没有用到值栈,因为整个项目页面列表数据展示,都是基于easyUI中datagrid展示的,发送的都是ajax请求,也就是说在服务端都是返回json数据展示到datagrid中,所以不需要值栈。
11 这个系统UI使用什么框架?都用到jquery easy ui的哪些组件?
系统UI使用Jquery easy UI,及jquery库。
系统框架布局使用layout,系统标签窗口采用tabs,系统菜单使用方accordion,数据列表采用datagrid,
弹出窗口 window
消息提示:messager
菜单:menubutton
下拉框:combobox
12 这个系统的认证和授权是怎么实现的?如何使用shiro的?
本系统使用了Apache Shiro框架完成认证和授权。shiro框架中的对象创建由spring负责创建。
shiro框架共提供了4中权限控制方式,本系统中使用到前3种方式:
1、URL拦截权限控制,通过shiro框架提供的过滤器实现
2、方法注解权限控制,通过为Action创建代理对象实现
3、页面标签权限控制,通过shiro框架提供的标签实现
4、代码级别权限控制,通过在程序中调用shiro的API完成权限控制
你们如何使用shiro?
1、自定义了realm,从数据库查询用户密码和用户的权限信息,为了避免多次查询realm使用ehcache缓存。
2、使用shiro主要是要在shiroFilter中配置过虑规则,哪些可以匿名访问,哪些必须要认证。
认证:applicationcode – subject(login)---securityManger—realm
授权:在realm中获得授权信息
原因:只要是要进行权限校验,每次请求都要经过realm授权的方法,授权方法每次都要查询数据库,效率低。
如果将第一次查询到权限放入缓存中,效率可以搞。Shiro已经跟ehcache整合好,我们只需要进行配置。
13 系统中有导入、导出功能吗?怎么实现的?
系统有导入导出功能,对区域数据实现导入和分区数据实现导出。
使用Apache POI组件完成导入和导出Excel
jxl也可以操作Excel
14 作过接口吗?怎么做的?采用什么技术?
在业务受理、自动分单时,bos系统需要调用物流公司的crm系统获取客户信息。
我参考接口文档进行开发,参考接口文档中的参数定义编写代码。
采用CXF框架实现远程调用,由于接口同步的数据量不大,hessian采用框架定义的二进行协议传输数据,速度很快,本系统采用CXF。
在开发时将服务端的接口拷贝至本系统,在 spring的配置文件中配置代理接口,在本系统的service中直接注入调用,非常方便。
15 你了解的还有哪些接口技术?
对于大数据量传输的,自己的系统之间一般我们就直接使用socket的方式传输了。
对于一些公开的接口(不同公司的系统之间的调用),大多采用http的方式定义接口,对于服务端现在流行使用rest方式,对于客户端我们一般使用httpclient调用服务端。
还有一些接口采用webservice(soap协议),这个我们使用过cxf这个框架开发。
axis
hessian
dubbo
16 你是如何和测试人员配合工作的?
每天定时登录项目管理平台,查看有没有自己名下bug,如果有根据测试人员描述的测试场景进行测试,如果存在bug会及时修改,修改完成将bug提交。如果根据测试人员描述的测试场景进行测试,bug不存在,和测试人员沟通。
如果遇到bug来回驳回,我去现场和测试人员进行沟通,针对测试场景看看双方是否一致。
17 你参与过系统维护吗?系统维护的流程是?
参与过,系统维护流程如下:
18 这个项目开发过程中遇到了哪些问题?
遇到的问题很多,有技术方面的,也有非技术方面的:
1、开发工程师的技术水平参差不齐,有些技术稍差的工程师经常不能按时完成项目经理分配的任务,还需要其他人帮忙,导致项目进度缓慢
2、和测试人员沟通困难,有些时候测试人员会提交一些bug,但在我们开发看来根本就不是bug
3、人员不稳定,如果有人离职,新招进来的人不能立即上手,导致项目推进缓慢
19 从这个项目中你收获了什么?
1、整个项目下来,使自己的技术得到了一定的提升
2、虽然自己只是一个开发工程师,但是可以体会到应该站在更高的层次来看待整个项目
3、意识到沟通的重要性
4、结识了一帮兄弟,一起加班一起奋斗
bos物流面试题的更多相关文章
- BOS物流管理系统-第八天
BOS物流管理系统-第八天-权限系统设计-Shiro 回顾: 两大块业务:基础设置模块,业务派单模块. 两天:权限控制. 拦截器大的范围的.纯登录级别(认证级别)大颗粒的权限控制的一种技术. Shir ...
- BOS物流管理系统-第五天
BOS物流管理系统-第五天-定区管理-WebServcie远程调用 主要内容: 分区设置-导出(分区条件查询后的结果导出为Excel-POI生成Excel和文件下载) 定区管理---定区添加(定区关联 ...
- BOS物流管理系统-第一天
BOS物流管理系统-第一天-系统分析.环境搭建.前端框架 BoBo老师 整体项目内容目标: 对项目概述的一些理解 亮点技术的学习 注意学习方式:优先完成当天代码. 其他内容. 最终: 学到新的技术,会 ...
- JAVAEE——BOS物流项目01:学习计划、搭建环境、主页设计(jQuery EasyUI)
1 学习计划 1.项目概述 项目背景介绍 2.搭建项目开发环境 数据库环境 maven项目搭建 svn环境搭建 3.主页设计(jQuery EasyUI) layout页面布局 accordion折叠 ...
- JAVAEE——BOS物流项目03:学习计划、messager、menubutton、登陆拦截器、信息校验和取派员添加功能
1 学习计划 1.jQuery easyUI messager使用方式 n alert方法 n confirm方法 n show方法 2.jQuery easyUI menubutton使用方式 3. ...
- JAVAEE——BOS物流项目09:业务受理需求分析、创建表、实现自动分单、数据表格编辑功能使用方法和工作单快速录入
1 学习计划 1.业务受理需求分析 n 业务通知单 n 工单 n 工作单 2.创建业务受理环节的数据表 n 业务通知单 n 工单 n 工作单 3.实现业务受理自动分单 n 在CRM服务端扩展方法根据手 ...
- BOS物流项目心得
定区管理 (和分区有何区别) : 区域管理针对自然行政区, 行政区域比较大,不可能让取派员去负责整个行政区域, 需要进行分区,将行政区域细分 ,成为很多小区域(分区), 需要为分区知道取派人员 , 在 ...
- 学习BOS物流项目第九天
1 教学计划 1.业务受理需求分析 a. 业务通知单 b.工单 c.工作单 2.创建业务受理环节的数据表 a.业务通知单 b.工单 c.工作单 3.实现业务受理自动分单 a.在CRM服务端扩展方法根据 ...
- JAVAEE——BOS物流项目05:OCUpload、POI、pinyin4J、重构分页代码、分区添加、combobox
1 学习计划 1.实现区域导入功能 n OCUpload一键上传插件使用 n 将文件上传到Action n POI简介 n 使用POI解析Excel文件 n 完成数据库操作 n 使用pinyin4J生 ...
随机推荐
- PAT 天梯赛 L2-017. 人以群分 【排序】
题目链接 https://www.patest.cn/contests/gplt/L2-017 思路 第一个条件是 人群的规模尽可能接近 那么 N 为偶数的时候 就是 一半 一半 N 为奇数的时候 就 ...
- Linux服务器上的tomcat中部署web项目
首先了解一下下面几个概念,讲得不太准确:1.JVMJVM是class以及jar(实际上就是很多个class压缩在一起)的运行环境,特征就是java和javaw命令,通过这两个命令,你可以执行class ...
- flex 动画笔记
1.不涉及到组件宽度和高度变化的 如果类似showEffect等属性不好使的,直接使用hideEffect.end(); showEffect.play();等这样的用法. 2.涉及到组件宽度和高度变 ...
- 尽量不要在viewWillDisappear:方法中移除通知
1.iOS7新增加了导航控制器侧滑手势,当触发侧滑返回时,会调用系统的viewWillDisappear:方法,取消侧滑返回时又会调用viewWillAppear:方法. 2.在做手势和通知等一系 ...
- [算法]去掉字符串中连续出现的k个0子串
题目: 给定一个字符串str和一个整数k,如果str中正好有k个‘0’字符出现时,把k个连续的‘0’字符去除,返回处理后的字符串. 举例: str=”A00B”,k=2,返回“AB” str=”A00 ...
- JavaWeb -- Session实例 -- 自动登录 和 防止表单重复提交(令牌产生器) MD5码
1. 自动登录 http://blog.csdn.net/xj626852095/article/details/16825659 2. 防止表单重复提交 表单Servlet //负责产生表单 pub ...
- 大话设计模式--命令模式 Command -- C++实现实例
1. 命令模式: 将请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作. 命令模式有点: a. 较容易的设计一个命令队列 b. 在需要的的情况 ...
- C# 多服务器上传 示例
图片服务器 带宽越来越不够用,还有当一台服务器的机房出问题的时候,不影响 整个web,以及 考虑网通电信访问服务器的 速度,所以考虑使用多台 图片 服务器 这个时候要求 图片服务器 内容是同步 的 ...
- 解决微信浏览器video全屏的问题
解决微信浏览器video全屏的问题 在微信浏览器里面使用video标签,会自动变成全屏,改成下面就好了,起码可以在video标签之上加入其他元素. <video id="videoID ...
- C#--父子页面传值、刷新(showModalDialog)
父页面: var obj = new Object(); obj.name="name"; var rtnValue=window.showModalDialog("ch ...