Java面试题(131-135)

Javascript面试题及详细答案150道之(121-135) JS面试题150道 阅读详情

Java程序员面试题集(131-135)

摘要:这部分内容准备重新发布为Java程序员面试题集(151-180),但这篇帖子仍然保留在这里。查看新内容请点击Java程序员面试题集(151-180)


131、请对以下Java EE中的名词进行解释

答:

  1. 容器:容器为Java EE应用程序组件提供了运行时支持。容器提供了一份从底层Java EE API到应用程序组件的联合视图。Java EE应用程序组件不能直接地与其它Java EE应用程序组件交互。它们通过容器的协议和方法来达成它们之间以及它们与平台服务之间的交互。在应用程序组件和Java EE服务之间插入一个容器,这允许该容器透明地为组件注入必须的服务,例如声明式事务管理,安全检查,资源池和状态管理。
  2. 资源适配器:资源适配器是一个系统级的组件,它通常实现了对外部资源管理器的网络连接。资源适配器能够扩展Java EE平台的功能。这只需要实现一个Java EE标准服务API(例如JDBC驱动程序),或者定义并实现一个能连接到外部应用程序系统的资源适配器就可以达到。资源适配器也可以提供完整的本地或本地资源的服务。资源适配器接口通过Java EE服务供应商接口(Java EE SPI)来连接Java EE平台。使用Java EE SPI连接到Java EE平台的资源适配器可以和所有的Java EE产品协同工作。
  3. JNDI(Java Naming & Directory Interface):Java命名目录接口,主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
  4. JMS(Java Message Service):Java消息服务是用于消息发送的标准API,它支持可靠的“点对点”消息发送和“发布-订阅”模型。Java EE规范要求JMS供应商同时实现“点对点”消息发送和”发布/订阅”型消息发送。
  5. JTA(Java Transaction API):Java 事务编程接口。Java事务API由两部分组成:①一个应用程序级的边界划分接口,容器和应用程序组件用它来划分事务边界;②一个介于事务管理器和资源管理器之间的Java EE SPI级接口。
  6. JPA(Java Persistence API):Java持久化API是用于持久化和对象/关系映射管理的标准API。通过使用一个Java域模型来管理关系型数据库,Java EE规范为应用程序开发者提供了一种对象/关系映射功能。Java EE必须对Java持久化API提供支持。它也可以用在Java SE环境中。
  7. JAF(JavaBean Activation FrameWork):JAF API提供了一个框架来处理不同MIME类型的数据,它们源于不同的格式和位置。JavaMail API使用了JAF API。JAF API包含在Java SE中,因此它可以被Java EE应用程序使用。
  8. JAAS(Java Authentication and Authorization Service):使服务能够基于用户进行验证和实施访问控制。它实现了一个Java版的标准的的Plugable Authentication Module (PAM)框架,并支持基于用户的授权。Java Authorization Service Provider Contract for Containers (JACC) 定义了Java EE应用程序服务器和授权服务提供方之间的协议,允许将自定义的授权服务提供方插入任何Java EE产品中。
  9. JMX(Java Management Extension):Java平台企业版管理规范中定义了一种API,通过一种特殊的管理型EJB来管理Java EE服务器。JMX API也提供了一些管理上的支持。

 

132、Java EE 是什么?

答:Java EE是SUN Microsystems(2009年被Oracle收购)公司为企业级应用推出的标准平台,该平台是由一系列技术标准所组成的,包括:EJB、JAAS、JAF、JAX-WS、JDBC、JNDI、JSTL、JSF、JSP、Servlet、RMI等。

 

133、你是如何理解控制反转(IoC)和依赖注入(DI)的?

答:控制反转 (Inversion of Control, IoC)是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”就是对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。IoC体现了好莱坞原则:“Don’t call me, we will call you”。依赖注入(Dependency Injection,DI)的基本原则是:应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由容器负责,查找资源的逻辑应该从应用组件的代码中抽取出来,交给容器来完成。DI是对IoC更准确的描述,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。

