A.數組 B.鏈表 C.數組+鏈表 D.二叉樹java
答案: Cgit
解析:程序員
JDK8之後,HashMap的數據結構是數組+鏈表+紅黑樹github
A.字節碼 B.可執行代碼 C.機器代碼 D.以上都不對面試
答案:
Asql
解析:編程
A.程序計數器是一個比較小的內存區域,用於指示當前線程所執行的字節碼執行到了第幾行,是線程隔離的 B.Java方法執行內存模型,用於存儲局部變量,操做數棧,動態連接,方法出口等信息,是線程隔離的 C.方法區用於存儲JVM加載的類信息、常量、靜態變量、即時編譯器編譯後的代碼等數據,是線程隔離的 D.原則上講,全部的對象都在堆區上分配內存,是線程之間共享的數組
答案: C瀏覽器
解析: 運行時數據區包括:虛擬機棧區,堆區,方法區,本地方法棧,程序計數器安全
A.class中的constructor不可省略 B.constructor必須與class同名,但方法不能與class同名 C.constructor在一個對象被new時執行 D.一個class只能定義一個constructor
答案: C
解析: A 省略構造函數,編譯器會自動生成。 D 構造函數能夠重載 B 方法是能夠和類名同名的,和構造方法惟一的區別就是,構造方法沒有返回值。
A.this.A(x) B.this(x) C.super(x) D.A(x)
答案: B
解析: this的做用其中一個就是在一個構造方法中調用另外一個構造方法,格式爲this(參數); super是調用父類的方法; A(a)這種形式是在new一個類時使用。
A.繼承性 B.多態性 C.類似性 D.封裝性
答案: A B D
解析: 面對對象三大特徵:封裝,繼承,多態
A.abstract類只能用來派生子類,不能用來建立abstract類的對象。 B.final類不但能夠用來派生子類,也能夠用來建立final類的對象。 C.abstract不能與final同時修飾一個類。 D.abstract類定義中能夠沒有abstract方法。
答案: A C D
解析: 一、abstract類不能用來建立abstract類的對象; 二、final類不能用來派生子類,由於用final修飾的類不能被繼承; 三、如2所述,final不能與abstract同時修飾一個類,abstract類就是被用來繼承的; 四、類中有abstract方法必須用abstract修飾,但abstract類中能夠沒有抽象方法,接口中也能夠有abstract方法。
A.在運行時判斷一個對象所屬的類 B.在運行時構造一個類的對象 C.在運行時判斷一個類所具備的成員變量和方法 D.在運行時調用一個對象的方法
答案: A B C D
解析: Java反射機制主要提供瞭如下功能: 在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判斷任意一個類所具備的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。 所以,答案爲:ABCD
A.bcak回到瀏覽器載入歷史URL地址列表的當前URL的前一個URL B.go表示刷新當前頁面 C.length保存歷史URL地址列表的長度信息 D.forward轉到瀏覽器載入歷史URL地址列表的當前URL的下一個URL。
答案: A D
解析:
選A、D。考察的是瀏覽器的內置對象管理模型,簡稱BOM(Browser Object Model)中的Histroy屬性和方法。
public class NameList
{
private List names = new ArrayList();
public synchronized void add(String name)
{
names.add(name);
}
public synchronized void printAll() {
for (int i = 0; i < names.size(); i++)
{
System.out.print(names.get(i) + 」」);
}
}
public static void main(String[]args)
{
final NameList sl = new NameList();
for (int i = 0; i < 2; i++)
{
new Thread()
{
public void run()
{
sl.add(「A」);
sl.add(「B」);
sl.add(「C」);
sl.printAll();
}
} .start();
}
}
}
複製代碼
Which two statements are true if this class is compiled and run?
A.An exception may be thrown at runtime. B.The code may run with no output, without exiting. C.The code may run with no output, exiting normally(正常地). D.The code may rum with output 「A B A B C C 「, then exit. E.The code may rum with output 「A B C A B C A B C 「, then exit. F.The code may ruin with output 「A A A B C A B C C 「, then exit. G.The code may ruin with output 「A B C A A B C A B C 「, then exit.
答案: E G
解析:
在每一個線程中都是順序執行的,因此sl.printAll();必須在前三句執行以後執行,也就是輸出的內容必有(連續或非連續的)ABC。而線程之間是穿插執行的,因此一個線程執行 sl.printAll();以前可能有另外一個線程執行了前三句的前幾句。 E答案至關於線程1順序執行完而後線程2順序執行完。 G答案則是線程1執行完前三句add以後線程2插一腳執行了一句add而後線程1再執行 sl.printAll();輸出ABCA。接着線程2順序執行完輸出ABCABC 輸出加起來即爲ABCAABCABC。
A.列表(List)和集合(Set)存放的元素都是可重複的。 B.列表(List)和集合(Set)存放的元素都是不可重複的。 C.映射(Map)<key,value>中key是能夠重複的。 D.映射(Map)<key,value>中value是能夠重複的。
答案: D
解析: 列表(List)的元素是有序、可重複的; 集合(Set)的元素是無序、不可重複的。
A.數組是一個對象 B.數組不是一種原生類 C.數組的大小能夠任意改變 D.在Java中,數組存儲在堆中連續內存空間裏
答案: C
解析: 在java中,數組是一個對象,不是一種原生類,對象因此存放在堆中,又由於數組特性,是連續的,只有C不對
A.private B.無修飾符 C.public D.protected
答案: B
解析:
public class HasStatic {
private static int x = 100;
public static void main(String args[]) {
HasStatic hs1 = new HasStatic();
hs1.x++;
HasStatic hs2 = new HasStatic();
hs2.x++;
hs1 = new HasStatic();
;
hs1.x++;
HasStatic.x--;
System.out.println("x=" + x);
}
}
複製代碼
A.程序經過編譯,輸出結果爲:x=103 B.10行不能經過編譯,由於x是私有靜態變量 C.5行不能經過編譯,由於引用了私有靜態變量 D.程序經過編譯,輸出結果爲:x=102
答案: D
解析: 此題選擇D。 首先要了解static的意思。
static表示「全局」或者「靜態」的意思,用來修飾成員變量和成員方法,也能夠造成靜態static代碼塊,可是Java語言中沒有全局變量的概念。 static變量在第一次使用的時候初始化,但只會有一份成員對象。 因此這裏不只能夠調用,並且每一次調用都確實修改了x的值,也就是變化狀況是這樣的: x=101 x=102 x=103 x=102
A.調用free()方法 B.代用system.gc()方法 C.賦值給該項對象的引用爲null D.程序員沒法明確強制垃圾回收器運行
答案: D
解析: 在《java虛擬機》一書中明確講了,釋放掉佔據的內存空間是由gc完成,可是程序員沒法明確強制其運行,該空間在不被引用的時候不必定會當即被釋放,這取決於GC自己,沒法由程序員經過代碼控制。
A.表對應類 B.記錄對應對象 C.表的字段對應類的屬性 D.表之間的參考關係對應類之間的依賴關係
答案: D
解析: 通常關係數據模型和對象數據模型之間有如下對應關係:表對應類,記錄對應對象,表的字段對應類的屬性
A.CopyOnWriteArrayList適用於寫多讀少的併發場景 B.ReadWriteLock適用於讀多寫少的併發場景 C.ConcurrentHashMap的寫操做不須要加鎖,讀操做須要加鎖 D.只要在定義int類型的成員變量i的時候加上volatile關鍵字,那麼多線程併發執行i++這樣的操做的時候就是線程安全的了
答案: B
解析: A,CopyOnWriteArrayList適用於寫少讀多的併發場景 B,ReadWriteLock即爲讀寫鎖,他要求寫與寫之間互斥,讀與寫之間互斥,讀與讀之間能夠併發執行。在讀多寫少的狀況下能夠提升效率 C,ConcurrentHashMap是同步的HashMap,讀寫都加鎖 D,volatile只保證多線程操做的可見性,不保證原子性
public class Test
{
public static Test t1 = new Test();
{
System.out.println("blockA");
}
static
{
System.out.println("blockB");
}
public static void main(String[] args)
{
Test t2 = new Test();
}
}
複製代碼
A.blockAblockBblockA B.blockAblockAblockB C.blockBblockBblockA D.blockBblockAblockB
答案: A
解析: 靜態塊:用static申明,JVM加載類時執行,僅執行一次 構造塊:類中直接用{}定義,每一次建立對象時執行 執行順序優先級:靜態塊>main()>構造塊>構造方法 靜態塊按照申明順序執行,先執行Test t1 = new Test(); 全部先輸出blockA,而後執行靜態塊,輸出blockB,最後執行main 方法中的Test t2 = new Test();輸出blockA。
A.HashMap和Hashtable都實現了Map接口 B.HashMap是非synchronized,而Hashtable是synchronized C.HashTable使用Enumeration,HashMap使用Iterator D.HashMap容許將 null 做爲一個 entry 的 key 或者 value,而 Hashtable 不容許。
答案: ABCD
解析:
A正確。Map是一個接口,hashtable,hashmap都是它的實現。 B正確。因爲Hashtable是線程安全的也是synchronized,因此在單線程環境下它比HashMap要慢。若是你不須要同步,只須要單一線程,那麼使用HashMap性能要好過Hashtable。 C正確。HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。因此當有其它線程改變了HashMap的結構(增長或者移除元素),將會拋出ConcurrentModificationException,但迭代器自己的remove()方法移除元素則不會拋出ConcurrentModificationException異常。但這並非一個必定發生的行爲,要看JVM。這條一樣也是Enumeration和Iterator的區別。 D正確。 哈希值的使用不一樣,HashTable直接使用對象的hashCode,代碼是這樣的:
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
複製代碼
而HashMap從新計算hash值,並且用與代替求模: int hash = hash(k); int i = indexFor(hash, table.length);
A.Statement sta=con.createStatement(); ResultSet rst=sta.executeQuery(「select * from book」);
B.Statement sta=con.createStatement(「select * from book」); ResultSet rst=sta.executeQuery();
C.PreparedStatement pst=con.prepareStatement(); ResultSet rst=pst.executeQuery(「select * from book」);
D.PreparedStatement pst=con.prepareStatement(「select * from book」); ResultSet rst=pst.executeQuery();
答案: A D
解析: A,D是正確的;建立Statement是不傳參的,PreparedStatement是須要傳入sql語句 說一下preparedStatement和statement的區別與聯繫:在JDBC應用中,若是你已是稍有水平開發者,你就應該始終以PreparedStatement代替Statement.也就是說,在任什麼時候候都不要使用Statement。
PreparedStatement 接口繼承 Statement,PreparedStatement 實例包含已編譯的 SQL 語句,因此其執行速度要快於Statement對象。Statement爲一條Sql語句生成執行計劃,若是要執行兩條sql語句select colume from table where colume=1;select colume from table where colume=2; 會生成兩個執行計劃一千個查詢就生成一千個執行計劃! PreparedStatement用於使用綁定變量重用執行計劃 select colume from table where colume=:x; 經過set不一樣數據只須要生成一次執行計劃,能夠重用
Java筆試內容集合 持續更新中....
歡迎關注我的微信公衆號:Coder編程 獲取最新原創技術文章和免費學習資料,更有大量精品思惟導圖、面試資料、PMP備考資料等你來領,方便你隨時隨地學習技術知識!
文章收錄至
Github: github.com/CoderMerlin…
Gitee: gitee.com/573059382/c… 歡迎關注並star~