转 Java高级程序员面试题

1.你认为项目中最重要的过程是那些?javascript

分析、设计阶段  尽可能找出进度的优先级css

2.若是给你一个4-6人的team,怎么分配?html

挑选一技术过硬的人做为个人替补。其它人平均分配任务,每周进行全面的任务分配,每一个人领取一周的工做量前端

,天天汇报进度。java

3.简述软件开发文档?mysql

需求分析、概要设计、详细设计、操做手册、测试计划jquery

4.你认为一个项目如何才正确?ajax

 是企业利益最大化。spring

5.你常常读那些书?sql

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经过Configuraction Manager询问相关的配置文件,找到须要的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(串行化):一个事务在执行过程当中彻底看不到其余事物对数据库所作的更新(事务执行的时候不容许别的事务并发执行,事务只能一个接着一个地执行,而不能并发执行)

Repeatable Read(可重复读):一个事务在执行过程当中能够看到其它事务已经提交的新插入的记录,可是不能看到其它事务对已有记录的更新

Read Commited(读已提交数据):一个事务在执行过程当中能够看到其它事务已经提交的新插入的记录,并且能看到其它事务已经提交的对已有记录的更新。

Read Uncommitted(读未提交数据):一个事务在执行过程当中能够看到其它事务没有提交的新插入的记录的更新,并且能看其它事务没有提交到对已有记录的更新

17.MYSQL存储引擎(4种)

 MyISAM它不支持事务,也不支持外键,尤为是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本均可以使用这个引擎来建立表。

每一个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,可是扩展名分别为:.frm(存储表定义)     ,YD(MYData,存储数据)  ,  MYI(MYIndex,存储索引),InnoDB,InnoDB存储引擎提供了具备提交、回滚和崩溃恢复能力的事务安全。可是对比MyISAM的存储引擎,InnoDB写的处理效率差一些而且会占用更多的磁盘空间以保留数据和索引。

1)自动增加列2)外键约束

MEMORY

memory使用存在内存中的内容来建立表。每一个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问很是快,由于它到数据是放在内存中的,而且默认使用HASH索引,可是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。

MERGE

 merge存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须彻底相同,MERGE表中并无数据,对MERGE类型的表能够进行查询、更新、删除的操做,这些操做其实是对内部的MyISAM表进行操做。

18.事务传播特性

PROPAGATION_REQUIRED -- 支持当前事务,若是当前没有事务,就新建一个事务。这是最多见的选择。 
PROPAGATION_SUPPORTS -- 支持当前事务,若是当前没有事务,就以非事务方式执行。 
PROPAGATION_MANDATORY -- 支持当前事务,若是当前没有事务,就抛出异常。 
PROPAGATION_REQUIRES_NEW -- 新建事务,若是当前存在事务,把当前事务挂起。 
PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操做,若是当前存在事务,就把当前事务挂起。 
PROPAGATION_NEVER -- 以非事务方式执行,若是当前存在事务,则抛出异常。 
PROPAGATION_NESTED -- 若是当前存在事务,则在嵌套事务内执行。若是当前没有事务,则进行与PROPAGATION_REQUIRED相似的操做。 

1. PROPAGATION_REQUIRED: 若是存在一个事务,则支持当前事务。若是没有事务则开启

2. PROPAGATION_SUPPORTS: 若是存在一个事务,支持当前事务。若是没有事务,则非事务的执行

3. PROPAGATION_MANDATORY: 若是已经存在一个事务,支持当前事务。若是没有一个活动的事务,则抛出异常。

4. PROPAGATION_REQUIRES_NEW: 老是开启一个新的事务。若是一个事务已经存在,则将这个存在的事务挂起。

5. PROPAGATION_NOT_SUPPORTED: 老是非事务地执行,并挂起任何存在的事务。

6. PROPAGATION_NEVER: 老是非事务地执行,若是存在一个活动事务,则抛出异常

7. PROPAGATION_NESTED:若是一个活动的事务存在,则运行在一个嵌套的事务中. 若是没有活动事务, 

19.TCP协议(传输控制协议Transmission Control Protocol )

创建连接:三次握手(1.给对方拨号 2.喂,您好,请问是哪位 3 我是小刘)

关闭连接:四次挥手保证可靠

20.shiro 是什么

Apache Shiro 是一个强大易用的java安全框架,提供了认证、受权、加密和会话管理等功能。

认证 :验证用户来核实他们的身份

受权:会话管理

21.  项目技术

前台:面向的客户

前端:css div js jquery 

后端:springmvc spring mybatis

使用的优化技术:

          1.页面静态化(Freemarker)

          2.缓存

                  2.1 页面缓存(OSCache)

                  2.2 分布式缓存(memcached)

          3. 图片分离(服务器)

          4.负载均衡(解决高并发终极策略)

后台:(管理对象)

前端:css html js jquery 

后端:springmvc spring  mybatis

数据库:mysql

图片分离框架:jersey

22.什么RESTful(表现层状态转化)架构?

(1)每个URI表明一种资源;

(2)客户端和服务器之间,传递这种资源的某种表现层;

(3)客户端经过四个HTTP动词,对服务器端资源进行操做,实现"表现层状态转化"。

以上内容只作了简单总结以及引导,具体内容你们能够根据本身的状况详细总结

相关文章
相关标签/搜索