刘洋老师课前提问汇总

来源:互联网 发布:沙漠靴品牌知乎 编辑:程序博客网 时间:2024/06/10 20:51

项目第一天:

1:什么是MVC结构?
  * M:model模型,表示javabean,用来传递和接收页面的表单参数
  * V:view视图,表现层
  * C:controller控制层,Action

1:在SSH项目中,项目中的事务处理是如何控制的?
  * spring的声明式事务管理,使用注解的方式,在spring容器设置组件的扫描,在Service层配置一个注解@Transcational

2:在SSH项目中,项目中的DAO层是如何封装的?需要每个DAO都重新写同样的方法吗?
  * 封装,将公用的方法提取出去,定义一个公用和公用类,让每个Dao的类都继承公用类,每个Dao的接口都继承公用接口,在每个Dao的接口中和每个Dao的实现类中都定义真实类型,然后在公用的类中定义一个泛型转换

3:在struts和hibernate的项目中,VO对象和PO对象的联系和区别?
  * VO:值对象,表示javabean,用来传递和接收页面的表单参数
  * PO:持久对象,表示javabean,每个属性用来关联数据库表的字段

项目第二天:

1:项目中,运行监控模块是用来处理什么业务逻辑?
 * 用来检测站点运行情况,设备运行情况,并将填写的结果,显示到系统首页,由于追求实时性,每隔10分钟刷新一次
2:项目中,使用进度条了吗?如果使用?你是如何实现的?
 * 用过!使用js,在jsp页面中定义一个table,table中存在2个td,使td分别用不同的颜色控制,每隔1秒刷新一次js方法,改变td的宽度,来改变js的颜色控制
3:项目中,你使用了ckeditor,问下单独用ckeditor能完成文件上传吗?为什么要使用ckeditor?
 * 使用了,不行,由于单独使用ckeditor只能显示文本编辑器,配合ckfinder来使用文件上传,在运行监控中业务人员填写监控报告,让监控报告支持多种文字或者文本的格式,增强监控报告的阅读效果
4:如果你的项目中使用ckeditor,在保存数据的时候多出很多的html标签内容,数据库表的字段长度如果存储不下,怎么办?
 * 在运行监控表中,不要存放真实的文本值,只需要存放1个标识,用指定的标识再查询文本数据表,由于在数据表中存放多条数据(保存的时候大文本的数据分割保存到数据表中),将多条数据进行排序,获取所有的文本内容
5:现在有个需求,让你完成一个excel报表,显示字段的动态导出,你如何设计?
 * 设计表,字段包括导出和未导出,导出和未导出又分为中文和字段名称(英文),在每个字段上存储值的形式如果存在多个字段用#分开,导出和未导出的字段的和是导出excel的所有字段,只需要改变导出和未导出的记录,就可以实现效果,js效果下拉菜单的左右移动

项目第三天:

1:数据字典在系统中的作用是什么,数据库如何设计?
  * 维护系统中基本数据项,在开发和维护的过程中动态的设置系统中基本数据项(相当好多表综合成一张表)

这是表结构:
  * id    数据类型      数据项的值      数据项编号
2:在数据字典编辑的时候,如何使用ajax完成2个Form表单间的跳转的?ajax的核心对象是什么?服务器返回文本数据格式使用ajax引擎的哪个属性?服务器返回XML数据格式使用ajax引擎的哪个属性?
  * 必须存在2个页面(index.jsp和edit.jsp),在index.jsp存在2个表单Form1和Form2,选择Form1中元素的参数,作为访问服务器的参数,调用ajax访问服务器,在服务器进行处理,将处理后的结果返回给eidt.jsp,之后将edit.jsp的全部内容放置到index.jsp的Form2中(innerHTML或html())
  * ajax引擎,XMLHttpRequest对象
  * req.responseText
  * req.responseXML
3:项目中你使用webservice了吗?使用的什么框架?为什么使用webservice?服务端将生成什么格式的文件?
  * 有
  * axis2
  * 保持数据的一致性,总公司发布元数据,分公司调用
  * 后缀wsdl
4:现在让你实现一个带有百分比的进度条,如何实现,简单叙述步骤?
  * 先执行保存的线程,计算一个保存的进度(计算),放置到Session中,再使用ajax开启一个线程,访问一个服务,在页面上控制每隔1秒调用ajax访问的服务,获取Session百分比值,返回到页面上,显示对应的百分比

项目第四天:

1:jquery的ajax常用的有几种写法?语法是什么?
  $.get(url,{},function(data){
 
  });
  $.post(url,{},function(data){
 
  });
  $.ajax({
    type:"post",
    url:"",
    data:{},
    success:function(data){

    }
  })
