更新时间:2020-10-23 17:14:28 来源:极悦 浏览1723次
框架是学习java编程的重要内容,每一个java程序员都要熟练掌握几个自己常用的框架,因此框架也是必然出现在java面试题中的内容,是公司在面试时要重点考察的知识,java框架面试题是大家在准备面试前需要认真做的功课,下面总结了一些常考的java框架面试题,都是基础知识,朋友们可以来学习以下的题目。
1、什么是MVC框架?传统MVC框架存在的问题是什么?
答:MVC框架是为了解决传统MVC模式(Jsp + Servlet + JavaBean)的一些问题而出现的框架。
传统MVC模式存在问题:(1)所有的Servlet和Servlet映射都要配置在web.xml中,如果项目太大,web.xml就太庞大,并且不能实现模块化管理;(2)Servlet的主要功能就是接受参数、调用逻辑、跳转页面,比如像其他字符编码、文件上传等功能也要写在Servlet中,不能让Servlet主要功能而需要做处理一下特例;(3)接受参数比较麻烦(String name = request.getParameter(“name”),User user=new User user.setName(name)),不能通过model接收,只能单个接收,接收完成后转换封装model;(4)跳转页面方式比较单一(forword,redirect),并且当我的页面名称发生改变时需要修改Servlet源代码。
2、简单介绍下对springMVC特点的理解?
答:Spring MVC Framework有这样一些特点:(1)它是基于组件技术的、全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件,并且和Spring提供的其他基础结构紧密集成;(2)不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于S.ervlet的);(3)可以任意使用各种视图技术,而不仅仅局限于JSP;(4)支持各种请求资源的映射策略;(5)它应是易于扩展的
3、什么是Maven?
答:Maven使用项目对象模型(POM)的概念,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发布时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven的出现,解决了开发过程中的jar包升级及依赖的难题。它可以对项目依赖的jar包进行管理,可以让你的项目保持基本的依赖,排除冗余jar包,并且可以让你非常轻松的对依赖的jar包进行版本升级。而这些仅仅是Maven最基本的功能,它可以在这基础上对项目进行清理、编译、测试、打包、发布等等构建项目的工作。
4、Maven仓库是什么?
答:Maven仓库是基于简单文件系统存储的,集中化管理Java API资源(构件)的一个服务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径。得益于 Maven 的坐标机制,任何 Maven项目使用任何一个构件的方式都是完全相同的,Maven 可以在某个位置统一存储所有的 Maven 项目共享的构件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。
对于Maven来说,仓库分为两类:本地仓库和远程仓库。
5、什么是Znode?
答:在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据。Zookeeper底层是一套数据结构。这个存储结构是一个树形结构,其上的每一个节点,我们称之为“znode”,zookeeper中的数据是按照“树”结构进行存储的。而且znode节点还分为4中不同的类型。每一个znode默认能够存储1MB的数据(对于记录状态性质的数据来说,够了),可以使用zkCli命令,登录到zookeeper上,并通过ls、create、delete、get、set等命令操作这些znode节点。
6、什么是Spring beans?
答:Spring beans是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化,装配,和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中的形式定义。Spring框架定义的beans都是单件beans。在bean tag中有个属性”singleton”,如果它被赋为TRUE,bean 就是单件,否则就是一个 prototype bean。默认是TRUE,所以所有在Spring框架中的beans 缺省都是单件。
7、解释Spring支持的几种bean的作用域
答:Spring框架支持以下五种bean的作用域:(1)singleton : bean在每个Spring ioc 容器中只有一个实例;(2)prototype:一个bean的定义可以有多个实例;(3)request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效;(4)session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效;(5)global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
8、Dubbo能做什么?
答:(1)透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入;(2)软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点;(3)服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
9、Mybatis是如何进行分页的?分页插件的原理是什么?
答:Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页,可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。
分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。
10、JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?
答:(1)数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接;
(2)Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离;
(3)向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。解决: Mybatis自动将java对象映射至sql语句;
(4)对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。解决:Mybatis自动将sql执行结果映射至java对象。
11、Dubbo支持的注册中心有哪些?
答:(1)Zookeeper(官方推荐),优点:支持分布式,很多周边产品,缺点: 受限于Zookeeper软件的稳定性.Zookeeper专门分布式辅助软件,稳定较优;
(2)Multicast,优点:去中心化,不需要单独安装软件,缺点:Provider和Consumer和Registry不能跨机房(路由);
(3)Redis,优点:支持集群,性能高,缺点:要求服务器时间同步.否则可能出现集群失败问题;
(4)Simple,优点: 标准RPC服务,没有兼容问题,缺点: 不支持集群。
12、什么是Nginx?
答:Nginx (engine x) 是一个高性能的HTTP和反向代理服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。
13、Redis的特点是什么?
答:(1)支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算);(2)支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段;(3)支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。单进程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。
14、JMS有哪些模型?
答:JMS消息机制主要分为两种模型:PTP模型和Pub/Sub模型。
(1)PTP模型:(Point to Point 对点模型) 每一个消息传递给一个消息消费者,保证消息传递给消息消费者,且消息不会同时被多个消费者接收。如果消息消费者暂时不在连接范围内,JMS会自动保证消息不会丢失,直到消息消费者进入连接,消息将自动送达。因此,JMS需要将消息保存到永久性介质上,例如数据库或者文件。
(2)Pub-Sub模型:(publish-subscription 发布者订阅者模型)每个主题可以拥有多个订阅者。JMS系统负责将消息的副本传给该主题的每个订阅者。
如果希望每一条消息都能够被处理,那么应该使用PTP消息模型。如果并不要求消息都必须被消息消费者接收到的情况下,可使用pub-sub消息模型。Pub-Sub模型可以在一对多的消息广播时使用。
15、mybatis与Hibernate有什么不同?
相同点:都是java中orm框架、屏蔽jdbc api的底层访问细节,使用我们不用与jdbc api打交道,就可以完成对数据库的持久化操作。jdbc api编程流程固定,还将sql语句与java代码混杂在了一起,经常需要拼凑sql语句,细节很繁琐。
ibatis的好处:屏蔽jdbc api的底层访问细节;将sql语句与java代码进行分离;提供了将结果集自动封装称为实体对象和对象的集合的功能.queryForList返回对象集合,用queryForObject返回单个对象;提供了自动将实体对象的属性传递给sql语句的参数。
Hibername的好处:Hibernate是一个全自动的orm映射工具,它可以自动生成sql语句,并执行并返回java结果。
不同点:(1)hibernate要比ibatis功能强大很多。因为hibernate自动生成sql语句;(2)ibatis需要我们自己在xml配置文件中写sql语句,hibernate我们无法直接控制该语句,我们就无法去写特定的高效率的sql。对于一些不太复杂的sql查询,hibernate可以很好帮我们完成,但是,对于特别复杂的查询,hibernate就很难适应了,这时候用ibatis就是不错的选择,因为ibatis还是由我们自己写sql语句。ibatis可以出来复杂语句,而hibernate不能;(3)ibatis要比hibernate简单的多。ibatis是面向sql的,不同考虑对象间一些复杂的映射关系。
虽然java框架不是轻易就能掌握的技术,但是java框架面试题却是比较简单的,因为在面试题中考察的都是偏理论的基础知识,在java面试中会经常出现。希望大家在认真学习java框架面试题和理论知识的基础上,再通过java高级框架教程来学习更多的框架方面的内容,提高自己的编程能力。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习