JAVA面试题15

151.Maven 坐标的含义?

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.13-BETA</version>

Maven 给我们制定了一套规则 —— 使用坐标进行唯一标识。Maven 的坐标元素包括 groupId、artifactId、version、packaging、classfier 。

只要我们提供正确的坐标元素,Maven 就能找到对应的构件,首先去你的本地仓库查找,没有的话再去远程仓库下载。如果没有配置远程仓库,会默认从中央仓库地址

152.对于一个多模块项目,如果管理项目依赖的版本?

方式一,通过在父模块中声明<dependencyManagement />和<pluginManagement />,然后让子模块通过元素指定父模块,这样子模块在定义依赖是就可以只定groupId和artifactId,自动使用父模块的version方式二,使用<dependencie />声明<scope />为import的依赖,从而引入一个 pom 的<dependencyManagement />的。

153. 什么是 Restful 风格接口

Restful 就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

功能资源:互联网所有的事物都可以被抽象为资源

资源操作:使用 POST、DELETE、PUT、GET,使用不同方法对资源进行操作。

分别对应 添加、 删除、修改、查询。

传统方式操作资源

http://127.0.0.1/item/queryItem.doid=1 查询,GET

http://127.0.0.1/item/saveItem.do 新增,POST

http://127.0.0.1/item/updateItem.do 更新,POST

http://127.0.0.1/item/deleteItem.doid=1 删除,GET 或 POST

使用 RESTful 操作资源

http://127.0.0.1/item/1 查询,GET

http://127.0.0.1/item 新增,POST

http://127.0.0.1/item 更新,PUT

http://127.0.0.1/item/1 删除,DELETE

154. 什么是前后端分离

1、所谓前后端分离,主要是相对于 web1.0、2.0 而言,因为那个时候后端开发既要负责处理器的业务处理,也要负责 jsp 的数据绑定和渲染。

2、但是这种开发模式有种弊端,开发过程中不能同步开发,必须先开发处理器,之后才能开发视图,如果处理器有问题的话,视图渲染也会受到影响,会显示异常信息。

3、进入到了 web3.0 时代,后端仅需要服务业务实现,通过 controller暴露接口给前端,页面的数据绑定、渲染工作交给前端实现,所有前端相关的工作,后端不在参与负责。

4、前端可以通过 ajax 通过 http 协议请求接口,通过 json 数据格式进行交互。

5、这样做的好处,前端、后端可以同步开发,效率极高,后台业务没有开发完成,前端可以用假数据按照原型图实现;如果后端业务出现异常,前端可以通过熔断器进行友好显示,而不是显示异常信息,用户体验更好。

155. 项目文档

1、需求规格说明书:根据客户的或者我们调研到的模糊需求,进行分析整理后获得;

2、概要设计:根据需求规格说明书进行项目设计。项目的架构、框架、主要技术、最低服务器要求、涉及到的第三方接口或应用,主要功能模块;

3、详细设计:对概设的进一步细化,目的是为了让即使没有参与需求分析和设计的开发人员,。功能模块的详细设计代码规范、页面风格和规范

4、开发计划((基本模块完成、整体流程实现、测试版本发布、试运营));

5、项目风险评估;(工期的风险、质量的风险、硬件或第三方的风险);

6、日报、周报、月报,日后、周例会、月例会;

7、部署文档、使用说明书、技术文档(某个技术如何使用的);

8、验收文档(明确哪些功能已经完成,和需求的匹配度)

156. spring task(定时任务)

spring 自带任务调度框架,可以执行定时任务,使用起来特别便捷。

可以根据时间特点,让指定代码定时执行。

使用场景(业务不忙,用户在线少的时候,或者周期性强的任务):

1、半夜统计商品销售量

2、半夜统计商品评价

3、半夜更新。。。

spring task 的使用

3、CORN 表达式 分为 7 个域,但是一般我们用六个 秒、分、时、天、月、周、年,但是一般 天和周冲突,年一般省略。

4、这样就会根据指定的 CORN 表达式,自动触发执行方法。

157. 接口交互

常用的接口开发方式主要有 Httpclient、Webservice、dubbo 几种。(restful 风格接口的一种规范,(把所有的请求归纳为 4 大类、get(查)、post(改)、detete(删)、put(增))

1、Httpclient 本身就是 restful 风格 , 使用比较简单,现在应用的比较多。

2、Webservice 是传统开发中最常用的接口调用方式,(有四种实现工具:cxf、xfire、axis、axis2)。我用过cxf 方式,因为 cxf 方式和 spring 集成比较简单。开始 webservice 是基于 soap 协议的,数据格式是 xml,现在也支持 restful。

3、Dubbo 一般叫服务注册,是分布式立体架构中做的一种治理服务的方案。不负责数据转换,只管中间搭线。(支持负载均衡和分布式)

dubbo 更适合于一些访问量大,高并发的项目,比如电商;

158. 什么是 FreeMarker

FreeMarker 是 apache 旗下的静态模版引擎技术,可以与数据源进行绑定,生成静态资源。静态模版引擎技术还有 spring boot 的 thyemeleaf.

159. 为什么使用 FreeMarker(什么是页面静态化)

1、服务器的业务流程是,每接收一个用户请求,则开辟一个子线程,处理接收请求参数,处理请求,然后响应请求。响应请求时,就是将用户请求的动态资源转换成静态资源。

2、如果用户并发量够大的话,服务器容器内存开销会过大,同时如果用户频繁请求相同的资源,可以提示前生成一次静态资源就好,没必要请求一次就生成一次, 

3、服务器接收到用户请求,可根据请求参数,直接路由到对应的静态资源即可,这样大大的提高用户请求响应效率,同时节省服务器资源开销。

160. FreeMarker 的特点(前后端分离的特点)

1. FreeMarker 的优点一,可以彻底的分离表现层和业务逻辑。

曾经在使用 JSP 开发过程中发现在页面中大量的存在业务逻辑的代码,使得页面内容凌乱,在后期大量的修改维护过程中就变得非常困难。FreeMarker 的原理就是:模板+数据模型=输出,模板只负责数据在页面中的表现,不涉及任何的逻辑代码,而所有的逻辑都是由数据模型来处理的

2. FreeMarker 的优点二,可以提高开发效率。

JSP 在执行的时候需要转换成 Servlet 类,然后进行编译和执行形成视图,会浪费大量时间。而现在我们只需要提供JSON数据即可提高速度

3. FreeMarker 的优点三,使得开发过程中的人员分工更加明确。

以往用 JSP 展现数据时,作为程序员的我们,并不熟悉界面设计技术,反之界面开发人员,也并不熟悉程序语言。 对两者而言,交替性的工作本身就有难度。

更多面试题,请打开主页分栏 java面试 进行查看,谢谢

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值