Java錯題合集(3)


1、有關java實例變量,局部變量,類變量和final變量的說法,正確的是?

實例變量指的是類中定義的變量,即成員變量,如果沒有初始化,會有默認值。

類變量指的是用static修飾的屬性

final變量指的是用final 修飾的變量

2、關於 Socket 通信編程,描述正確的是:( )

服務器端通過new ServerSocket()創建TCP連接對象

服務器端通過TCP連接對象調用accept()方法創建通信的Socket對象

客戶端通過new Socket()方法創建通信的Socket對象

3、訪問權限控制從最大權限到最小權限依次為:public、 包訪問權限、protected和private 。( )

錯誤

解析:應該是:public>protected>默認(包訪問權限)>private,因為protected除了可以被同一包訪問,還可以被包外的子類所訪問

4、socket編程中,哪些socket的操作是不屬於服務端操作的()?

accept

listen

close

5、類方法中可以直接調用對象變量。( )

錯誤

解析:靜態方法中不能調用對象的變量,因為靜態方法在類加載時就初始化,對象變量需要在新建對象后才能使用

6、字符界面下接受用戶從鍵盤輸入,需要import的包是:( )

java.io包

7、由3 個“1”和 5 個“0”組成的 8 位二進制補碼,能表示的最小整數()

-125

既然求最小整數,那肯定先想到負數,則最高位(符號位)一定為1,原碼中肯定是1所在的位數越高,值越小,而補碼是由原碼取反加1得到的,則在補碼中1所在的位數一定要越低,即補碼為1000 0011;由補碼求得原碼:1111 1101=-(64+32+16+8+4+1)=-125;

8、ServletConfig接口默認是哪里實現的?

GenericServlet

9、從內存實現或者反射的角度來看,關於繼承的說法正確的是()。注:此處的繼承不代表能調用

子類將繼承父類的所有的數據域和方法

10、關於java集合下列說法正確的有哪些()

Collection接口是List接口和Set接口的父接口,通常情況下不被直接使用

11、true、false、null、sizeof、goto、synchronized 哪些是Java關鍵字?

goto

synchronized

12、Hashtable 和 HashMap 的區別是:

HashMap 是內部基於哈希表實現,該類繼承AbstractMap,實現Map接口

Hashtable 線程安全的,而 HashMap 是線程不安全的

Properties 類 繼承了 Hashtable 類,而 Hashtable 類則繼承Dictionary 類

HashMap允許將 null 作為一個 entry 的 key 或者 value,而 Hashtable 不允許。

13、創建數組的正確語句?( )

float f[][] = new float[6][6];

float []f[] = new float[6][6];

float [][]f = new float[6][6];

float [][]f = new float[6][];

14、關鍵字super的作用是?

用來訪問父類被隱藏的非私有成員變量

用來調用父類中被重寫的方法

用來調用父類的構造函數

15、下列屬於容器的組件有()

JPanel

16、在為傳統面向對象語言的程序做單元測試的時候,經常用到mock對象。Mock對象通過反射數。請問反射最大程度破壞了面向對象的以下哪個特性?

封裝

17、下列正確的 Java 語言標識符是( )

Sky

$Computer

NULL

18、某程序要求每次輸入只能是正整數,並且每次輸入的數值要求必須是100的倍數且小於等於500,則下列哪個是正確的無效等價類( )

(500,+∞)、任意大於0小於500的非100倍數的整數;

19、JDK中提供的java、javac、jar等開發工具也是用Java編寫的。

20、是面向對象的基本原則的是?

單一職責原則(Single-Resposibility Principle)

開放封閉原則(Open-Closed principle)

依賴倒置原則(Dependecy-Inversion Principle)

接口隔離原則(Interface-Segregation Principle)

21、URL u =new URL("http://www.123.com");。如果www.123.com不存在,則返回______。

http://www.123.com

22、描述正確? ()

echo $$返回登錄shell的PID和echo $? 返回上一個命令的狀態

**23、在 myjsp.jsp 中,下面的代碼說法正確的是: ( ) **

<%@ page language="java" import="java.util.*" errorPage="error.jsp" isErrorPage="false" %>

該頁面發生異常會轉向 error.jsp

存在 errorPage 屬性時,isErrorPage 是默認為 false

error.jsp 頁面一定要有isErrorPage 屬性且值為 true

24、哪些接口直接繼承自Collection接口()

List

Set

25、下列說法正確的是()?

一個進程是一個獨立的運行環境,可以被看做一個程序或者一個應用。而線程是在進程中執行的一個任務。Java運行環境是一個包含了不同的類和程序的單一進程。線程可以被稱為輕量級進程。線程需要較少的資源來創建和駐留在進程中,並且可以共享進程中的資源

