本週由於清明節的緣故上了3天的課這篇博客主要是說一說上週的項目以及項目答辯java
答辯題算法
一、Java語言的特色是什麼?數據庫
簡單 面向對象 跨平臺 多線程 健壯性安全性 垃圾回收機制編程
二、如何編譯和執行java文件?產生幫助文檔用什麼命令?數組
編譯: javac 文件名安全
執行: java 類名網絡
產生幫助文檔 javadoc 文件名多線程
三、虛擬機的工做流程是什麼?架構
編寫源文件(*.java)------編譯成*.class字節碼文件------類加載--------字節碼校驗----解釋器----操做系統。框架
四、main方法怎麼書寫?
Public static void main(String[] aaa){}
Static public void main(String sss[]){}
五、什麼是標識符?標識符有幾種?標識符的命名規則是什麼?
凡是能夠命名的地方叫標識符。咱們可使用標識符命名類、方法、變量。
標識符分兩種:系統標識符(關鍵字)和用戶標識符。
標識符命名規則:以字母、數字、下劃線、$組成。不能以數字開始。
六、Java中基本數據類型有哪些?各佔幾個字節?Java中引用數據類型有哪些?基本類型和引用類型的區別是什麼?
Java基本數據類型,變量自己存放數據。byte(1)取值在-128~127。Short(2)、int(4)、long(8)、float(4)、double(8)、char(2)、boolean(1)
Java引用類型,變量存放對象的地址。類、數組,接口。
基本類型中存放具體的數據,引用類型存放對象的地址
七、Java中char類型用什麼編碼?
unicode
八、變量三要素是什麼?
變量類型 變量名 變量值
九、Java的註釋有幾種?
//單行註釋
/* */多行註釋
/** */文檔註釋
十、定義常量用什麼關鍵字?
final
十一、什麼是對象?什麼是類?對象和類的關係是什麼?
對象是存在的一個實體,具備明確的特徵和行爲。
類是具備相同特徵和行爲的一組對象的集合。
類是對象的抽象。對象是類的實例和具體表現。
十二、變量按做用域劃分有哪幾種?局部變量使用時須要注意什麼問題?
局部變量、成員變量(屬性)、靜態變量(類變量)
局部變量使用前須要注意:1、變量必須初始化 2、做用域 3、局部變量的修飾符只能是默認,或final
1三、靜態變量和成員變量有什麼區別?應該怎麼調用?
成員變量從屬於對象,是對象的一部分,放在堆中。
靜態變量是不少對象共享的,放在數據段中。
成員變量是對象特有的,彼此獨立,一個對象成員變量值的更改,不會影響別的對象。
靜態變量是對象共享的,一個對象更改後,會影響全部的對象。
靜態變量在類加載時產生,加載時機在對象以前;成員變量在對象產生時加載。因此靜態方法不能直接訪問成員方法。
成員變量調用經過 對象名.成員變量
靜態變量調用經過 對象名.靜態變量 類名.靜態變量
1四、垃圾回收GC回收什麼樣的對象?
回收沒有被變量指向的對象。
1五、什麼是包?包的做用是什麼?如何導入別的包中的類?什麼樣的類不須要導入?
包就是文件夾。經過包能夠組織相關的類、能夠做到信息隱藏。
import 類的全路徑;(包名+類名)
本包中的類和java.lang.*無需導入能夠直接使用。
1六、靜態方法能直接調用成員方法或屬性嗎?爲何?
不行。靜態的東西加載時機在對象以前。
1七、當傳遞和返回對象,傳遞和返回的是什麼?
引用。
1八、什麼是構造方法?構造方法的做用是什麼?
構造方法的方法名和類名相同,沒有返回類型。
做用:1、爲對象分配空間
2、若是該類沒有加載,則加載類。
3、初始化成員變量
4、返回引用。
1九、建立對象有幾種方式?
new 類名(); 反射:Class對象.newInstance() 克隆(經過Object中clone())
反序列化(調用ObjectInputStream中readObject())
20、this和super各表明什麼含義?
this表示當前對象。super表示父類對象。
2一、數組如何定義?數組、字符串、集合各自的長度如何得到?
int[] I = new int[3]; int[] I = {1,2,3};
數組長度:length屬性
字符串長度:length()方法
集合長度:size()方法
2二、數組有哪些特色?
一、 數組是一個連續的空間,經過下標訪問元素,下標從0開始,最大下標爲長度-1;
二、 數組的元素都是變量,變量的類型就是定義數組的類型。
三、 數組的元素在建立時都會作初始化。int----0 double----0.0 引用類型----null
四、 數組的長度不可改變。
2三、私有屬性+get/set方法和公有屬性的區別
私有屬性+get/set方法,能夠在設置屬性值以前,作出數據合法性驗證,公有屬性沒法作到。
私有屬性+get/set方法,能夠刪除get或set方法,讓屬性成爲只讀或只寫屬性,公有屬性沒法作到。
2四、繼承用什麼關鍵字?子類繼承父類,構造方法第一句應該如何書寫?
繼承使用extends關鍵字。子類繼承父類,構造方法第一句是super(),產生父類對象,在父類對象基礎上擴展子類的方法和屬性。
2五、重寫和重載的區別是什麼?重寫有什麼要求?
重載發生在同一個類中,方法名相同,參數列表不一樣(參數的類型、參數的個數、參數的順序),和返回類型無關。
重寫發生在父類和子類之間。方法名相同,參數列表相同,返回類型也相同。訪問修飾符子類要大於或等於父類,而拋出的異常,子類要小於或等於父類。子類重寫了父類的方法,在調用時會優先調用子類重寫的方法。
2六、Java中一個類能同時繼承多個類嗎?全部類的父類是什麼?
不能,在java中類只能單根繼承,全部類的父類是Object。
2七、構造方法能繼承嗎?構造方法能重載嗎?
構造方法不能繼承,但能夠被子類所調用。構造方法能夠重載。
2八、final、finally、finalize的區別是什麼?
final能夠修飾類、方法、變量。修飾類,表示該類不能被繼承。修飾方法,表示該方法不能被子類重寫。修飾變量表示該變量是常量,內容不能更改。
finally是異常處理時,不管是否有異常都會執行的代碼塊。通常做資源回收。
finalize是Object中定義的方法。在垃圾回收該對象以前,會執行該方法。
2九、訪問修飾符有哪些?各自做用範圍是什麼?
private(私有) 只能在本類中訪問
默認 本包中能夠訪問
protected(受保護類) 本包和不一樣包的子類能夠訪問
public (公有) 全部的類均可訪問。
30、什麼是內部類?內部類class文件是怎樣命名的?
內部類就是在一個類中再定義一個類。內部類至關於外部類的屬性,能夠有public 、private、protected、static。它的產生必須依賴於外部類的對象。
內部類class文件命名 外部類名$內部類名.class
3一、什麼是多態?多態有什麼特色?
多態是指能夠用父類變量指向子類對象,能夠用接口變量指向實現類對象。
多態的特色:相同的行爲不一樣的表現方式,能夠動態綁定子類的行爲。
3二、面向對象的特徵有哪些?
繼承、封裝、多態、抽象
3三、什麼是抽象類?什麼是抽象方法?定義抽象類的關鍵字是什麼?
若是一個方法在定義時,只有方法定義,沒有方法實現,這個方法叫作抽象方法,擁有抽象方法的類叫抽象類。抽象類是不能直接實例化的。定義抽象類的關鍵字是abstract
3四、接口如何定義?實現接口用什麼關鍵字?一個類實現接口必須作什麼?
接口定義用interface。
實現接口用implements
一個類實現接口,必須實現接口中全部的抽象方法,不然該類只能是抽象類。
3五、接口中定義的方法修飾符是什麼?接口中定義的變量修飾符是什麼?
接口中方法修飾符是 public abstract
接口中變量修飾符是 public static final
3六、抽象類和接口的區別是什麼?
一、 抽象類能夠有方法的定義(抽象方法),也能夠有方法的實現(具體方法)。而接口中只能有方法的定義。
二、 抽象類中的變量是屬性,而接口中的變量是public static final
三、 抽象類只能被單根繼承,而接口能夠多實現。
3七、異常的API結構是怎樣的?Error和Exception有什麼區別?
Throwable父類,下面兩個子類,Error(錯誤,能捕獲,不能處理)和Exception(異常,能捕獲,能處理)
3八、異常的執行順序怎樣?若是在try塊中有return,finally會執行嗎?
先執行try塊,順序執行,若是有
異常,轉去catch塊執行,同時停止try塊中其餘代碼。不管是否有異常,都會執行finally內容。若是在try塊或catch塊有return,finally一樣會執行,在跳出方法前執行。
3九、finally是否在任什麼時候候都會執行?
不是,在虛擬機關閉時不會執行。System.exit(0);
40、throw 和throws的區別是什麼?
throw是語句,表示顯示拋出異常對象 throw new Exception();
throws是方法修飾符,表示該方法可能要拋出某種異常,調用該方法時,就須要處理該方法拋出的異常。
4一、異常分爲幾種?如何區分?
異常分爲編譯期異常、運行期異常。編譯期異常,必需要處理,不然編譯沒法經過。運行期異常可處理,可不處理,全部的運行期異常都是RuntimeException的子類。
4二、如何獲得當前工做目錄?
System.getProperty(「user.dir」);
4三、String x = "abc" 和 String x = new String("abc")有什麼區別?
String x = 「abc」。x指向數據段中的字符串常量。
String x = new String(「abc」); x指向堆中的字符串對象。但該對象必須以對應字符串常量爲模版。
4四、String和StringBuffer的區別?
String具備長度不能夠變的特性,當對字符串做添加、刪除、替換會產生新對象。
而StringBuffer是緩衝區的對象,當對其進行添加、刪除、替換時不會產生新對象。
4五、如何將字符串轉化爲基本數據類型?
int x = Integer.parseInt(「23」);
double x = Double.parseDouble(「23.3」);
4六、如何將日期對象進行"2011-12-10"格式化輸出?如何將"2011-12-10"字符串轉化爲日期類型?
SimpleDateFormat s = new SimpleDateFormat(「yyyy-MM-dd」);
String str = s.format(new Date());
Date date = s.parse(「2011-12-10」);
4七、javaBean規範有哪些內容?
一、 有公共的無參構造方法。
二、 私有屬性加上get/set方法進行訪問和設置。
三、 對象是可序列化的。
4八、什麼是反射?
反射是在編譯時,不清楚應該加載哪一個類,類的加載是在運行期進行的。經過反射我能夠對類進行加載、探知、自審。
4九、如何獲得Class對象?如何利用Class對象產生該類的對象?
類名.class 對象名.getClass() Class.forName(「類的全路徑」)
Class對象.newInstance();
50、線程和進程的區別?
進程有本身獨立的內存空間,進程一開啓就會消耗內存。而線程是進程內部的順序控制流。多個線程共享一個進程內存空間。
5一、建立線程有幾種方式?如何啓動線程?調用start()和調用run()的區別?
建立線程:1、繼承Thread類,重寫run() 2、實現Runnable接口,實現run()。
啓動線程:start();
啓動線程用start,這時會在主線程以外產生新的線程,多個任務同時執行。而直接調用run(),不會產生新線程。
5二、線程有幾種狀態?
新建 就緒 運行 死亡 休眠 等待 掛起 阻塞
5三、什麼是線程優先級?分爲幾級?
當兩個或兩個以上的線程同時要求啓動時,優先級高的線程優先獲得CPU的使用權。優先級分爲10級,數字越大,優先級越高。
5四、什麼是線程同步?同步會形成什麼結果?
線程同步是指當兩個或兩個以上的線程同時訪問同一個資源,爲了保護數據的安全,只容許在同一時間一個線程去訪問。
線程同步會形成1、數據安全 2、效率低下。
5五、wait和sleep的區別?
一、 sleep在Thread中定義,而wait在Object中定義。
二、 wait只能放在同步方法或同步塊中,而sleep能夠放在任何位置。
三、 wait會釋放對象鎖,而sleep不會。
四、 wait須要喚醒線程纔會繼續執行,而sleep在休眠結束後,自動恢復運行。
5六、集合的做用是什麼?集合框架的API結構是怎樣的?
集合的做用是對數據進行存儲、檢索、操做、傳輸。
集合框架分爲:接口、實現類、算法。
接口:Collection爲父接口,下面兩個子接口:List、Set,另外還有Map接口
5七、List、Set、Map集合各自有什麼特色?
List特色:線性,元素能夠重複
Set特色:元素不可重複
Map特色:鍵值對,一個元素包含兩個對象。鍵不能重複。
5八、集合元素如何添加?如何刪除?如何遍歷?
添加:add() put()
刪除:remove()
遍歷:
一、 for(int i =0;i<list.size();i++){
Object obj = list.get(i);
}
二、 Iterator it = list.iterator();
while(it.hasNext()){
Object obj = it.next();
}
三、 for(Object obj : list){
}
5九、List接口實現類ArrayList、Vector、LinkedList的區別?HashMap和Hashtable區別?
ArrayList底層由數組實現。是連續的空間,遍歷、尾部追加速度快,中間插入、刪除速度慢。
Vector底層也由數組實現。是線程安全的類。
LinkedList是不連續空間,
HashMap容許空鍵和空值,線程不安全。Hashtable不容許空鍵和空值,線程安全。
60、集合如何進行排序?
Collections.sort(list,Comparator c);
6一、awt和swing有什麼區別?
awt是利用操做系統的風格構建組件,跨平臺時顯示風格不一致。
swing是單獨的組件,跨平臺時風格一致。
6二、GUI常見佈局管理器有哪些?
絕對佈局,邊框佈局,流式佈局,網格佈局
6三、如何進行事件的添加?
肯定事件源,肯定監聽器(實現監聽接口) 註冊(創建事件源和監聽器的聯繫)
6四、流按照輸入輸出方向分有幾種?相對於什麼而言?
流按照輸入輸出方向分有兩種,相對於內存而言,當將數據從數據源中讀取到內存時,叫讀取流。當將數據從內存寫入數據源時,叫寫入流。
6五、流按照傳輸內容分有幾種?各自的父類是什麼?
流按照傳輸內容有 字節流、字符流、對象流。但其本質都是字節流。字符流和對象流是在字節流基礎上做了一層封裝,以便更好對字符和對象進行操做。
字節流的父類:InputStream和OutputStream
字符流的父類:Reader和Writer
6六、操做流時,若是文件不存在會出現什麼狀況?若是流不關閉會出現什麼狀況?
操做流時,若是文件不存在,對於讀取流而言,會拋出文件未找到異常。對於寫入流而言,會建立新文件。若是流使用完成後不關閉,會浪費內存資源。並且對於寫入流而言,若是流不關閉也不刷新,有可能寫不進數據。
6七、如何判斷一個文件是否存在?如何建立一個目錄?如何知道一個目錄中有多少文件?
使用File類中exists()判斷文件是否存在。
建立新目錄:mkdir();
列出目錄中的文件:listFiles();
6八、什麼是對象序列化?如何實現對象序列化?
當須要傳輸對象時,因爲對象中數據很龐大,因此須要將對象打散成字節序列,以利傳輸。這個過程叫作序列化。到達目的地時,又須要將字節序列還原成對象,叫反序列化。
這時,須要序列化的對象必須實現java.io.Serializable接口
6九、TCP/IP協議分爲幾層?
TCP/IP分爲四層:應用層、傳輸層、網絡層、網絡接口層
70、什麼是端口?常見端口有哪些?
端口是一個應用程序輸入輸出數據的通道。每一個應用程序都會有固定的端口。
常見的端口: ftp:21 Telnet協議:23 smtp:25 http:80
7一、TCP和UDP的區別是什麼?掌握TCP編程流程。
TCP是比較可靠的傳輸協議,提供三次握手機制,若是信息在傳輸中丟失或耗損,會要求發送方從新發送,保證數據傳輸的完整性。
UDP是比較不可靠的傳輸協議,當信息在傳輸中丟失或耗損,不會要求發送方從新發送。優勢是速度快。
7二、什麼是XML?XML聲明是怎樣的?XML註釋是怎樣的?
XML叫作可擴展的標識語言,以標記和子標記的方式描述對象。
聲明<?xml version=」1.0」 encoding=」utf-8」?>
註釋<!-- - ->
7三、一個格式良好的XML有哪些規定?
一、 必需要有聲明
二、 有且只有一個根元素
三、 大小寫區分
四、 屬性必須加引號
五、 標記成對出現
六、 標記要正確嵌套。
七、 空標記要關閉
74、格式良好的XML和有效的XML有什麼區別?
有效的XML除了知足XML基本規範外,還要知足DTD和Schema定義的元素規則。有效的XML必定是格式良好的XML,但格式良好的XML不必定有效。
75、DOM和SAX有什麼區別?
DOM是以樹狀方式的一套API,能夠讀取能夠寫入;能夠隨機訪問XML中元素;大型文檔佔用內存較多。
SAX是一套基於事件方式的API。佔用內存小,只能讀取不能寫入,不能隨機訪問元素,文檔只能遍歷一次。
76、靜態塊和實例化塊分別在何時執行?
靜態塊在類加載時執行,只執行一次。實例化塊在產生對象時執行。每產生一個對象,就執行一次,在super()以後執行。
77、什麼是一對1、一對多、多對多?
一對一指的是一條主表記錄對應一條從表記錄。一對多指的是一條主表記錄對應多條從表記錄。多對多指的是一條主表記錄對應多條從表記錄,同時一條從表記錄也對應多條主表記錄,經過中間表來描述多對多關係。
78、數據庫完整性有哪些?
實體完整性:每條記錄都要有所區別,不能存在如出一轍的記錄。經過主鍵和惟一約束實現
域完整性:保證每一列的值是有效的。經過默認約束、非空約束和檢查約束實現
引用完整性:保證從表的外鍵必須引用主表的主鍵。經過外鍵約束實現
用戶自定義完整性:用戶自定義的規則
79、什麼是主鍵,主鍵有什麼特色?
主鍵是用於標識一個表中兩條記錄不能徹底同樣的列,它有兩個特色:非空和值不能重複。
80、什麼是外鍵,它和外鍵約束有什麼區別
外鍵是指從表的某列與主表的某列存在的關聯關係
外鍵約束是指在從表的外鍵列上加上一個約束,強制要求從表的外鍵必須引用主表的主鍵。若是違反該約束,則不容許該條數據的添加修改。
81、增、刪、改、查的基本SQL語句
添加:insert into 表名(字段列表) values(值)
刪除:delete from 表名 where id=1
修改:update 表名 set 字段名=新值 where id=1
查詢:select * from 表名
82、DELETE和TRUNCATE的區別
Delete能夠有選擇性的對記錄進行刪除,要寫日誌文件,能夠回滾刪除的記錄
Truncate只能清空表中全部記錄,不寫日誌文件,刪除的記錄不能回滾,但執行效率高。
83、排除重複記錄用什麼關鍵字?如何限制查詢數據的返回限定行數?
DISTINCT
Select * from 表名 limit 0,3;
84、如何查詢null值
查詢null值用 is null 或is not null
85、SQL語句的聚合函數有哪些?
Count:統計行數量 Sum:計算單個列的總和
Avg:計算單個列的平均值 Max:計算單個列的最大值
Min:計算單個列的最小值
86、在分組語句中,查詢的列能夠有哪些?
只能有分組字段列和聚合函數
87、where和having的區別
Where在分組以前執行,因此不能使用聚合函數。Having在分組以後執行,對分組的結果進行條件過濾,只能用聚合函數。
88、描述SQL查詢語句執行順序
第一步:執行FROM
第二步:WHERE條件過濾
第三步:GROUP BY分組
第四步:執行SELECT投影列
第五步:HAVING條件過濾
第六步:執行ORDER BY 排序
89、內鏈接和外鏈接區別
內聯接是指使用比較運算符根據每一個表共有的列的值匹配兩個表中的行。
外聯接是指無論有沒有匹配,被定義了外聯接的表數據都要出如今結果中。
內鏈接:
Select e.*,d.deptName from t_employee e,t_dept d where e.deptId=d.id;
Select e.*,d.deptName from t_employee e join t_dept d on e.deptId=d.id;
外鏈接:
Select e.*,d.deptName from t_employee e left join t_dept d on e.deptId=d.id;
90、如何刪除主表記錄?
因爲有外鍵約束存在,若是主表記錄有從表記錄進行引用,那麼沒法刪除主表記錄。
刪除主表記錄有兩種方式:
1、級聯刪除,先刪除主表記錄對應的全部從表記錄,而後再刪除主表記錄。
2、外鍵置空,先將主表記錄對應的全部從表記錄外鍵設置爲null,而後再刪除主表記錄。
91、書寫case when語句
CASE WHEN price>=1000 THEN '高價商品'
WHEN price>=100 AND price < 1000 THEN '中檔商品'
ELSE '低檔商品'
END
92、什麼是JDBC
JDBC是JAVA鏈接數據庫的一套規範。該規範定義了一系列的接口,由數據庫廠商實現,由用戶根據接口調用。用戶根據接口方法就能夠屏蔽不一樣數據庫的差別,不管鏈接什麼數據庫都是一套API。
93、JDBC開發流程
加載驅動
創建鏈接
執行SQL語句
關閉鏈接
94、什麼是SQL注入
SQL注入是指在執行SQL語句時,若是以拼接字符串方式進行值的注入,那麼若是值中有非法字符或數據庫關鍵字時,就會致使執行錯誤或執行結果不正確的狀況。
9五、 Statement和PreparedStatement的區別
Statement是PreparedStatement的父接口,使用拼接字符串的方式填充SQL語句中的值,因此,當值不一樣的時候,JDBC會從新編譯SQL語句,效率低,並且容易形成SQL注入。
PreparedStatement提供了佔位符方式設置SQL語句,JDBC不會從新編譯SQL語句,並且不管是什麼值都當作字符串處理,不會形成SQL注入。
96、什麼是三層架構
三層架構即:表現層、業務層、持久層。每一層完成即定的功能,層與層之間用接口作耦合。每一層的組件能夠單獨測試,當其中一個組件更換或修改後,不會影響別的層的組件。
持久層:用於完成數據庫相關的操做。採用DAO模式,建立實體類和數據庫表作映射,也就是哪一個類對應哪一個表,哪一個屬性對應哪一個列。而持久層的目的就是完成對象數據和關係數據的轉換。
業務層:用於業務處理。採用事務腳本模式。將一次請求中全部的業務封裝成一個方法,保證方法中全部的數據庫更新操做同時成功,同時失敗。不容許部分紅功,部分失敗,這樣引發數據混亂的狀況發生。
表現層:採用MVC模式。M表示模型,就是實體類,用於數據的封裝和數據的傳輸。V表示視圖,用於展現數據和接收數據。C表示控制,用於調用業務組件,完成業務流程的控制。
9七、 書寫單例模式
public class Man {
private static Man m = new Man();
private Man(){}
public static Man getMan(){
return m;
}
}
本次單邊對本身仍是不滿意的,該記得大多記住了,可是上去答辯時有點緊張,並且不夠自信,原本張老師叫我寫一個查詢語句,寫的是正確的,可是聽到班上的童鞋說道
應該聯表本身就信了!!!!!