Java工程師常見面試題集錦(三)網際網路人必看!(附答案及視訊教程,持續更新!)

CSDN學院發表於2019-01-14

不積跬步,無以至千里;不積小流,無以成江海。 

本期繼續更新10道Java面試題:涉及IO流,多執行緒,類,MySQL資料庫等知識點。

Java工程師常見面試題集錦(一)網際網路人必看!https://blog.csdn.net/CSDNedu/article/details/85602533

Java工程師常見面試題集錦(二)網際網路人必看!https://blog.csdn.net/CSDNedu/article/details/86138938

如果覺得文字學習較慢,也可以跟著老師一起視訊學習:

Java面試題視訊學習連結:https://edu.csdn.net/course/detail/10533

21.Java中的所有的流可以分為幾大類,它們的名字是什麼,各代表什麼

分為:

位元組輸入流 InputStream

位元組輸出流 OutputStream

字元輸入流 Reader

字元輸出流 Writer

所有流都是這四個流的子類

22. IO流怎樣讀取檔案的?

使用File物件獲取檔案路徑,通過字元流Reader加入檔案,使用字元快取流BufferedReader處理Reader,再定義一個字串,迴圈遍歷出檔案。程式碼如下:

File file = new File("d:/spring.txt");
try {
Reader reader = new FileReader(file);
BufferedReader buffered = new BufferedReader(reader);
String data = null;
while((data = buffered.readLine())!=null){
System.out.println(data);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

23.PrintStream、BufferedWriter、PrintWriter的比較?

1)PrintStream類的輸出功能非常強大,通常如果需要輸出文字內容,都應該將輸出流包裝成PrintStream後進行輸出。它還提供其他兩項功能。與其他輸出流不同,PrintStream 永遠不會丟擲 IOException,而是異常情況僅設定可通過 checkError 方法測試的內部標誌。另外,為了自動重新整理,可以建立一個 PrintStream;

2)BufferedWriter:將文字寫入字元輸出流,緩衝各個字元從而提供單個字元,陣列和字串的高效寫入。通過write()方法可以將獲取到的字元輸出,然後通過newLine()進行換行操作。BufferedWriter中的字元流必須通過呼叫flush方法才能將其刷出去。並且BufferedWriter只能對字元流進行操作。如果要對位元組流操作,則使用BufferedInputStream;

3) PrintWriter的println方法自動新增換行,不會拋異常,若關心異常,需要呼叫checkError方法看是否有異常發生,PrintWriter構造方法可指定引數,實現自動重新整理快取(autoflush);

24.sleep() 和 wait() 有什麼區別?

1)sleep是執行緒類(Thread)的方法,導致此執行緒暫停執行指定時間,把執行機會給其他執行緒,但是監控狀態依然保持,到時後會自動恢復。呼叫sleep不會釋放物件鎖。

2)wait是Object類的方法,對此物件呼叫wait方法導致本執行緒放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件發出notify方法(或notifyAll)後本執行緒才進入物件鎖定池準備獲得物件鎖進入執行狀態。

25.sleep()和yield()有什麼區別?

1)sleep()方法給其他執行緒執行機會時不考慮執行緒的優先順序,因此會給低優先順序的執行緒以執行的機會;yield()方法只會給相同優先順序或更高優先順序的執行緒以執行的機會;

2)執行緒執行sleep()方法後轉入阻塞(blocked)狀態,而執行yield()方法後轉入就緒(ready)狀態;

3)sleep()方法宣告丟擲InterruptedException,而yield()方法沒有宣告任何異常;

4)sleep()方法比yield()方法(跟作業系統相關)具有更好的可移植性。

Java工程師常見面試題集錦(一)網際網路人必看!https://blog.csdn.net/CSDNedu/article/details/85602533

Java工程師常見面試題集錦(二)網際網路人必看!https://blog.csdn.net/CSDNedu/article/details/86138938

如果覺得文字學習較慢,也可以跟著老師一起視訊學習:

