Java面试题(开发人员)

51. 框架的设计含义是什么?

《设计模式》中对框架的定义是框架就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。

框架不是现成可用的应用系统。是一个半成品。

框架不是工具包或者类库

 框架不是构架

【框架是服务开发人员的,而非限制开发人员。如何让使用者发挥效率,又能引导其实现更具灵活性的功能设计。是框架的本质。

框架本身并不关注业务,至少不受业务影响或制约。框架就是要从具体的业务功能中,分离出能覆盖所有业务的设计、实现与组成。并使得各业务功能从开发实现的角度,变的解耦合、可重组、易维护。

框架也会进化,其进化过程就是一个设计权衡的过程。一个典型的设计权衡过程就是目录结构设计。】


52. SSM和SpringBoot框架对比?

Springboot 将原有的 xml 配置,简化为 java 注解

使用 IDE 可以很方便的搭建一个 springboot 项目,选择对应的 maven 依赖,简化Spring应用的初始搭建以及开发过程

springboot 有内置的 tomcat 服务器,可以 jar 形式启动一个服务,可以快速部署发布 web 服务

springboot 使用 starter 依赖自动完成 bean 配置,,解决 bean 之间的冲突,并引入相关的 jar 包

SpringBoot和SSM不冲突,SpringBoot只是简化了配置,实际开发 没什么区别。SSM就好像开手动挡的汽车,需要踩离合,挂档,给油车才能开动。而SpringBoot就好像自动挡的汽车,给油就走,踩刹车就停。

【1.简化配置

在整合 SSM 的时候,需要将大量配置写入 xml 文件中;

Spring Boot 采用约定大于配置的方式,所谓约定大于配置,在 Spring Boot 中体现在开发人员只需要关注应用中不符合约定的部分:比如默认的 WEB 容器端口是 8080,只有当开发人员想要修改时才需要去写这一部分的配置。

2.内置容器

在 SSM 整合中,运行项目需要依赖外部的 Servlet ,比如常用的是 tomcat;

在 Spring Boot 框架中,内置了 tomcat 容器,打包后会生成 jar 包,更加方便部署。Spring Boot 的内置框架支持切换,通过修改 maven 依赖,可以很方便地实现 tomcat、jetty、undertow 三种容器之间的切换。

3.更快速的开发

使用 SSM 开发一个应用需要繁琐的配置过程;

使用 Spring Boot 开发一个应用只需要生成项目,引入 starter 即可,简化了开发的难度。】

53. 常见的应用服务器有哪些?

Tomcat Jboss Websphere Weblogic Geronimo Resin Jetty Undertow Glassfish JRun Jonas ColdFusion

【Tomcat:免费开源,轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。只实现了JSP/Servlet的相关规范,不支持EJB

Jboss:免费开源,作为Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,从而受到企业级开发人员的欢迎,从而弥补了Tomcat只是一个Servlet容器的缺憾。

Websphere:是IBM的收费平台,价格昂贵,单买一个但CPU的服务器也要十几万。除了web应用服务器还包含大量的工具和其他相关应用开发平台。正常EJB

weblogic:收费,包括EJB,JSP,Servlet,JMS等等,全能型的。是商业软件里排名第一的容器(JSP、servlet、EJB等),并提供其他如JAVA编辑等工具,是一个综合的开发及运行环境。

Geronimo:是对Java EE 5标准100%的实现,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

Resin: 收费,是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发。支持负载均衡。resin的速度要比tomcat快3倍,调试方便,resin的报错是十分简洁而明确的,可以让你一眼就可以看出程序错误的类型和位置,resin对于中文的支持要比tomcat好不少

jetty 免费开源,架构比较简单,也是一个可扩展性和非常灵活的应用服务器。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供

undertow:是一个用java编写的、灵活的、高性能的Web服务器,提供基于NIO的阻塞和非阻塞API。Undertow的架构是组合式的,可以通过组合各种小型的目的单一的处理程序来构建Web服务器。所以可以很灵活地的选择完整的Java EE servlet 3.1容器或初级非阻塞程序处理。

glassfish是Oracle 开发的官方Java EE容器,,也是同时支持Servlet和EJB,支持最新的特性,有自己的web容器,支持集群,支持热部署。

JRun:是由Allaire公司开发的JAVA服务器软件,它支持JSP1.1、Servlet2.2规范,目前最新的版本是JRun4,但是它的下载是要付费,它是Micromedia的一个应用服务器,它基于Sun公司的Java2平台企业版(J2EE)。

Jonas:一个开放源代码的J2EE实现,在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器,以确保符合Servlet 2.3和JSP 1.2规范。JOnAS服务器依赖或实现以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。

ColdFusion是一个动态Web服务器,其CFML(ColdFusion Markup Language)是一种程序设计语言,类似现在的JavaServer Page里的JSTL(JSP Standard Tag Lib),从1995年开始开发,其设计思想被一些人认为非常先进,被一些语言所借鉴。】


