1、自我介绍
2、简单说一下对Java多态的理解
3、介绍一下用的比较多的关键字
4、private关键字和public关键字的区别
5、介绍一下线程的创建方式
6、线程池的核心参数
7、什么时候会触发拒绝策略
8、你有自己实现过拒绝策略吗
9、线程中用到了哪些方法
10、谈谈你对索引的理解
11、什么情况下不推荐使用索引
12、事务的隔离机制,mysql默认的是哪个
13、讲一下乐观锁、悲观锁
14、讲一下红黑树
15、讲一下冒泡排序
16、讲一下单例模式
17、redis的持久化方式
18、怎么解决redis和数据库之间数据不一致
19、你实习的时候部署过redis机群吗
20、讲一下Spring的AOP和IOC
21、你的项目中对异常怎么处理
22.了解微服务吗
23.微服务中的组件了解哪些
反问:
反问三件套
作者:看日出看日落
链接:小厂Java面经1_牛客网
来源:牛客网
下面是我在实习中协助面试 然后在牛客上挑选了一些完整的面试问题借助豆包完成的面经答案思路汇总
简要介绍个人背景、技术栈、项目经验及亮点,突出与岗位相关的技能和成果。
示例:
“面试官您好,我是XX,毕业于XX学校,主修计算机科学。目前有X年的Java开发经验,熟悉Spring Boot、MySQL、Redis等技术,参与过XX项目,负责后端模块开发,使用Redis优化了查询性能,提升了系统吞吐量。对分布式系统和微服务有一定了解,业余时间喜欢研究开源框架和算法。”
多态是面向对象的三大特性之一,指同一方法在不同对象中有不同实现方式。体现为:
Animal dog = new Dog()
)。示例:
class Animal { void sound() { System.out.println("Animal sound"); } }
class Dog extends Animal { void sound() { System.out.println("Bark"); } }
Animal myDog = new Dog();
myDog.sound(); // 输出 "Bark"(运行时绑定)
static
:修饰类变量、方法,属于类而非实例。final
:修饰类(不可继承)、方法(不可重写)、变量(常量)。synchronized
:保证线程同步。volatile
:确保变量可见性,禁止指令重排。try/catch/finally
:异常处理。public class Example {
private int secret = 1; // 仅本类可访问
public int value = 2; // 所有类可访问
}
run()
方法,调用start()
启动线程。run()
,将实例传入Thread构造器。FutureTask
获取返回值。ExecutorService
提交任务(推荐)。示例:
// 方式2
Runnable task = () -> System.out.println("Running");
new Thread(task).start();
ArrayBlockingQueue
)。AbortPolicy
)。当同时满足以下条件时:
maxPoolSize
。可通过实现RejectedExecutionHandler
接口自定义策略,例如记录日志或降级处理。
示例:
public class CustomPolicy implements RejectedExecutionHandler {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
System.out.println("Task rejected: " + r);
}
}
start()
:启动线程。sleep()
:线程休眠(不释放锁)。wait()/notify()
:对象锁的等待与唤醒。join()
:等待线程结束。yield()
:让出CPU时间片。索引是数据库中加速查询的数据结构(如B+树),通过减少磁盘I/O提高查询效率。
优点:加速查询。
缺点:占用存储空间,降低写操作速度。
synchronized
)。适用于写多读少。一种自平衡二叉查找树,特性:
步骤:
示例:
void bubbleSort(int[] arr) {
for (int i=0; i arr[j+1]) swap(arr, j, j+1);
}
}
}
确保类仅有一个实例,并提供全局访问点。
实现方式:
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() { return instance; }
}
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) instance = new Singleton();
}
}
return instance;
}
}
若未实际部署,可回答了解理论:
@ControllerAdvice
定义全局异常处理器。@ExceptionHandler
捕获特定异常。微服务是一种架构风格,将单体应用拆分为独立部署的小服务,通过轻量级通信协作。
总结:回答问题需清晰简洁,结合示例或场景说明,对不确定点可诚实说明但展现思考过程。