举个例子:一个类A需要用到接口B中的方法,那么就需要为类A和接口B建立关联或依赖关系,最原始的方法是在类A中创建一个接口B的实现类C的实例,但这种方法需要开发人员自行维护二者的依赖关系,也就是说当依赖关系发生变动的时候需要修改代码并重新构建整个系统。如果通过一个容器来管理这些对象以及对象的依赖关系,则只需要在类A中定义好用于关联接口B的方法(构造器或setter方法),将类A和接口B的实现类C放入容器中,通过对容器的配置来实现二者的关联。

 

134、请说出Spring 中依赖注入和AOP的实现机制。

答:

  • 实现依赖注入的方式包括:构造器注入、设值注入和接口(回调)注入。Spring中可以通过设值注入(setter方法注入)和构造器注入实现IoC,推荐使用的方式为设值注入。
  • 实现AOP的方式包括:编译时AOP(需要特殊的编译器)、运行时AOP(代理模式)、加载时AOP(需要特殊的类加载器)。Spring中使用了运行时的AOP,主要通过代理的方式对原来的代码进行增强实现。对于实现了接口的类,Spring通过Java的动态代理(请参考Proxy类和InvocationHandler接口)来进行增强;对于没有实现接口的类,Spring使用第三方字节码生成工具CGLIB,通过继承的方式对原有代码进行增强。

 

135、你的项目选择使用Spring框架的原因是什么?

答:

  1. Spring提供了企业级开发的一站式选择,有大量的功能模块可供选择,并且可以根据项目的需要自由取舍。Spring通过POJO简化了JavaEE开发,低侵入式的编程提供了代码的持续集成能力和易测试性。
  2. Spring框架的核心功能是依赖注入(DI)。DI使得代码的单元测试更加方便、系统更好维护、代码也更加灵活。DI代码自身很容易测试,通过构建实现了应用所需的接口的“模拟”对象就可以进行功能的黑盒测试。DI代码也更容易复用,因为其“被依赖的”功能封装在在定义良好的接口中,允许其他对象根据需要将其插入到所需的对象中,这些对象是在其他应用平台中进行配置的。DI使代码更加灵活,由于其天生的松耦合性,它允许程序员仅需考虑自己所需的接口和其他模块暴露出来的接口来就可以决定对象之间如何关联。
  3. Spring支持面向切面编程(AOP),允许通过分离应用业务逻辑和系统服务从而进行内聚性的开发。AOP通常用来支持日志、审计、性能和内存监控等功能。
  4. Spring还提供了许多实现基本功能的模板类,使得Java EE应用的开发更加容易。例如,JdbcTemplate类和JDBC、JpaTemplate类和JPA,JmsTemplate类和JMS都可以很好地结合起来使用。RestTemplate类非常简洁,使用这个模板的代码的可读性和可维护性也都很好。
  5. Spring提供了声明性事务处理,工作调度,身份认证,成熟的Web MVC框架以及和其他框架的集成,例如Hibernate、MyBatis、JasperReports、JSF、Struts、Tapestry、Seam和Quartz等等。
  6. Spring Bean对象可以通过Terracotta在不同的JVM之间共享。这就允许使用已有的Bean并在集群中共享 ,将Spring应用上下文事件变为分布式事件,还可以通过Spring JMX导出集群Bean,使得Spring应用高可用、集群化。
  7. Spring倾向于使用非受检异常(运行时异常)和减少不当try、catch和finally代码块,例如JpaTemplate这样的Spring模板类会负责关闭或释放数据库连接,这避免了潜在的外部资源泄露问题并提高了代码的可读性。

文章转自:http://blog.youkuaiyun.com/jackfrued/article/details/17723797

vue2 面试题及详细答案150道(131 - 140) Vue2常见问题解决方案摘要 虚拟滚动列表:通过vue-virtual-scroller库实现大数据量列表的高性能渲染,仅渲染可见区域元素。 组件循环引用:使用异步导入组件或重构组件结构解决循环引用问题。 自定义指令生命周期:包含bind、inserted、update等钩子,用于元素不同阶段的逻辑处理。 路由参数变化响应:通过watch监听$route或使用beforeRouteUpdate导航守卫处理参数变化。 手动触发响应式:使用Vue.set/$set方法或替换整个对象来实现响应式更新。 动态组件: 阅读详情

相关推荐

安卓面试题多线程 131-135

