项目

项目描述

纳税服务系统是XX国税局协同办公平台中的一个子系统。纳税服务系统包括移动客户端和后台管理端。

 

1、 客户端

客户端的功能包括会员注册登录、个人信息维护、查询信息、我要咨询、我要投诉、我要预约、查看易告知信息并可填写调查问卷。(客户端包括有android和ios客户端)

注册/登录:用户可以使用手机号注册系统并可以使用动态验证码和静态密码登录;

个人信息维护:用户可以修改名称、头像、单位、密码等个人信息;

查询信息:可以查询信息发布管理模块发布的是发布状态的信息;

我要咨询:注册用户可以在移动端通过填写咨询信息,然后提交到系统的纳税咨询管理中由后台管理员进行处理;如果有处理结果则用户可以查看回复结果;

我要投诉:注册用户可以在移动端通过填写投诉内容,然后提交到系统的投诉受理管理中由后台管理员进行处理;如果有处理结果则用户可以查看回复结果;

我要预约:注册用户可以在移动端通过填写预约事项、预约内容、地点、时间,然后提交预约到系统的服务预约管理中由后台对应事项的处理人员进行处理;如果有处理结果则用户可以查看回复结果;

易告知:可以查看由系统定时发送的催办和催缴税的信息;

调查问卷:可以查看由系统推送的调查问卷和自己填写过的调查问卷内容。

 

2、 后台端

后台端的功能包括会员管理、信息发布管理、纳税咨询管理、投诉受理管理、预约服务管理、易告知管理、服务调查管理。在后台开发中以SSH作为开发框架。在会员管理中利用POI导入大量的初始会员数据和导出系统的会员记录到Excel;在日期输入上选用了WDatePicker作为日期组件高度自定义日期输入功能;灵活使用Struts的各类标签,如复选框标签Checkboxlist将List/Map等集合的数据迭代并显示;充分使用ajax的同步与异步方式进行系统功能处理;巧妙的利用Spring中提供的工具类进行业务逻辑操作,如HibernateDaoSupport,WebApplicationContextUtils。信息发布管理引入兼容性极佳、配置简易的富文本编辑器UEditor来处理系统的多格式文本内容、图表、地图等;熟练使用PowerDesigner工具进行数据库建模并逆向工程开发功能模块;自定义灵活度较高的查询工具类QueryHelper可自由组合查询并相应降低出错机率。在异步获取二级联动Json数据时分别利用输出流直接输出和利用Struts框架自动输出方式实现;在系统的定时任务调度中利用配置和开发使用都方便的Quartz并无缝融入Sping中并精确制定任务的执行时间。在系统的投诉数统计图上充分考虑到移动端Flash显示的局限性而使用跨终端的Fusioncharts来展示系统的2d/3d柱状图、饼图、曲线图、块图等几十种统计图表。

会员管理:可以对手机注册的会员信息进行管理并导入导出;

信息发布管理:在后台端可以添加信息,然后由特定管理人员进行信息审核并发布,发布后的信息可在移动端展示;

纳税咨询管理:管理由移动端用户提交的一些咨询纳税信息的问题并可以在后台端进行回复;

投诉受理管理:管理由移动端用户提交的投诉信息并可以在后台端进行受理回复;自动受理历史待受理的投诉;生成年度投诉数3D统计图表;

预约服务管理:由预约事项和预约服务组成;其中事项对应有特定的处理人,当用户预约了事项后由该事项对应的处理人进行预约受理。预约的受理情况将在移动端可查看;

易告知管理:主要是在后台端做一个定时对批量手机号用户进行信息的推送和告知其纳税信息;易告知的信息类型包含催办和催缴,当系统定时任务到发布时机将自动推送信息给移动端用户;

服务调查管理:可以制定系统的调查问卷;问卷形式主要由单选和多选题构成,当问卷制定并发布后用户可以在移动端填写调查问卷;管理员可以在系统管理中查看某一问卷的统计情况。

项目团队组成

后台开发人员3名;客户端开发人员2名(包含android和ios);测试人员1名。

开发时间与计划

鉴于同学们往往写1年的工作经验;所以项目一在简历中的时间跨度大概可以到4-5个月;周期可以如下分配:

需求调研与分析时间:3周

