Java开发八月七号下午笔试+面试

简介: Java开发八月七号下午笔试+面试

笔试

1、SpringBoot有哪几种配置方式?有什么区别?

SpringBoot有两种配置方式,properties和yml,两种配置方式只是格式上不同,功能是一致的,比如

properties:

server.port=8080

对应的yml:

server:
        port:8080

就实际开发而言,yml更简洁一些,但是properties出错率更低一些。

2、SpringBoot怎么修改启动时的端口号?

(1)、在配置文件中修改端口号:

server.port=8888

(2)、.可以通过实现EmbeddedServletContainerCustomizer接口来实现

public class Application extends SpringBootServletInitializer implements EmbeddedServletContainerCustomizer {  
    @Override  
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {  
        return builder.sources(Application.class);  
    }  
    public static void main(String[] args) {  
        SpringApplication.run(Application.class, args);  
    }  
    @Override  
    public void customize(ConfigurableEmbeddedServletContainer container) {  
        container.setPort(8081);  
    }  
}  
3、mysql有几种锁?怎么创建一个带锁的sql语句?

从数据库的角度来看,锁可以分为共享锁、独占锁和更新锁。

共享锁:共享锁锁住的资源可以被其它资源读取,但不能被修改。

独占锁:独占锁锁住的资源只允许进行锁定操作的程序使用。

更新锁:是为了防止死锁设立的。

从程序员的角度来看,锁可以分为乐观锁、悲观锁。

参考【6】讲的不错。

4、JVM加载class文件的原理机制是什么?

JVM装载class文件都是由ClassLoader(类加载器)实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。

类加载器中,BootstrapClassloader是Java无关的,是由C/C++编写的类加载器,其它的类加载器都直接或间接继承自它。

5、分布式锁应当具备哪些条件?

为了防止分布式系统之间的多个进程相互干扰,需要一种分布式协调技术来对这些进程进行调度,而这个分布协调技术的核心就是分布式锁。

分布式锁需要具备的条件:

.在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行

.高可用的获取锁与释放锁

.高性能的获取锁与释放锁

.具备可重入特性(可理解为重新进入,由多于一个任务并发使用,而不必担心数据错误)

.具备锁失效机制,防止死锁

.具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败

6、SpringCloud和Dubbo有什么区别?
SpringCloud Dubbo
底层实现 底层是使用Netty这样的NIO框架,是基于TCP协议传输的,配合以Hession序列化完成RPC通信。 基于Http协议+rest接口调用远程过程的通信
背景 来源于Spring团队,可以保证稳定的更新和维护 Dubbo是来源于阿里团队,曾被阿里弃用,后来又低调重启
定位 Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。定位是服务治理。 SpirngCloud诞生于微服务架构时代,考虑的微服务治理的方方面面。依托于Spring和SpringBoot,SpringCloud定位的是生态
模块 完整的一站式分布式框架,模块包括服务注册中心,服务提供者,服务消费者,管控台,断路器,分布式配置服务,消息总线,以及服务追踪等 主要是四个模块:服务注册中心,服务提供者,服务消费者,还有管控中心
7、SpringMVC是单例模式吗?如果是,存在什么问题?该怎么解决?

SpringMVC是单例模式。

在多线程访问时存在安全问题。

解决办法:不需要同步,在控制器中不能写字段。如果在特殊情况需要定义属性的时候,那么就在类上面加上注解@Scope(“prototype”)改为多例的模式

7、List、Map、Set是否继承Collection?

List和Set继承Collection,Map是基本映射表接口,没有继承Collection。

8、线程有几种实现方式?

三种:

(1)、继承Thread类

(2)、实现Runnable接口,Thread类其实也是一个实现了Runable接口的类。

(3)、实现Callable接口,可以创建一个带返回值的线程,可以看作是对Runnable接口的补充。

面试

面试比较快,随便问问,了解一下个人情况,技术上问的不多,有几个很基础的问题,就不写了。

1、讲讲Spring中的事务?

事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性。

事务就是一系列的动作,它们被当作一个单独的工作单元。这些动作要么全部完成,要么全部不起作用。

在Spring在不同的事务管理API之上定义了一个抽象层,而应用程序开发人员不必了解底层的事务管理API,就可以使用Spring的事务管理机制。

Spring既支持编程式事务管理(也称编码式事务),也支持声明式的事务管理。

编程式事务管理:将事务代码嵌入到业务方法中来控制事务的提交和回滚,在编程式事务中,必须在每个业务操作中包含额外的事务管理代码。

声明式事务管理:大多数情况下比编程是事务管理好用。它将事务管理代码从业务方法中分离出来,以声明的方式以声明的方式来实现事务管理。事务管理作为一种横切事务点,可以通过AOP方式模块化。Spring通过Spring AOP框架支持声明式事务管理。

Spring并不直接管理事务,而是提供了多种事务管理器,它们将事务管理的职责委托给JTA或其他持久化机制所提供的平台相关的事务实现。每个事务管理器都会充当某一特定平台的事务实现的门面,这使得用户在Spring中使用事务时,几乎不用关注实际的事务实现是什么。

比如针对Spring JDBC抽象框架、iBATIS或MyBatis框架的事务管理器DataSourceTransactionManager,

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
2、你眼中的高并发?

看参考四,一些概念没有接触过,不是太能理解。

3、Spring AOP原理是什么?

Spring AOP的底层都是通过代理来实现的

.一种是基于JDK的动态代理

.一种是基于CgLIB的动态代理

参考:

【1】、https://www.cnblogs.com/Javacxf/p/7100995.html

【2】、https://www.cnblogs.com/longshiyVip/p/5061637.html

【3】、https://www.cnblogs.com/longshiyVip/p/5061637.html

【4】、https://zhuanlan.zhihu.com/p/38636111

【5】、https://www.cnblogs.com/javazhiyin/p/10101044.html

【6】、https://www.cnblogs.com/zhouqianhua/archive/2011/04/15/2017049.html

目录
相关文章
|
1月前
|
Java API Maven
如何使用Java开发抖音API接口?
在数字化时代,社交媒体平台如抖音成为生活的重要部分。本文详细介绍了如何用Java开发抖音API接口,从创建开发者账号、申请API权限、准备开发环境,到编写代码、测试运行及注意事项,全面覆盖了整个开发流程。
110 10
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
71 2
|
29天前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
19天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
38 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
7天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
53 13
|
12天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
44 10
|
5天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
41 2
|
21天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
53 14
|
1月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
下一篇
DataWorks