蘑菇街2015校招 Java研发笔试题 详解,2015java
蘑菇街2015校招 Java研發筆試題 詳解,2015java
1. 對進程和線程描述正確的是( )
A. ?父進程里的所有線程共享相同的地址空間,父進程的所有子進程共享相同的地址空間。
B. ?改變進程里面主線程的狀態會影響其他線程的行為,改變父進程的狀態不會影響其他子進程。
C. 多線程會引起死鎖,多進程則不會。
D.? 以上都不對。
解析:A錯,進程擁有獨立的地址空間;B錯,主線程和子線程是并行關系的時候,并沒有依賴關系。父進程和子進程中,子進程是父進程的一個副本,創建子進程后,子進程會有自己的空間,然后把父進程的數據拷貝到子進程的空間里。運行時,誰先運行是不確定的,這由系統決定;C錯,多線程和多進程都會引起死鎖,一般說的死鎖指的是進程間的死鎖。
進程和線程的主要差別在于它們是不同的操作系統資源管理方式。進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發操作,只能用線程,不能用進程。如果有興趣深入的話,我建議你們看看《現代操作系統》或者《操作系統的設計與實現》。對就個問題說得比較清楚。
2. ?數據庫里面建索引的常用數據結構是()
A.單向鏈表 B.棧 C.B+樹 D.隊列
解析:索引是對記錄按照多個字段進行排序的一種方式。對表中的某個字段建立索引會創建另一種數據結構,其中保存著字段的值,每個值又指向與它相關的記錄。這種索引的數據結構是經過排序的,因而可以對其執行二分查找。索引的缺點是占用額外的磁盤空間。因為索引保存在數據庫中,所以如果為同一個表中的很多字段都建立索引,那這個文件可能會很快膨脹到文件系統規定的上限。
?在數據庫系統的使用過程當中,數據的查詢是使用最頻繁的一種數據操作。最基本的查詢算法當然是順序查找(linear search),遍歷表然后逐行匹配行值是否等于待查找的關鍵字,其時間復雜度為O(n)。但時間復雜度為O(n)的算法規模小的表,負載輕的數據庫,也能有好的性能。??但是數據增大的時候,時間復雜度為O(n)的算法顯然是糟糕的,性能就很快下降了。好在計算機科學的發展提供了很多更優秀的查找算法,例如二分查找(binary search)、二叉樹查找(binary tree search)等。如果稍微分析一下會發現,每種查找算法都只能應用于特定的數據結構之上,例如二分查找要求被檢索數據有序,而二叉樹查找只能應用于二叉查找樹上,但是數據本身的組織結構不可能完全滿足各種數據結構(例如,理論上不可能同時將兩列都按順序進行組織),所以,在數據之外,數據庫系統還維護著滿足特定查找算法的數據結構,這些數據結構以某種方式引用(指向)數據,這樣就可以在這些數據結構上實現高級查找算法。這種數據結構,就是索引。索引是對數據庫表中一個或多個列的值進行排序的結構。與在表中搜索所有的行相比,索引用指針指向存儲在表中指定列的數據值,然后根據指定的次序排列這些指針,有助于更快地獲取信息。通常情?況下,只有當經常查詢索引列中的數據時,才需要在表上創建索引。索引將占用磁盤空間,并且影響數據更新的速度。但是在多數情況下,索引所帶來的數據檢索速度優勢大大超過它的不足之處。目前大部分數據庫系統及文件系統都采用B-Tree或其變種B+Tree作為索引結構。
3. 蘑菇街公司里面隨便找四名員工。那么這四名員工里面,至少有兩個人的生肖是相同的概率是()
A.41/96 B.55/96 C.72/128 D.90/128
解析:P(A)=1-12*11*10*9/12^4=41/96。
4. ?蘑菇街是一家擁有500名員工的年輕富有活力的公司,小俠們(男性員工)誠實可靠,只說真話。而小仙們(女性員工)調皮可愛,只說假話。某一天一位客戶來公司參觀,就問公司的員工,你們公司有幾個小仙呀?公司的員工們很熱心的一一做了回答,第一個員工說一個,第二個員工說二個...第五百個員工說五百個。請問蘑菇街到底有幾個小仙?
A.1 B.250 C.499 D.500
解析:首先,只可能有一個員工說的對,其他都說的是錯的,不可能兩個人都說的對。那么男的只有一個,剩下的499都是女的。
5. ?IP地址131.53.12.71是一個()類IP地址?
A.A B.B C.C D.D
解析:A類網絡的IP地址范圍為1.0.0.1-127.255.255.254;B類網絡的IP地址范圍為:128.1.0.1-191.255.255.254;C類網絡的IP地址范圍為:192.0.1.1-223.255.255.254。由于A類地址的特點是網絡標識的第一位二進制數取值必須為“0”。所以網段號到127,后面是具體的主機號的分配。
?
6. ?如果某系統12*5=104成立,則系統采用的是()進制?
A.6 B.7 C.8 D.9
7. 編程實現一個函數,輸入為一個給定的由英文單詞組成的字符串,按照英文單詞的順序反轉輸出。例如,給定的字符串是"hi welcome to mogujie", 那么輸出為"mogujie to welcome hi"?
?
public class InterruptString {public static void main (String args[]){String str = "hi welcome to mogujie";for(int i = inverse(str).length - 1; i >= 0 ; i--){System.out.print( inverse(str)[i]+" ");}}public static String[] inverse(String str){ String strArray[] = str.split(" ");return strArray; } }?
8. 輸入一個整型數組,數組里面有正數也有負數,數組中連續的一個或多個整數組成子數組,每個子數組都有一個和。求所有子數組的和的最大值。要求時間復雜度為O(n)。例如,輸入的數字為:1,-2,3,10,-4,7,2,-5,則和最大的子數組為3,10,-4,7,2.和為18.
public class SonArray {public static void main(String args[]){Integer[] arrayIntegers = {1,-2,3,10,-4,7,2,-5};String[] str = sonArray(arrayIntegers).split(" ");System.out.println("The Big Sum is:" + str[0]); }static String sonArray(Integer[] array){int sum = 0, max = 0;for(int i = 0; i < array.length; i++){sum += array[i];if(sum < 0){sum = 0;}max = sum > max?sum:max;}return max+" ";} }9.?給定一串字符串(英文段落),用戶輸入某個單詞,求該單詞出現的總次數,和出現在第幾個位置上。
// Java語言是先編譯后執行import java.util.ArrayList;
public class DivString {
public static void main(String args[]){
String str = "i love china i china china love love love xu";
String strArray[] = str.split(str);
ArrayList<String> arrayList = new ArrayList<String>();
for(int i = 0; i < strArray.length; i++){
if(strArray[i])
arrayList.add(strArray[i]);
}
}
}
總結
以上是生活随笔為你收集整理的蘑菇街2015校招 Java研发笔试题 详解,2015java的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网易笔试题:最大的奇约数
- 下一篇: 图的存储以及深度优先以及广度优先遍历