2:使用struts2开发,如何使用ajax调用json数据的
  (1)struts支持json的插件包引过来
  (2)strut.xml文件中<package extends="json-default">
  (3)在<action>中类型上添加type="json"
3:项目中使用二级缓存了吗?为什么要使用二级缓存,使用二级缓存的哪个缓存,这个缓存需要注意些什么?
 (1)使用了
 (2)提升效率,每次不用查询数据库,直接查缓存,在数据字典中,每次检索数据项,也包括数据项进行转换的时候,频繁查询数据,由于数据字典在上线之后,不会发生变化,将查询获取的数据字典的结果放置到缓存中,下次再查询的时候,直接查询缓存获取
 (3)查询缓存
 (4)要求:频繁读取,不会发生变化的数据
      查询缓存依赖于二级缓存(类级别的二级缓存)
 项目第五天:
1:角色管理模块中,用户和角色是什么关系,角色和权限是什么关系?数据库应该如何设计?
  * 多对多的关系
  * 多对多的关系
  * 设计中间表,中间表的结构联合主键,将多对多分成2个一对多
2:如何实现树型结构菜单显示的数据库设计?
  * 显示数据型结构字段全部在数据库表的字段中设计(jquery的ztree,支持json数据)
  * 子节点id,父节点id,名称。   子节点id和父节点id作为该表的联合主键
3:使用hibernate维护多对多的关系数据库的时候,如何建立关联关系?
   不使用hibernate维护多对多的关系数据库的时候,如何建立关联关系?

  * 使用hibernate表
   2端的对象,建立set集合,在hibernate映射文件中建立many-to-many,服务器启动的时候,自动创建中间表
   操作保存:查询对象(持久对象),将持久对象的集合重新建立关系
  * 不使用hibernate
   手动建立中间表,中间的表字段,设置2个表的联合主键
   操作保存:先删除中间表的数据,组织数据,再创建中间表的数据

项目第六天:

1:验证码和记住我的功能,简单叙述实现过程?
 * 验证码:通过image.jsp生成验证码显示到页面上,登录页面提交填写的验证码,进行验证码的校验,目的防止恶意提交
 * 记住我:当用选择记住我的复选框,勾选后,将登录名和密码保存到Cookie中,目的是方便用户再次登录
2:你们的项目中如何实现粗颗粒权限控制,简单叙述思想即可?
 * 判断session是否存在,在过滤器中进行判断,在访问对应url连接之前先判断是否存在session,如果不存在session说明没有登录,没有登录转发到一个错误页面
3:你们的项目中如何实现细颗粒权限控制,简单叙述思想即可?
 * 目的:对应地址上输入url连接,但是当前登录名没有访问该url的权限,不能访问,要跳转到错误页面
 * (1)先定义注解(mid和pid,表示权限的惟一标识)
 * (2)将2个注解定义访问每个url对应Action类的方法上,Action类的方法对应的2个值(mid和pid),此时表示惟一的方法
 * (3)使用struts2自定义一个拦截器(目的:在访问每一个Action类的方法之前,先进行拦截),在拦截器的方法中,先获取每个Action类的方法,在获取每个方法上定义注解,再获取注解对应的2个惟一标识的值(mid和pid),使用当前登录人角色和mid和pid的值查询角色权限表,判断当前用户是否具有权限访问Action类
  * 如果查询获取到结果,通过拦截器访问目标对象的Action方法
  * 如果没有查询到对应的结果,此时就跳转到错误页面
4:你们的项目中如何实现异常处理和日志备份,简单叙述思想即可?
  * 统一在struts2的拦截器上,进行try..catch,
    * 如果没有抛出异常,调动目标对象的Action,通过return访问对应的页面
    * 如果Dao,Service,Action类抛出异常,在拦截器中统一捕获异常,在catch模块中先使用log4j日志处理记录抛出的异常,打印到日志文件中,统一将错误使用error.jsp进行输出。
5:你们的项目中如何处理异地登录?
  * 在数据库中定义一个字段logonState,每次登录如果正确的话将logonState的值+1,并且存到数据库和Session中
  * 在过滤器中访问url的时候,判断session中的logonState和数据库logonState是否相同
    * 如果相同:放行
    * 不相同:给出提示,在错误页面显示

项目第七天:

1:什么是工作流?你们项目用到什么工作流的框架?这个技术会使用数据库多少张表用作对业务流程数据的存储?
  * 多个人共同完成某个任务,通过计算机程序完成。
  * jbpm4.4
  * 18张表
