商务综合管理平台-面试问题汇总_第1页
商务综合管理平台-面试问题汇总_第2页
商务综合管理平台-面试问题汇总_第3页
商务综合管理平台-面试问题汇总_第4页
商务综合管理平台-面试问题汇总_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

商务综合管理平台项目问题汇总1.请您介绍一下您的项目? 项目背景介绍:商务综合管理平台是国际物流行业一家专门从事进出口玻璃器皿贸易的公司。业务遍及欧美。随着公司不断发展壮大,旧的信息系统已无法满足公司的快速发展需求,妨碍公司成长,在此背景下,公司领导决定研发商务综合管理平台 功能模块方面进行的介绍:它分三期完成。一期完成仓储管理(包括:采购单、仓库、货物、条形码、入库、出库、退货、盘点、库存、库存上限报警、统计查询)和展会管理(包括:展会管理、出单管理),形成货物统一数字化管理。二期完成货运全流程管理,包括购销合同、出货表统计、出口报运单、HOME装箱单、装箱单、委托书、发票、财务统计等。三期完成决策分析(包括:成本分析图、销售情况统计、重点客户、经营情况同期比对统计、工作绩效),为公司经营决策提供数据支持2.请说说系统架构?系统功能模块方面的结构:系统技术架构:3.是否参与了数据库设计工作,如果参与又是如何进行数据库设计的?参与了数据库的设计工作。主要采用的PD实现数据库建模,主要用到了物理数据模型实现数据库建模,实现数据库建模时采用了三范式与反三范式同时兼顾考虑,目的就是为了更好发挥出系统运行效率。同时在进行数据库设计时还要考虑到表名,字段名及类型选取上的一些问题。在实现优化时考虑到分散计算思想运用,从而极大的提高了系统效率。4.请问项目中使用的Mysql数据库如何实现用户授权?MySql中的用户创建,授权机制与Oracle中方式是非常类似的。具体创建用户的命令:首先使用超级管理员root登录系统其次使用如下创建用户create user zhangsanlocalhost identified by zhangsan;再次对创建的用户进行授权grant all on javaee22.* to zhangsanlocalhost;5.项目中用到了Spring的哪些功能?1.使用了Spring的IOC容器及DI 通过IOC容器实现了对象的统一管理,主要是对web层 的action、业务层的service、持久层的dao进行管理,并且对struts的action采用多例的方式管理,对service和dao采用单例方式 使用了DI来实现注值工作,将对象与对象之间的依赖关系通过配置的方式来表达。2.使用Spring的声明式管理机制实现事务管理 3.使用JdbcTemplate模板机制简化jdbc操作sql代码 4.实现了spring与Shiro安全框架整合5.实现spring与Activiti工作流整合开发6.该项目如何实现数据持久化工作的?使用了hibernate3.6 版本项目中主要使用hibernate来实现数据的持久化工作的,对于数据库的查询主要使用了HQL和SQL。其中对于复杂的统计查询采用了SQL查询方式,从而提高查询效率。系统采用了DAO模式,实现了一个通用的DAO操作类的封装。对于复杂的统计查询,因为涉及到连接查询和子查询及分组查统计查询混合在一起,造成SQL语句相当复杂,此时我采用了jdbcTemplate来执行原生的sql语句,从而使系统的DAO实现了更加完美。7.使用Hibernate时,对于PO的定义规范是什么?8.项目中hibernate的主键是如何生成的?主要用到了Hibernate的UUID和assigned来实现主键的生成。其中主键的生成策略还包括:native:采用本地策略生成Increment:自动实现表中最大id的基础上加1方式生成Identity:自动增长方式,适用于mysql等有自增效果的数据库sequence:oracle数据库特有的,采用序列方式生成9.项目中如何使用Struts2框架的?首先在项目中抽取了一个父类BaseAction,而自己编写的业务Action都是继承自BaseAction的。实现类采用这种方式,很好的做到了业务控制器与Struts2API的解藕,并且可以在BaseAction中提供出一些通用方法,如操作值栈的通用方法。10.项目开发的视图View是如何实现的?项目主要采用了JSP作为视图,也采用了导出Excel报表形式来响应客户端请求。在JSP页面中主要使用了JSTL+EL方式来生成结果视图。这样做主要是套用的FreeMarker的模板技术来实现页面的生成,这样就可以省去很多重复性工作,并且保证页面风格统一。11.项目的页面是如何实现布局的。总体布局采用的是FRAMESET方式进行的。其中对于每个页面又采用了DIV+TABLE+CSS方式进行布局。因为该项目是一个相对传统的项目,所以在后台管理工作还采用了FRAMESET方式进行布局,而目前相对流行的DIV+CSS方式主要用于电商项目和公司门户中。12.请说说项目中为什么采用EL,而不是OGNL?(可删除) 因为OGNL都要结合Struts2标签一起使用,而浏览器对于Struts2标签是不能直接执行的,都要转化为HTML标签,所以影响了执行效率,所以在本次项目中主要采用的是JSTL+HTML来实现显示。13.页面中具有同名框的一组值,框架如何实现封装的?1.String 接收 struts2默认使用逗号+空格进行分隔 : “aaaaaaaaaaa, bbbbbbbbbbbbbb, cccccc”2.Integer,Float,Double,Date类型 id=1, id=2 ,id=3 struts2默认处理方式中,只保留最后一个参数 程序员可以定义数组来接收参数 private Integer id;14.项目中是如何权限系统的?该项目采用了BRAC认证模型实现了权限系统。具体的表结构关系如下:项目中除了实现粗粒度权限功能外,还实现了细粒度权限控制。其中细粒度权限控制主要表现为对系统的数据进一步控制。细粒度权限控制主要是对于表结构进行了调整,使得表结构支持细粒度权限控制。15.项目中如何使用Shiro安全框架的?首先介绍下Shiro它是一个安全框架,用于解决系统的认证和授权问题,同时提供了会话管理,数据加密机制。Shiro与应用程序如何交互的项目中使用Shiro的过程如下:还使用Shiro的缓存机制,具体缓存的实现使用了Ehcache。16.项目中用了ajax+json+zTree实现权限树,如何做到的?首先项目采用了jquery来实现相关的js操作,其中ajax也使用的jquery提供的ajax方法来实现异步请求。在服务器端的json封装采用手动方式进行,并没有使用json-lib或一些类似的工具来进行,因为所封装的结果要求进行对象的比较。当服务器返回结果后就要将json转化为zTree树上的结点,所以调用zTree树的init()方法就可以按要求构造出树。zTree树构造过程:zTreeObj = $.fn.zTree.init($(#jkTree), setting, zNodes); 第一个参数:树展示的位置 第二个参数:一些初始配置 第三个参数:服务器返回的json对象zTreeObj.expandAll(true);/展开所有树节点17.系统的异常是如何处理的?为了使得系统异常得到更好的处理,主要使用了Struts2的异常处理框架来实现异常的处理。首先可以自定义异常处理类。其次编写异常处理的页面,当出现异常就会跳到异常处理页面。再次在Struts2配置文件中,进行相应的异常框架配置。18.介绍一下你在项目中从事的工作?我在项目中参与项目的二期功能模块的开发,其中主要负责购销合同模块的开发。下面对购销合同进行介绍,公司销售和海外客户签订订单(合同),客户订单中的货物,公司就联系这些(多个)厂家来生产,和生产厂家签订合同,这个合同就叫“购销合同”。购销合同的内容主要由三部分组成,购销合同的主信息,和多个货物的信息,和多个附件的信息(包装纸的信息)。(附件实际就是货物)购销合同打印出后,将每张纸交给对应生产厂家的销售代表(公司)购销合同打印要求,可以每页只打印一款货物,也可以打印两款货物。用户可以自己选择。如果每页打印两款货物,必须是同一个生产厂家,如果不是同一个生产厂家,必须另起一页。为了在购销合同查询显示时速度更快,我在进行表结构设计优化时,采用了分散计算思想,表设计中加入了购销合同总金额,货物总数,附件总数三个字段,这样就可以在购销合同查询时,上面所涉及到三个字段的值直接从表中查询出来,而不是集中进行计算,把这样集中计算的工作,分散到每次货物和附件操作过程中,这样就避免了集中计算,从而极大的提高系统运行效率。19.项目中是如何实现报表的?本项目主要采用了Apache的POI实现Excel报表的导出,导出的报表主要有:购销合同、出口报运单、HOME装箱单、装箱单、委托单、发票单、财务报运单。其中最为复杂的是购销合同的导出。下面是针对购销合同打印时的相关问题?1) 是否可以使用模板?否。由于用户的习惯,造成不能直接使用模板。2) 数据和打印代码分离?封装每页数据到map中,封装所有页到list中/填写每页的内容,之后在循环每页读取打印Map pageMap = null;List pageList = new ArrayList();/打印页3) 图片(logo图片和货物图片)如何插入到excel中?工具类中直接封装,直接调用工具类方法poiUtil.setPicture(wb, patriarch, path+make/xlsprint/logo.jpg, curRow, 2, curRow+4, 2);4) 如何实现画线?poiUtil.setLine(wb, patriarch, curRow, 2, curRow, 8);/draw line5) 合并单元格画线?合并单元格,只实现第一个单元格的画线,其他的单元格必须手工补。通过直接创建这个单元格,设置画线的样式即可6) 加人民币前缀?public short rmb2Format(HSSFWorkbook wb) HSSFDataFormat format = wb.createDataFormat();return format.getFormat(¥#,#,#.00); / 设置格式curStyle.setDataFormat(rmb2Format);,代表千位符#,代表数字,如果这个值为0,它又在最前面,它的结果空0,代表,当这位有值时,直接显示值,如果最后一位没有值时显示07) 如何写公式?普通单元格内容,直接写;nCell.setCellType(HSSFCell.CELL_TYPE_FORMULA);nCell.setCellFormula(F+String.valueOf(curRow)+*H+String.valueOf(curRow);8) 如何多行文本自动换行?curStyle.setWrapText(true); / 换行9) 如何实现单元格自适应高度?float height = poiUtil.getCellAutoHeight(printMap.get(Crequest), 12f);/自动高度nRow.setHeightInPoints(height);10) 如何插入一个分页符?if(p0)sheet.setRowBreak(curRow+);/在第startRow行设置分页符11) 审单人增加名称后,验货员不会向后推动?utilFuns.fixSpaceStr(contract.getCheckBy(),26)12) 日期如何转为中文格式?UtilFuns.formatDateTimeCN(UtilFuns.dateTimeFormat(contract.getSigningDate();13) 打印一款货物或者打印两款货物通过printStyle来判断14) 同一个生产厂家的打印在一页上,不同则另起一页在判断厂家前,查询的多个货物信息时,必须先排序,按生产厂家名称。20.如何实现海量数据导出?性能如何? SXSSFWorkbook可以支持百万级别数据的POI 实现原理: 在初始化SXSSFWorkbook这个对象时,可以指定在内存中所产生后的POI导出相关对象的个数(默认为100个),一旦内存中对象的个数达到这个指定值时,就将内存中的这些对象的内容写入磁盘中(xml文件格式),就可以将这些对象从内存中销毁掉,以后只要达到这个值时,都会这样处理。在最终excel导出完成时,也会将写入在xml文件中的内容一起导出。为了使得导出性能的提高,可以采用如下方法:l 加大jdk配置的内存,l eclipse配置的内存l Tomcat配置21.项目中的CodeMachine作用?它的底层是如何实现的?本次项目的装箱单&委托单&发票&财务报运单模块都是采用这种方式来提高开发效率的。CodeMachine可以生成这些模块的po类及映射文件, service,action,jsp页面,及所有的配置文件。这样可以实现开发效率翻倍。那么CodeMachine的实现原理是什么?生成代码的主要原理,就是只是你指定数据库的表,它就可以根据反射得到数据库的元数据,也可以得到ResultSetMetaData,再由它得到相关的列的信息,再通过FreeMarker的模板机制,将读取到的列信息转化为类的属性信息,这样就可以生成相应的类,并且可以你制作的FreeMarker模板来生成JSP页面,所以CodeMachine的底层就是反射、元数据、FreeMarker模板机制。22.系统是如何实现细粒度控制的? 1.自已添加的记录将来自己可以操作。 2.部门经理可以查看当前部门员工所添加的记录 3.部门经理可以查看当前部门及下属部门所有员工添加的记录 4.跨部门跨人员的权限解决方案:一个部门有多个用户,同样一个用户也可以从属于多个部门 5.查看公司所有数据23.系统是如何实现图表报表的?项目使用了amChart+Flash来实现图表制作,早期使用的是XML做为数据来源,新版本中进行调整,使用JSON数据作为数据来源。从数据来源可以看出,将来要使用amChart制作图表时,主要就是把data.xml中的数据替换为从数据库中查询出来的数据就可以了,就会涉及到操作XML文档,常用的XML操作方式有哪些?(JDOM,DOM4J,SAX),用得最多的是DOM4J实现XML文档操作。但是本次项目不使用这些技术,我只是把XML文档也当成是一个普通文件,所以就可以直接使用流的方式,将一个组织好的符合XML结构的字符串直接写入到XML文件中,这样就可以不用再去频繁操作XML文件的结点了。统计查询时因为会出现非常复杂的报表,所以更适合使用SQ

温馨提示

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

评论

0/150

提交评论