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(存储表定义)
  • MYD(MYData,存储数据)
  • MYI(MYIndex,存储索引)

InnoDB
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
1)自动增长列2)外键约束

MEMORY

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

MERGE

merge存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须完全相同,MERGE表中并没有数据,对MERGE类型的表可以进行查询、更新、删除的操作,这些操作实际上是对内部的MyISAM表进行操作。

18.事务传播特性

  • 1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启
  • 2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行
  • 3. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
  • 4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
  • 5. PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。
  • 6. PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常
  • 7. PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务,

 

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

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

关闭链接:四次挥手

保证可靠

21.shiro 是什么

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

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

授权:

会话管理

 

22.  项目技术

       前台:面向的客户

前端: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

         

          注意:div table 区别  为什么前台使用div 而非table标签  div可以一块一块进行加载

 

 

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

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

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

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

时间: 2024-09-29 15:57:07

Java高级程序员面试题的相关文章

Java面试学问多,看看高级程序员面试题是什么样的

Java 面试跟着时刻的改动而改动.在以前的日子里,当你知道 String 和 StringBuilder 的差异就能让你直接进入第二轮面试,可是如今疑问变得越来越高档,面试官问的疑问也更深入. 在以前初入职场的时分,类似于 Vector 与 Array 的差异.HashMap 与 Hashtable 的差异是最盛行的疑问,只需求记住它们,就能在面试中取得更好的时机,但这种景象已经不复存在.如今,你将会被问到许多 Java 程序员都没有看过的范畴,如 NIO,规划形式,老练的单元测验,或许那些很

Java初中级程序员面试题宝典

Java基础部分 &与&&区别? &和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假:但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止. 使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容 还是可以改变的. 静态变量和实例变量的区别? 在语法定义上的区别: 静态变

转:成为Java高级程序员需要掌握哪些?

section 1 1.Core Java,就是Java基础.JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类,比如String,集合类(List,Map,Set)等数据结构要知道它们的实现,不同的集合类有什么区别,然后才能知道在一个具体的场合下使用哪个集合类更适合.更高效,这些内容直接看源代码就OK了 2.多线程并发编程,现在并发几乎是写服务端程序必须的技术,那对Java中的多线程就要有足够的熟悉,包括对象锁机

P8架构师倾情讲述,看源码是Java高级程序员内功修炼必经之路

笔者前两天总结了一些Java程序员进阶必备的技术要点,并且做出了分享,可以参见前篇文章< Java程序员年薪40W,他1年走了别人5年的路(技术提炼建议收藏) >. 今天笔者在这里给大家介绍一下程序员的内功,内功修炼的内容就与之前文章中的技术内容大致相似,但是,那些技术不是说你想学就能学会的,如果你只是写了几年的业务代码,不对源码加以分析,那么你永远只是停留在码农阶段.你必须要学会看懂代码,才能尝试在架构技术上加深造诣,架构师之所以称之为架构师,源于他们对源码透彻的理解. 首先先为大家介绍一下

Java高级程序员面试大纲——备战金三银四跳槽季

跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽.切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹),还是钱给少了,不受重视. 准备不充分的面试,完全是浪费时间,更是对自己的不负责(如果title很高,当我没说). 今天给大家分享下chenssy在这次跳槽中整理的Java面试大纲,其中大部分都是面试过程中的面试题,可以对照这查漏补缺,当然了,这里所列的肯定不可能覆盖全部方式. 项目介绍 大部

Java高级程序员(5年左右)面试的题目集

原文链接:http://blog.51cto.com/4925054/2088410 1.常用设计模式 单例模式:懒汉式.饿汉式.双重校验锁.静态加载,内部类加载.枚举类加载.保证一个类仅有一个实例,并提供一个访问它的全局访问点. 代理模式:动态代理和静态代理,什么时候使用动态代理. 适配器模式:将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 装饰者模式:动态给类加功能. 观察者模式:有时被称作发布/订阅模式,观察者模式定义了一种

Java高级程序员技术积累

10本Java精选书籍助你快速进阶Java顶尖程序员

书是人类进步的阶梯,从某种意义上讲,一个人读书多少,跟这个人将来能有多大成就取得多大成功有着必然的联系,然而读书不仅仅是求量的过程,还需要精读.有选择的读,前面的文章给大家介绍过从零基础学习java编程到精通之路的五本书籍,但是Java学习入门之后,想要往更高层次的Java方向发展,如果能有几本好书的辅助,可以使我们在Java进阶之路上事半功倍,那么下面亦是美网络小编再给大家推荐10本Java精选书籍助你进阶Java顶尖程序员. 1.<深入理解Java虚拟机:JVM高级特性与最佳实践> 本书从

java程序员面试题大全含答案(2018--2019)

java程序员面试题大全含答案(2018--2019) 1.10道经典java面试题_实习生必问! 2.15个Java线程并发面试题和答案 3.15个高级Java多线程面试题及回答 4.2018年java分布式相关最新面试题 5.2018最新java技术面试题与答案 6.4个Spring常见面试题及答案解析 7.css面试题及答案 8.HR常问面试题总结(上) 9.HR常问面试题总结(下) 10.html面试题及答案 11.java中String类的面试题大全含答案 12.java二叉树算法面试