TP-Link 一面面经 & 二面面经
时长约 20 mins
针对项目 简历展开
项目介绍
1.分布式事务如何保证一致性
2.高可用系统
3.JVM内存模型,垃圾回收机制
4.三个线程轮流打印 ABC
贴一个常用的.当然还可以用 lock 锁做
public class ThreadTest { private Object lock = new Object(); private int count = 0; public void printABC(int flag){ for (int i = 0; i < 10;) { synchronized (lock){ while (count%3 != flag){ try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } count++; System.out.print(Thread.currentThread().getName()); i++; lock.notifyAll(); } } } public static void main(String[] args) { ThreadTest threadTest = new ThreadTest(); new Thread(()->{ threadTest.printABC(0); },"A").start(); new Thread(()->{ threadTest.printABC(1); },"B").start(); new Thread(()->{ threadTest.printABC(2); },"C").start(); } }
ABCABCABCABCABCABCABCABCABCABC Process finished with exit code 0
然后面试就突然结束 , 还挺意外的.
二面
1.线程的状态?
2.wait方法和 sleep() 方法有什么不同?
3.notify 和notifyall ?
4.Java 有哪些方法或方式用来保证线程安全?
5.synchronized 关键字?
6.synchronized 用在静态方法和成员方法有什么差异?
7.ThreadLocal 的原理?
8.Java 反射机制?用在的场景?
9.Spring 框架中有哪些典型的反射机制?
10.分布式生成唯一 ID 的方案有哪些?
11.提高表检索的效率的方式?
反问: