单选题
Example
1.下面属于面向字符的输入流的是哪个类
ObjectOutputStream
InputStreamWriter
BufferedReader
FilelnputStream
复习一下Java基础: 字节流分类以及字符流分类,这里提到了各种常用字节流以及字符流,考察Java基础功底
Example
- 如下哪些情况不建议使用索引?()
出现在 SELECT、UPDATE、DELETE 语句的 WHERE 从句中的列
性别列
包含在 ORDER BY、GROUP BY、DISTINCT 中的字段
多表 JOIN 的关联列
先阅读一下:6 第6章 快速查询的秘籍-B+树索引
再思考下列文章,知其然
MySQL 索引优缺点、何时需要 _ 不需要创建索引、索引及 sql 语句的优化
Example
- 如下代码
当 Float 对象在第 11 行被创建后,什么时候能够被垃圾回收?
复盘 JVM 体系: 📁JVM
其中垃圾回收 JVM系列-第10章-垃圾回收概述和相关算法
Example
- 不属于 sql 优化常用的方法是?()
尽量利用索引
尽量减少加锁时间
尽量使用大事务
优化 sql 的写法
Example
- 新建一个流对象,下面那个选项的代码是错误的
new BufferedReader (new FilelnputStream (“a.dat”));
new ObjectInputStream (ney FilelnputStream (“a.dat”));
new GZIPOutputStream (new FileOutputStream (“a.zip”));
new BufferedWriter (new FileWriter (“a.txt”));
Example
- 关于 Application Context 接口,下列说法错误的是:
FileSystemXmlApplication Context 是其子接口
Application Context 提供了对资源文件进行访问的支持
Application Context 是基于 beanfactoryi 而 a 建立的,ApplicationContext 继承了 beanFactory 的功能
它是 peanfactory 的子接口
Example
- 下面关于垃圾收集的说法正确的是
一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此
一旦一个对象成为垃圾,就立刻被收集掉
对象空间被收集掉之后,会执行试寸象的 finalize 方法
Finalize 方法和 C++的析构函数是完全一回事情
Example
- 不属于 Nginx 的特点是?()
高内存消耗
高扩展性
高可靠性
更快
Example
- 考察继承多态代码执行顺序,其中考察向上转型
Example
- Synchronized: 锁升级过程:无锁(锁对象初始化时)→偏向锁(有线程请求锁)→轻量级锁(多线程轻度竞争)→重量级锁(线程过多或长耗时操作),其中描述错误的是
锁只能升级,不能降级
如果当前锁处于膨胀中,说明该锁正在被其它线程执行膨胀操作,则当前线程就进行自旋等待,会一直占用 CPU 资源。等待其他线程完成锁的膨胀操作,退出自旋并返回
偏向锁可以被重置为无锁状态
偏向锁和轻量级锁在用户态维护,重量级锁需要切换到内核态 (os)进行维护
文言一心回答:
- 锁只能升级,不能降级:这是正确的。锁的状态只能从一种更轻量级的锁状态升级到更重量级的锁状态,不能降级。例如,一个对象一旦从轻量级锁膨胀到重量级锁,就不能再降级到轻量级锁或偏向锁。
- 如果当前锁处于膨胀中,说明该锁正在被其它线程执行膨胀操作,则当前线程就进行自旋等待,会一直占用 CPU 资源。等待其他线程完成锁的膨胀操作,退出自旋并返回:这也是正确的。当一个线程尝试获取一个正在膨胀(从轻量级锁膨胀到重量级锁)的锁时,该线程会进入自旋等待,直到膨胀完成。
- 偏向锁可以被重置为无锁状态:这是错误的。偏向锁一旦被重置,就会变为无锁状态,而不是其他状态。
- 偏向锁和轻量级锁在用户态维护,重量级锁需要切换到内核态 (os)进行维护:这是正确的。偏向锁和轻量级锁的获取和释放都是在用户态进行的,不需要内核态的介入。而重量级锁的获取和释放则需要内核态的参与。
多选题
Example
- 下面哪些可以作为微服务之间的通信方式
Mq
REST
RPC
Kafka
Tomcat
- REST (Representational State Transfer):REST 是一种基于 HTTP 协议的远程调用方式,它简单明了,易于理解和实现,并且可以在不同的平台和技术之间进行通信。在微服务架构中,REST 通常用于服务间的异步通信。
- RPC (Remote Procedure Call):RPC 是一种通过网络从远程计算机上请求服务的技术。RPC 通常用于在同一组织内或者相同技术栈的服务之间进行通信,可以提供更高效和更灵活的通信方式。
- MQ (Message Queue):消息队列是一种用于异步通信的机制,允许服务之间通过发送和接收消息进行通信。常见的消息队列技术包括 RabbitMQ、ActiveMQ 和 Kafka 等。
- Kafka:Kafka 是一种基于发布-订阅模型的消息系统,它通常用于大规模的实时数据流处理。在微服务架构中,Kafka 可以用于服务间的异步通信,特别是在需要处理大量数据的情况下。
Example
- 下列哪些是方法 public int add (inta, int b)的重载方法 public int add(double a,int b)
public double add(int a,int b)
public void add(int a,int b)
public double add(int a,int b,int c)
在 Java 中,方法的重载(Overloading)是指在一个类中可以有多个名字相同但参数列表不同的方法。重载的方法必须满足以下条件:
- 方法名必须相同。
- 参数类型、顺序或数量必须不同。
- 返回类型可以相同也可以不同。
对于你提供的这几个方法,哪些是属于public int add(int a, int b)
的重载方法呢?
public int add(double a, int b)
:这是一个重载方法,因为它有相同的方法名,但参数类型或顺序不同(double
和int
与int
和int
)。public double add(int a, int b)
:这也是一个重载方法,因为它有相同的方法名,但返回类型和参数类型或顺序不同(double
和int
与int
和int
)。public void add(int a, int b)
:这也是一个重载方法,因为它有相同的方法名,但返回类型和参数类型或顺序不同(void
和int
与int
和int
)。public double add(int a, int b, int c)
:这也是一个重载方法,因为它有相同的方法名,但参数类型、顺序或数量不同(三个参数与两个参数)。
所以,这四个方法都是public int add(int a, int b)
的重载方法
关于重载与重写请查看: 2.方法重写(需区别于方法重载;)
Example
- 下面对 Spring 中 Bean 的注入说法正确的是()
使用构造方法注入构造对象的同时,完成依赖关系的建立
在关系的对象很多时,不应该使用构造方法注入
Bean 根据注入方式不同可以分为构造方法注入和自动装载
构造方法通过 constructor-Index)属性来指定,在该标签下要指定索引的位置
构造方法通过 constructor-arg 属性来指定,在该标签下要指定索引的位置。
Example
- Spring 默认默认事务传播级别是
PROPAGATION SUPPORTS
PROPAGATION REQUIRED
PROPAGATION MANDATORY
PROPAGATION NOT SUPPORTED
Spring 事务的基本原理、传播属性、隔离级别以及数据库事务
Example
- MyBatis 事务管理的方式包含 :
JDBC
MANAGED
TRANSACTION
POOLED
MyBatis 支持四种事务管理方式,它们分别是:
- JDBC:这种配置直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源获得连接来管理事务作用域。
- MANAGED:这种配置几乎没做任何事情。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。
- TRANSACTION:这种配置使用了一个标准的 JDBC 事务,它依赖于从数据源获得连接来管理事务作用域。
- POOLED:这种配置使用了一个有连接的连接池,不过它管理事务的行为就像 TRANSACTION 一样。
请注意,在 Spring Boot 中,我们通常使用 Spring 的事务管理,而不是 MyBatis 的事务管理。Spring 支持编程式事务管理和声明式事务管理,提供了强大且灵活的事务管理功能。
编程题
Question
- 给你一个字符串 S,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(不能打乱其他字符的相对位置)。
样例输入:cbacdcbc
样例输出:acdb
这个问题可以通过贪心算法来解决。具体步骤如下:
- 遍历字符串,对于每个字符,如果它之前没有出现过,则加入结果字符串。
- 如果字符之前已经出现过,我们需要判断是否可以将它替换掉。为了保证字典序最小,我们需要找到当前字符之前最大的字符,如果当前字符比它大 ,则将当前字符替换掉该字符。
- 为了快速查找当前字符之前最大的字符,我们可以使用单调栈数据结构。
Question
- 一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?
样例输入:1000
样例输出:156
Example
- 输入某年某月某日,判断这一天是这一年的第几天?
样例输入:1998821
样例输出:1998-8-21 是这年的第 233 天。
主要考察 Java 8 新特性LocalDate