ThreadLocal用於創建線程的本地變量,該變量是線程之間不共享的

26、下列說法正確的有( )

在類方法中調用本類的類方法時可直接調用

27、下面的Java賦值語句哪些是有正確的 ()

int i =1000;

char s = ‘\u0639’

Object o = ‘f’;

String s = "hello,world\0";

28、關於下面一段代碼,說法正確的是: ()

public class Test {
    private synchronized void a() {
    }
    private void b() {
        synchronized (this) {
        }
    }
    private synchronized static void c() {
    }
    private void d() {
        synchronized (Test.class) {
        }
    }
}

同一個對象,分別調用方法a和b,鎖住的是同一個對象

同一個對象,分別調用方法b和c,鎖住的不是同一個對象

同一個對象,分別調用方法a、b、c,鎖住的不是同一個對象

29、基本的Java語言函數存儲在以下哪個java包中?()

java.lang

解析:
java.lang包包含
包裝類
String 類
Math 類     ——    包含函數
Class 類
Object 類

1.lang包主要是集合類、時間處理模式、日期時間工具等各類常用工具包。
2.util包 包括基本Object類、Class類、String類、基本類型的包裝類、基本的數學類等最基本的類。

30、下列關於修飾符混用的說法,正確的是( )

abstract不能與final並列修飾同一個類

abstract 類中不建議有private的成員

abstract 方法必須在abstract類或接口中

31、對於同一類中的兩個方法 , 在判斷它們是不是重載方法時 , 肯定考慮( )

參數個數

參數類型

參數順序

解析:
重載:類中可以創建多個方法,它們具有相同的名字,但具 有不同的參數和不同的定義。調用方法時通過傳遞 給它們的不同參數個數和參數類型 給它們的不同參數個數和參數類型 給它們的不同參數個數和參數類型 來決定具體使用哪個方法 ,  這就是多態性。

重寫 Overriding 是父類與子類之間多態性的一種表現, 在子類中定義某方法與其父類有相同的名稱和參數。

重載 Overloading 是一個類中多態性 的一種表現。

重載的時候,方法名要一樣,但是參數類型和個數不一樣,返回值類型可以相同 也可以不相同。 無法以 返回型別 作為重載函數的區分標准。而且編譯的時候只有返回值不同,會報錯。及使不報錯,運行時無法區分調用哪個方法

32、對於子類的構造函數說明,敘述中正確的是( )。

子類不能繼承父類的無參構造函數。

子類可以在自己的構造函數中使用super關鍵字來調用父類的含參數構造函數,但這個調用語句必須是子類構造函數的第一個可執行語句。

在創建子類的對象時,若不含帶參構造函數,將先執行父類的無參構造函數,然后再執行自己的無參構造函數。


33、jdk1.8版本之前的前提下,接口和抽象類描述正確的有( )

接口沒有構造函數

抽象類不允許多繼承

34、final、finally和finalize的區別中,說法正確的有?

final用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。

finally是異常處理語句結構的一部分,表示總是執行。

35、以下哪些方法可以取到http請求中的cookie值()?

request.getHeader

request.getCookies

36、說法正確的是()

在類方法中調用本類的類方法時可直接調用

解析:
先要理解什么是類的方法,所謂類的方法就是指類中用static 修飾的方法(非static 為實例方法),比如main 方法,那么可以以main 方法為例,可直接調用其他類方法,必須通過實例調用實例方法,this 關鍵字不是這么用的

37、關於final說法正確的是? ( )

final類的方法能否被同一個包的類訪問不是由final決定

解析:
final變量,如果是基本數據類型,則其數值一旦初始化后就不能被改變。如果是引用類型的變量,則對其初始化后,便不能再指向另一個對象,但是其里面的值是可以改變的。引用變量所指向的對象中的內容是可以改變的。

38、關於hibernate核心接口說明正確的是

Configuration 接口:配置Hibernate,根據其啟動hibernate,創建SessionFactory 對象

Query 和Criteria 接口:執行數據庫的查詢

Transaction 接口:管理事務

39、正確的是( )。

Frame 中可以設置Panel。

Applet 中可以包含按鈕。

Dialog 中不可以設置菜單條。

40、變量a是一個64位有符號的整數,初始值用16進制表示為:0x7FFFFFFFFFFFFFFF;變量b是一個64位有符號的整數,初始值用16進制表示為:0x8000000000000000。則a+b的結果用10進制表示為多少?

-1

