亿阳信通笔试题
億陽(yáng)通信筆試題
1、list 、set、map 有什么區(qū)別?
2、抽象類和接口的區(qū)別?
3、連接ORACLE數(shù)據(jù)庫(kù)
4、什么是序列化?
5、多線程終止?
6、讀出文件,顯示行號(hào)?
7、Runtime Exception和Exception區(qū)別?
億陽(yáng)通信筆試題
list 、set、map 有什么區(qū)別?
? ? List有序key和value都能重復(fù)
Set 無(wú)序(除treeSet) key和value都不能重復(fù)
Map無(wú)序(除treeMap) key 必須唯一 value 可以重復(fù)
抽象類和接口的區(qū)別?
抽象類里面可以有非抽象方法
但接口里只能有抽象方法?
聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽像類(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽像類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽像構(gòu)造函數(shù)或抽像靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽像方法提供實(shí)現(xiàn),否則它們也是抽像類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。
接口(interface)是抽像類的變體。在接口中,所有方法都是抽像的。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽像的,沒(méi)有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對(duì)像上調(diào)用接口的方法。由于有抽像類,它允許使用接口名作為引用變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類是否實(shí)現(xiàn)了接口。
連接ORACLE數(shù)據(jù)庫(kù)
public class DBConnection {
? ??
? ? /** Oracle數(shù)據(jù)庫(kù)連接URL*/
? ? private final static String DB_URL = "jdbc:oracle:thin:@192.168.2.66:1521:orcl66";
? ??
? ? /** Oracle數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)*/
? ? private final static String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
? ??
? ? /** 數(shù)據(jù)庫(kù)用戶名*/
? ? private final static String DB_USERNAME = "cpp";
? ??
? ? /** 數(shù)據(jù)庫(kù)密碼*/
? ? private final static String DB_PASSWORD = "cpp";
? ??
? ? /**
? ? ?* 獲取數(shù)據(jù)庫(kù)連接
? ? ?* @return
? ? ?*/
? ? public Connection getConnection(){
? ? ? ? /** 聲明Connection連接對(duì)象*/
? ? ? ? Connection conn = null;
? ? ? ? try{
? ? ? ? ? ? /** 使用Class.forName()方法自動(dòng)創(chuàng)建這個(gè)驅(qū)動(dòng)程序的實(shí)例且自動(dòng)調(diào)用DriverManager來(lái)注冊(cè)它*/
? ? ? ? ? ? Class.forName(DB_DRIVER);
? ? ? ? ? ? /** 通過(guò)DriverManager的getConnection()方法獲取數(shù)據(jù)庫(kù)連接*/
? ? ? ? ? ? conn = DriverManager.getConnection(DB_URL,DB_USERNAME,DB_PASSWORD);
? ? ? ? }catch(Exception ex){
? ? ? ? ? ? ex.printStackTrace();
? ? ? ? }
? ? ? ? return conn;
? ? }
? ??
? ? /**
? ? ?* 關(guān)閉數(shù)據(jù)庫(kù)連接
? ? ?*?
? ? ?* @param connect
? ? ?*/
? ? public void closeConnection(Connection conn){
? ? ? ? try{
? ? ? ? ? ? if(conn!=null){
? ? ? ? ? ? ? ? /** 判斷當(dāng)前連接連接對(duì)象如果沒(méi)有被關(guān)閉就調(diào)用關(guān)閉方法*/
? ? ? ? ? ? ? ? if(!conn.isClosed()){
? ? ? ? ? ? ? ? ? ? conn.close();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }catch(Exception ex){
? ? ? ? ? ? ex.printStackTrace();
? ? ? ? }
? ? }
? ??
}
什么是序列化?
(1)、序列化是干什么的?
? ? ? ?簡(jiǎn)單說(shuō)就是為了保存在內(nèi)存中的各種對(duì)象的狀態(tài)(也就是實(shí)例變量,不是方法),并且可以把保存的對(duì)象狀態(tài)再讀出來(lái)。雖然你可以用你自己的各種各樣的方法來(lái)保存object states,但是Java給你提供一種應(yīng)該比你自己好的保存對(duì)象狀態(tài)的機(jī)制,那就是序列化。
(2)、什么情況下需要序列化 ??
? ? a)當(dāng)你想把的內(nèi)存中的對(duì)象狀態(tài)保存到一個(gè)文件中或者數(shù)據(jù)庫(kù)中時(shí)候;
? ? b)當(dāng)你想用套接字在網(wǎng)絡(luò)上傳送對(duì)象的時(shí)候;
? ? c)當(dāng)你想通過(guò)RMI傳輸對(duì)象的時(shí)候;
多線程終止?
interrupt只是試圖中斷線程,而非強(qiáng)行終止,如果線程不愿意被中斷,它仍然可以繼續(xù)執(zhí)行。
stop方法,已經(jīng)被遺棄,缺點(diǎn)多多,API已經(jīng)不建議使用,倒是可以強(qiáng)制終止線程。
讀出文件,顯示行號(hào)?
public class Test {
?public static void main(String[] args) {
? readFileByLines("d://test.txt");
? ? }
?/**
? ? ?* 以行為單位讀取文件,常用于讀面向行的格式化文件
? ? ?*/
? ? public static void readFileByLines(String fileName) {
? ? ? ? File file = new File(fileName);
? ? ? ? BufferedReader reader = null;
? ? ? ? try {
? ? ? ? ? ? System.out.println("以行為單位讀取文件內(nèi)容,一次讀一整行:");
? ? ? ? ? ? reader = new BufferedReader(new FileReader(file));
? ? ? ? ? ? String tempString = null;
? ? ? ? ? ? int line = 1;
? ? ? ? ? ? // 一次讀入一行,直到讀入null為文件結(jié)束
? ? ? ? ? ? while ((tempString = reader.readLine()) != null) {
? ? ? ? ? ? ? ? // 顯示行號(hào)
? ? ? ? ? ? ? ? System.out.println("line " + line + ": " + tempString);
? ? ? ? ? ? ? ? line++;
? ? ? ? ? ? }
? ? ? ? ? ? reader.close();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? } finally {
? ? ? ? ? ? if (reader != null) {
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? reader.close();
? ? ? ? ? ? ? ? } catch (IOException e1) {
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
Runtime Exception和Exception區(qū)別?
Exception是所有異常的父類?
runtimeException是他的一個(gè)子類
runtimeException可以不必拋出和捕獲
總結(jié)
- 上一篇: Hulu日常实习面经 (SDE/RSDE
- 下一篇: binding