面經(jīng)
1. mysql刪除表語句是什么?drop和truncate區(qū)別?
2. 刪除一行數(shù)據(jù)的sql
3. 查詢一張表所有的數(shù)據(jù)的sql
4. 查詢一張表有多少條數(shù)據(jù)sql。 count(1)和count(*)區(qū)別
5. i++和++i區(qū)別
6. 介紹下重載和重寫。 構(gòu)造方法可以重寫重載嗎?
7. arraylist和linkedlist的區(qū)別
8.解釋一下深拷貝和淺拷貝
9. 如果有三個線程,我如何能保證順序執(zhí)行.
方法1: 使用join()
join() 方法可以確保一個線程在另一個線程執(zhí)行完畢后才開始執(zhí)行。通過合理地調(diào)用 join(),可以實現(xiàn)線程的順序執(zhí)行。
方法2:使用countdownlatch/semaphore
方法3: 使用鎖和原子類,wait() + notifyAll()
方法4: 使用completablefuture
10. 如果有一個 T1 線程,想把 T2 線程加到 T1 里面,怎么實現(xiàn)?
方法1. 使用join()
Thread t2 = new Thread(() -> {
// T2 線程的執(zhí)行邏輯
System.out.println("T2 線程正在執(zhí)行");
});
Thread t1 = new Thread(() -> {
try {
System.out.println("T1 線程開始執(zhí)行");
// T1 線程在此處等待 T2 線程執(zhí)行完成
t2.start(); // 啟動 T2 線程
t2.join(); // T1 等待 T2 完成
System.out.println("T2 線程已完成,T1 繼續(xù)執(zhí)行");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
t1.start();
方法2. 使用future.get()
ExecutorService executor = Executors.newSingleThreadExecutor();
Future> future = executor.submit(() -> {
// T2 線程的執(zhí)行邏輯
System.out.println("T2 線程正在執(zhí)行");
});
Thread t1 = new Thread(() -> {
try {
System.out.println("T1 線程開始執(zhí)行");
// T1 線程在此處等待 T2 線程執(zhí)行完成
future.get(); // 阻塞直到 T2 完成
System.out.println("T2 線程已完成,T1 繼續(xù)執(zhí)行");
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
} finally {
executor.shutdown();
}
});
t1.start();
方法3. 使用countdownlatch
CountDownLatch latch = new CountDownLatch(1);
Thread t2 = new Thread(() -> {
try {
System.out.println("T2 線程正在執(zhí)行");
} finally {
latch.countDown(); // 完成時減少計數(shù)
}
});
Thread t1 = new Thread(() -> {
try {
System.out.println("T1 線程開始執(zhí)行");
t2.start(); // 啟動 T2 線程
latch.await(); // 等待 T2 完成
System.out.println("T2 線程已完成,T1 繼續(xù)執(zhí)行");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
t1.start();
11. a=a+b 和 a+=b的區(qū)別
a = a + b,如果 a 和 b 的類型不同(如 a 是 int,b 是 double),需要顯式強制類型轉(zhuǎn)換,否則會編譯報錯。
即:
double a= 1;
int b = 2;
a = (double) (a+b);
a += b,會自動執(zhí)行隱式類型轉(zhuǎn)換,將結(jié)果轉(zhuǎn)換為 a 的類型。
13. 數(shù)據(jù)庫的三大范式
如答案有錯誤歡迎指正
2. 刪除一行數(shù)據(jù)的sql
3. 查詢一張表所有的數(shù)據(jù)的sql
4. 查詢一張表有多少條數(shù)據(jù)sql。 count(1)和count(*)區(qū)別
5. i++和++i區(qū)別
6. 介紹下重載和重寫。 構(gòu)造方法可以重寫重載嗎?
7. arraylist和linkedlist的區(qū)別
8.解釋一下深拷貝和淺拷貝
9. 如果有三個線程,我如何能保證順序執(zhí)行.
方法1: 使用join()
join() 方法可以確保一個線程在另一個線程執(zhí)行完畢后才開始執(zhí)行。通過合理地調(diào)用 join(),可以實現(xiàn)線程的順序執(zhí)行。
方法2:使用countdownlatch/semaphore
方法3: 使用鎖和原子類,wait() + notifyAll()
方法4: 使用completablefuture
10. 如果有一個 T1 線程,想把 T2 線程加到 T1 里面,怎么實現(xiàn)?
方法1. 使用join()
Thread t2 = new Thread(() -> {
// T2 線程的執(zhí)行邏輯
System.out.println("T2 線程正在執(zhí)行");
});
Thread t1 = new Thread(() -> {
try {
System.out.println("T1 線程開始執(zhí)行");
// T1 線程在此處等待 T2 線程執(zhí)行完成
t2.start(); // 啟動 T2 線程
t2.join(); // T1 等待 T2 完成
System.out.println("T2 線程已完成,T1 繼續(xù)執(zhí)行");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
t1.start();
方法2. 使用future.get()
ExecutorService executor = Executors.newSingleThreadExecutor();
Future> future = executor.submit(() -> {
// T2 線程的執(zhí)行邏輯
System.out.println("T2 線程正在執(zhí)行");
});
Thread t1 = new Thread(() -> {
try {
System.out.println("T1 線程開始執(zhí)行");
// T1 線程在此處等待 T2 線程執(zhí)行完成
future.get(); // 阻塞直到 T2 完成
System.out.println("T2 線程已完成,T1 繼續(xù)執(zhí)行");
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
} finally {
executor.shutdown();
}
});
t1.start();
方法3. 使用countdownlatch
CountDownLatch latch = new CountDownLatch(1);
Thread t2 = new Thread(() -> {
try {
System.out.println("T2 線程正在執(zhí)行");
} finally {
latch.countDown(); // 完成時減少計數(shù)
}
});
Thread t1 = new Thread(() -> {
try {
System.out.println("T1 線程開始執(zhí)行");
t2.start(); // 啟動 T2 線程
latch.await(); // 等待 T2 完成
System.out.println("T2 線程已完成,T1 繼續(xù)執(zhí)行");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
t1.start();
11. a=a+b 和 a+=b的區(qū)別
a = a + b,如果 a 和 b 的類型不同(如 a 是 int,b 是 double),需要顯式強制類型轉(zhuǎn)換,否則會編譯報錯。
即:
double a= 1;
int b = 2;
a = (double) (a+b);
a += b,會自動執(zhí)行隱式類型轉(zhuǎn)換,將結(jié)果轉(zhuǎn)換為 a 的類型。
13. 數(shù)據(jù)庫的三大范式
如答案有錯誤歡迎指正
全部評論
相關(guān)推薦
點贊 評論 收藏
分享
點贊 評論 收藏
分享