美圖2018秋招Java筆試題
1、關於垃圾回收演算法G1,哪個說法是錯誤的( B )。
A. 並行和併發,具有多執行緒操作能力
B. 不適用堆空間太大的場景
C. G1停頓時間更加可預測
D. 不會對系統吞吐量產生較大影響
2、以下程式的執行結果是?( D )
class Base{ final public void show() { System.out.println("Base::show() called"); } } class Derived extends Base{ public void show(){ System.out.println("Derived::show()called"); } } class Main{ public static void main(String[] args) { Base b = new Derived(); b.show(); } }
A. Derived::show()被呼叫
B. Base::show()被呼叫
C. Runtime Error
D. Compiler Error
3、多執行緒中棧與堆是公有的還是私有的(D)
A. 棧私有,堆私有
B. 棧公有,堆私有
C. 棧公有,堆私有
D. 棧私有,堆公有
4、在SQL資料庫一個班級表裡只記錄了100位同學的情況,那麼對該表建立索引檔案的描述正確的是(D)
A. 一定要,因為索引對於任何資料庫表都是必要的
B. 沒有必要,因為建立索引對任何資料庫的效能都沒有影響
C. 一定要,因為索引有助於加快搜索記錄的程序
D. 不適宜,因為對少量記錄的表進行索引實際上會產生不利的影響
5、Java垃圾回收演算法CMS執行的順序是( A )
A. 初始標記->併發標記->併發預清理->重新標記->併發清理->併發重置
B. 初始標記->併發標記->重新標記->併發預清理->併發清理->併發重置
C. 初始標記->併發預清理->併發標記->重新標記->併發清理->併發重置
D. 初始標記->併發標記->重新標記->併發預清理->併發重置->併發清理
6、下列哪種情況會導致持久區jvm堆記憶體溢位(D)
A. 迴圈上萬次的字串處理
B. 在一段程式碼申請上百M甚至上G的記憶體
C. 不斷建立物件
D. 使用CGLIB技術直接操作位元組碼執行,生成大量的動態類
7、java.util.Comparator體現的設計模式是( B )
A. Decorator
B. Strategy
C. Interpreter
D. Command
8、什麼樣的資料結構被使用在功能redo-undo上?( D )
A. queue
B. Tree
C. Graph
D. stack
9、以下程式的輸出是?( A )
public class leftshift_operator {
public static void main(String args[]){
byte x = 64;
int i;
byte y;
i = x<<2;
y = (byte)(x<<2);
System.out.print(i+ " " +y);
}
}
A. 256 0
B. 0 256
C. 64 0
D. 0 64
10、以下程式的執行結果是( D )
public static void main(String args[]){
Thread t = new Thread(){
public void run(){
pong();
}
};
t.run();
System.out.print("ping");
}
static void pong(){
System.out.print("pong");
}
A. pingpong
B. 都不輸出
C. pingpong和pongping都有可能
D. Pongping
11、以下哪個協議將資料包拆分併發送到網路中的指定地址的?( D )
A. Proxy Server
B. DNS
C. Socket
D. TCIP/IP
12、以下說法正確的是( C )
class Base extends Exception{}
class Derived extends Base{}
public class Main {
public static void main(String args[]){
//some other stuff
try {
//some monitored code
throw new Derived();
} catch(Base b) {
System.out.println("Caught base class exception");
} catch(Derived d){
System.out.println("Caught derived class exception");
}
}
}
A. 捕獲base class exception
B. Compiler Error因為derived不是異常類
C. Compiler Error因為base class exception在derived class之前被捕捉
D. 捕捉derived class exception
13、下列程式的返回值是,其中arr[] = {9,12,2,11,2,2,10,9,12,10,9,11,2}且n為arr的大小?( B )
int fun(int arr[],int n){
int x = arr[0];
for(int i=1;i<n;i++)
x = x^arr[i];
return x;
}
A. 12
B. 9
C. 0
D. 2
14、哪一個關鍵字keywords必須用在處理異常當中?( D )
A. finally
B. throw
C. catch
D. try
15、java中String是執行緒安全的嗎?( B )
A. 不是
B. 是
16、有如下程式:
String s1 = new String(“abc”);
String s2 = “abc”;
String s3 = “a” + “bc”;
下列哪項執行結果為false( C )
A. S2 = S3
B. S1.equals(s2)
C. S1 = S2
D. S1.compareTo(s3) ==0
17、下列程式完成什麼功能?( A )
int fun(intx, inty){
if(y == 0)
return 0;
}
A. x*y
B. x+y
C. x^y
D. x+x*y
18、新建一個流物件,下面哪個選項的程式碼是錯誤的?( C
19、 )
A. new BufferedWrite(new FileWriter(“a.txt”));
B. new ObjectlnputStream(new FilelnputStream(“a.dat”));
C. new BufferedReader(new FilelnputStream(“a.dat”));
D. new GZIPOutputStream(new FileOutputStream(“a.zip”));
19、JDK新生代垃圾回收機制預設採用的是複製演算法,影響該演算法最關鍵的因素是( A )
A. 物件存活率
B. 建立新物件的頻率
C. SurvivorRatio引數
D. 物件的大小
20、java.util.HashMap處理hash碰撞的方法是( A )
A. 拉鍊法
B. 線性探查法
C. 隨機探測
D. 線性補償探測法
多選題
1、以下哪些是執行時異常( ABCD )
A. java.lang.lndexOutOfBoundsException
B. java.lang.NullPointerException
C. java.util.ConcurrentModificationException
D. java.time.format.DataTimeParseException
2、以下哪些能夠保證執行緒安全( BC )
A. 單例模式
B. java.util.Hashtable
C. synchronized
D. volatile
3、垃圾回收演算法CMS的缺點有哪些( ABC )
A. 需要更大的堆空間
B. 需要更多的CPU空間
C. 不會整理、壓縮堆空間
D. 增加了回收的停頓時間
4、以下哪些屬於工廠模式( ABC )
A. 工廠方法模式
B. 簡單工廠模式
C. 抽象工廠模式
D. 組合工廠模式
5、以下哪些語句可以正常建立Lock物件?( ABD )
A. Lock lock = new ReentrantLock(true);
B. Lock lock = new ReentrantLock();
C. Lock lock = new Lock();
D. Lock lock = new ReentrantLock(false);
6、以下程式的輸出是( AC )垃圾回收
public class Test {
public static void main(String args[]) throws InterruptedException{
Test t = new Test();
//making t eligible for garbage collection
t = null;
//calling garbage collector
System.gc();
//waiting for gc to complete
Thread.sleep(1000);
System.out.println("end main");
}
@Override
protected void finalize()
{
System.out.println("finalize method called");
System.out.println(10/0);
}
}
A. end main
B. 其他所有
C. finalize method called
D. Throw java.lang.ArithmeticException:/by zero
7、哪些情況會觸發FULL GC( ABCD )
A. 老年代空間不足
B. 統計得到的Minor GC晉升到舊生代的平均大小大於舊生代的剩餘空間
C. 堆中分配很大的物件
D. CMS GC時出現promotion failed和concurrent mode failure
8、以下哪些是spring的事物隔離級別:( ACD )
A. PROPAGTION_SUPPORTS
B. PROPAGATION_NESTED
C. PROPAGATION_MANDATORY
D. PROPAGATION_NEVER
9、下列關於java陣列論述,正確的是:( ABCD ) A. int[] x = {0};與int[] x = new int[1];的結果是完全等價的。
B. String[] x = {“o” ,”k” ,”ok”);所建立的陣列物件含有3個串物件。
C. Int [] [] x = {{1},{1,2},{1,2,3},new int[1]};是正確語句。
D. 定義一個Java的多維陣列變數,實際上是定義了將會指向陣列物件的引用,該陣列物件所包含的元素又將是另一個數組物件的引用。
10、以下哪些資料隔離級別會產生幻讀( ABD )
A. Read Uncommitted
B. repeatable read
C. Serializable
D. read committed
程式設計題:
最長公共子串
時間限制:C/C++語言 1000MS;其他語言 3000MS記憶體限制:C/C++語言 65536KB;其他語言 589824KB
題目描述:
有兩個字串(可能包含空格),請找出其中最長的公共連續子串, 輸出其長度。
輸入
給定兩行字串
輸出
輸出這兩個字串的最長公共連續子串的長度
樣例輸入
abcde
bcd
樣例輸出
3
bit位數計算
時間限制:C/C++語言 1000MS;其他語言 3000MS記憶體限制:C/C++語言 65536KB;其他語言 589824KB
題目描述:
兩個int32整數m和n的二進位制表達,計算有多少個位(bit)不同?
輸入
一行中給定兩個數字
輸出
輸出這兩個數字中bit不同的個數
樣例輸入
15 8
樣例輸出
3