Java高级程序员面试题
分类:Java面试题 热度:

  1.你认为项目中最重要的过程是那些?
 
  分析、设计阶段尽量找出进度的优先级
 
  2.如果给你一个4-6人的team,怎么分配?
 
  挑选一技术过硬的人作为我的替补。其它人平均分配任务,每周进行全面的任务分配,每个人领取一周的工作量
 
  ,每天汇报进度。
 
  3.简述软件开发文档?
 
  需求分析、概要设计、详细设计、操作手册、测试计划
 
  4.你认为一个项目如何才正确?
 
  是企业利益最大化。
 
  5.你经常读那些书?
 
  Java编程思想Java模式人月神话
 
  6.springmvc的工作原理?
 
  客户端请求提交到DispacherServlet
 
  由DispacherServlet控制器查询HandlerMapping,找到处理请求的Controller
 
  Controller调用业务逻辑处理后,返回ModelAndView
 
  DispacherServlet查询视图解析,找到ModelAndView指定的视图
 
  视图负责将结果显示到客户端
 
  7.springmvc和struts2的区别?
 
  机制:springmvc的入口是servlet,struts2的入口是filter
 
  性能:springmvc会比struts2快一点。springmvc是基于方法设计,struts2是基于类,每次发一次请求都会实例一个action,每个Action都会被注入属性。
 
  参数传递:struts2是在接受参数的时候,可以采用属性来接收参数,这家说明可以让多个方法共享
 
  拦截器机制:struts2有自己的interceptor机制,springmvc用的是独立的AOP方式,strtus2的配置文件还是比springmvc大,springmvc使用简洁,springMVC比struts2开发效率要高.
 
  8.struts2工作原理?
 
  客户端初始化一个执行servlet的请求
 
  这个请求经过一系列的过滤器,被FilterDispatcher调用,询问ActionMapper来决定是否调用Action
 
  FilterDispatcher把请求的处理交给ActionProxy
 
  ActionProxy通过ConfiguractionManager询问相关的配置文件,找到需要的Action类
 
  ActionProxy创建ActionInvocation的实例
 
  ActionInvocation调用Action前后的拦截器
 
  Action执行完毕后,根据struts.xml配置文件找到对应的视图页面
 
  9.Hibernate工作原理?
 
  读取并解析配置文件
 
  创建SessionFactory
 
  打开Session
 
  创建事务:transaction
 
  持久化操作
 
  提交事务
 
  关闭Session
 
  关闭SessionFactory
 
  10.为什么要用spring?
 
  spring能够很好的和各大框架整合
 
  spring通过IOC容器管理了对象的创建和销毁工厂模式
 
  在使用hiberna,mybatis的时候,不用每次都编写提交的事务的代码,可以使用spring的AOP来管理事务AOP其实就是一个动态代理的实现
 
  声明式事务和编程式事务
 
  11.mybatis的优缺点?
 
  优点:SQL写在XML中,便于统一管理和优化
 
  提供映射标签,支持对象和数据库的orm字段关系映射
 
  可以对SQL进行优化
 
  缺点:SQL工作量大
 
  mybagtis移植姓不好
 
  不支持级联
 
  12.谈谈SSH整合?
 
  struts(表示层)+spring(业务层)+hibernate(持久层)
 
  struts是一个表示层的框架,主要用于接收请求,分发请求。struts其实属于MVC中的VC层次的
 
  hibernate是一个持久层的框架,主要负责与关系数据库的操作
 
  spring是一个业务层的框架,是一个整合的框架,能够很好的黏合表示层和持久层。
 
  13.maven是什么?有什么作用?
 
  是一个项目管理、构建工具
 
  作用:帮助下载jar寻找依赖,帮助下载依赖热部署、热编译
 
  14.WEB前端优化?
 
  减少HTTP请求的数量(合并css、js、图片)
 
  利用浏览器的缓存机制
 
  利用GZIP压缩机制:只针对文本类资源有效
 
  把CSS文件放在HTML开头
 
  把javascript文件放在HTML结尾
 
  避免CSS表达式(判断浏览器)
 
  使用javascript压缩
 
  减少DNS查找
 
  避免重定向
 
  使用ajax
 
  15.安全性测试
 
  利用安全性测试技术,找到潜在的漏洞
 
  16.事务隔离级别(4种)
 
  Serializable(串行化):一个事务在执行过程中完全看不到其他事物对数据库所做的更新(事务执行的时候不允许别的事务并发执行,事务只能一个接着一个地执行,而不能并发执行)
 
  RepeatableRead(可重复读):一个事务在执行过程中可以看到其它事务已经提交的新插入的记录,但是不能看到其它事务对已有记录的更新
 
  ReadCommited(读已提交数据):一个事务在执行过程中可以看到其它事务已经提交的新插入的记录,而且能看到其它事务已经提交的对已有记录的更新。
 
上一篇:Java面试之SpringMVC面试题 下一篇:17年阿里Java高级面试题
猜你喜欢
热门排行
精彩图文
  • Java线程池的作用
    Java线程池的作用
    在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建
  • 你能不能谈谈,java GC是在什么时候,对什么东西
    你能不能谈谈,java GC是在什么时候,对什么东西
    在什么时候: 1.新生代有一个Eden区和两个survivor区,首先将对象放入Eden区,如果空间不足就向其中的一个survivor区上放,如果仍然放不下就会引发一次发生
  • ThreadLocal(线程变量副本)
    ThreadLocal(线程变量副本)
    Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量。 采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,
  • 线程池的种类,区别和使用场景
    线程池的种类,区别和使用场景
    一个线程从被提交(submit)到执行共经历以下流程: 线程池判断核心线程池里是的线程是否都在执行任务,如果不是,则创建一个新的工作线程来执行任务
  • Java编程,打印昨天的当前时刻
    Java编程,打印昨天的当前时刻
    public class YesterdayCurrent{ public void main(String[] args){ Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1); System.out.println(cal.getTime()); } }