解析:
(1)a+b的16進制表示為:OxFFFFFFFFFFFFFFF(16位F),轉為2進制為111……111(64位1,每個F->4位2)。
(2)有符號數:是針對二進制來講的。用最高位作為符號位,“0”代表“+”,“1”代表“-”。所以a+b的結果是一個負數。
(3)計算機中負數是以補碼的形式保存的,將補碼轉換成原碼的計算方式如下:
        ①. 對於正數,原碼與補碼相同。
        ②.對於負數,將補碼除符號位之外,按位取反,末位加1,即得到原碼。
(4)a + b = 111……111(64位1)
          取反:100……000(1位1,后面63位0)
          加一:100……00(中間62位0)
      10進制:-1。

41、java程序內存泄露的最直接表現是( )

程序拋內存控制的Exception

42、哪些是合法的 Java 標識符?( )

FirstJavaApplet

First_Applet

解析:
Java標識符:
1、標識符由26個英文字符大小寫(a~z,A~Z)、數字(0~9)、下划線(_)和美元符號($)組成;
2、不能以數字開頭,不能是關鍵字;
3、嚴格區分大小寫;
4、標識符的可以為任意長度;

43、關於ThreadLocal類 說法正確的是

ThreadLocal是采用哈希表的方式來為每個線程都提供一個變量的副本

ThreadLocal保證各個線程間數據安全,每個線程的數據不會被另外線程訪問和破壞

44、下列容器中,哪些容器按 key 查找的復雜度為 O(log(n)) ()

std::multimap

std::map

45、關於身份證號,正確的正則表達式為( )

isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;

isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;

46、關於Java語言的內存回收機制,最正確的一項是

內存回收線程負責釋放無用內存

解析:
java虛擬機中的垃圾回收機制是一個類,當該對象沒有更多的應用指向它時,就會被垃圾回收器給回收,從而釋放資源。該機制不可以程序員手動調用去回收某個對象,系統自動回去調用,當然程序員可以建議垃圾回收器回收某個對象。所以java中無需程序員手動釋放內存,系統自動釋放無用內存。

47、默認RMI采用的是什么通信協議?

TCP/IP

解析:
RMI采用的是TCP/IP協議
RMI采用的是TCP/IP協議
RMI采用的是TCP/IP協議

48、一般情況下,選項是關系數據模型與對象模型之間匹配關系?

表對應類

記錄對應對象

表的字段對應類的屬性

49、J2EE中常用的名詞解釋正確的是?

EJB容器:Enterprise java bean 容器

JMS:JAVA消息服務。主要實現各個應用程序之間的通訊。包括點對點和廣播。

JAF:JAVA安全認證框架。提供一些安全控制方面的框架。

50、說法正確的是()

EJB容器發生錯誤,persistent方式下JMS容器仍然會將消息發送

51、有關maven和ant的描述,描述正確的是?

Ant 沒有正式的約定如一個一般項目的目錄結構,你必須明確的告訴 Ant 哪里去找源代碼

Maven 擁有約定,因為你遵循了約定,它已經知道你的源代碼在哪里

Ant構建文件默認命名為build.xml,Maven默認構建文件為pom.xml

52、關於Java描述正確的有( )

native關鍵字表名修飾的方法是由其它非Java語言編寫的

53、有關struts1和struts2的區別,描述正確的是?

Struts1要求Action類繼承一個抽象基類。Struts 2 Action類可以實現一個Action接口

Struts1 Action 依賴於Servlet API,Struts 2 Action不依賴於容器,允許Action脫離容器單獨被測試

Struts1 整合了JSTL,Struts2可以使用JSTL,但是也支持OGNL

54、如果進棧序列為e1,e2,e3,e4,則可能的出棧序列是()注:一個元素進棧后可以馬上出棧,不用等全部進棧

e2,e4,e3,e1

e2,e3,e4,e1

解析:
棧的規則:先進后出
例如進棧序列為:1,2,3,4
全部進棧完成再出棧的序列則為:4,3,2,1
注:一個元素進棧后可以馬上出棧,不用等全部進棧

例如:2這個元素一進就想出了,后面的3,4正常進棧再出棧。
那么出棧順序就是:2,4,3,1  (1是第一個進的,進的時候也沒有立刻出去,所以被壓在棧底,最后才能出去)

例如:2這個元素一進就想出了,后面的3一進也想立刻想出去了,后面的4跟着進棧
那么出棧順序就是:2,3,4,1  (2,3都進了立刻出 所以這時4壓着的是1,所以出棧順序是4在前面)

