1、有關jdbc statement的說法正確的是?
JDBC提供了Statement、PreparedStatement 和 CallableStatement三種方式來執行查詢語句,其中 Statement 用於通用查詢, PreparedStatement 用於執行參數化查詢,而 CallableStatement則是用於存儲過程
對於PreparedStatement來說,數據庫可以使用已經編譯過及定義好的執行計划,由於 PreparedStatement 對象已預編譯過,所以其執行速度要快於 Statement 對象”
PreparedStatement可以阻止常見的SQL注入式攻擊
2、執行完以下代碼 int [ ] x = new int[10] ;后,說明是正確的( )
x[9]為0
解析:
數組引用類型的變量的默認值為 null。當數組變量的實例后,如果沒有沒有顯示的為每個元素賦值,Java 就會把該數組的所有元素初始化為其相應類型的默認值。
int型的默認值為0
3、哪個事件會導致線程銷毀?
run()方法的執行結束
4、這條語句一共創建了多少個對象:String s="welcome"+"to"+360;
1
5、如果希望監聽TCP端口9000,服務器端應該怎樣創建socket?
new ServerSocket(9000);
6、哪幾個函數 public void example(){....} 的重載函數?()
public void example(int m){...}
public int example(int m,float f){...}
解析:
java重載的時候以參數個數和類型作為區分,方法名相同,返回類型可以相同也可以不同,但不以返回類型作為區分。
7、哪個是合法的 Java 標識符?( )
FirstJavaApplet
First_Applet
8、不是 Java 關鍵字的是 ( )
false
sizeof
9、不能用來修飾interface的有( )(僅限外部接口)
private
protected
static
10、關於Java中的數組,描述是准確的
數組是一個對象,不同類型的數組具有不同的類
數組是一個連續的存儲結構
可以二維數組,且可以有多維數組,都是在Java中合法的
11、容器中,哪些容器按 key 查找的復雜度為 O(log(n)) ()
std::multimap
std::map
解析:
STL庫中,map和multimap底層都是紅黑樹實現的,兩者的不同在於multimap允許重復的可以,而map中不行。
紅黑樹的查找復雜度為O(log(n))
unodered_map/_set底層是哈希表實現的,查找復雜度為O(1)
12、哪幾種方式可用來實現線程間通知和喚醒
Object.wait/notify/notifyAll
Condition.await/signal/signalAll
13、Java語言中,創建數組的正確語句
float f[][] = new float[6][6];
float []f[] = new float[6][6];
float [][]f = new float[6][6];
float [][]f = new float[6][];
14、局部內部類可以用哪些修飾符修飾?
abstract
final
解析:
局部內部類是放在代碼塊或方法中的,不能有訪問控制修飾符,且不能用static修飾
15、Java.Thread的方法resume()負責重新開始被以下哪個方法中斷的線程的執行()。
suspend
16、Hashtable 和 HashMap 的區別是:
HashMap 是內部基於哈希表實現,該類繼承AbstractMap,實現Map接口
Hashtable 線程安全的,而 HashMap 是線程不安全的
Properties 類 繼承了 Hashtable 類,而 Hashtable 類則繼承Dictionary 類
HashMap允許將 null 作為一個 entry 的 key 或者 value,而 Hashtable 不允許。
17、一個以”.java”為后綴的源文件
只能有一個與文件名相同的類,可以包含其他類
解析:
當編寫一個java源代碼文件時,此文件通常被稱為編譯單元(有時也被稱為轉譯單元)。每個編譯單元都必須有一個后綴名.java,而在編譯單元內則可以有一個public類,該類的名稱必須與文件的名稱相同(包括大小寫,但不包括文件的后綴名.java)。每個編譯單元只能有一個public類,否則編譯器就不會接受。如果在該編譯單元之中還有額外的類的話,那么在包之外的世界是無法看見這些類的,這是因為它們不是public類,而且它們主要用來為主public類提供支持。 --《Java 編程思想》
注:public類不是必須的,但是如果源文件中有一個(只能有一個)public類的話,文件名必須與這個public類同名,原因 是為了方便虛擬機在相應的路徑中找到相應的類所對應的字節碼文件。所以在沒有public類的Java文件中,文件名和類名都沒什么聯系。
18、 有關線程的敘述正確的是
線程通過使用synchronized關鍵字可獲得對象的互斥鎖定。
19、Java的跨平台特性是指它的源代碼可以在多個平台運行
錯誤
解析:
Java的跨平台特性是因為JVM的存在, 它可以執行.class字節碼文件,而不是.java源代碼
20、在Java中,HashMap中是用哪些方法來解決哈希沖突的?
鏈地址法
21、創建一個標識有“關閉”標簽的語句是 ( ) 。
Label b = new Label(“關閉”);
22、關於包(package)的描述,正確的是
定義在同一個包(package)內的類可以不經過import而直接相互使用。
23、關於ASCII碼和ANSI碼,說法正確的是
標准ASCII只使用7個bit
在簡體中文的Windows系統中,ANSI就是GB2312
ASCII碼是ANSI碼的子集
24、說法是正確的()
SimpleDateFormat是線程不安全的
25、如果希望監聽TCP端口9000,服務器端應該怎樣創建socket?
new ServerSocket(9000);
解析:
ServerSocket (int port)
創建一個serversocket 綁定在特定的端口
Socket(InetAddress address, int port)
創建一個socket流,連接到特定的端口和ip地址
26、java8中,哪個類用到了解決哈希沖突的開放定址法
ThreadLocal
27、關於面向對象的一些理解哪些是正確的
面向對象的最重要的特性是支持繼承、封裝和多態
系統設計應該遵循開閉原則,系統應該穩定不不可修改,但應支持通過繼承、組合等方式進行擴展
面向對象設計時,每個類的職責應該單一,不要再一個類中引入過多的接口
過程式語言和面向對象的語言各有其優勢,過程式語言更加靈活,面向對象語言更加強調抽象和封裝
Java和C++都是靜態類型的面向對象編程語言
28、Java是一門支持反射的語言,基於反射為Java提供了豐富的動態性支持,關於Java反射的描述,哪些是正確的
通過反射可以動態的實現一個接口,形成一個新的類,並可以用這個類創建對象,調用對象方法
通過反射,可以突破Java語言提供的對象成員、類成員的保護機制,訪問一般方式不能訪問的成員
Java的反射機制會給內存帶來額外的開銷。例如對永生堆的要求比不通過反射要求的更多
29、哪種流可以用於字符輸入:
java.io.inputStreamReader
解析:
inputStream是字節流輸入流;而inputStreamReader是對字符流的處理,inputStreamReader將字符流處理成字節流
30、事務隔離級別是由誰實現的?
數據庫系統
31、String s = new String("xyz");創建了幾個StringObject?
兩個或一個都有可能
解析:
1.String對象的兩種創建方式:
第一種方式: String str1 = "aaa"; 是在常量池中獲取對象("aaa" 屬於字符串字面量,因此編譯時期會在常量池中創建一個字符串對象),
第二種方式: String str2 = new String("aaa") ; 一共會創建兩個字符串對象一個在堆中,一個在常量池中(前提是常量池中還沒有 "aaa" 字符串對象)。
System.out.println(str1==str2);//false
2.String類型的常量池比較特殊。它的主要使用方法有兩種:
直接使用雙引號聲明出來的String對象會直接存儲在常量池中。
如果不是用雙引號聲明的String對象,可以使用 String 提供的 intern 方法。 String.intern() 是一個 Native 方法,它的作用是: 如果運行時常量池中已經包含一個等於此 String 對象內容的字符串,則返回常量池中該字符串的引用; 如果沒有,則在常量池中創建與此 String 內容相同的字符串,並返回常量池中創建的字符串的引用。
String s1 = new String("AAA");
String s2 = s1.intern();
String s3 = "AAA";
System.out.println(s2);//AAA
System.out.println(s1 == s2);//false,因為一個是堆內存中的String對象一個是常量池中的String對象,
System.out.println(s2 == s3);//true, s2,s3指向常量池中的”AAA“
32、哪些一個是賦值符號?
+=
<<=
>>>=
解析:
<<表示左移位
>>表示帶符號右移位
>>>表示無符號右移
33、URL u =new URL("http://www.123.com");。如果www.123.com不存在,則返回______。
http://www.123.com
解析:
我們在執行URL u =new URL("http://www.123.com");這句話的時候確實要拋出異常,但是這個異常屬於IOException,不管網址是否存在,最后都會返回該網址的一個連接,打印出來就是該網址。
34、哪些具體實現類可以用於存儲鍵,值對,並且方法調用提供了基本的多線程安全支持:( )
java.util.ConcurrentHashMap
java.util.Hashtable
35、關於構造方法的敘述中,正確的是
java語言規定構造方法名與類名必須相同
java語言規定構造方法沒有返回值,但不同void聲明
36、在java中重寫方法應遵循規則的包括()
可以有不同的訪問修飾符
參數列表必須完全與被重寫的方法相同
37、關於final關鍵字說法正確的是()
final修飾的類不能被繼承
final修飾的變量不允許被再次賦值
38、true、false、null、sizeof、goto、synchronized 哪些是Java關鍵字?
goto
synchronized
39、關於運行時常量池,說法是正確的
運行時常量池大小受方法區大小的影響
存放了編譯時期生成的各種字面量
存放編譯時期生成的符號引用
40、jvm中垃圾回收分為scanvenge gc和full GC,其中full GC觸發的條件可能有哪些
老年代滿
持久代滿
System.gc()
41、下面哪些類可以被繼承? Java.lang.Thread、java.lang.Number、java.lang.Double、java.lang.Math、 java.lang.ClassLoader
Thread
Number
ClassLoader
42、截止JDK1.8版本,java並發框架支持鎖包括?
讀寫鎖
自旋鎖
樂觀鎖
43、說法正確的有
環境變量可在編譯source code時指定
javac一次可同時編譯數個Java源文件
javac.exe能指定編譯結果要置於哪個目錄(directory)
44、屬於容器的組件有
JPanel
45、字符界面下接受用戶從鍵盤輸入,需要import的包是
java.io包
46、如果一個list初始化為{5,3,1},執行以下代碼后,其結果為()?
nums.add(6);
nums.add(0,4);
nums.remove(1);
[4, 3, 1, 6]
47、關於final說法正確的是? ( )
final類的方法能否被同一個包的類訪問不是由final決定
48、非抽象類實現接口后,必須實現接口中的所有抽象方法,除了abstract外,方法頭必須完全一致
錯誤
解析:
實際上這道題考查的是兩同兩小一大原則:
方法名相同,參數類型相同
子類返回類型小於等於父類方法返回類型,
子類拋出異常小於等於父類方法拋出異常,
子類訪問權限大於等於父類方法訪問權限。
49、正確的 Java 語言標識符是
Sky
$Computer
NULL
50、java程序內存泄露的最直接表現是
程序拋內存控制的Exception
51、有關servlet和cgi的描述,說法正確的是
servlet處於服務器進程中,它通過多線程方式運行其service方法
CGI對每個請求都產生新的進程,服務完成后就銷毀
servlet在易用性上強於cgi,它提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態等
52、敘述那個是正確的
在java中,我們可以用違例(Exception)來拋出一些並非錯誤的消息,但這樣比直接從函數返回一個結果要更大的系統開銷。
53、Java 提供的事件處理模型是一種人機交互模型。它有三個基本要素
事件源
事件對象
事件監聽器
54、關於Java描述正確的有
String類是一個final類
Class類可以裝載其它類
55、Java.Thread的方法resume()負責重新開始被以下哪個方法中斷的線程的執行
suspend
56、關於java中的數組,下面的一些描述,描述是准確的
數組是一個對象,不同類型的數組具有不同的類
數組是一個連續的存儲結構
java中不存在 int *a這樣的東西做數組的形參
57、character流和byte流的區別不包括
每次讀入的字節數不同
前者帶有緩沖,后者沒有。
二者沒有區別,可以互換。
58、關於JAVA的垃圾回收機制,正確的是
垃圾回收不能確定具體的回收時間
解析:
java提供了一個系統級的線程,即垃圾回收器線程。用來對每一個分配出去的內存空間進行跟蹤。當JVM空閑時,自動回收每塊可能被回收的內存,GC是完全自動的,不能被強制執行。程序員最多只能用System.gc()來建議執行垃圾回收器回收內存,但是具體的回收時間,是不可知的。當對象的引用變量被賦值為null,可能被當成垃圾。
59、程序讀入用戶輸入的一個值,要求創建一個自定義的異常,如果輸入值大於 10 ,使用 throw 語句顯式地引發異常,異常輸出信息為 ”something’swrong!” ,語句為
if(i>10)throw new Exception("something’swrong!");
60、對於Java中異常的描述正確的是
Java中的可不檢測(unchecked)異常可能來自RuntimeException類或其子類。
61、有關java object默認的基本方法,說法正確的是
equals(Object obj) 指示某個其他對象是否與此對象“相等”
wait() 導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法
toString() 返回該對象的字符串表示
62、以下哪個類包含方法flush()
OutputStream
63、判斷對錯。在java的多態調用中,new的是哪一個類就是調用的哪個類的方法
錯
解析:
java多態有兩種情況:重載和覆寫
在覆寫中,運用的是動態單分配,是根據new的類型確定對象,從而確定調用的方法;
在重載中,運用的是靜態多分派,即根據靜態類型確定對象,因此不是根據new的類型確定調用的方法
64、有關JAVA異常類的描述,說法正確的是
異常的繼承結構:基類為Throwable,Error和Exception繼承Throwable,RuntimeException和IOException等繼承Exception
非RuntimeException一般是外部錯誤(非Error),其必須被 try{}catch語句塊所捕獲
Error類體系描述了Java運行系統中的內部錯誤以及資源耗盡的情形,Error不需要捕捉
65、在開發中使用泛型取代非泛型的數據類型(比如用ArrayList
錯誤
解析:
使用泛型的好處
1,類型安全。 泛型的主要目標是提高 Java 程序的類型安全。通過知道使用泛型定義的變量的類型限制,編譯器可以在一個高得多的程度上驗證類型假設。沒有泛型,這些假設就只存在於程序員的頭腦中(或者如果幸運的話,還存在於代碼注釋中)。
2,消除強制類型轉換。 泛型的一個附帶好處是,消除源代碼中的許多強制類型轉換。這使得代碼更加可讀,並且減少了出錯機會。
3,潛在的性能收益。 泛型為較大的優化帶來可能。在泛型的初始實現中,編譯器將強制類型轉換(沒有泛型的話,程序員會指定這些強制類型轉換)插入生成的字節碼中。但是更多類型信息可用於編譯器這一事實,為未來版本的 JVM 的優化帶來可能。由於泛型的實現方式,支持泛型(幾乎)不需要 JVM 或類文件更改。所有工作都在編譯器中完成,編譯器生成類似於沒有泛型(和強制類型轉換)時所寫的代碼,只是更能確保類型安全而已。
所以泛型只是提高了數據傳輸安全性,並沒有改變程序運行的性能
66、哪些內存區域屬於JVM規范
方法區
程序計數器
虛擬機棧
67、對於線程局部存儲TLS(thread local storage),表述正確的是
解決多線程中的對同一變量的訪問沖突的一種技術
TLS會為每一個線程維護一個和該線程綁定的變量的副本
Java平台的java.lang.ThreadLocal是TLS技術的一種實現
**68、關於equals和hashCode描述正確的是 **
兩個obj,如果equals()相等,hashCode()一定相等(符合代碼規范的情況下)
兩個obj,如果hashCode()相等,equals()不一定相等
兩個不同的obj, hashCode()可能相等
69、在java中重寫方法應遵循規則的包括
訪問修飾符的限制一定要大於被重寫方法的訪問修飾符
必須具有不同的參數列表
70、 方式實現的單例是線程安全的
枚舉
靜態內部類
雙檢鎖模式
餓漢式
71、在運行時,由java解釋器自動引入,而不用import語句引入的包是
java.lang
72、關於hibernate核心接口說明正確的是
Configuration 接口:配置Hibernate,根據其啟動hibernate,創建SessionFactory 對象
Query 和Criteria 接口:執行數據庫的查詢
Transaction 接口:管理事務
73、有關jsp中靜態include和動態include的區別,說法正確的是
動態INCLUDE:用jsp:include動作實現
靜態INCLUDE:用include偽碼實現,定不會檢查所含文件的變化,適用於包含靜態頁面<%@ include file="included.htm" %>
靜態include的結果是把其他jsp引入當前jsp,兩者合為一體;動態include的結構是兩者獨立,直到輸出時才合並
74、關於struts框架,說法是正確的?
Struts框架基於MVC模式
75、對於子類的構造函數說明,敘述中正確的是
子類不能繼承父類的無參構造函數。
子類可以在自己的構造函數中使用super關鍵字來調用父類的含參數構造函數,但這個調用語句必須是子類構造函數的第一個可執行語句。
在創建子類的對象時,若不含帶參構造函數,將先執行父類的無參構造函數,然后再執行自己的無參構造函數。
76、JSP分頁代碼中,哪個步驟次序是正確的
先取總記錄數,得到總頁數,最后顯示本頁的數據。
77、變量a是一個64位有符號的整數,初始值用16進制表示為:0Xf000000000000000; 變量b是一個64位有符號的整數,初始值用16進制表示為:0x7FFFFFFFFFFFFFFF。 則a-b的結果用10進制表示為多少
2^62+2^61+2^60+1
78、有可能在某個進制下成立
13*14=204
解析:
八進制13轉十進制:1*8+3=11
八進制14轉十進制:1*8+4=12
11*12=132
八進制204轉十進制:2*8*8+0*8+4=132
所以:(1*x¹+3*x°)* (1*x¹+4*x°) = 2*x²+0*x¹+4*x°
(x+3)*(x+4)=2x²+4
x²+7x+12=2x²+4
x²-7x=8
x*(x-7)=8
x₁=8 x₂=-1
解二元一次方程組 得到 8 【x代表進制】
79、java中提供了哪兩種用於多態的機制
通過子類對父類方法的覆蓋實現多態
利用重載來實現多態.即在同一個類中定義多個同名的不同方法來實現多態。
80、關於JSP生命周期的敘述,為真的是?
JSP會先解釋成Servlet源文件,然后編譯成Servlet類文件
每當用戶端運行JSP時,jsp service()方法都會運行一次
81、哪些方法是針對循環優化進行的
強度削弱
刪除歸納變量
代碼外提
82、關於Java的一些概念,描述是正確的
通過try … catch … finally語句,finally中的語句部分無論發生什么異常都會得到執行
Java通過synchronized進行訪問的同步,synchronized作用非靜態成員方法和靜態成員方法上同步的目標是不同的
83、說法正確的是
對於局部內部類,只有在方法的局部變量被標記為final或局部變量是effctively final的,內部類才能使用它們
成員內部類位於外部類內部,可以直接調用外部類的所有方法(靜態方法和非靜態方法)
84、關於java中的數組,下面的一些描述,哪些描述是准確的
數組是一個對象,不同類型的數組具有不同的類
數組是一個連續的存儲結構
java中不存在 int *a這樣的東西做數組的形參
85、哪幾種方式可用來實現線程間通知和喚醒
Object.wait/notify/notifyAll
Condition.await/signal/signalAll
86、判斷一塊內存空間是否符合垃圾收集器收集的標准有哪些
給對象賦予了空值null,以下再沒有調用過
對象重新分配了內存空間
給對象賦予了新值
87、哪個命令能夠獲取JVM的內存映像
jmap
88、instanceof運算符能夠用來判斷一個對象是否為:
一個類的實例
一個實現指定接口的類的實例
一個子類的實例
89、下列哪個選項是Java調試器?如果編譯器返回程序代碼的錯誤,可以用它對程序進行調試
jdb.exe
90、說法正確的是
EJB容器發生錯誤,persistent方式下JMS容器仍然會將消息發送
91、在創建派生類對象,構造函數的執行順序
基類構造函數,派生類對象成員構造函數,派生類本身的構造函數
**92、不是 Java 關鍵字的是 **
false
sizeof
93、說法正確的是
一個線程調用yield方法,可以使具有相同優先級線程獲得處理器
在Java中,高優先級的可運行的線程會搶占低優先級線程的資源
94、說法正確的是
JAVA程序的main方法必須寫在類里面
JAVA程序中可以有多個名字為main方法
95、有關 JAVA 異常類的描述,說法正確的有
異常的繼承結構:基類為 Throwable,Error 和 Exception 。實現 Throwable, RuntimeException 和 IOException 等繼承 Exception
非 RuntimeException 一般是外部錯誤(不考慮Error的情況下),其可以在當前類被 try{}catch 語句塊所捕獲
Error 類體系描述了 Java 運行系統中的內部錯誤以及資源耗盡的情形,Error 不需要捕捉
96、Java程序的種類有
Applet
Application
Servlet
解析:
Java程序的種類有:
(a)內嵌於Web文件中,由瀏覽器來觀看的_Applet
(b)可獨立運行的 Application
(c)服務器端的 Servlets
97、關於Java中的數組,下面的一些描述,描述是准確的
數組是一個對象,不同類型的數組具有不同的類
數組是一個連續的存儲結構
可以二維數組,且可以有多維數組,都是在Java中合法的
98、如果定義一種表達式結構:(+ 6 3)的值為9,(- 6 3)的值為3,( 6 3)的值為18,(/ 6 3)的值為2;那么對於表達式( (- 16 (* 3 2 2 **)) (+ 5 (/ 6 (- 5 3))))輸出的結果為____。
32
99、子類A繼承父類B, A a = new A(); 則父類B構造函數、父類B靜態代碼塊、父類B非靜態代碼塊、子類A構造函數、子類A靜態代碼塊、子類A非靜態代碼塊 執行的先后順序是
父類B靜態代碼塊->子類A靜態代碼塊->父類B非靜態代碼塊->父類B構造函數->子類A非靜態代碼塊->子類A構造函數
100、枚舉(enum)屬於原始數據類型(primitive type)
錯誤
解析:
在Java中,變量有兩種類型,一種是原始類型,一種是引用類型。
原始類型一共有8種,它們分別是char,boolean,byte,short,int,long,float,double。在Java API中,有它們對應的包裝類,分別是(首字母大寫)Character,Boolean,Byte,Short,Integer,Long,Float,Double(char,int的變化稍微大點)。
JAVA JVM對於不同的原始類型會分配不同的存儲空間,具體分配如下:
byte : 1個字節 8位
最大值: 127 (有符號)
short : 2個字節 16位 32767
int : 4個字節 32位 2147483647
long: 8個字節 64位 9223372036854775807
float: 4個字節 32位 3.4028235E38
double:8個字節 64位 1.7976931348623157E308
枚舉(enum)類型是Java 5新增的特性,它是一種新的類型,允許用常量來表示特定的數據片斷,而且全部都以類型安全的形式來表示,是特殊的類,可以擁有成員變量和方法。
101、從內存實現或者反射的角度來看,關於繼承的說法正確的是()。注:此處的繼承不代表能調用
子類將繼承父類的所有的數據域和方法
102、關於java集合說法正確的有哪些
Collection接口是List接口和Set接口的父接口,通常情況下不被直接使用
103、在java中,標識符合法的有
$Usdollars
104、對於構造方法,敘述正確的是
構造方法的優先級一般比代碼塊低。
構造方法的主要作用是完成對類的對象的初始化工作。
一般在創建新對象時,系統會自動調用構造方法。
105、正確的有
call by value不會改變實際參數的數值
call by reference不能改變實際參數的參考地址
call by reference能改變實際參數的內容
106、關於面向對象的一些理解哪些是正確的
面向對象的最重要的特性是支持繼承、封裝和多態
系統設計應該遵循開閉原則,系統應該穩定不不可修改,但應支持通過繼承、組合等方式進行擴展
面向對象設計時,每個類的職責應該單一,不要再一個類中引入過多的接口
過程式語言和面向對象的語言各有其優勢,過程式語言更加靈活,面向對象語言更加強調抽象和封裝
Java和C++都是靜態類型的面向對象編程語言
107、說法正確的是
對於局部內部類,只有在方法的局部變量被標記為final或局部變量是effctively final的,內部類才能使用它們
成員內部類位於外部類內部,可以直接調用外部類的所有方法(靜態方法和非靜態方法)
108、判斷一塊內存空間是否符合垃圾收集器收集的標准有哪些
給對象賦予了空值null,以下再沒有調用過
對象重新分配了內存空間
給對象賦予了新值
109、JDK提供的用於並發編程的同步器有哪些
Semaphore
CyclicBarrier
CountDownLatch
110、character流和byte流的區別包括
前者是字符讀入,后者是字節讀入。