界面设计、美工与数据库、详细设计:3周

开发:4周

测试:1周

上线部署、需求变更修改:4周

项目开发环境

操作系统:windows server 2008

数据库:Oracle 10g

应用服务器:tomcat/weblogic

开发工具:MyEclipse/Eclipse;Rational Rose;Edraw Max;Power Designer

 

项目职责

Team Leader版本

前期需求收集和整理需求文档;辅助系统设计师设计系统原型;配合美工根据系统原型进行切图;根据需求文档进行详细设计、数据库设计;协调项目组开发人员进行开发。在系统功能上开发了会员管理、信息发布管理、投诉受理管理、预约服务管理,编写客户端调用接口和文档;安排测试计划和整合系统的各个功能模块并编写系统相关文档。

 

非Team Leader版本

参与并完善需求、设计文档中负责开发的功能模块的UML图形和功能描述、进行数据库设计。在开发阶段按照项目组的要求独立完成会员管理、信息发布管理、纳税咨询管理、投诉受理管理、预约服务管理等功能模块的开发与测试。配合开发团队进行联合调试和编写系统相关文档。

 

1      项目面试问题

1、 请描述下你做的项目

纳税服务系统是国税协同办公平台的一个子系统;主要目的是给用户在移动端上可快速查询国税相关信息并可以在后台对发布的信息进行管理。整个系统包括了移动端和后台端:在移动端主要是查看国税局发布的信息、通知、维护个人信息等;而后台管理功能包括:会员管理、信息发布管理、纳税咨询管理、投诉受理管理、预约服务管理、易告知管理、服务调查管理。我做了其中的xxx。。。等模块。

 

2、 结合项目谈谈你对MVC的理解

MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。 

    MVC中的模型、视图、控制器它们分别担负着不同的任务。 

    视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。 

    模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性 

    控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。             

然后根据处理的结果调用相应的视图来显示处理的结果。 

MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。

如在项目中要对应MVC的话:View 对应项目中Jsp,Controler对应Action,Model 对应service+dao层的业务逻辑和持久层的操作。

 

3、 项目中为什么使用SSH

1. 使用Struts是因为struts是基于MVC模式的,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现;struts有着丰富的标签库,能大大提高开发效率。 

2. 使用Hibernate:因为hibernate为Java应用提供了一个易用的、高效率的对象关系映射框架(ORM)。hibernate是个轻量级的持久性框架,功能丰富。 

 3. 使用Spring:因为spring基于IoC(Inversion of Control,反向控制)和AOP构架多层j2ee系统的框架。

 

4、 挑选一个你做的功能说明SSH框架的应用原理

①在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(*-struts.xml)将ActionServlet接收到的Request委派给相应的Action处理。

②在业务层中,管理服务组件的SpringIoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。

③在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

 

结合上面的概述;然后可以把我们做的信息发布管理模块用上述的方式实例化描述一遍。

 

5、 Struts工作原理

-----------------------------------按照Struts工作原理图地说:

1.客户端发出一个指向servlet容器的请求;

2.请求会经过StrutsPrepareAndExecuteFilter过滤器;

3.过滤器和请求将访问struts2的底层框架结构。在web容器启动时,struts2框架会自动加载配置文件里相关参数,并转换成相应的类。

如:ConfigurationManager、ActionMapper和ObjectFactory。ConfigurationManager存有配置文件的一些基本信息,ActionMapper存有action的配置信息。在请求过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。过滤器会通过询问ActionMapper类来查找请求中需要用到的Action。

4.如果找到需要调用的Action,过滤器会把请求的处理交给ActionProxy。ActionProxy为Action的代理对象。ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类。

5.ActionProxy创建一个ActionInvocation的实例。ActionInvocation在ActionProxy层之下,它表示了Action的执行状态,或者说它控制的Action的执行步骤。它持有Action实例和所有的Interceptor。

6.ActionInvocation实例使用命名模式来调用,1.ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor。2. 通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。在调用Action的过程前后,涉及到相关拦截器(intercepetor)的调用。

7. 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。

 

 

---------------------------------通俗地说:

è发送http请求

èWeb服务器(tomcat/weblogic...)

è执行struts核心过滤器StrutsPrepareAndExecuteFilter

