国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

蘑菇街2015校招 Java研發(fā)筆試題 詳解

2019-11-15 00:57:36
字體:
來源:轉載
供稿:網友
蘑菇街2015校招 java研發(fā)筆試題 詳解

1. 對進程和線程描述正確的是( )

  A. 父進程里的所有線程共享相同的地址空間,父進程的所有子進程共享相同的地址空間。

  B. 改變進程里面主線程的狀態(tài)會影響其他線程的行為,改變父進程的狀態(tài)不會影響其他子進程。

  C. 多線程會引起死鎖,多進程則不會。

  D. 以上都不對?! ?/p>

  解析:A錯,進程擁有獨立的地址空間;B錯,主線程和子線程是并行關系的時候,并沒有依賴關系。父進程和子進程中,子進程是父進程的一個副本,創(chuàng)建子進程后,子進程會有自己的空間,然后把父進程的數(shù)據(jù)拷貝到子進程的空間里。運行時,誰先運行是不確定的,這由系統(tǒng)決定;C錯,多線程和多進程都會引起死鎖,一般說的死鎖指的是進程間的死鎖。

  進程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式。進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進程。如果有興趣深入的話,我建議你們看看《現(xiàn)代操作系統(tǒng)》或者《操作系統(tǒng)的設計與實現(xiàn)》。對就個問題說得比較清楚。

2. 數(shù)據(jù)庫里面建索引的常用數(shù)據(jù)結構是()

  A.單向鏈表  B.?! .B+樹  D.隊列

  解析:索引是對記錄按照多個字段進行排序的一種方式。對表中的某個字段建立索引會創(chuàng)建另一種數(shù)據(jù)結構,其中保存著字段的值,每個值又指向與它相關的記錄。這種索引的數(shù)據(jù)結構是經過排序的,因而可以對其執(zhí)行二分查找。索引的缺點是占用額外的磁盤空間。因為索引保存在數(shù)據(jù)庫中,所以如果為同一個表中的很多字段都建立索引,那這個文件可能會很快膨脹到文件系統(tǒng)規(guī)定的上限。

  在數(shù)據(jù)庫系統(tǒng)的使用過程當中,數(shù)據(jù)的查詢是使用最頻繁的一種數(shù)據(jù)操作。最基本的查詢算法當然是順序查找(linear search),遍歷表然后逐行匹配行值是否等于待查找的關鍵字,其時間復雜度為O(n)。但時間復雜度為O(n)的算法規(guī)模小的表,負載輕的數(shù)據(jù)庫,也能有好的性能。但是數(shù)據(jù)增大的時候,時間復雜度為O(n)的算法顯然是糟糕的,性能就很快下降了。好在計算機科學的發(fā)展提供了很多更優(yōu)秀的查找算法,例如二分查找(binary search)、二叉樹查找(binary tree search)等。如果稍微分析一下會發(fā)現(xiàn),每種查找算法都只能應用于特定的數(shù)據(jù)結構之上,例如二分查找要求被檢索數(shù)據(jù)有序,而二叉樹查找只能應用于二叉查找樹上,但是數(shù)據(jù)本身的組織結構不可能完全滿足各種數(shù)據(jù)結構(例如,理論上不可能同時將兩列都按順序進行組織),所以,在數(shù)據(jù)之外,數(shù)據(jù)庫系統(tǒng)還維護著滿足特定查找算法的數(shù)據(jù)結構,這些數(shù)據(jù)結構以某種方式引用(指向)數(shù)據(jù),這樣就可以在這些數(shù)據(jù)結構上實現(xiàn)高級查找算法。這種數(shù)據(jù)結構,就是索引。索引是對數(shù)據(jù)庫表中一個或多個列的值進行排序的結構。與在表中搜索所有的行相比,索引用指針指向存儲在表中指定列的數(shù)據(jù)值,然后根據(jù)指定的次序排列這些指針,有助于更快地獲取信息。通常情況下,只有當經常查詢索引列中的數(shù)據(jù)時,才需要在表上創(chuàng)建索引。索引將占用磁盤空間,并且影響數(shù)據(jù)更新的速度。但是在多數(shù)情況下,索引所帶來的數(shù)據(jù)檢索速度優(yōu)勢大大超過它的不足之處。目前大部分數(shù)據(jù)庫系統(tǒng)及文件系統(tǒng)都采用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類地址的特點是網絡標識的第一位二進制數(shù)取值必須為“0”。所以網段號到127,后面是具體的主機號的分配。