55、程序中常采用變量表示數據,變量具有名、地址、值、作用域、生存期等屬性。關於變量的敘述,()是正確的。

根據作用域規則,在函數中定義的變量只能在函數中引用

在函數中定義的變量,其生存期為整個程序執行期間

在函數中定義的變量不能與其所在函數的形參同名

56、在你面前有一個n階的樓梯,你一步只能上1階或2階。請問,當N=11時,你可以采用多少種不同的方式爬完這個樓梯();當N=9時呢?

144

55

57、java8中,忽略內部接口的情況,能用來修飾interface里的方法的有( )

public

static

58、在Java語言中,關於字符集編碼(Character set encoding)和國際化(i18n)的問題,哪些是正確的?

Java的char類型,通常以UTF-16 Big Endian的方式保存一個字符。

實現國際化應用常用的手段是利用ResourceBundle類

59、哪些賦值語句是正確的()

long test=012

float f=-412

double d=0x12345678

60、Java是一門支持反射的語言,基於反射為Java提供了豐富的動態性支持,下面關於Java反射的描述,哪些是正確的:( )

通過反射可以動態的實現一個接口,形成一個新的類,並可以用這個類創建對象,調用對象方法

通過反射,可以突破Java語言提供的對象成員、類成員的保護機制,訪問一般方式不能訪問的成員

Java反射機制提供了字節碼修改的技術,可以動態的修剪一個類

61、敘述正確的是

實例方法可直接調用本類的實例方法

62、關於 Socket 通信編程,描述正確的是:( )

服務器端通過new ServerSocket()創建TCP連接對象

服務器端通過TCP連接對象調用accept()方法創建通信的Socket對象

客戶端通過new Socket()方法創建通信的Socket對象

63、說法正確的是()

在類方法中調用本類的類方法時可直接調用

64、屬於HttpServletResponse接口完成的功能?

設置HTTP頭標

設置cookie

輸出返回數據

65、關於java編譯和運行命令敘述正確的是? ( )

運行“java Scut”

運行“javac Scut.java”的輸出文件是Scut.class

java這個命令的運行對象是Scut.class

66、在Java中,說法正確的有( )

數組是一種對象

67、java中關於繼承的描述正確的是()

一個子類只能繼承一個父類

繼承具有傳遞性

父類一般具有通用性,子類更具體

解析:
子類不可以繼承父類的構造方法,只可以調用父類的構造方法。子類中所有的構造函數都會默認訪問父類中的空參數構造函數,這是因為子類的構造函數內第一行都有默認的super()語句。super()表示子類在初始化時調用父類的空參數的構造函數來完成初始化。一個類都會有默認的空參數的構造函數,若指定了帶參構造函數,那么默認的空參數的構造函數,就不存在了。這時如果子類的構造函數有默認的super()語句,那么就會出現錯誤,因為父類中沒有空參數的構造函數。因此,在子類中默認super()語句,在父類中無對應的構造函數,必須在子類的構造函數中通過this或super(參數)指定要訪問的父類中的構造函數。

68、說法正確的是?()

一個線程調用yield方法,可以使具有相同優先級線程獲得處理器

在Java中,高優先級的可運行的線程會搶占低優先級線程的資源

69、類型為Final類型的為()

StringBuffer

String

70、一個以". java"為后綴的源文件,說法是正確的?

只能有一個與文件名相同的類,可以包含其他類

71、 try 和 catch 不需要一定共存😋,try是嘗試對其中代碼捕獲異常,catch是捕獲異常並且可以處理異常。。你可以 try 來搜尋異常,不去捕獲。也就是不去catch 這是可以的。。至於提示加finally,finally的意思是,其中的代碼一定會執行,也就是說,如果try 其中的代碼產生了異常,如果有catch 則會直接跳轉到catch部分,如果沒有catch 會跳轉到‘}’后面的代碼,這樣,以上方法就沒有一個確定的返回值,所以要加finally 作為方法出異常以后的返回的結果

72、如果一個list初始化為{5,3,1},執行以下代碼后,其結果為()?
nums.add(6);
nums.add(0,4);
nums.remove(1);

[4, 3, 1, 6]

解析:
初始化為{5,3,1}
nums.add(6)后list為{5,3,1,6}
nums.add(0,4)是在0號索引上添加數字4得到list為{4,5,3,1,6}
nums.remove(1)是將1號索引上的5進行remove得到list為{4,3,1,6}

73、屬於Swing的頂層容器?()

JApplet

JDialog

JFrame

74、Math.floor(-8.5)=( )

(double)-9.0