è加载struts配置文件中配置信息,找到对应的Action类并实例化

è执行各类拦截器和Action中对应方法

è配置文件中找到返回结果

è转发到具体页面或其它操作

 

6、 Struts有什么优缺点

优点:

    1. 实现MVC模式,结构清晰;

    2. 丰富的struts的标记库,利用好能大大提高开发效率;

    3. 全局结果与声明式异常;

    4. 可使用OGNL进行参数传递

    5. 各个类方便使用的拦截器

 

缺点:

    1. 转到表现层时,需要配置结果页面;页面多了比较繁杂;

    2. 对Servlet的依赖性过强

3. struts标签稍微比el表达式繁重

 

7、 为何使用Spring

Spring是一个轻量级的控制反转(IoC)、面向切面(AOP)、面向接口、事务管理、包容促进其它框架;使系统中用到的其它框架耦合程度大大降低,拓展性强、简单易用好管理。

 

8、 spring在项目中如何充当粘合剂

1、在项目中利用spring的IOC(控制反转或依赖注入),明确地定义组件接口(如UserDAO),开发者可以独立开发各个组件, 然后根据组件间的依赖关系组装(UserAction依赖于UserService,UserService依赖于UserDAO)运行,很好的把Struts(Action)和hibernate(DAO的实现)结合起来;

2、spring的事务管理把hibernate对数据库的操作进行了事务配置

 

9、 描述在系统中如何使用了Spring的事务控制

Spring事务包括编程式事务和声明式事务。在系统中使用了声明式的事务管理是用Spring的AOP来实现的;配置了只读事务和回滚事务(传播行为为REQUIRED)当出现错误后进行回滚操作。在项目中通过aop切入事务到serivce层,这样做能使一次业务逻辑操作如果包括几个数据库操作都控制在一个事务中。

 

10、             Hibernate工作原理及为什么要用

原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory3.打开Session 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory

为什么要用: 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

 

11、             Hibernate在系统中使用的优化策略

Hibernate 对数据的缓存包括两个级:一级缓存,在Session的级别上进行,主要是对象缓存,以其id为键保存对象,在Session的生命期间存在;二级缓存,在SessionFactory的级别上进行,有对象缓存和查询缓存,查询缓存以查询条件为键保存查询结果,在SessionFactory的生命期间存在。默认地,Hibernate只启用一级缓存。

 

关于这个问题答系统使用了Hibernate的二级缓存就好。

 

12、             列举你在开发中常用的Struts标签

property、iterator、if、date、form、a、url、textfiled、textarea、select、radio、checkboxlist、hidden、param

 

13、             Jquery异步获取数据的方式有几种?有何区别?

1、load 载入远程 HTML 文件代码并插入至 DOM 中

2、get

3、post

4、ajax

5、getJSON

6、getScript 通过 GET 方式请求载入并执行一个JavaScript 文件

 

14、             简述UML并说明你使用Rose常于什么情况,画什么图?

Unified Modeling Language (UML)统一建模语言;用于在软件开发各个阶段中用图形的方式描述流程和功能需求;IBM Rational Rose是uml建模工具之一比较多的在需求阶段,常用于画用例图、类图、时序图。

 

15、             请简述导入导出的工具类;并说明你导出过的最大数据量

POI(合并单元格对象和背景色的应用)

 

16、             统计图的实现方式

Fusioncharts 图表采用SVG(可缩放矢量图形)实现,无需Flash;跨终端

 

17、             易告知信息推送方式;如何实现

在后台填写推送信息和推送名单后,系统将自动推送;后台EE开发人员只实现定时的调用由客户端开发人员写的接口推送信息。

 

18、             简述调查问卷的制作

不在你填写的开发功能内的;只需要描述下功能。可以制定调查题目和提供单选和多选两种类型的选项;并可对调查结果进行统计。

 

19、             系统的并发量如何?如何解决大并发量的请求?

系统并发量不大;但有在应用服务器中间件Weblogic上做负载均衡的配置。

 

20、             项目中遇到问题如何解决?

自行解决——网络搜索——团队讨论解决

 

21、             简述你在项目中的开发流程

项目课中的设计和开发都是比较贴近实际开发的,做了的话按照当时的开发情况描述。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值