Java面試題視訊學習連結:https://edu.csdn.net/course/detail/10533

26.MySQL的資料庫匯入匯出 

 配置:

首先找到mysql的安裝目錄,進入bin目錄下複製路徑

將mysql的bin目錄貼上在計算機環境變數的path中

授權:

登入mysql

將某張表的某個許可權賦給某個使用者

grant [select,insert,update,delete,create,drop] on [databaseName].[tableName]    to [userName]@[userIP] identified by [‘連線口令’]

grant select,insert,update,delete,create,drop on oa_ssh.user to root@[IP]  identified by 'root';

將所有庫的所有許可權賦給某個使用者

grant all privileges on *.* to [userName]@[userIp] identified by [‘連線口令’]

grant all privileges on *.* to root@[IP] identified by ‘root';

將所有庫的所有許可權賦給所有使用者

grant all privileges on *.* to root@'%' identified by ‘root’;

匯出本地資料庫:

mysqldump -u 使用者名稱 -p 資料庫名 > 磁碟:匯出的檔名(加字尾)

遠端匯出資料庫:

mysqldump -h IP -u 使用者名稱 -p 資料庫名稱 >匯出的檔名(加字尾)

遠端匯出資料表:

mysqldump -u root -p -d --add-drop-table 資料庫名稱 > 匯出檔名(加字尾)

匯入資料:

mysql -u root -p登入成功後 ==》 source 磁碟:匯入的檔名(加字尾)

27.類初始化過程

一個類要建立例項需要先載入並初始化該類

umain方法所在的類需要先載入和初始化

一個子類要初始化需要先初始化父類

一個類初始化就是執行<clinit>()方法

u<clinit>()方法由靜態類變數顯示賦值程式碼和靜態程式碼塊組成

u類變數顯示賦值程式碼和靜態程式碼塊程式碼從上到下順序執行

u<clinit>()方法只執行一次

28.例項初始化過程

例項初始化就是執行<init>()方法

u<init>()方法可能過載有多個,有幾個構造器就有幾個<init>方法

u<init>()方法由非靜態例項變數顯示賦值程式碼和非靜態程式碼塊、對應構造器程式碼組成

u非靜態例項變數顯示賦值程式碼和非靜態程式碼塊程式碼從上到下順序執行,而對應構造器的程式碼最後執行

u每次建立例項物件,呼叫對應構造器,執行的就是對應的<init>方法

u<init>方法的首行是super()super(實參列表),即對應父類的<init>方法

29.方法的重寫Override

哪些方法不可以被重寫

ufinal方法

u靜態方法

uprivate等子類中不可見方法

物件的多型性

u子類如果重寫了父類的方法,通過子類物件呼叫的一定是子類重寫過的程式碼

u非靜態方法預設的呼叫物件是this

uthis物件在構造器或者說<init>方法中就是正在建立的物件

30.MySQL中myisam與innodb的區別,至少5點

1)5點不同:

1>.InnoDB支援事物,而MyISAM不支援事物

2>.InnoDB支援行級鎖,而MyISAM支援表級鎖

3>.InnoDB支援MVCC, 而MyISAM不支援

4>.InnoDB支援外來鍵,而MyISAM不支援

5>.InnoDB不支援全文索引,而MyISAM支援。

2)innodb引擎的4大特性:

插入緩衝(insert buffer),二次寫(double write),自適應雜湊索引(ahi),預讀(read ahead)

3)2者selectcount(*)哪個更快,為什麼?

myisam更快,因為myisam內部維護了一個計數器,可以直接調取。

Java工程師常見面試題集錦(一)網際網路人必看!https://blog.csdn.net/CSDNedu/article/details/85602533

Java工程師常見面試題集錦(二)網際網路人必看!https://blog.csdn.net/CSDNedu/article/details/86138938

如果覺得文字學習較慢,也可以跟著老師一起視訊學習:

Java面試題視訊學習連結:https://edu.csdn.net/course/detail/10533

相關文章