2:工作流的核心对象是什么?流程定义部署、启动流程实例、任务查询、历史任务查询分别对应哪个Service?
  * 流程引擎(ProcessEngine)
  * 流程定义:processEngine.repositoryService()
    流程实例相关:processEngine.getExecutionService()
    任务相关:processEngine.taskService()
    历史相关:processEngine.historyService()
3:如何查看所有最新版本的流程定义?以及删除所有版本的流程定义?说操作方式即可。
  * (1):查询所有的流程定义,按照版本的升序排列
    (2):使用Map集合存储流程定义(当key值相同的情况下,后一次版本的对象将替换前一次版本的对象),key:流程定义的key,value:流程定义对象
    (3):从Map集合中获取最新版本的流程定义
  * (1):查询所有的流程定义,按照流程定义的key查询,返回List
    (2):遍历集合List,获取部署对象ID,才能按照部署对象ID删除
4:什么流程实例?什么是执行对象?
  * 流程从开始到结束的最大分支(流程实例只有1个)
  * 按照流程定义的规则执行一次的操作(执行对象可以存在多个)
5:什么是流程变量?流程变量可以存放一个javabean对象吗?如果可以,应该配置什么?
  * 在流程执行过程中,用来传递业务参数(只针对当前流程有效)
  * 可以,要求javabean实现java.io.Serireables
项目第八天:

1:工作流中,组任务和个任务的查询一样吗?存放组任务的表是什么
   * 不一样:查询的时候:组任务cadidate  个人任务assignee
   * jbpm4_paticipation,同时任务表中的assignee设置null
2:个人任务分配的3种方式
   * Xxxxx.jpdl.xml设置assignee直接设置用户名
   * Xxxxx.jpdl.xml设置流程变量#{userId},此时userId是流程变量的名称
   * 实现一个接口AssigneeHandler,在类实现的方法中进行设置
3:工作流中活动节点中,decision、fork、join分别表示什么意思
   * decision:判断活动,做判断的类要求实现一个DecisionHandler
   * fork、join:form分,join合

项目第九天:

1:使用struts2文件上传的时候,在Action类中可以接收什么类型的文件?如果获取上传的文件名?文件上传的方法你在项目中用的是什么方法?
  * File类型文件,命名为File upload,struts2将文件先上传到服务器缓存中临时文件(.tmp)
  * 文件名:String uploadFileName,
  * 复制:FileUtils.copyProperty()
    剪切:srcFile.reNameTo(destFile)
2:使用struts2进行文件下载,你在项目中是如何处理的?简单说出步骤即可。
  * 模型驱动中InputStream inputStream属性,提供set和get
  * struts.xml设置result type=stream
  *               <param >设置contenType  contentDispostion(inline,attachment)
                  <param>设置inputName:表示将值栈中inputStream通过struts.xml输出到页面
  * 我们只需要将下载的文件放置到InputStream的流中,将流放置到栈顶的InputStream的属性中

项目第十天:

1:你们的项目中,指定任务的办理人是如何指定的?
  * 指定流程变量(动态指定,通过页面选择任务的办理人,在流程实例启动和任务完成,都可以通过页面选择的任务办理人,来完成任务)
2:jbpm如何实现查看流程图的当前活动节点的显示?说出思想即可。
  * 申请ID,获取申请信息表的详细信息,获取流程实例ID,通过流程实例ID,获取当前流程活动到哪个节点,获取活动节点的坐标,控制css样式,将坐标显示结果在页面中显示(红色矩形框),再将流程图显示到页面上(绝对的位置)

项目第十一天:

 1:你们的项目中,如何实现分页的?
  * ajax,封装一个js
  * 要求在index.jsp页面存在Form1和Form2的表单,使用ajax传递Form1中的参数(这里面存在查询条件),在服务器中进行处理,将处理结果放置到list.jsp中,将list.jsp的内容全部放置到index.jsp中(dom对象:innerHTML,jquery对象:html())
2:你们的项目中,如何导出excel报表,使用什么技术,你觉得导出excel报表的时候,哪里是亮点?
  * poi报表(3.9版本)
  * 亮点:实现excel分页(提供一个算法),分工作表(workbook对象)的sheet对象
          导出excel的时候,添加很多样式,比如标题变红,加粗
          实现1个动态设置,用户选择导出的字段,支持动态字段变化导出
3:你们的项目中,如何实现导入excel功能,使用什么技术,你觉得导入excel报表的时候,哪里是亮点?
  * jxl报表
  * 亮点:数据校验(设备放置在站点是否正确,设备是否是已经购置的成功的设备...)
          将错误显示到页面上,针对到某一行,某一列,如果成功就导入,不成功此时需要修改再导入

0 0
原创粉丝点击