131. 简述什么是阻塞式方法 ? 阻塞式方法是指程序会一直等待该方法完成期间不做其他事情,ServerSocket 的accept()方法就是一直等待客户端连接。这里的阻塞是指调用结果返回之前,当前线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在任务完成前就返回 132. 简述volatile 变量和 atomic 变量有什么不同? Volatile 变量可以确保先行关系,即写操作会发生在后续的读操作之前, 但它并不能保证原子性。例如用 volatile 修饰 count

我很好 149

Java面试题集(131-135)

这部分都是一些Java EE的相关概念和Spring中的一些概念,作为Java开发者是应该知道的。

骆昊的技术专栏 1万+

Java1.8.0_181 installation

Java1.8.0_181 installation,下载解压(只能用来玩游戏,大概)

在java开发中平方怎么表示?平方表示的方法有哪几种?

在我们计算一个数的几次方的时候。我们按照课堂中老师的教法就是在一个数的右上角写上一个小小的数字用来表示一个数的几次方,那么大家知道“在java开发中平方怎么表示吗?”,那么我们就来看看在 java 开发中我们怎么表示一个数的平方。”的一些方法,希望这些方法和建议对你的学习和问题有所帮助,更多的关于 java 的知识我们都可以在。我们通过定义一个新的值,在循环中可以看到我们通过循环的次数直接的值相乘就可以得到我们要的结果。在上面我们可以看到,我们通过定义两个量就可以完成一个平方数了。

爱编程的鱼的博客 4305

LeetCode题解 - Java语言实现-181页.pdf

LeetCode题解 - Java语言实现-181页.pdf

jdk1.8.0_131+jre1.8.0_131

java开发工具jdk1.8

Java 手动资源关闭最佳实践

最近做了一些文件上传下载的工作,有涉及到资源关闭相关的操作,因此回顾整理了下 JDK 的 try-with-resrouces 资源回收方式,希望对需要的同学有所帮助,如有不足也非常欢迎交流改进。 一. 为何需要资源关闭 对于某些资源,比如 IO 流对象、Socket 套接字、数据库连接等对象,如果在使用后不手动关闭,会导致资源一直被占用,最终造成资源紧张,导致严重的性能问题。因此在使用完成后务必要将这类资源关闭。 二. 传统 try-finally 资源关闭方式 在 Java 7 之前 JDK 提供了

艾希射日 979

jdk1.8_131

javax.servlet.ServletContext.getVirtualServerName(),在JDK1.8.0_72之前版本并没有

Java中资源关闭的处理方式

本文就关于IO资源的处理问题,提出三种方案。 close()放在try块中 close()放在finally块中 使用try-with-resource语句 close()放在try块中 //close() is in try clause try { PrintWriter out = new PrintWriter( new BufferedWriter( new FileWriter("out.txt", true))); ou

gb4215287的博客 865

jdk1.8-131

一个java1.8的jdk资源,属于稳定版。有利于实际项目开发

java 真正的安全的资源的释放

java 真正的安全的资源的释放 关闭 看着比较麻烦 但是代码健壮 规范 安全 欢迎使用下载

Java程序员面试题集(131-135)

Java程序员面试题集(131-135) 摘要:这部分内容准备重新发布为Java程序员面试题集(151-180),但这篇帖子仍然保留在这里。查看新内容请点击Java程序员面试题集(151-180) 131、请对以下Java EE中的名词进行解释 答: 容器:容器为Java EE应用程序组件提供了运行时支持。容器提供了一份从底层Java EE

Icing9520的专栏 609

手把手教你用QEMU模拟AST2600-EVB开发板:OpenBMC环境搭建全流程

本文提供了一份详尽的实战指南,手把手教你使用QEMU模拟器搭建AST2600-EVB开发板的OpenBMC环境。内容涵盖从工具链准备、系统镜像获取(官方与自编译),到QEMU启动命令解析、网络配置(用户与桥接模式),以及通过SSH、WebUI和Redfish API访问服务的全流程,帮助开发者在个人电脑上快速构建安全、可复现的嵌入式开发与测试沙盒。

play7的博客 1132

Java基础、中级、高级面试题总结