解析:
Math.floor()  表示向下取整,返回double類型   (floor---地板)
Math.ceil()   表示向上取整,返回double類型    (ceil---天花板)
Math.round()  四舍五入,返回int類型

75、有關struts1和struts2的區別,描述正確的是?

Struts1要求Action類繼承一個抽象基類。Struts 2 Action類可以實現一個Action接口

Struts1 Action 依賴於Servlet API,Struts 2 Action不依賴於容器,允許Action脫離容器單獨被測試

Struts1 整合了JSTL,Struts2可以使用JSTL,但是也支持OGNL

76、如果進棧序列為e1,e2,e3,e4,則可能的出棧序列是()

注:一個元素進棧后可以馬上出棧,不用等全部進棧

e2,e4,e3,e1

e2,e3,e4,e1

解析:
棧的規則:先進后出
例如進棧序列為:1,2,3,4
全部進棧完成再出棧的序列則為:4,3,2,1
注:一個元素進棧后可以馬上出棧,不用等全部進棧

例如:2這個元素一進就想出了,后面的3,4正常進棧再出棧。
那么出棧順序就是:2,4,3,1  (1是第一個進的,進的時候也沒有立刻出去,所以被壓在棧底,最后才能出去)

例如:2這個元素一進就想出了,后面的3一進也想立刻想出去了,后面的4跟着進棧
那么出棧順序就是:2,3,4,1  (2,3都進了立刻出 所以這時4壓着的是1,所以出棧順序是4在前面)

77、可以正確獲取結果集的有

Statement sta=con.createStatement();<br>ResultSet rst=sta.executeQuery(“select * from book”);

ResultSet rst=pst.executeQuery(“select * from book”);

78、關於 Socket 通信編程,描述正確的是:( )

服務器端通過new ServerSocket()創建TCP連接對象

服務器端通過TCP連接對象調用accept()方法創建通信的Socket對象

客戶端通過new Socket()方法創建通信的Socket對象

79、Math.round(11.5) 等於多少 (). Math.round(-11.5) 等於多少 ( ).

12 ,-11

80、對於非運行時異常,程序中一般可不做處理,由java虛擬機自動進行處理。

錯誤

解析:
Java異常都繼承自類Throwable,Throwable子類有Error和Exception,其中Exception又分為運行時異常和編譯時異常。編譯時異常是未雨綢繆性質的異常,是防范,需要顯示處理。運行時異常是程序員問題造成,並不強制進行顯示處理。

81、是java concurrent包下的4個類,選出差別最大的一個

Future

82、說法正確的是()

EJB容器發生錯誤,persistent方式下JMS容器仍然會將消息發送

83、語句正確的是:

形式參數可被視為local variable

84、java中提供了哪兩種用於多態的機制

通過子類對父類方法的覆蓋實現多態

利用重載來實現多態.即在同一個類中定義多個同名的不同方法來實現多態。

85、關於Java的一些概念,描述是正確的:( )

通過try … catch … finally語句,finally中的語句部分無論發生什么異常都會得到執行

Java通過synchronized進行訪問的同步,synchronized作用非靜態成員方法和靜態成員方法上同步的目標是不同的

86、哪些操作會使線程釋放鎖資源?

sleep()

wait()

解析:
1.sleep()方法

在指定時間內讓當前正在執行的線程暫停執行,但不會釋放“鎖標志”。不推薦使用。

sleep()使當前線程進入阻塞狀態,在指定時間內不會執行。

2.wait()方法

在其他線程調用對象的notify或notifyAll方法前,導致當前線程等待。線程會釋放掉它所占有的“鎖標志”,從而使別的線程有機會搶占該鎖。

當前線程必須擁有當前對象鎖。如果當前線程不是此鎖的擁有者,會拋出IllegalMonitorStateException異常。

喚醒當前對象鎖的等待線程使用notify或notifyAll方法,也必須擁有相同的對象鎖,否則也會拋出IllegalMonitorStateException異常。

waite()和notify()必須在synchronized函數或synchronized block中進行調用。如果在non-synchronized函數或non-synchronized block中進行調用,雖然能編譯通過,但在運行時會發生IllegalMonitorStateException的異常。

3.yield方法 

暫停當前正在執行的線程對象。

yield()只是使當前線程重新回到可執行狀態,所以執行yield()的線程有可能在進入到可執行狀態后馬上又被執行。

yield()只能使同優先級或更高優先級的線程有執行的機會。 

4.join方法

等待該線程終止。

等待調用join方法的線程結束,再繼續執行。如:t.join();//主要用於等待t線程運行結束,若無此句,main則會執行完畢,導致結果不可預測。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM