22道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、事务传播特性

  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)缓存

      1) 页面缓存(OSCache)

      2)分布式缓存(memcached)

  (3) 图片分离(服务器)

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

  后台:(管理对象)

  前端:css html js jquery

  后端:springmvc spring mybatis

  数据库:mysql

  图片分离框架:jersey

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

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

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

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

转载于:http://m.bjpowernode.com/javazixun/2104.html

原文地址:https://www.cnblogs.com/it-deepinmind/p/12331156.html

时间: 2024-10-31 20:22:39

22道Java架构师面试题及答案分享的相关文章

Java架构师VIP课程图灵学院分享

1.熟悉各种框架并且知道他们的原理 2.熟悉虚拟机JVM 并且知道调优方式 能写出更优质的代码 3.连接池等池技术,反射机制 4.nio技术等 5.数据算法结构 sql等 6.熟练linux操作系统 7.各种网络协议 8.集群 9.中间件 图灵学院java架构师课程链接: https://pan.baidu.com/s/1cn5lB7eMSUCsr5CEOkeZTw 提取码 :818j 原文地址:https://www.cnblogs.com/qq-871211680/p/11916918.ht

Java架构师面试题——JVM性能调优

JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对整个堆进行回收,所以比较慢,因此应该尽可能减少Full GC的次数. 2.导致Full GC的原因 1)年老代(Tenured)被写满 调优时尽量让对象在新生代GC时被回收.让对象在新生代多存活一段时间和不要创建过大的对象及数组避免直接在旧生代创建对象 . 2)持久代Pemanet Generati

Java架构师成长之道之程序流程控制

Java架构师成长之道之程序流程控制 Java架构师成长之道 4.1 程序流程控制概述 之前编写的绝大多数程序都是顺序执行,也就是从main函数开始,由上到下一行一行的执行,也被称为顺序结构. 在生活中除了顺序结构以外还有选择结构.循环结构,例如在淘宝购物时登录账号就是一个选择结构,如果输入的正确的用户名和密码才能购买商品,否则就会提示用户名密码错误. 而在淘宝首页的Banner就是一个循环结构,在指定的时间内循环切换图片. 在Java中,支持if/else和switch case两种选择结构,

Java架构师成长之道之RabbitMQ开发与运维-基础篇(CSDN版)

Java架构师成长之道之RabbitMQ开发与运维-基础篇(CSDN版) Java架构师成长之道 消息中间件概述 消息是指在不同语言实现的应用间传递的数据,消息可以是文本字符串.JSON,也可以是复杂的内前对象. 消息中间件是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通讯来进行分布式系统集成. 通过提供消息传递和消息排队模型,使得在分布式环境下扩展进程间的通讯. 消息中间件一般有两种传递模式:点对点模式和发布/订阅模式. 点对点是基于队列的,消息生产者将消息发送到消息队列,

Java架构师成长之道之Java概述与开发环境搭建

Java架构师成长之道之Java概述与开发环境搭建 Java架构师成长之道 2.1 Java概述 Java自从1995年诞生以来,由于赶上了互联网.移动互联网以及大数据的信息技术发展趋势,逐渐由一门高级编程语言演变成开发平台以及运行平台. 开发平台 经过20多年(1995年正式对外公开发布)的发展已经逐步建立起自己强大的生态体系,在大型互联网应用开发,移动端Android开发以及大数据开发占据了广阔的市场,最典型的就是国内互联网巨头-阿里巴巴在其电商.物流.金融.支付.大数据等业务场景中大量使用

Java架构师成长之道之计算机组成原理概述篇

Java架构师成长之道之计算机组成原理概述篇 Java架构师成长之道 1.1 计算机的发展简史 1.1.1 计算机发展的四个阶段 自从1945年至今,计算机经历了电子管计算机,晶体管计算机,集成电路计算机以及超大规模集成电路计算机. 电子管计算机(1945年-1957年) 第二次世界大战是电子管计算机产生的催化剂,而最著名的电子管计算机是来自美国的埃尼阿克(ENIAC),这一时期的计算机有如下特点: 集成度小,占用空间大 功耗高,运行速度慢 操作复杂,更换程序需要接线 晶体管计算机(1957年-

Java架构师成长之道之Java架构师技术栈

Java架构师成长之道之Java架构师技术栈 Java架构师成长之道 JavaSE篇 Java概述与开发环境搭建 Java数据存储 Java数据运算 Java程序流程控制 Java数组 Java面向对象程序设计(上) Java面向对象程序设计(中) Java面向对象程序设计(下) Java常用API 集合 泛型 异常处理 注解 IO/NIO/AIO AIO网络框架tio设计与实现 多线程 网络编程 反射和动态代理 日志 XML 正则表达式 Java语言新特性实战 数据库编程(JDBC+MySQL

程序员Java架构师多线程面试题和回答解析

当我们在Java架构师面试的过程中常见的多线程和并发方面的问题肯定是必不可少的一部分.那么在面试之前我们更应该多准备一些关于多线程方面的问题. 面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为有很多只停留于表面的理论知识,归根结底还是功力不够扎实.下面这些是我在不同时间不同地点喜欢问的Java线程问题,供大家参考. 15个Java架构师多线程面试题及回答解析 1)你将如何使用threaddump?你将如何分析Threaddump? 在UNIX中你可以使用kill-3,然后thre

Java架构师之路

Java架构师之路:从Java码农到年薪八十万的架构师 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择. 架构师在一家公司有多重要.优秀架构师需要具备怎样的素质以及架构师的发展现状三个方面来分析 程序员如何才能晋升为优秀的高薪架构师? 希望通过本文让程序员们了解架构师的市场行情,了解架构师的发展前景,并帮助你更清晰地做出职业规划. 架构师在一家公司有多重要 架构师对一家公司.一个项目有多重要?我们来看一看调查的数据—— 架构师在公司中担当着「IT架构灵魂