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

目录
相关文章
|
5天前
|
SQL Java Unix
Android经典面试题之Java中获取时间戳的方式有哪些?有什么区别?
在Java中获取时间戳有多种方式,包括`System.currentTimeMillis()`(毫秒级,适用于日志和计时)、`System.nanoTime()`(纳秒级,高精度计时)、`Instant.now().toEpochMilli()`(毫秒级,ISO-8601标准)和`Instant.now().getEpochSecond()`(秒级)。`Timestamp.valueOf(LocalDateTime.now()).getTime()`适用于数据库操作。选择方法取决于精度、用途和时间起点的需求。
17 3
|
16天前
|
存储 安全 Java
Java面试题:请解释Java内存模型(JMM)是什么,它如何保证线程安全?
Java面试题:请解释Java内存模型(JMM)是什么,它如何保证线程安全?
64 13
|
16天前
|
存储 Java 程序员
Java面试题:请解释Java中的永久代(PermGen)和元空间(Metaspace)的区别
Java面试题:请解释Java中的永久代(PermGen)和元空间(Metaspace)的区别
43 11
|
16天前
|
存储 Java 程序员
Java面试题:方法区在JVM中存储什么内容?它与堆内存有何不同?
Java面试题:方法区在JVM中存储什么内容?它与堆内存有何不同?
39 10
|
16天前
|
存储 运维 Java
Java面试题:JVM的内存结构有哪些主要部分?请简述每个部分的作用
Java面试题:JVM的内存结构有哪些主要部分?请简述每个部分的作用
32 9
|
16天前
|
缓存 监控 算法
Java面试题:描述Java垃圾回收的基本原理,以及如何通过代码优化来协助垃圾回收器的工作
Java面试题:描述Java垃圾回收的基本原理,以及如何通过代码优化来协助垃圾回收器的工作
43 8
|
14天前
|
NoSQL Java 应用服务中间件
Java高级面试题
Java高级面试题
|
14天前
|
网络协议 安全 前端开发
java面试题
java面试题
|
14天前
|
NoSQL Java 关系型数据库
常见Java面试题
常见Java面试题
|
Java 开发工具 git
Java开发初级6.24.3
5.在Git使用过程中,进行Git配置的操作命令是哪个() A. config B. config -g C. config -a D. git config 相关知识点: 在git中,经常使用git config 命令用来配置git的配置文件,git配置级别主要有:仓库级别 local 【优先级最高】、用户级别 global【优先级次之】、系统级别 system【优先级最低】 正确答案:D 10.RDBMS是什么? A. Rela Database Management Systems B. Relational Database Management Systems C. Relation
116 0