Linux 篇面试题中的知识点:单进程最大打开文件数限制、内核内存参数调优、TCP 发送 KEEPALIVE 消息频度、TCP FIN_WAIT_2 状态时间、定义 UDP 和 TCP 链接的本地端口取值范围、优化 TCP 接收缓存的最大值、最小值、默认值、优化 TCP 发送缓存的最大值、最小值、默认值、优化内核套接字接受缓存区默认大小、优化内核套接字发送缓存区默认大小,10、9、优化内核 TCP 的 SYN 攻击。,不满足于现状,身在其位就要有担当其位的能力,不断提升技能、技术栈,都是必不可少的!

m0_46995061的博客 970

移远EC800M CAT1模块HTTP POST实战:从AT指令到数据上报的完整避坑指南

本文详细介绍了移远EC800M CAT1模块通过AT指令实现HTTP POST数据上报的完整开发流程,包括模块初始化、PDP上下文配置、HTTP POST实现及优化策略。针对实际开发中的常见问题如网络异常、低功耗需求等提供了经过验证的解决方案,帮助开发者快速实现稳定可靠的物联网数据传输功能。

weixin_42556197的博客 480

Cocos Creator 3.x 实战:用脚本动态加载Spine动画,告别resources硬编码

本文详细介绍了Cocos Creator 3.x中Spine动画的动态加载与挂点系统实战技巧。通过Asset Bundle替代传统resources硬编码方式,实现资源的高效管理和热更新支持,同时结合TypeScript强类型和单例模式优化加载流程。文章还深入探讨了跨平台适配、挂点编程方案及性能优化策略,帮助开发者提升游戏开发效率与灵活性。

weixin_42526353的博客 267

JAVA各类基础高级面试题和中间件面试题资料

Java面试总结(2021优化版)已发布在个人微信公众号【Java精选】,根据读者的反馈优化了部分答案存在的错误,同时根据最新面试总结和读者的建议,删除了低频问题,并添加了一些常见面试题,对文章进行了精简优化,目前约2000+道面试题,欢迎大家关注,关注后回复Java面试,即可获取最新面试资料!???????? 【Java精选】专注程序员推送一些Java开发知识,包括基础知识、各大流行框架、大数据技术、数据库、面试题、面试经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于

Java精选 851

SCDM学习笔记(5)

几何前处理后一般会获得几何的固体区域,然而当进行流体仿真的时候是对流体的区域进行计算的。因此,如何快速地从固体的几何模型获得流体的几何模型是一个重点问题。 流体问题一般可分为内流场与外流场问题,对于内流场问题,SCDM有专门的处理工具 工程图纸大致如下: 要创建这个几何的大致策略是画出截面的圆形,再画出轴线,通过扫掠的方式建立几何。 以上是mixing的国体区域,通过体积抽...

diyhoo的编程小屋 6357

千道流!!!整理 Java 面试题资料超 1000 道面试题资料,源码和答案

Java面试前需要做足各方面的准备工作,大家肯定都会浏览大量的面试题过往的面试经验,本人也不例外,通过浏览面试题和以往的面试经历,总结了初级、中级、高级的面试题以及面试技巧和面试经验,供大家学习讨论。 面试题-141-150期 【141期】JDK8 Stream 操作 collectingAndThen:根据对象的属性去重 【142期】List 中 remove() 方法的“陷阱”,被坑惨了! 【143期】面试官问:说一说 Spring 和 Spring Boot 核心的 3 大区别? 【144期

Java精选 845

从数据到特征:基于CAT12的MRI图像预处理实战指南

本文详细介绍了使用CAT12工具进行MRI图像预处理的完整实战流程。从数据获取、环境搭建到核心的AC-PC校正、组织分割、空间标准化与调制,逐步解析如何将原始脑影像数据转化为可用于机器学习的标准化特征图。重点阐述了预处理作为脑影像分析‘生命线’的重要性,并提供了避坑指南与自动化脚本建议,帮助研究者构建高质量的阿尔茨海默症分类模型输入特征。

weixin_29065959的博客 310

ADS2019学习笔记:三、SPICE model导入

以BZX84-C33 SPICE model为例,学习如何在ADS2019中导入SPICE model。

qq_42945911的博客 6493
上一篇: Java面试题集(116-135)
下一篇: Java面试题集(151-180)
冷静BB
博客等级 码龄12年 298粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值