public static int getValue(int i) { int result = 0; switch (i) { case 1: result = result + i; case 2: result = result + i * 2; case 3: result = result + i * 3; } return result; }
A.0
B.2
C.4
D.10java
答案:
Dgit
解析:
沒有break,發生case穿透現象,程序會繼續向下執行,直到遇到break或者結束switch語句的大括號爲止。github
A.Ada
B.C++
C.Pascal
D.BASIC面試
答案:
B算法
解析:
ava是類C語言,從C++改進而來 去掉了指針和多繼承,採用自動垃圾回收等編程
A.只能包含一個類,類名必須與文件名相同
B.只能包含與文件名相同的類,以及其中的內部類
C.只能有一個與文件名相同的類,能夠包含其餘類
D.能夠包含任意類微信
答案:
C數據結構
解析:
C。一個與文件名相同的public的類敏感詞類可隨意多個。app
A.StringBuffer類的對象調用toString()方法將返回String類型的結果
B.兩個類都有append()方法
C.能夠直接將字符串「test」賦值給聲明的String類和StringBuffer類的變量
D.兩個類的實例的值都可以被改變框架
答案:
A
解析:
A. StringBuffer類調用toString()方法後將轉換爲String類型 正確
B. String類型中沒有append()方法,要追加字符串」+「便可,也沒有必要 append
C. 能夠直接將字符串「test」複製給聲明的Stirng類的變量,而StringBuffer類的不行
D. String 實例 是不可變的
String 對象/實例 是不能夠被改變的。
當new一個String對象時,JVM會在內存中建立一個String對象,當另一個String對象值與它同樣時,會將該對象直接指向對應的地址。
A.類的構造方法和類同名
B.一個類能夠有多個構造方法
C.在實例化對象時必須調用類的構造方法
D.構造方法能夠和該類其餘方法同樣被該類對象調用
答案:
D
解析:
1.構造方法也是類的方法,能夠在建立對象時爲成員變量賦值
2.構造方法能夠進行重載,可是參數列表必須不相同,不以返回值和訪問級別進行區分
3.構造方法沒有返回值
4.構造方法必定要與定義爲public的類同名
5.構造方法不能被對象調用,只會建立對象,使用new關鍵字
public class Square { long width; public Square(long l) { width = l; } public static void main(String arg[]) { Square a, b, c; a = new Square(42L); b = new Square(42L); c = b; long s = 42L; } }
A.a == b
B.s == a
C.b == c
D.a.equals(s)
答案:
C
解析:
a = new Square(42L); b = new Square(42L);
這裏new了兩個對象,因此a,b不是同一個引用a!=b ,s的類型跟a,b不一樣類型,因此s!=a,s!=b
c = b; 這裏b,c是同一個對象的引用,因此b==c是true
class Parent { private int data; public Parent(int d){ data = d; } } class Child extends Parent{ String name; public Child(String s, int d){ ___________________ name = s; } }
A.data = d;
B.super.data = d;
C.Parent(d);
D.super(d);
答案:
D
解析:
1.子父類存在同名成員時,子類中默認訪問子類的成員,可經過super指定訪問父類的成員,格式:super.xx (注:xx是成員名);
2.建立子類對象時,默認會調用父類的無參構造方法,可經過super指定調用父類其餘構造方法,格式:s uper(yy) (注:yy是父類構造方法須要傳遞的參數)
public class Test { private static int j = 0; private static Boolean methodB(int k) { j += k; return true; } public static void methodA(int i) { boolean b; b = i < 10 | methodB(4); b = i < 10 || methodB(8); } public static void main(String args[]) { methodA(0); System.out.println(j); } }
A.The program prints」0」
B.The program prints」4」
C.The program prints」8」
D.The program prints」12」
E.The code does not complete.
答案:
B
解析:
選 B
在main函數中先調用methodA(0)
在methodA中,第二行
b = i < 10 | methodB(4); //中間爲與計算符,執行完methodB(4)後,j = 4
methodA中,第三行
b = i < 10 || methodB(8);//中間爲或計算符,由於i < 10 已成立,不須要後續計算
因此最後結果輸出爲4
A.System.out.print (buffer[i]);
B.FileOutputStream fout = new FileOutputStream(this.filename);
C.FileInputStream fin = new FileInputStream(this.filename);
D.System.in.read(buffer)
答案:
C
解析:
程序的邏輯很簡單。程序必須打開兩個文件,以可讀的方式打開一個已有文件和以可寫的方式打開一個新文件,後將已有文件中的內容,暫時存放在內存中,再寫入新的文件,後關閉全部文件,程序結束。
根據題意,首先須要讀入一個文件中的字符,須要FileInputStream fin = new FileInputStream(this.filename);
int foo(intarray[], int n, int key){ int n1=0,n2=n-1,m; while(n1<=n2){ m=(n1+n2)/2; if(array[m]==key) return m; if(array[m]>key) n2=m-1; else n1=m+1; } return -1; }
A.O(n2)
B.O(n3)
C.O(log(n))
D.O(n)
答案:
C
解析:
二分查找時間複雜度爲O(logn) ,關注個人微信公衆號,裏面有關於時間複雜度和空間複雜度介紹的文章。
A.進程對管道進行讀操做和寫操做均可能被阻塞
B.一個管道只能有一個進程或一個寫進程對其操做
C.一個管道可實現雙向數據傳輸
D.管道的容量僅受磁盤容量大小限制
答案:
A
解析:
A.正確,由於管道爲空,讀操做會被阻塞;管道滿了,寫操做會被阻塞
B.能夠有多個進程對其讀;也能夠有多個進程寫,只不過不能同時寫。而且題目沒有說「同時」,B不對
C.匿名管道只能單向;命名管道能夠雙向;因此C過於絕對
D.管道是內存中的,因此D不對
A.import java.awt.和import java.awt.event.均可以
B.只能是import java.awt.
C.只能是import java.awt.event.
D.import java.awt.和import java.awt.event.都不能夠
答案:
C
解析:
導包只能夠導到當前層,不能夠再導入包裏面的包中的類
-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3
,其最小內存值和Survivor區總大小分別是()
A.5120m,1024m
B.5120m,2048m
C.10240m,1024m
D.10240m,2048m
答案:
D
解析:
-Xmx:最大堆大小
-Xms:初始堆大小
-Xmn: 年輕代大小
-XXSurvivorRatio:年輕代中Eden區與Survivor區的大小比值
年輕代5120m, Eden:Survivor=3,Survivor區大小=1024m(Survivor區有兩個,即將年輕代分爲5份,每一個Survivor區佔一份),總大小爲2048m。
-Xms初始堆大小即最小內存值爲10240m
A.http://www.123.com
B.」」
C.null
D.拋出異常
答案:
A
解析:
new URL()時必須捕獲檢查異常,但這個異常是因爲字符串格式和URL不符致使的,與網址是否存在無關。URL的toString方法返回字符串,不管網址是否存在
A.交換
B.動態連接
C.動態加載
D.磁盤調度
答案:
B
解析:
理解爲適配器模式,繼承該類則不須要實現一個接口所有方法。
A.ArrayList和LinkedList均實現了List接口
B.ArrayList的訪問速度比LinkedList快
C.添加和刪除元素時,ArrayList的表現更佳
D.HashMap實現Map接口,它容許任何類型的鍵和值對象,並容許將null用做鍵或值
答案:
A B D
解析:
關於D,值對象能夠容許null
A.咱們直接調用Thread對象的run方法會報異常,因此咱們應該使用start方法來開啓一個線程
B.一個進程是一個獨立的運行環境,能夠被看作一個程序或者一個應用。而線程是在進程中執行的一個任務。Java運行環境是一個包含了不一樣的類和程序的單一進程。線程能夠被稱爲輕量級進程。線程須要較少的資源來建立和駐留在進程中,而且能夠共享進程中的資源
C.synchronized能夠解決可見性問題,volatile能夠解決原子性問題
D.ThreadLocal用於建立線程的本地變量,該變量是線程之間不共享的
答案:
B D
解析:
volatile與synchronized的區別:
volatile本質是在告訴jvm當前變量在寄存器中的值是不肯定的,須要從主存中讀取,synchronized則是鎖定當前變量,只有當前線程能夠訪問該變量,其餘線程被阻塞住.
volatile僅能使用在變量級別,synchronized則可使用在變量,方法.
volatile僅能實現變量的修改可見性,但不具有原子特性,而synchronized則能夠保證變量的修改可見性和原子性.
volatile不會形成線程的阻塞,而synchronized可能會形成線程的阻塞.
volatile標記的變量不會被編譯器優化,而synchronized標記的變量能夠被編譯器優化.
A.構造方法的優先級通常比代碼塊低。
B.構造方法的返回類型只能是void型。
C.構造方法的主要做用是完成對類的對象的初始化工做。
D.通常在建立新對象時,系統會自動調用構造方法。
答案:
A C D
解析:
A:靜態成員變量或靜態代碼塊>main方法>非靜態成員變量或非靜態代碼塊>構造方法
B:think in java中提到構造器自己並無任何返回值。
C: 構造方法的主要做用是完成對類的對象的初始化工做。
D: 通常在建立(new)新對象時,系統會自動調用構造方法。
A.finally是爲確保一段代碼不論是否捕獲異常都會被執行的一段代碼
B.throws是用來聲明一個成員方法可能拋出的各類非運行異常狀況
C.final用於能夠聲明屬性和方法,分別表示屬性的不可變及方法的不可繼承
D.throw是用來明確地拋出一個異常狀況
答案:
A B D
解析:
C根本就跟異常處理沒有關係,因此不選。
A.每次讀入的字節數不一樣
B.前者帶有緩衝,後者沒有。
C.前者是字符讀入,後者是字節讀入。
D.兩者沒有區別,能夠互換。
答案:
A B D
解析:
字符流和字節流每次讀入的字節數是不肯定的,可能相同也可能不相同
例FileInputStream 的read() 方法每次讀入一個字節,read(byte b[]) 每次讀入b.length個字節
FileReader 的read()方法每次讀入一個字符,read(char cbuf[], int offset, int length)每次讀入length個字符
另外,字符流和字節流讀入一個ASCII字符,字節數是相同的
例UTF-8字符編碼中一個漢字佔三個字節,數字1佔一個字節,用字符流讀入的數字1長度爲一個字節,用字節流讀入的數字1長度也爲一個字節
Java筆試內容集合 持續更新中....
歡迎關注我的微信公衆號:Coder編程
歡迎關注Coder編程公衆號,主要分享數據結構與算法、Java相關知識體系、框架知識及原理、Spring全家桶、微服務項目實戰、DevOps實踐之路、每日一篇互聯網大廠面試或筆試題以及PMP項目管理知識等。更多精彩內容正在路上~
新建了一個qq羣:315211365,歡迎你們進羣交流一塊兒學習。謝謝了!也能夠介紹給身邊有須要的朋友。
文章收錄至
Github: https://github.com/CoderMerlin/coder-programming
Gitee: https://gitee.com/573059382/coder-programming
歡迎關注並star~