6. 如果某系統(tǒng)12*5=104成立,則系統(tǒng)采用的是()進制?

  A.6  B.7  C.8  D.9

7. 編程實現(xiàn)一個函數(shù),輸入為一個給定的由英文單詞組成的字符串,按照英文單詞的順序反轉輸出。例如,給定的字符串是"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. 輸入一個整型數(shù)組,數(shù)組里面有正數(shù)也有負數(shù),數(shù)組中連續(xù)的一個或多個整數(shù)組成子數(shù)組,每個子數(shù)組都有一個和。求所有子數(shù)組的和的最大值。要求時間復雜度為O(n)。例如,輸入的數(shù)字為:1,-2,3,10,-4,7,2,-5,則和最大的子數(shù)組為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. 給定一串字符串(英文段落),用戶輸入某個單詞,求該單詞出現(xiàn)的總次數(shù),和出現(xiàn)在第幾個位置上。

//  Java語言是先編譯后執(zhí)行

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]);}}}

10. 簡述MySQL數(shù)據(jù)庫的鎖機制 

  數(shù)據(jù)庫是一個多用戶使用的共享資源。當多個用戶并發(fā)地存取數(shù)據(jù)時,在數(shù)據(jù)庫中就會產生多個事務同時存取同一數(shù)據(jù)的情況。若對并發(fā)操作不加控制就可能會讀取和存儲不正確的數(shù)據(jù),破壞數(shù)據(jù)庫的一致性。加鎖是實現(xiàn)數(shù)據(jù)庫并發(fā)控制的一個非常重要的技術。當事務在對某個數(shù)據(jù)對象進行操作前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務就對該數(shù)據(jù)對象有了一定的控制,在該事務釋放鎖之前,其他的事務不能對此數(shù)據(jù)對象進行更新操作。

  悲觀鎖和樂觀鎖:悲觀鎖(Pessimistic Lock), 顧名思義,就是很悲觀,每次去拿數(shù)據(jù)的時候都認為別人會修改,所以每次在拿數(shù)據(jù)的時候都會上鎖,這樣別人想拿這個數(shù)據(jù)就會block直到它拿到鎖。傳統(tǒng)的關系型數(shù)據(jù)庫里邊就用到了很多這種鎖機制,比如行鎖,表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖。樂觀鎖(Optimistic Lock), 顧名思義,就是很樂觀,每次去拿數(shù)據(jù)的時候都認為別人不會修改,所以不會上鎖,但是在更新的時候會判斷一下在此期間別人有沒有去更新這個數(shù)據(jù),可以使用版本號等機制。樂觀鎖適用于多讀的應用類型,這樣可以提高吞吐量,像數(shù)據(jù)庫如果提供類似于write_condition機制的其實都是提供的樂觀鎖。兩種鎖各有優(yōu)缺點,不可認為一種好于另一種,像樂觀鎖適用于寫比較少的情況下,即沖突真的很少發(fā)生的時候,這樣可以省去了鎖的開銷,加大了系統(tǒng)的整個吞吐量。但如果經常產生沖突,上層應用會不斷的進行retry,這樣反倒是降低了性能,所以這種情況下用悲觀鎖就比較合適。

11.兩個超出內存表示的十分大的數(shù)之和的算法,以及大數(shù)階乘的解決方案?

  先來說說數(shù),在計算機中,數(shù)是存貯在內存(RAM)中的。在內存中存儲一個數(shù)有兩類格式,定點數(shù)和浮點數(shù)。定點數(shù)可以精確地表示一個整數(shù),但數(shù)的范圍相對較小,如一個32比特的無符號整數(shù)可表示0-4294967295之間的數(shù)。浮點數(shù)能表示更大的范圍,但精度較低。當表示的整數(shù)很大的,則可能存在誤差。一個8字節(jié)的雙精度浮點數(shù)可表示2.22*10^-308到 1.79*10^308之間的數(shù),可精確到15-16位數(shù)字.

  大尾序和小尾序,我們在書寫一個數(shù)時,總是先寫權較大的數(shù)字,后寫權較小的數(shù)字。但計算機中的數(shù)并不總是按這個順序存放。小尾(Little Endian)就是低位字節(jié)排放在內存的低端,高位字節(jié)排放在內存的高端。例如對于一個4字節(jié)的整數(shù)0x12345678,將在內存中按照如下順序排放, Intel處理器大多數(shù)使用小尾(Little Endian)字節(jié)序。

  大數(shù)超出了計算機的整形表示范圍,故一般用字符串記錄,兩個大數(shù)相加就不能簡單的用“+”進行運算,得繞個彎。先把字符串轉成int數(shù)組(借助與字符'0'的差來實現(xiàn)),每位都放在數(shù)組中,然后對數(shù)組進行按位加

