转 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通过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动词,对服务器端资源进行操作,实现"表现层状态转化"。
以上内容只做了简单总结以及引导,具体内容大家可以根据自己的情况详细总结
转 Java高级程序员面试题的更多相关文章
- Java高级程序员面试题
1.你认为项目中最重要的过程是那些? 分析.设计阶段 尽量找出进度的优先级 2.如果给你一个4-6人的team,怎么分配? 挑选一技术过硬的人作为我的替补.其它人平均分配任务,每周进行全面的任务分配 ...
- Java高级程序员(5年左右)面试的题目集
Java高级程序员(5年左右)面试的题目集 https://blog.csdn.net/fangqun663775/article/details/73614850?utm_source=blogxg ...
- 对java高级程序员有益的十本书
英文原文:http://www.programcreek.com/2013/08/top-books-for-advanced-level-java-developers/ java语言是当今最受欢迎 ...
- Java初中级程序员面试题宝典
Java基础部分 &与&&区别? &和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假:但是&&当第一个条件不成之后,后面的条件都 ...
- 成为java高级程序员需要掌握哪些
section 1 1.Core Java,就是Java基础.JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类,比如 ...
- Andrid 高级程序员面试题
==========================20150518===================================一. Acitvity组件 1. 生命周期&kille ...
- php开发面试题---php高级程序员需要掌握的一些知识
php开发面试题---php高级程序员需要掌握的一些知识 一.总结 一句话总结: 还是需要多多接触架构师的知识,比如这里说的微服务,还有需要php服务端的知识来解决web端的不足,比如Swoole 1 ...
- Java程序员面试题集(136-150)(转)
转:http://blog.csdn.net/jackfrued/article/details/17740651 Java程序员面试题集(136-150) 摘要:这一部分主要是数据结构和算法相关的面 ...
- Java程序员面试题集(71-85)(转)
转:http://blog.csdn.net/jackfrued/article/details/17566627 Java程序员面试题集(71-85) 摘要:这一部分主要包括了UML(统一建模语言) ...
随机推荐
- 英雄无敌3开源引擎vcmi的编译安装
TAGS: Heroes3, vcmi, opensourceDATE: 2013-08-23 vcmi是什么? vcmi 是经典的 SLG 英雄无敌3 的开源游戏引擎.原来的英雄无敌3只能在Wind ...
- 【AtCoder】AGC005 F - Many Easy Problems 排列组合+NTT
[题目]F - Many Easy Problems [题意]给定n个点的树,定义S为大小为k的点集,则f(S)为最小的包含点集S的连通块大小,求k=1~n时的所有点集f(S)的和取模92484403 ...
- 20155315 2016-2017-2 《Java程序设计》第五周学习总结
教材学习内容总结 第8章 异常处理 1.使用try...catch 与C语言中程序流程和错误处理混在一起不同,Java中把正常流程放try块中,错误(异常)处理放catch块中. 如果父类异常对象在子 ...
- VUE项目用hbuilder 打包为手机APP
一.测试项目是否可以正确运行 指令:npm run dev 首先我们先建立一个vue的项目,本人用的是vue-cli随便建立的,然后运行项目 不必非得是像我这样的,这一步的目的只是测试一下咱们的 ...
- 2016.6.18——Implement strStr()
Implement strStr() 本题收获: 1.考虑多种边界条件. 2.haystack.size() size_type 是无符号的,即为正数 在32位系统上定义为 unsigned int ...
- 与JavaWeb有关的故事(Web请求与Java IO)
作为一名后端屌丝程序员,对算法.并发.性能乐此不疲.但是,随着年龄和阅历的增加,显然叶落而不知秋的心态是不太能混了.尤其是,某T面试官在明知我是后端,且明确表示对HTTP协议不太熟的情况下,强行让我解 ...
- HDU 2825 Wireless Password
题目链接:HDU-2825 题意:给出m个单词,要构造出满足包含其中大于等于k个单词的字符串,字符只包括小写字母,问长度为n的这样的串有多少个. 思路:令dp[i][j][k]表示当前已经构造了i个字 ...
- leetcode刷刷刷
1.链表节点的插入排序(写了个插入排序,但是报段错误,自己编译器里能运行) #include <iostream> #include <stdlib.h> #include & ...
- 二十、springboot之jpa开发@MappedSuperclass 注解说明
@MappedSuperclass使用条件: 当我们进行开发项目时,我们经常会用到实体映射到数据库表的操作,此时我们经常会发现在我们需要映射的几个实体类中,有几个共同的属性,例如编号ID,创建者,创建 ...
- Isolate randomforest检测异常点的非监督方法
由于异常数据的两个特征(少且不同: few and different) 异常数据只占很少量; 异常数据特征值和正常数据差别很大. iTree的构成过程如下: l 随机选择一个属性Attr: l ...