54. 什么是Maven?

Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Maven的核心功能是合理叙述项目间的依赖关系,通俗点 就是通过pom.xml文件的配置获取jar包不用手动的去添加jar包,其本质就是通过配置pom.xml来获取jar包,当然这是在该项目必须是maven项目的前提下。在java项目和web项目上裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能,即通过pom.xml添加jar包 。


55. 什么是pom文件?

POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。


56. 什么是SpringBoot 框架?

Spring Boot 是伴随 Spring 4 而产生的技术框架,具备良好的技术基因。在继承 Spring 框架所有优点的同时,它也为开发人员带来了巨大的便利。与普通的 Spring 项目相比,Spring Boot 可以简化项目的配置和编码,使项目部署更方便,而且它还为开发人员提供了“开箱即用”的良好体验,可以进一步提升开发效率。


57. 谈谈你对“约定大于配置”的理解

能使用默认,就使用默认。当存在特殊需求的时候,自定义配置即可。这样可以大大的减少配置工作,这就是所谓的“约定”。

【比如说大家提前都约定好了创建对象就要使用new关键字,你要是想创建这个对象,那就要先使用new,你要先按照大家约定好的去做,然后在使用这个对象去做你想做的。你要是连大家约定好的都不做,那哪来的对象?我觉得这句话更像是一个代码界的法律吧,一种写代码的行为规范。】

58. SpringBoot默认可以识别JSP文件吗?怎么处理?

SpringBoot微服务架构,所有项目都是以jar文件方式打包部署,嵌入式的Tomcat(简化版,不支持JSP),所以SpringBoot默认是不支持JSP的,那么如果想要整合JSP,就需要独立引入整合依赖,和基础配置。 SpringBoot 默认存放模版文件的路径为 src/main/resources/templates,但由于SpringBoot默认是不支持JSP的,所以我们不能将JSP文件放在templates目录下。


59. SpringBoot 的工作流程?

应用启动阶段:Spring Boot应用程序在启动时,会自动加载应用程序的配置文件,并创建Spring容器。Spring Boot还提供了一系列自动化配置功能,可以根据应用程序的需求自动配置Bean、组件、拦截器、过滤器等。

路由配置阶段:Spring Boot应用程序在启动后,需要配置路由信息,以便将请求分发到相应的处理器上。Spring Boot使用注解方式来配置路由信息,比如@Controller、@RequestMapping等注解,可以通过简单的配置实现路由信息的定义。

处理请求阶段:Spring Boot应用程序在接收到请求后,会将请求交给相应的处理器进行处理。处理器是Spring Boot应用程序中最核心的组件之一,它可以根据请求类型、参数等信息来执行相应的业务逻辑,并返回结果给客户端。

视图渲染阶段:Spring Boot应用程序在处理请求后,需要将处理结果渲染成相应的视图,并返回给客户端。Spring Boot支持多种视图渲染方式,包括JSP、Thymeleaf、Freemarker等。通过配置ViewResolver,可以实现视图渲染的自动化。

错误处理阶段:Spring Boot应用程序在处理请求过程中,可能会出现各种错误,比如404错误、500错误等。Spring Boot提供了一种统一的错误处理机制,可以将所有的错误信息统一处理,并返回相应的错误信息给客户端。


60. 什么是Shiro?默认主配置文件是什么?

Apache Shiro 是Java 的一个安全框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与Web 集成、缓存等。

shiro.ini

61.常见的前端框架有哪些

Bootstrap框架、React框架、Vue框架、Angular框架、Foundation框架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些常见的Java开发岗位面试题: 1. 什么是Java的平台无关性?Java语言如何实现平台无关性? 2. 请解释一下类加载器的概念和作用。 3. throw和throws关键字在Java中有什么区别和作用? 4. Serializable和Externalizable接口在Java中有什么区别? 以下是对应的回答: 1. Java的平台无关性是指Java程序可以在不同的操作系统和硬件平台上运行,而不需要进行修改。这是通过Java虚拟机(JVM)实现的。Java程序首先被编译成字节码,然后在不同平台上的JVM上解释执行字节码。这样,Java程序就可以在不同平台上运行,而不需要重新编译。 2. 类加载器是Java虚拟机的一部分,负责将类的字节码加载到内存中,并进行链接和初始化。类加载器按照一定的规则查找类的字节码文件,并将其加载到内存中。类加载器还负责解析类的依赖关系,例如引用其他类或接口。Java虚拟机提供了三种类加载器:启动类加载器、扩展类加载器和应用程序类加载器。 3. throw关键字用于主动抛出一个异常对象。可以抛出任何继承自Throwable类的异常,包括Error和Exception。throws关键字用于方法声明中,表示该方法可能抛出的异常类型。throws子句是方法签名的一部分,用于告诉调用者可能需要处理的异常类型。在Java中,所有未处理的受检查异常都必须在throws子句中声明。 4. Serializable和Externalizable接口都用于实现Java对象的序列化。Serializable接口是Java提供的默认序列化机制,它将对象转换为字节流以便存储或传输。Externalizable接口是Serializable接口的子接口,它允许开发人员自定义对象的序列化和反序列化过程。与Serializable不同,Externalizable需要实现自定义的writeExternal和readExternal方法来控制对象的序列化和反序列化过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值