天天看點

JAVA校招筆試題(JAVA研發崗)

JAVA校招筆試題(JAVA研發崗)

一、單項選擇題

1. A、B、C三個同學頭上分别有三個數字a、b、c,他們看不到自己頭上的數字,但可以看到其他兩人的。比如B同學能看到a、c,但看不到b。已知1<=a,b,c<=9,并且各不相等。A、B、C三個人以此進行了如下發言:

A說:要麼a不是b+c的約數,要麼a=b+c

B說:我知道我頭上數字了,c是a的倍數

C說:我也知道我頭上數字了

那麼a+b+c是_____。

A. 8

B. 9

C. 10

D. 11

E. 12

F. 7

3. 衆所周知我們所處的宇宙的質能公式是E=mc2,其中c是真空中的光速,和我們的宇宙平行的另一個宇宙meta,研究顯示他們使用的質能公式是E=(2+√3)m,當一個物體品質m很大的時候,對應的能量E非常大,資料也非常的長,但meta宇宙裡面的智慧生物隻願意把E取整,然後記錄對應的能量E的最後一位整數,比如m=0時,他們會記錄1,m=1時,他們會記錄3。m=2的時候,他們會記錄3。現在請問當m=100時,他們會記錄多少?

A. 1

B. 2

C. 3

D. 4

E. 5

F. 6

4. 下列關于程序間通信的說法中錯誤的是:

A. 可以通過網絡進行程序間通信

B. 信号量也可以用作程序間通信

C. 在Linux中則隻能用管道做程序通信

D. 通過return傳回值也可以在程序間通信

E. 在程序間共享一塊記憶體可以做通信

F. 程序間通信效率通常比網絡通信效率高

6. 多項式P(x)=a+bx+cx^2+dx^3

對于任意x,計算p(x)中最少需要用到乘法操作的次數是多少?

A. 3

B. 4

C. 5

D. 6

E. 1

F. 2

7. 甲乙兩個人對賭,甲估計自己赢的機率為1/3,乙估計自己赢的機率為2/5,實際上雙方赢的機率各為1/2。甲乙二人都知道雙方各自估計的赢的機率,但并不清楚實際上赢的機率。甲乙兩人同時亮出籌碼,如果某一方覺得對方籌碼太少可以退出遊戲,獲勝的人會赢取雙方所處的籌碼。以下命題中正确的是:

A. 甲赢錢的期望大于0

B. 乙赢錢的期望大于0

C. 不管雙方各自估計自己赢的機率是多少,甲乙二人赢錢的期望都等于0

D. 甲乙兩人赢錢的期望都小于0

E. 甲乙兩人赢錢的期望都大于0

F. 甲乙二人必然會至少有一人退出比賽

16. 同時擲4個骰子,數字加起來和為22的機率為x/1296,x的值為?

A. 7

B. 8

C. 9

D. 10

E. 11

F. 12

17. 一個機器人玩抛硬币遊戲,一直不停的抛一枚不均勻的硬币,硬币有A、B兩面,A面機率為2/3,B面機率為1/3,問第一次出現連續的兩個A面的時候,機器人抛硬币的次數的期望是多少?

A. 9/4

B. 11/4

C. 15/4

F. 9/5

18. 在一個二分類學習案例中,正負樣本分别為10萬和100萬,這些樣本中有5000個特征完全相同的正樣本和負樣本對,小張同學将這些樣本對從樣本集中删除。以下說法正确的是:

A. 由于删除的樣本對特征相同,分類相反,是以可以完全抵消,訓練出的模型不變。

B. 由于負樣本較多,是以删除後負樣本被錯分到正樣本的比例升高。

C. 這個做法可以顯著降低運算量,是以可取

D. 這樣隻去除樣本對中的負樣本,效果可能更好

E. 樣本的變更對于分類結果的比例影響可以忽略不計。

F. 以上答案都不對。

19. 在Android用戶端中編碼中,以下哪個行為是必要的:

A. bitmap使用後立即調用recycle方法

B. 在頁面activity類的finalize方法中登出廣播的監聽

C. 在activity的onDestory方法中将成員變量值置為null

D. 在使用aidl接口時自己控制多線程安全

E. 在内部類增加public修飾符

F. 頁面布局xml檔案名和對應的Activity類名需相同

