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天前
|
SQL 存储 Java
致远互联java实习生面试
致远互联java实习生面试
18 0
|
1天前
|
Java C++
java面试基础 -- 深克隆 & 浅克隆
java面试基础 -- 深克隆 & 浅克隆
7 1
|
1天前
|
Java
java面试基础 -- 普通类 & 抽象类 & 接口
java面试基础 -- 普通类 & 抽象类 & 接口
7 0
|
1天前
|
存储 安全 Java
java面试基础 -- ArrayList 和 LinkedList有什么区别, ArrayList和Vector呢?
java面试基础 -- ArrayList 和 LinkedList有什么区别, ArrayList和Vector呢?
6 0
|
2天前
|
消息中间件 存储 Java
Java分布式技术面试总结(全面,实时更新)
Java分布式技术面试总结(全面,实时更新)
|
2天前
|
监控 Java Nacos
Java微服务框架面试总结(全面,实时更新)
Java微服务框架面试总结(全面,实时更新)
|
2天前
|
缓存 NoSQL Redis
Java技术栈Redis面试总结(全面,实时更新)
Java技术栈Redis面试总结(全面,实时更新)
|
2天前
|
存储 算法 安全
Java高级进阶面试总结(全面,实时更新)
Java高级进阶面试总结(全面,实时更新)
|
2天前
|
安全 Java
Java基础知识面试总结(全面,实时更新)
Java基础知识面试总结(全面,实时更新)
|
SQL Oracle 安全
java笔试秋招复习总结
面向对象编程 10天 面向对象 封装 继承 多态 方法覆盖 方法重载 this super 使用 父子类对象创建过程 三大修饰 static final abstrace 接口 JAVASE API 常见API 一周 String IO 线程 异常 集合 反射
java笔试秋招复习总结