12. 什么是ICMP協(xié)議?

  ICMP(Internet Control Message Protocol)協(xié)議是一種面向無連接的協(xié)議,用于傳輸出錯報告控制信息。它是一個非常重要的協(xié)議,它對于網絡安全具有極其重要的意義。ICMP就是一個“錯誤偵測與回報機制”,其目的就是讓我們能夠檢測網路的連線狀況﹐也能確保連線的準確性。

  ICMP是:Internet 控制信息協(xié)議(ICMP)是 IP 組的一個整合部分。通過 IP 包傳送的 ICMP 信息主要用于涉及網絡操作或錯誤操作的不可達信息。 ICMP 包發(fā)送是不可靠的,所以主機不能依靠接收 ICMP 包解決任何網絡問題。ICMP不象TCP或UDP有端口,但它確實含有兩個域:類型(type)和代碼(code)。而且這些域的作用和端口也完全不同。Ping用到的是ICMP協(xié)議。不是端口。13.一臺剛剛接入互聯(lián)網的WEB服務器第一次被訪問到時,不同協(xié)議的發(fā)生順序是下面中的____。A: ARP -> DNS -> HTTP 之所以有arp是要經過路由器,路由器是下三層的協(xié)議交互B: ARP -> HTTP -> DNSC: DNS -> HTTP -> ARPD: DNS -> ARP -> HTTP

解題思路:DNS是用于把域名轉為IP地址,ARP協(xié)議是IP地址向物理地址轉,HTTP超文本傳輸協(xié)議應用于應用層。一臺剛剛接入的互聯(lián)網的web服務器首次訪問??梢酝茰y任何客戶端都沒有dns緩存,不直接通過ip訪問的話,那么從客戶端發(fā)起請求則dns~http~ip~arp~中間節(jié)點~arp~服務器~服務器ip~http。 有關的順序dns~http~arp~http。

14.合并兩個有序數(shù)組,假設第一個數(shù)組空間足夠容納兩個數(shù)組。 (要求高效率)

考慮到a數(shù)組很大,可以直接在a數(shù)組上進行合并,但是要講究效率。如果單純從前往后合并,那么效率會非常低,因為a數(shù)組后面的數(shù)字需要不停的移動。換一種思路,我們采用從后往前合并,首先計算出總長度,設置一個指針從a數(shù)組最后往前移動。

總結:字符串合并時,我們更應該考慮從后往前這種思路。

15.java不支持全局變量,java中的所有的變量必須在類中或者接口中,如果想要實現(xiàn)全局變量的功能,可以專門設置一個類里面包含一些靜態(tài)變量。java"垃圾回收"System.gc();是單線程的,建議最好不要使用,如果你的應用程序處理業(yè)務很多且是多線程的話,最好不要使用gc(),一般在編程中盡量不要使用全局變量,應該盡可能的提供一些方法出來,如:get,set。垃圾收集只在下面兩種條件下運行:有回收對象,并且需要回收這些對象。java運行期系統(tǒng)只有在需要時才進行垃圾收集。所以你并不知道垃圾收集發(fā)生的準確時間。另外可以調用System.gc()和Runtime.getRuntime().gc()方法來進行垃圾收集。static變量實質上相當于全局變量。但是枚舉就可以用全局變量了,因為枚舉對程序沒有什么影響。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 册亨县| 泰来县| 鹤庆县| 库车县| 乌审旗| 奎屯市| 旌德县| 新蔡县| 文安县| 扶沟县| 通海县| 柘城县| 德阳市| 乌什县| 永州市| 苏州市| 嵊泗县| 旌德县| 西安市| 思南县| 张家川| 余庆县| 镇赉县| 仙居县| 从江县| 孟州市| 望奎县| 上虞市| 丹阳市| 成武县| 崇州市| 秀山| 陇西县| 江城| 曲沃县| 桑日县| 广西| 武邑县| 霍州市| 中宁县| 定州市|