20. 以下是求一個數組最大值的代碼,它的運算最差時間複雜度和最差空間複雜度是____

int Max(int arr[], int length)

{

if(length == 1){

return arr[0];

}

int mid=length/2;

int left=Max(arr,mid);

int right=Max(arr+mid,length-mid);

return (left>right?left:right);

A. 時間複雜度:O(n),空間複雜度:O(1)

B. 時間複雜度:O(n),空間複雜度:O(log(n))

C. 時間複雜度:O(n*log(n)),空間複雜度:O(1)

二、問答題

1、www.abc.com是一個視訊點播網站,Arbergo是一個基礎存儲系統,它為該視訊網站提供了基礎服務描述如下:

該系統存儲了全部需要下載下傳的檔案,并提供JAVA接口用于視訊檔案下載下傳

接口允許指定1到n個檔案名下載下傳多個檔案

接口傳回的檔案内容支援分片,例如file.part1,file.part2

接口定義時需考慮到異常情況

接口支援按照指定檔案區間下載下傳,例如,下載下傳file1的第101個位元組到檔案末尾,下載下傳file2的第1個位元組到第100個位元組。

該系統實作了基于SATA硬碟和SSD硬碟的混合存儲。混合存儲的特點是SATA硬碟的存儲空間更大,但通路速度更慢,SSD硬碟存儲空間較小,但通路速度更快。檔案在兩種磁盤類型中可以遷移。

問題1:請用java語言完成該系統中描述的對外提供的接口定義,并用注釋說明該接口各個參數的含義以及取值範圍。

問題2:針對Arbergo系統在#6中描述的混合存儲特點,請用文字描述該系統的設計思路。設計思路可以包括但不限于檔案在磁盤中的分布,檔案在不同磁盤類型中的遷移規則,通路規則。

2、Maven的一個核心特征是依賴管理。他通過讀取依賴項目檔案(pom.xml中)來發現所有需要依賴的庫。pom.xml中maven依賴定義類似:

<dependency>

<groupid>org.springframework</groupid>

<artifactid>spring-core</artifactid>

<version>3.1.2.RELEASE</version>

</dependency>

<groupid>commons-collections</groupid>

<artifactid>commons-collections</artifactid>

<version>3.2.1</version>

其中每個artifactid又有自己的pom.xml,裡面也有類似的依賴定義。

比如有一個java庫A,依賴于其他庫B,我們的項目引用A的時候,很可能也需要把B引入進來,maven就提供了這樣的功能,可以管理各種間接的依賴。舉個例子:一個項目依賴了A,B兩個庫,A又依賴了C,D,其中D又依賴了F;B依賴了E,他們的依賴樹大概是這樣的:

項目___|____A

|   |_____C

|   |_____D

|    |_____F

|_____B

|_____E

maven在打包過程中會把依賴A,B,C,D,E,F都引入進來

但這個依賴很可能會有一些沖突的情況:

case1:我們在項目中分别引入了2個依賴A和B:A又依賴的C,C又依賴了D,B也依賴了D,但是這個時候C依賴的D和B依賴的D的版本是不同的:

項目----A---C----D

項目----B---D

也就是說,目前項目引入了2次D依賴,那麼這時,Maven将采用第一原則:路徑最近原則

case2:我們在項目中分别引入了2個依賴A和B,而A和B又都引入了C。但是,此時A依賴的C和B依賴的C版本是不一緻的,那麼這個時候Maven如何處理呢?

這時,第一原則已經不起作用了,在Maven2.0.9之後的版本中,制定了第二原則:第一聲明者優先

請嘗試用java代碼描述maven的依賴關系建立過程,注意隻能使用基本類型和數值(如用到map,list,set等需要自行實作)。

3、hotspot是sun.jdk預設虛拟機,堆記憶體結構主要分為新生代、老年代,新生代包含Eden空間、From Survivor空間、To Survivor空間、用JAVA程式模拟實作hotspot虛拟機的堆記憶體結構并且實作兩個方法:

方法1:模拟實作建立一個新對象後堆記憶體配置設定過程

方法2:模拟實作垃圾回收過程(垃圾回收按分代回收算法,實作新生代和老年代的垃圾回收過程)

最後寫一個主函數,通過調用方法1,進而出發方法2.