两个算法题限制Java语法,虽然简单,但不熟
单选
- 线程同步关键字
synchronized
、volatile
、ReentrantLock
等 - 快排思想
快速排序的基本思想是通过选择一个“基准”元素,将数组分为两部分,使得一部分的所有元素都小于基准,另一部分的所有元素都大于基准,然后递归地对这两部分进行排序。 - sleep() 和 wait() 区别
sleep()
- 定义:
sleep()
是Thread
类的一个静态方法。 - 功能:它使当前正在执行的线程暂停执行指定的时间(以毫秒为单位),期间该线程不会释放任何锁,也就是说,如果一个线程调用了
sleep()
方法,它仍然持有之前获取的所有锁。 - 使用场景:当你希望线程暂时停止执行一段时间,而不涉及线程间的协作时可以使用
sleep()
。例如,在模拟延迟或定时任务中。
wait()
: - 定义:
wait()
是Object
类的一个实例方法。 - 功能:它必须与同步块或同步方法一起使用,并且会释放当前对象的锁。当一个线程调用某个对象的
wait()
方法时,这个线程会被加入到该对象的等待队列中并进入等待状态,直到另一个线程调用同一个对象的notify()
或notifyAll()
方法来唤醒它。 - 使用场景:主要用于线程之间的协作,比如生产者-消费者问题中,用来协调多个线程对共享资源的访问。
- 定义:
- 数组和链表区别
数组静态分配内存、链表动态分配内存,数组和链表都分配在堆区 - 代码运行结果
1
2
3
4public static void main(String[] args) {
int i = 4;
System.out.println("value值为:" + (i > 4 ? 99.9 : 9)); // 输出: value值为:9.0
} - 事务ACID性质
- 存储引擎
- InnoDB用自适应哈希索引(Adaptive Hash Index, AHI)加速
- 数据库可重复读特点
只有幻读问题 - 数据库默认隔离级别
可重复读 - 线性链表特点
元素在逻辑上顺序,在物理存储上,不是顺序的
不定向
- Redis 惰性删除+定期删除
- 垃圾回收机制特点
- OS内存管理:段表、页表
- List 的 Iterator,打印元素
1
2
3
4while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
} - 垃圾回收策略
CMS收集器是老年代的收集器
编程题
- 不限语言,核心代码模式
- 限制Java,核心代码模式
- 限制Java,ACM模式