在Java面試中,經常會被問到I/O和多線程相關的問題。這兩個知識點不僅在Java中非常重要,也給面試官了解我們編程能力的機會。
一、I/O
Java中I/O操作包含輸入和輸出兩種方式。輸入是將數據從輸入設備(如鍵盤、文件)讀入到程序中,輸出是將程序中的數據寫入到輸出設備(如屏幕、文件)中。
在Java中,I/O操作的主要類是java.io包中的InputStream和OutputStream類。常用的I/O類還包括File、FileInputStream、FileOutputStream、Reader和Writer等。
// 讀取文件內容 try (BufferedReader reader = new BufferedReader(new FileReader("filename.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } // 向文件寫入內容 try (BufferedWriter writer = new BufferedWriter(new FileWriter("filename.txt"))) { writer.write("Hello, world!"); } catch (IOException e) { e.printStackTrace(); }
二、多線程
多線程是Java中一項非常重要的技術,它能夠讓我們在一個程序中同時執行多個任務,提高程序的執行效率。
在Java中,我們可以使用Thread類來創建新的線程。我們也可以實現Runnable接口,并將其傳遞給Thread類的構造函數。Java中還提供了一些同步機制,如synchronized關鍵字和Lock接口,來防止多個線程同時修改共享資源。
// 創建新線程 Thread thread = new Thread(() -> { // 執行任務 }); thread.start(); // 同步機制 private static int count = 0; private static final Object lock = new Object(); public static void increase() { synchronized (lock) { count++; } }
以上是常見的I/O和多線程知識點,掌握它們不僅能讓我們在面試中有優勢,也能提高我們的編程水平。