[java之牛客网每日练习]
牛客練習
- java專項01
- java專項02
- java專項03
- java專項04
- java專項05
- java專項06
- java07
- 專項練習
- 判斷推理
- Java08
- Java專項練習
- 判斷推理
- Java09
- 1. 可以把任何一種數據類型的變量賦給Object類型的變量。
- 數據運算專項練習
- Java10
- Java11
- 錯題集
- Java01
- java02
- java03
- Java04
java專項01
正確答案: A 你的答案: A (正確)
void set(int y)
int set(int x,double y)
double set(int x,int y)
void set(int x,int y)
分析:重載是一個類中多個同名的方法,它與返回參數,參數名無關,與參數類型的排列組合有關,(參數個數,順序);
2.要在session對象中保存屬性,可以使用以下哪個語句( )
正確答案: B 你的答案: B (正確)
session.getAttribute(“key”,”value”)
session.setAttribute(“key”,”value”)
session.setAttribute(“key”)
session.getAttribute(“key”)
分析: 獲取屬性用getAttribute 保存屬性用setAttribute
屬性是一個鍵值對,要把鍵值對內容都傳遞進去。
3. 下面的程序 編譯運行后,在屏幕上顯示的結果是()
public class Test {
}
正確答案: A 你的答案: D (錯誤)
0
2
5
80
分析: >>表示右移,如果該數為正,則高位補0,若為負數,則高位補1,
“>>>表示無符號右移,也叫邏輯右移,該數不論正負,高位都補0”,即給該十進制數除以對應個數的2;
4.JSP分頁代碼中,哪個步驟次序是正確的?
正確答案: A 你的答案: B (錯誤)
先取總記錄數,得到總頁數,最后顯示本頁的數據。
先取所有的記錄,得到總頁數,再取總記錄數,最后顯示本頁的數據。
先取總頁數,得到總記錄數,再取所有的記錄,最后顯示本頁的數據。
先取本頁的數據,得到總頁數,再取總記錄數,最后顯示所有的記錄。
分析:先拿總記錄數,即count(*),再根據每頁多少條記錄,確定總頁數,最后也就能顯示本頁的數據了。
5. 有以下程序段, 則下面正確的選項是()
public class MyThead extends Thread{
public static void main(String[] args) {
MyThead t=new MyThead();
MyThead s=new MyThead();
t.start();
System.out.println(“one.”);
s.start();
System.out.println(“two.”);
}
public void run() {
System.out.println(“Thread”);
}
}
正確答案: B C D 你的答案: D (錯誤)
編譯失敗
程序運行可能結果為:
one.
Thread
two.
Thread
程序運行可能結果是:
one.
two.
Thread
Thread
程序運行結果不穩定
6.下列正確的有()
正確答案: A C D 你的答案: A B (錯誤)
call by value不會改變實際參數的數值
call by reference能改變實際參數的參考地址
call by reference不能改變實際參數的參考地址
call by reference能改變實際參數的內容
java專項02
正確答案: D 你的答案: D (正確)
構造方法名與類名相同
構造方法不返回任何值,也沒有返回類型
構造方法在創建對象時調用,其他地方不能顯式地直接調用
每一個類只能有一個構造方法
分析:一個類可以有多個構造方法,構造方法可以進行重載。
2. 以下類定義中的錯誤是什么?()
abstract class xy
{
abstract sum (int x, int y) { }
}
正確答案: C 你的答案: C (正確)
沒有錯誤
類標題未正確定義
方法沒有正確定義
沒有定義構造函數
分析:抽象方法沒有方法體,只定義功能;
3. 有如下代碼:請寫出程序的輸出結果。
public class Test
{
public static void main(String[] args)
{
int x = 0;
int y = 0;
int k = 0;
for (int z = 0; z < 5; z++) {
if ((++x > 2) && (++y > 2) && (k++ > 2))
{
x++;
++y;
k++;
}
}
System.out.println(x + ”” +y + ”” +k);
}
}
正確答案: B 你的答案: B (正確)
432
531
421
523
分析:&& 操作符,要求所有條件都為true,結果才為true,它是短路與,當其第一個天劍為false,則不會判斷后續天劍,直接返回false;
4. 設有下面兩個賦值語句:
a = Integer.parseInt(“1024”);
b = Integer.valueOf(“1024”).intValue();
下述說法正確的是()
正確答案: D 你的答案: B (錯誤)
a是整數類型變量,b是整數類對象。
a是整數類對象,b是整數類型變量。
a和b都是整數類對象并且它們的值相等。
a和b都是整數類型變量并且它們的值相等。
分析: Integer.parseInt("");是將字符串類型轉換為int的基礎數據類型
Integer.valueOf("")是將字符串類型數據轉換為Integer對象
Integer.intValue();是將Integer對象中的數據取出,返回一個基礎數據類型int
5. 以下哪個類包含方法flush()?()
正確答案: B 你的答案: B (正確)
InputStream
OutputStream
A 和B 選項都包含
A 和B 選項都不包含
對于字符寫出流,如FileWriter,必須要使用到flush將字符緩沖區的內容寫到文件中。字符緩沖區的數據是按字符算的,必須集齊一個字符(漢字是2個字符或者3個字符)的數據才能將數據寫入文件;
6.How should servlet developers handle the HttpServlet’s service() methond when extending HttpServlet?
正確答案: D 你的答案: D (正確)
They should override the service()method in most cases;
They should call the service()method from doGet()or doPost();
They should call the service()method from the init()method;
They should override at least one doXXX()method(such as doPost())
分析:至少重寫一個doXXX方法,如doGet();重寫service方法,還是會重寫doXXX方法;所以直接重寫doXXX()方法,減少開發工作量;
7.下列哪個是合法的 Java 標識符?( )
正確答案: B C 你的答案: B C (正確)
Tree&Glasses
FirstJavaApplet
First_Applet
273.5
分析:標識符只有英文字母,數字,下劃線和$,而且數字不能做開頭的。
8.關于身份證號,以下正確的正則表達式為( )
正確答案: A C 你的答案: B D (錯誤)
isIDCard=/ ^ [1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
isIDCard=/^ [1-9]\d{7}((9\d)|(1[0-2]))(([0|1|2]\d)|3[9-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}$/;
isIDCard=/^ [1-9]\d{5}[1-9]\d{3}((9\d)|(1[9-2]))(([0|1|2]\d)|3[9-1])\d{4}$/;
分析:[m-n] m - n的數字,/d是,0-9,15位身份證的構成:六位出生地區碼+六位出身日期碼+三位順序碼
18位身份證的構成:六位出生地區碼+八位出生日期碼+三位順序碼+一位校驗碼
java專項03
1.分析以下代碼,說法正確的是()
public static void main(String[] args) {System.out.println(val());}public static int val() {int num = 5;try {num = num / 0;} catch (Exception e) {num = 10;} finally {num = 15;}return num;}正確答案: D 你的答案: D (正確)
運行時報錯
程序正常運行,輸出值為5
程序正常運行,輸出值為10
程序正常運行,輸出值為15
分析:num初始值為5;在try塊中因為分母為0,拋出異常,執行catch塊語句,num賦值為10,最有執行finally塊中num賦值為15;所以最后返回15;
2.對于java類型變量char c,short s,float f,double d,表達式c*s+f+d的結果類型為()
正確答案: D 你的答案: D (正確)
float
char
short
double
分析:short,char ,byte->int->long->double;long->float;float,>double;
3.以下正確的是:
正確答案: B 你的答案: B (正確)
true、true
true、false
false、true
false、false
分析:對于Integer類型,它底層是有緩存的,默認是-128-127,上限可更改;如果對其賦值在緩存范圍內,那就不會創建新的對象,直接從緩存中拿,否則就需要創建新的對象;八大基本類型的包裝類除了float,double外都有緩存;Short,long,Byte為-128-127;但是byte類型范圍為-128-127,所以它一定是從緩存中拿,另外兩個超出就需要創建對象了哦;Character為0-127;Boolean是true,false;
4.下面輸出的結果是:
正確答案: C 你的答案: C (正確)
The output is “Equal”
The output in “Not Equal”
An error at line 5 causes compilation to fall.
The program executes but does not print a message.
分析:判斷語句中使用的是賦值語句,Java并不會向C會賦值后與0進行比較,所以會報錯。
5. 下列關于異常處理的描述中,錯誤的是()。
正確答案: D 你的答案: D (正確)
程序運行時異常由Java虛擬機自動進行處理
使用try-catch-finally語句捕獲異常
可使用throw語句拋出異常
捕獲到的異常只能在當前方法中處理,不能在其他方法中處理
分析:我們可以將異常聲明出去,交給調用方法去處理。
6.java中下面哪些是Object類的方法()
正確答案: A B D 你的答案: A B D (正確)
notify()
notifyAll()
sleep()
wait()
分析:sleep是線程的方法;
7. 下列代碼片段中,存在編譯錯誤的語句是()
正確答案: B C D 你的答案: B C D (正確)
語句2
語句1
語句3
語句4
byte b1=1,b2=2,b3,b6,b8; final byte b4=4,b5=6,b7; b3=(b1+b2); /*語句1*/ b6=b4+b5; /*語句2*/ b8=(b1+b4); /*語句3*/ b7=(b2+b5); /*語句4*/ System.out.println(b3+b6);分析:語句一其實就是b3 = 3;int型賦值給byte型是需要強制轉型的,對于final修飾的變量它的類型是不會變的,所以語句2是正確的;語句3,4除了有final修飾的變量,還有byte類型參與運算,所以效果和語句一是一樣。
8.Test.main()函數執行后的輸出是( )
正確答案: B 你的答案: A (錯誤)
6 7 7
22 34 17
22 74 74
11 17 34
分析:step1:首先new B();執行super(5),父類A構造函數調用了setValue()方法,這個方法是子類的,為什么這么說呢,因為我們創建的對象是B啊,子類重寫了父類方法,自然會調用自己的;super.setValue(2 * value);B實例化將value值設置為2 x 5 = 10; 在執行getValue()方法,子類沒有,所以調用父類的,value++ 變為11,catch塊中有return語句,所以先將value = 11保存,執行finally塊,又調用setValue()還是子類的,value變為22;打印輸出22;
二:回到構造方法執行setValue(getValue()- 3);getValue返回值為11,為啥呢,還記得我們是暫時保存value值,再執行finally塊,最后return語句嗎?return的就是暫存的那個值;方法就變成了setValue(8);再之后和 step1是一樣的。只不過getValue方法是B的實例調用的
java專項04
正確答案: A 你的答案: A (正確)
編譯運行通過,輸出結果是88
編譯時錯誤,count變量定義的是私有變量
編譯時錯誤,System.out.println方法被調用時test沒有被初始化
編譯和執行時沒有輸出結果
分析:創建TestDemo()對象,并且通過有參構造函數傳入值88,對count進行賦值,所以最后輸出count為88;
2.下面關于垃圾收集的說法正確的是
正確答案: D 你的答案: D (正確)
一旦一個對象成為垃圾,就立刻被收集掉。
對象空間被收集掉之后,會執行該對象的finalize方法
finalize方法和C++的析構函數是完全一回事情
一個對象成為垃圾是因為不再有引用指著它,但是線程并非如此
分析:存在本地方法時需要finalize()方法來清理本地對象,線程的釋放是在run()方法結束之后,在線程開啟后,可能沒有引用指向它,但是run方法還在執行,線程并不會釋放。
3.給出以下代碼,請給出結果.
正確答案: B 你的答案: A (錯誤)
null null 42
null 42 42
0 0 42
0 42 42
An exception is thrown at runtime
Compilation
分析:main方法中創建對象,調用start方法,在start方法中創建Two對象,調用它的變量x,初始化為null,因為它是Byte類型,在 執行Two t2=fix(t)后,fix(t)也就是將對象t的變量進行了賦值為42,再返回該對象,所以t對象的成員變量x值為42;t2對象引用的是t對象的地址,所以它的成員變量x也是42;
4. 下面代碼輸出是?
正確答案: C 你的答案: C (正確)
編譯正確,輸出”It is a account type”once followed by”FIXED”
編譯正確,輸出”It is a account type”twice followed by”FIXED”
編譯正確,輸出”It is a account type”thrice followed by”FIXED”
編譯正確,輸出”It is a account type”four times followed by”FIXED”
編譯錯誤
分析:public static final AccountType SAVING;
public static final AccountType FIXED;
public static final AccountType CURRENT;
枚舉類型的所有的枚舉值都是類靜態常量,所以在初始化時會對所有的枚舉值對象進行第一次初始化,有幾個枚舉值,則調用構造方法幾次。
5.以下哪些內存區域屬于JVM規范?( )
正確答案: A D E 你的答案: A D E (正確)
方法區
實例變量
靜態變量
程序計數器
虛擬機棧
6.局部內部類可以用哪些修飾符修飾?
正確答案: C D 你的答案: A B D (錯誤)
public
private
abstract
final
分析:局部內部類就像是方法中的一個局部變量,它是沒有public
private,protected,static修飾的。
java專項05
1.下面有關JSP內置對象的描述,說法錯誤的是?
正確答案: C 你的答案: B (錯誤)
session對象:session對象指的是客戶端與服務器的一次會話,從客戶連到服務器的一個WebApplication開始,直到客戶端與服務器斷開連接為止
request對象:客戶端的請求信息被封裝在request對象中,通過它才能了解到客戶的需求,然后做出響應
application對象:多個application對象實現了用戶間數據的共享,可存放全局變量
response對象:response對象包含了響應客戶請求的有關信息
分析:application對象是全局共享的,它是多個用戶共享一個application對象。
2. 關于如下程序的描述哪個是正確的?( )
正確答案: C 你的答案: C (正確)
編譯將產生錯誤
編譯時正確,但運行時將產生錯誤
正確,輸出0
正確,輸出 null
分析:數組按大小創建成功后,若是沒有進行賦值,那么會有默認值0;引用類型默認為null;
3. 列表(List)和集合(Set)下面說法正確的是? ( )
正確答案: A 你的答案: A (正確)
Set中至多只能有一個空元素
List中至多只能有一個空元素
List和Set都可以包含重復元素的有序集合
List和Set都是有序集合
分析:List集合中的元素重復且有序;Set是無序不可重復,既然不可重復,那自然是只能有一個null;
4. 如果int x=20, y=5,則語句System.out.println(x+y +""+(x+y)+y); 的輸出結果是()
正確答案: D 你的答案: D (正確)
2530
55
2052055
25255
分析:表達式前面x+y按正常運算為25;因為后續拼接了"",所以變成了字符串,后面的+就變成了拼接符,后續x+y有括號所以先按正常算數運算;
5. 下面的程序輸出的結果是( )
正確答案: B 你的答案: B (正確)
i=0
i=10
程序有編譯錯誤
i=true
接口中定義了變量k并賦值為10,子類創建對象后調用該屬性進行賦值,所以i = 10;
6.transient 變量和下面哪一項有關?
正確答案: B 你的答案: B (正確)
Cloneable
Serializable
Runnable
Comparable
分析:通常一個類實現序列化方式是實現序列化接口 Serializable
序列化的作用:把數據長久的保存在磁盤中,磁盤和內存是不同的,內存一般在程序運行時占用,數據保存周期短,隨程序結束而結束,磁盤可以長久保存數據;
transient關鍵字的作用,在已實現序列化的類中,有的變量不需要保存在磁盤中,就要transient關鍵字修飾,如銀行卡密碼等,它的作用是在已序列化的類中使變量不序列化
7.以下哪些語言是面向對象的是()
正確答案: B C 你的答案: B C (正確)
C
C++
JAVA
匯編
8.以下類型為Final類型的為()
正確答案: B C 你的答案: B C (正確)
HashMap
StringBuffer
String
Hashtable
分析:string與stringbuffer都是通過字符數組實現的。
其中string的字符數組是final修飾的,所以字符數組不可以修改。
stringbuffer的字符數組沒有final修飾,所以字符數組可以修改。
string與stringbuffer都是final修飾,只是限制他們所存儲的引用地址不可修改。
至于地址所指內容能不能修改,則需要看字符數組可不可以修改。
java專項06
下面程序的運行結果是
String str1 = “hello”;
String str2 = “he” + new String(“llo”);
System.err.println(str1 == str2);
正確答案: B 你的答案: B (正確)
true
false
exception
無輸出
分析:new會在堆中開辟內存,存放該字符對象,而直接的字符賦值是在常量池里的
2.
下面哪個選項放在point X這里可以正確執行?
正確答案: A 你的答案: A (正確)
import java.io.PrintWriter;
include java.io.PrintWriter;
import java.io.OutputStreamWriter;
include java.io.OutputStreamWriter;
no statement is needed.
分析:代碼調用了PrintWriter 對象,所以我們需要將該類導入;
3 下列關于包(package)的描述,正確的是()
正確答案: D 你的答案: D (正確)
包(package)是Java中描述操作系統對多個源代碼文件組織的一種方式。
import語句將所對應的Java源文件拷貝到此處執行。
包(package)是Eclipse組織Java項目特有的一種方式。
定義在同一個包(package)內的類可以不經過import而直接相互使用。
1、為了更好地組織類,Java提供了包機制。包是類的容器,用于分隔類名空間。如果沒有指定包名,所有的示例都屬于一個默認的無名包。Java中的包一般均包含相關的類,java是跨平臺的,所以java中的包和操作系統沒有任何關系,java的包是用來組織文件的一種虛擬文件系統。A錯
2、import語句并沒有將對應的java源文件拷貝到此處僅僅是引入,告訴編譯器有使用外部文件,編譯的時候要去讀取這個外部文件。B錯
3、Java提供的包機制與IDE沒有關系。C錯
4.Java數據庫連接庫JDBC用到哪種設計模式?
正確答案: B 你的答案: D (錯誤)
生成器
橋接模式
抽象工廠
單例模式
分析: 橋接模式:
定義 :將抽象部分與它的實現部分分離,使它們都可以獨立地變化。
意圖 :將抽象與實現解耦。
接模式是結構型模式,關注點在依賴關系的維護。對于jdbc技術來說,它解耦了業務與數據庫通信協議這兩個緯度之間的關系,所以這兩個緯度之間的關系就需要一個橋,即Driver,至于DriverManager把這個關系接到哪里就是運行時的事情了。
5.對于如下代碼段
可以放入到橫線位置,使程序正確編譯運行,而且不產生錯誤的選項是( )
正確答案: C 你的答案: D (錯誤)
public void foo(){}
public int foo(){return 1;}
public A foo(B b){return b;}
public A foo(){return A;}
分析:重寫 要求兩同兩小一大原則, 方法名相同,參數類型相同,子類返回類型小于等于父類方法返回類型, 子類拋出異常小于等于父類方法拋出異常, 子類訪問權限大于等于父類方法訪問權限。[注意:這里的返回類型必須要在有繼承關系的前提下比較]
重載 方法名必須相同,參數類型必須不同,包括但不限于一項,參數數目,參數類型,參數順序。
A B 都是方法名和參數相同,是重寫,但是返回類型沒與父類返回類型有繼承關系,錯誤 D 返回一個類錯誤; c的參數類型與父類不同,所以不是重寫,可以理解為廣義上的重載;
6.下面哪一項不是加載驅動程序的方法?
正確答案: A 你的答案: C (錯誤)
通過DriverManager.getConnection方法加載
調用方法 Class.forName
通過添加系統的jdbc.drivers屬性
通過registerDriver方法注冊
分析:通過DriverManager.getConnection 拿到的是一個連接對象Connection,這個步驟是在加載驅動程序之后的。
java07
專項練習
1.在socket編程中,可以使用方法( )獲取本機的ip地址
正確答案: B 你的答案: B (正確)
getInetAddress()
getLocalAddress()
getReuseAddress()
getLocalPort()
分析: getInetAddress獲取主機名和IP地址
getLocalAddress()顧名思義,獲取本地IP地址
getReuseAddress()返回布爾類型,表示復用地址
getLocalPort() 返回本機端口號
2. 如果一個接口Glass有個方法setColor(),有個類BlueGlass實現接口Glass,則在類BlueGlass中正確的是? ( )
正確答案: C 你的答案: C (正確)
protected void setColor() { …}
void setColor() { …}
public void setColor() { …}
以上語句都可以用在類BlueGlass中
分析:子類繼承繼承接口實現方法,該方法遵循兩同兩小一大原則, 方法名相同,參數類型相同,子類返回類型小于等于父類方法返回類型, 子類拋出異常小于等于父類方法拋出異常, 子類訪問權限大于等于父類方法訪問權限。
3.在jdk1.8之前,下列哪一種敘述是正確的( )
正確答案: D 你的答案: D (正確)
abstract修飾符可修飾字段、方法和類
抽象方法的body部分必須用一對大括號{ }包住
聲明抽象方法,大括號可有可無
聲明抽象方法不可寫出大括號
分析:抽象方法沒有方法體;所以也沒有大括號;抽象方法只是提供具體的功能,不管如何實現。
4. 下面字段聲明中哪一個在interface主體內是合法的? ()
正確答案: B 你的答案: B (正確)
private final static int answer = 42;
public static int answer = 42;
final static answer = 42;
int answer;
分析:接口內的變量默認是public static final 的,public沒有表示默認權限default;
5.下列程序的運行結果
正確答案: A 你的答案: C (錯誤)
IOException!
IOException!Exception!
FileNotFoundException!IOException!
FileNotFoundException!IOException!Exception!
分析:題目說有一個異常,那就只有A符合
6.下面關于面向對象的一些理解哪些是錯誤的( )
正確答案: C 你的答案: C D (錯誤)
面向對象的最重要的特性是支持繼承、封裝和多態
系統設計應該遵循開閉原則,系統應該穩定不不可修改,但應支持通過繼承、組合等方式進行擴展
函數式的語言必然是面向對象的語言
面向對象設計時,每個類的職責應該單一,不要再一個類中引入過多的接口
過程式語言和面向對象的語言各有其優勢,過程式語言更加靈活,面向對象語言更加強調抽象和封裝
Java和C++都是靜態類型的面向對象編程語言
分析:設計模式"七大原則";
1.單一職責原則:一個類負責一項職責,為避免因為一個職責而影響其他職責。可以降低類的負責度,提高可讀性,可維護性,降低變更風險性。
2.接口隔離原則:一個類對另一個類的依賴建立在最小的接口上,劃分縮小接。
3.依賴倒轉原則:高層不依賴底層模塊,兩者都依賴其抽象,細節不依賴抽象,反之則不行;
4.里式替換原則:當子類重寫父類方法而在子類方法中仍然需要使用父類的方法時,使用父類對象為參數,添加方法;
5.開閉原則:編程中最基礎的設計原則;符合開閉的(依賴倒轉原則),對擴展開放,對修改關閉。
6.迪米特法則:(也叫最少知道原則),將一個類的實現細節放于自己類中,其他類要是用,調用即可,不能將自己的實現細節放在其他類中。
7.合成復用原則:盡量使用合成/組合;
判斷推理
1.生態入侵是指人們有意識或無意識地把某種生物帶入適宜其棲息和繁衍的地區,使得該生物種群不斷擴大,分布區不斷穩定地擴展,從而危害當地的生產和生活,改變當地生態環境的過程。
根據上述定義,下列屬于生態入侵的是:
正確答案: C 你的答案: C (正確)
某地發生大面積放射性核素泄漏,使某種植物發生變異,其繁殖力超強,逐漸取代了該地域內的其他植物
某實驗室由于管理不當將試驗用的致病性結核菌株散播了出去,造成結核病在周圍居民中流行
產于南美洲的鳳眼蓮花朵艷麗,曾經作為觀賞植物被我國引進,致使云南滇池因為鳳眼蓮的瘋狂蔓延而魚蝦絕跡
美國科學家將從我國引進的野生大豆與當地品種雜交,培育出抗大豆萎黃病的優良品種,該品種現已徹底取代了美國傳統大豆
2.如果所有的甲都不是乙,所有的乙都是丙,那么,一定沒有一個丙是甲,這句話是()
正確答案: B 你的答案: A (錯誤)
對的
錯的
既不對也不錯
分析:這是個范圍題,例如:男人不是女人,但是男人,女人都是人。
3.有四只老鼠一塊出去偷食物(每個都偷了),回來時,族長問它們都偷了什么,老鼠A說:我們每個都偷了奶酪。老鼠B說:我只偷了一顆櫻桃。老鼠C說:我沒偷奶酪。老鼠D說:有些人沒偷奶酪。族長觀察了一下,發現它們當中只有一只老鼠說了實話,那么是哪只老鼠說了實話?
正確答案: A 你的答案: A (正確)
老鼠A
老鼠B
老鼠C
老鼠D
分析:只有一個說謊,C說他沒偷,D說有人沒偷,所以C,D為真,A說全偷了,所以A錯。
4. 某市舉辦了一場職業技能競賽,有甲、乙、丙、丁四支代表隊進入決賽。每支隊伍有兩名參賽選手;獲得第一名的選手將得10分、第二名得8分、第三名到第八名分別是6、5、4、3、2、1分,最后總分最高的隊伍將獲得冠軍。
比賽的排名情況如下:
甲隊選手的排名都是偶數;
乙隊兩名選手的排名相連;
丙隊選手的排名一個是奇數一個是偶數;
丁隊選手的排名都是奇數;
第一名是丁隊選手;
第八名是丙隊選手;
乙隊兩名選手的排名在甲隊兩名選手之間,同時也在丙隊兩名選手之間。
根據以上條件可以判斷各隊總分由高到低的排列順序為?
丁>甲>丙>乙
甲>丁>乙>丙
甲>丁>丙>乙
丁>甲>乙>丙
分析:選D 10 8 6 5 4 3 2 1
丁 甲 丙 乙 乙 甲 丁 丙
5: 2,6,15,28,( )
正確答案: A 你的答案: B (錯誤)
55
56
58
60
分析:
2=12,6=23,15=35,28=47,
可以看出第一個乘數是1、2、3、4
第二個乘數是2、3、5、7(質數)
于是下一個為5*11=55
Java08
Java專項練習
正確答案: A 你的答案: A (正確)
覆蓋(重寫)只有出現在父類與子類之間,而重載可以出現在同一個類中
覆蓋(重寫)方法可以有不同的方法名,而重載方法必須是相同的方法名
final修飾的方法可以被覆蓋(重寫),但不能被重載
覆蓋(重寫)與重載是同一回事
分析:重寫,要求子類與父類的方法參數和返回值類型要相同,并且訪問修飾符,即可見性要大于等于父類;
2.在異常處理中,若try中的代碼可能產生多種異常則可以對應多個catch語句,若catch中的參數類型有父類子類關系,此時應該將父類放在后面,子類放在前面。
正確答案: A 你的答案: A (正確)
正確
錯誤
分析:因為我們要按不同異常去捕獲,如果吧父類異常置于前面,那就會都能匹配;子類就永遠不能得到捕獲執行;
3. 以下java程序代碼,執行后的結果是()
正確答案: C 你的答案: C (正確)
0
null
1
2
分析:hashMap中put 方法將key-value鍵值對存入集合中,插入之前,若key不存在,則插入,若是該key存在,則將其值覆蓋掉;所以這道題map中的元素個數為1;
4. 如果一個list初始化為{5,3,1},執行以下代碼后,其結果為()?
正確答案: B 你的答案: B (正確)
[5, 3, 1, 6]
[4, 3, 1, 6]
[4, 3, 6]
[5, 3, 6]
分析:集合add(value)是在list尾部添加元素;add(index,value),將該值插入到指定index角標處;remove(index)刪除角標index對應的值;
5. 當你編譯和運行下面的代碼時,會出現下面選項中的哪種情況?
正確答案: B 你的答案: B (正確)
編譯時錯誤
編譯通過并輸出結果false
編譯通過并輸出結果true
編譯通過并輸出結果null
分析: 類中聲明的成員變量有默認初始值;方法中聲明的變量沒有默認初始值,必須在定義時初始化,否則在訪問該變量時會出錯,boolean類型默認值是false。
6.URL u =new URL(“http://www.123.com”);。如果www.123.com不存在,則返回______。
正確答案: A 你的答案: C (錯誤)
http://www.123.com
””
null
拋出異常
new URL()時必須捕獲檢查異常,但這個異常是由于字符串格式和URL不符導致的,與網址是否存在無關。URL的toString方法返回字符串,無論網址是否存在。
7.下列關于系列化和反序列化描述正確的是:
正確答案: A B 你的答案: A B (正確)
序列化是將數據轉為n個 byte序列的過程
反序列化是將n個 byte轉換為數據的過程
將類型int轉換為4 byte是反序列化過程
將8個字節轉換為long類型的數據為序列化過程
分析: 序列化:將Object對象轉換成為二進制數據流或者文本流的過程。序列化后的數據方便在網絡上傳輸和在硬盤上存儲;反序列化:與序列化相反,是將二進制數據流或者文本流轉換稱為對象的過程。
8.下列有關java構造函數敘述正確的是()
正確答案: C D 你的答案: C D (正確)
構造器的返回值為void類型
如果一個源文件中有多個類,那么構造器必須與公共類同名
構造器可以有0個,1個或一個以上的參數
每個類可以有一個以上的構造器
分析:構造函數是沒有返回值的,它的方法名稱與類名相同,一個類可以有一個以上的構造函數,可以重載構造函數;一個類默認都有一個無參構造函數,當我們手寫一個帶參構造函數時,就不會有默認構造函數,需要我們手動添加無參構造函數。
9.final、finally和finalize的區別中,下述說法正確的有?
正確答案: A B 你的答案: A B (正確)
final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
finally是異常處理語句結構的一部分,表示總是執行。
finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源的回收,例如關閉文件等。
引用變量被final修飾之后,不能再指向其他對象,它指向的對象的內容也是不可變的。
分析:finalize()方法一個對象只能執行一次,只能在第一次進入被回收的隊列,而且對象所屬于的類重寫了finalize方法才會被執行。第二次進入回收隊列的時候,不會再執行其finalize方法,而是直接被二次標記,在下一次GC的時候被GC。final 修飾引用類型,引用不可變,但是內容是可變的,例如final修飾數組,它指向的地址不變,但內部具體的值是可以更改的。
判斷推理
1.廣義而言,集體記憶即是一個具有自己特定文化內聚性和同一性的群體對自己過去的記憶。這種群體可以是一個政治宗教集團、一個地域文化共同體,也可以是一個民族或一個國家。這種記憶可以是分散的、零碎的、口頭的,也可以是集中的、官方的、文字的,可以是對最近一個事件的回憶,也可以是對遠古祖先事跡的追溯。
根據上述定義,下列屬于集體記憶的是:
正確答案: A 你的答案: A (正確)
我國廣泛流傳的大禹治水的傳說
某市宣傳地方旅游資源的紀錄片
某政府機構關于某項工作的文件匯編
我國某大學內介紹鄰國歷史的教材
2.羌特勒是一種野生的蘑菇,生長在能為它提供所需糖分的寄主樹木——例如道格拉斯冷杉下面。反過來,羌特勒在地下的根莖細絲可以分解這些糖分,并為其寄主提供養分和水分。正是因為這種互惠的關系,采割道格拉斯冷杉下面生長的羌特勒會給這種樹木造成嚴重的傷害。下面哪一個如果正確,對上面的結論提出了最強有力的質疑?()
正確答案: D 你的答案: D (正確)
近年來,野生蘑菇的采割數量一直在增加
羌特勒不僅生長在道格拉斯冷杉樹下,也生長在其他寄主樹木下面
許多種野生蘑菇只能在森林里找到,它們不能輕易在別處被種植
對野生蘑菇的采割激發了這些蘑菇將來的生長
分析:野生蘑菇的采摘若是激發它的生長,那么對于該互惠的格拉斯樹來說是有利的;
3. 團隊負責人接到一個緊急項目,他要考慮在代號為ABCDEF這6個團隊成員中的部分人員參加項目開發工作。人選必須滿足以下各點:
AB兩人中至少一個人參加
AD不能都去
AEF三人中要派兩人
BC兩人都去或都不去
CD兩人中有一人參加
若D不參加,E也不參加
那么最后()參加緊急項目開發。
正確答案: E 你的答案: E (正確)
ECEF
AF
ECF
F
ABCF
BCDEF
分析:有BC就沒有DE,有A就沒有D,BC必須同時存在;AEF需要2個,CD中必須有一個
Java09
1. 可以把任何一種數據類型的變量賦給Object類型的變量。
1.正確答案: A 你的答案: A (正確)
對
錯
分析:Object是所有類的父類
2. 對文件名為Test.java的java代碼描述正確的是()
正確答案: C 你的答案: B (錯誤)
輸出:0000
輸出:123
編譯報錯
輸出:No name
分析:報錯的原因是, 子類的構造方法總是先調用父類的構造方法,如果子類的構造方法沒有顯式的調用父類的哪個構造方法,子類就調用父類不帶參數的構造方法。
而父類沒有無參的構造函數,所以子類需要在自己的構造函數中顯示的調用父類的構造函數。
3. 下面哪些選項是正確的()
正確答案: A D 你的答案: A D (正確)
A >>是算術右移操作符
B >>是邏輯右移操作符
C >>>是算術右移操作符
D >>>是邏輯右移操作符
4.關于equals和hashCode描述正確的是 ()
正確答案: A B C 你的答案: A B C (正確)
兩個obj,如果equals()相等,hashCode()一定相等(符合代碼規范的情況下)
兩個obj,如果hashCode()相等,equals()不一定相等
兩個不同的obj, hashCode()可能相等
其他都不對
分析:HashCode()的存在是為了查找的快捷性,用于在散列存儲結構中確定對象的存儲地址
如果兩個對象 equals相等,則 hashCode()也一定相等
如果 equals方法被重寫,則 hashCode()也應該被重寫
如果兩個對象的 hashCode()相等, equals()方法不一定相等;equals方法沒有重寫,比較的就是應用類型的變量所指向的對象的地址
5.下面程序輸出結果為():
正確答案: B C 你的答案: C (錯誤)
程序異常,編譯不通過
程序編寫正常,可正常運行
程序輸出值為“LeXin”
程序輸出值為“Fenqile”
分析:分析出輸出結果就選了,失策了;引用數據類型在變量中存儲的是地址;所以 String nb = lx;是將常量池中"LeXin"的地址給了變量lx;而 lx = “Fenqile”;是將lx指向了另一個地址;所以nb的指向并沒有改變;
數據運算專項練習
1:給出下列數字,括號中的數字應該是多少?
3,4,6,9,(),18
正確答案: C 你的答案: C (正確)
11????????????12????????????13????????????14
分析:相鄰兩個數之間相差1,2,3,4,5…
2: 3,3/2,1,3/4,(),1/2
正確答案: A 你的答案: A (正確)
3/5????????????5/3????????????3/4????????????4/3
分析:分子為3;分母分別是1,2,3…,差值為1的等差數列;
3: -1,1,0,0,1,1,8,4,(),()
正確答案: B 你的答案: C (錯誤)
8,12
27,9
9,27
12,8
分析: 變量i從-1開始計數,分別為i^3 和 i^2; (-1)^3 , (-1)^2 0^3 ,0^2 ,1^3 ,1^2 ,2^3 ,2^2 ,3^3 , 3^2 …,i^3 ,i^2…
-1, 1, 0, 0, 1, 1, 8, 4, 27, 9,…, i^3 ,i^2,…
Java10
正確答案: B 你的答案: C (錯誤)
false,false
false,true
true,false
true,true
分析:因為是new,所以是在堆內存中創建了兩個對象,雖然它在緩存區間;
2.ResultSet中記錄行的第一列索引為?
正確答案: C 你的答案: B (錯誤)
-1
0
1
以上都不是
分析:結果集中的下標時從1開始的。
3.下面有關java的引用類型,說法正確的有?
正確答案: A B C D 你的答案: A C D (錯誤)
對于一個對象來說,只要有強引用的存在,它就會一直存在于內存中
如果一個對象僅持有虛引用,那么它就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收。
如果一個對象只具有軟引用,則內存空間足夠,垃圾回收器就不會回收它;如果內存空間不足了,就會回收這些對象的內存
一旦發現了只具有弱引用的對象,不管當前內存空間足夠與否,都會回收它的空間
1.強引用:一個對象賦給一個引用就是強引用,比如new一個對象,一個對象被賦值一個對象。
2、軟引用:用SoftReference類實現,一般不會輕易回收,只有內存不夠才會回收。
3、弱引用:用WeekReference類實現,一旦垃圾回收已啟動,就會回收。
4、虛引用:不能單獨存在,必須和引用隊列聯合使用。主要作用是跟蹤對象被回收的狀態。
Java11
1.下面哪段程序能夠正確的實現了GBK編碼字節流到UTF-8編碼字節流的轉換:
byte[] src,dst;
正確答案: B 你的答案: A (錯誤)
dst=String.fromBytes(src,“GBK”).getBytes(“UTF-8”)
dst=new String(src,“GBK”).getBytes(“UTF-8”)
dst=new String(“GBK”,src).getBytes()
dst=String.encode(String.decode(src,“GBK”)),“UTF-8” )
分析: 用new String(src,“GBK”)解碼得到字符串
用getBytes(“UTF-8”)得到UTF8編碼字節數組
2.下面關于Applet的說法是正確的是
正確答案: A B C D 你的答案: B D (錯誤)
Applet可以在帶有Java解釋器的瀏覽器中運行
Applet類必須繼承java.applet.Applet
Applet可以訪問本地文件
Applet是Object類的子類
class A {} class B extends A {} class C extends A {} class D extends B {}3.下面的哪4個語句是正確的?
正確答案: A C D G 你的答案: B D F G (錯誤)
The type Listis assignable to List.
The type Listis assignable to List.
The type Listis assignable to List<?>.
The type Listis assignable to List<?extends B>.
The type List<?extends A>is assignable to List.
The type Listis assignable to any List reference.
The type List<?extends B>is assignable to List<?extends A>.
吃了英語差的虧啊。
1. 只看尖括號里邊的!!明確點和范圍兩個概念
2. 如果尖括號里的是一個類,那么尖括號里的就是一個點,比如List< A >,List< B >,List< Object >
3. 如果尖括號里面帶有問號,那么代表一個范圍,<? extends A> 代表小于等于A的范圍,<? super A>代表大于等于A的范圍,<?>代表全部范圍
4. 尖括號里的所有點之間互相賦值都是錯,除非是倆相同的點
5. 尖括號小范圍賦值給大范圍,對,大范圍賦值給小范圍,錯。如果某點包含在某個范圍里,那么可以賦值,否則,不能賦值
6. List<?>和List 是相等的,都代表最大范圍
7.補充:List既是點也是范圍,當表示范圍時,表示最大范圍
錯題集
Java01
2.public class Interesting{
3. // 省略代碼
4.}
正確答案: D 你的答案: B (錯誤)
import java.awt.*;
package mypackage;
class OtherClass{ }
public class MyClass{ }
分析:不能插入,看錯了,還猶豫半天;1處,可以是包名,也可以是導包,亦可以定義一個類,只要不是public的,因為下面有一個public的類;
2.一般情況下,以下哪個選項不是關系數據模型與對象模型之間匹配關系?
正確答案: D 你的答案: B (錯誤)
表對應類
記錄對應對象
表的字段對應類的屬性
表之間的參考關系對應類之間的依賴關系
分析:一個表對應一個類,表中的一個字段對應類的一個屬性,一條記錄就是創建一個對象;
3.假設如下代碼中,若t1線程在t2線程啟動之前已經完成啟動。代碼的輸出是?
正確答案: B 你的答案: C (錯誤)
Thread 1 wake up
Thread 2 sent notify.
Thread 2 sent notify.
Thread 1 wake up
A、B皆有可能
程序無輸出卡死
分析:執行obj.wait();時已釋放了鎖,所以t2可以再次獲得鎖,然后發消息通知t1執行,但這時t2還沒有釋放鎖,所以肯定是執行t2,然后釋放鎖,之后t1才有機會執行。
4.
根據下面的代碼,
String s = null;
會拋出NullPointerException異常的有()。
正確答案: A C 你的答案: A D (錯誤)
if( (s!=null) & (s.length()>0) )
if( (s!=null) && (s.length()>0) )
if( (s==null) | (s.length()==0) )
if( (s==null) || (s.length()==0) )
分析:String s=null;沒有給s開辟任何空間,當執行length()方法時候,因為沒有具體指向的內存空間,所以報出NullPointerException沒有指向的錯誤。所以只要不執行s.length>0或是s.length()==0即可;
&和|,是非短路邏輯運算符,兩個都得執行,執行到s.length()自然就報錯了。
java02
1.下面代碼的輸出是什么?
public class Base {private String baseName = "base";public Base(){callName();}public void callName(){System. out. println(baseName);}static class Sub extends Base{private String baseName = "sub";public void callName(){System. out. println (baseName) ;}}public static void main(String[] args){Base b = new Sub();} }正確答案: A 你的答案: C (錯誤)
null
sub
base
分析:new Sub();在創造派生類的過程中首先創建基類對象,然后才能創建派生類。
創建基類即默認調用Base()方法,在方法中調用callName()方法,由于派生類中存在此方法,則被調用的callName()方法是派生類中的方法,此時派生類還未構造,所以變量baseName的值為null。
2.以下哪個式子有可能在某個進制下成立()
正確答案: A 你的答案: B (錯誤)
13 * 14=204
12 * 34=568
14 * 14=140
1+1=3
3.以下哪種JAVA的變量表達式使得變量a和變量b具有相同的內存引用地址( )
正確答案: A B 你的答案: A B D (錯誤)
String a = “hello”; String b = “hello”;
Integer a; Integer b = a;
int a = 1; Integer b = new Integer(1);
int a = 1; Integer b = 1;
分析:內存引用地址,是指棧中存放的地址,來指向堆中的某個位置。
int 是基本類型,數據直接存放在棧中,不存在內存引用地址的說法。D選項會進行拆箱,它的值是相等的,但是Integer類型引用地址是不同的。
4.關于Java的一些概念,下面哪些描述是正確的:( )
正確答案: B F 你的答案: A B F (錯誤)
所有的Java異常和錯誤的基類都是java.lang.Exception, 包括java.lang.RuntimeException
通過try … catch … finally語句,finally中的語句部分無論發生什么異常都會得到執行
java中所有的數據都是對象
Java通過垃圾回收回收不再引用的變量,垃圾回收時對象的finallize方法一定會得到執行
Java是跨平臺的語言,無論通過哪個版本的Java編寫的程序都能在所有的Java運行平臺中運行
Java通過synchronized進行訪問的同步,synchronized作用非靜態成員方法和靜態成員方法上同步的目標是不同的
分析:Java中所有錯誤和異常的父類是java.lang.Throwable;基本數據類型不是對象哦;Java垃圾回收器負責回收無用對象占據的內存資源,但對象沒有使用new獲取了一塊特殊區域,這塊特殊區域的回收使用finallize();java跨平臺是因為JVM
java03
1.下列哪些情況下會導致線程中斷或停止運行( )
正確答案: B 你的答案: A B (錯誤)
InterruptedException異常被捕獲
線程調用了wait方法
當前線程創建了一個新的線程
高優先級線程進入就緒狀態
2.下列哪個選項是錯誤的。()
正確答案: A D 你的答案: C (錯誤)
一個文件中只能有一個public class。
一個文件中可以有多個類。
一個類中可以有兩個main方法。
若類中只含一個main方法,則必須是public的。
分析:一個類中和類同名的類只能有一個,main方法,并不是主線程方法啊;
Java04
1.在各自最優條件下,對N個數進行排序,哪個算法復雜度最低的是? ()
正確答案: A 你的答案: B (錯誤)
插入排序
快速排序
堆排序
歸并排序
2.下面代碼的輸出是什么?
正確答案: A 你的答案: B (錯誤)
null
sub
base
分析:這里考到了向下轉型,重寫等知識;
創建的是子類對象Sub,指向的是父類類型Base,創建子類對象時通過無參構造調用父類Base(),父類無參構造調用callname()方法,由于子類重寫了該方法,所以調用的是子類的callname()方法,而此時子類還沒有創建實例,沒有初始化,所以basename此時為null;
3.假設 a 是一個由線程 1 和線程 2 共享的初始值為 0 的全局變量,則線程 1 和線程 2 同時執行下面的代碼,最終 a 的結果不可能是()
正確答案: D 你的答案: C (錯誤)
-1
-2
0
1
分析:
1.AB不并發:此時相當于兩個方法順序執行。A執行完后a=-1,B使用-1作為a的初值,B執行完后a=-2
2.AB完全并發:此時讀寫沖突,相當于只有一個線程對a的讀寫最終生效。相同于方法只執行了一次。此時a=-1
3.AB部分并發:假設A先進行第一次讀寫,得到a=1;之后A的讀寫被B覆蓋了。B使用1作為a的初值,B執行完后a=0;或是線程A,B第一次讀寫沖突,A被B覆蓋了,之后執行先線程A的第二次讀寫,再執行線程B的第二次讀寫,得到a=-3;
總結
以上是生活随笔為你收集整理的[java之牛客网每日练习]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试---如何选择合适的正交表
- 下一篇: iOS架构-cocoaPods之Podf