2014網易前端開發筆試題-解答

原文來自:http://yjbys.com/bishi/timu/585868.htmljavascript

主要是爲了今晚的網易筆試。整理一下css

 

1.(2分)對於多關鍵字而言,那種文件組織方便而又高效()

  A、順序文件 B、倒排文件 C、散列文件 D、B+樹索引文件html

  解析:答案 B。前端

  文件在外存上的基本的組織方式有四種:順序組織,索引組織,散列組織和鏈組織;對應的的文件名稱分別爲:順序文件、索引文件、散列文件和多關鍵字文件。選擇哪種文件組織方式,取決於對文件中記錄的使用方式和頻繁程度、存取要求、外存的性質和容量。java

  多關鍵字文件:包含有多個次關鍵字索引的文件稱爲多關鍵字文件。算法

  倒排文件(也稱倒排索引):用記錄的非主屬性值(也叫副鍵)來查找記錄而組織的文件叫倒排文件,即次索引。倒排文件中包括了全部副鍵值,並列出了與之有關的全部記錄主鍵值,主要用於複雜查詢。數據庫

  倒排表的主要優勢是:在處理複雜的多關鍵字查詢時,可在倒排表中先完成查詢的交、並等邏輯運算,獲得結果後再對記錄進行存取。這樣沒必要對每一個記錄隨機存取,把對記錄的查詢轉換爲地址集合的運算,從而提升查找速度。編程

 

2.(2分)如下哪些算法可用於遍歷網絡圖()

  A、廣度優先搜索 B、深度優先搜索 C、線性規劃策略 D、決策樹網絡

  解析:答案 A、B。閉包

  廣度優先搜索假設從圖中某個頂點v出發,在訪問了v以後依次訪問v的各個不曾訪問過的鄰接點,而後再分別從這些鄰接點出發依次訪問它們的鄰接點,並使先被訪問的頂點的鄰接點先於後被訪問的頂點的鄰接點被訪問(所以須要用隊列來存儲頂點),直到圖中全部已被訪問的頂點的鄰接點都被訪問爲止。若是此時圖中還有未被訪問的頂點,則另選圖中未被訪問的頂點做爲起點,重複上述過程,直到圖中全部頂點都被訪問爲止。

  深度優先搜索法是樹的先根遍歷的推廣,它的基本思想是:從圖G的某個頂點v0出發,訪問v0,而後選擇一個與v0相鄰且沒被訪問過的頂點vi訪問,再從vi出發選擇一個與vi相鄰且未被訪問的頂點vj進行訪問,依次繼續。若是當前被訪問過的頂點的全部鄰接頂點都已被訪問,則退回到已被訪問的頂點序列中最後一個擁有未被訪問的相鄰頂點的頂點w,從w出發按一樣的方法向前遍歷,直到圖中全部頂點都被訪問。

 

 

3.(2分)咱們使用一個6元組來表示6個節點的無向圖的頂點數,請問如下哪些6元組是可能的組合()

  A、<1,2,3,4,5,6>

  B、<2,4,4,2,3,5>

  C、<1,3,4,2,2,1>

  D、<1,2,2,4,5,2>

  解析:

  無向圖:一個無向圖(undirected graph)是一個二元組,其中:1.V是非空集合,稱爲頂點集。2.E是V中元素構成的無序二元組的集合,稱爲邊集。

  若一個圖中每條邊都是無方向的,則稱爲無向圖。

  若G是無向圖,則0≤e≤n(n-1)/2

 

 

4.(2分)如下關於可計算性的說法正確的是()

  A、 全部問題最終均可以抽象爲一個計算模型,圖靈機能夠在一個有限的時間(雖然可能會佔用很是久的時間)內完成計算:現代計算機的設計正是基於該理論。

  B、 存在部分問題,咱們沒法在有限時間內,給出解答:可是,全部問題均可以在有限時間內驗證其解答的正確性。

  C、 Godel(哥德爾)第必定律指明不存在完備且相容的公理系統。

  D、 以上說法都不正確。

  解析:可計算性(calculability)是指一個實際問題是否可使用計算機來解決,可是一個可使用計算機解決的問題應該被定義爲「能夠在有限步驟內被解決的問題」。

 

 

5.(2分)16進制數值C396和8進制數值64474的異或結果值(10進制)爲()

  A、43690 B、16660 C、60350 D、20375

  解析:

  異或:Exclusive OR(異-或運算、模2和),異或(xor)是一個數學運算符。它應用於邏輯運算。異或符號爲「^」。真異或假的結果是真,假異或真的結果也是真,真異或真的結果是假,假異或假的結果是假。就是說兩個值不相同,則異或結果爲真。反之,爲假。 不一樣爲1,相同爲0.

  若x是二進制數0101,y是二進制數1011,則x^y=1110。

  只有在兩個比較的位不一樣時其結果是1,不然結果爲0

  即「相同爲0,不一樣爲1」!

 

 

6.(2分)如下經典的問題哪些屬於NP問題()

  A、圖靈停機問題 B、排序 C、0,1揹包問題 D、枚舉有限集合的全部子集

  解析:

    圖靈停機問題:不存在這樣一個程序(算法),它可以計算任何程序(算法)在給定輸入上是否會結束(停機)。

    應該選c

 

 

7.(2分)存在如下字母串:AGDCCDDDGFBBFFGGDDDGGGEFFDDCCCDDDFGAAA如今須要對該串進行Huffman編碼,那麼字母F對應bit值(二進制格式爲)()

  A、10 B、11 C、110 D、101

  解析:

  //既然如今用電腦,就用 javascript 來解決一下若是數數的問題

  var temp='AGDCCDDDGFBBFFGGDDDGGGEFFDDCCCDDDFGAAA';

  var count=temp.match(/F/g); // 搜索整個字符串匹配字母 F

  console.log(temp.length); //字符總長度爲36

  console.log(count.length);; //輸出的結果應該是6

  霍夫曼編碼:(Huffman Coding)是一種編碼方式,是一種用於無損數據壓縮的熵編碼(權編碼)算法,該方法徹底依據字符出現機率來構造異字頭的平均長度最短的碼字,有時稱之爲最佳編碼。

  HC 具體方法:先按出現的機率大小排隊,把兩個最小的機率相加,做爲新的機率 和剩餘的機率從新排隊,再把最小的兩個機率相加,再從新排隊,直到最後變成1。每次相 加時都將「0」和「1」賦與相加的兩個機率,讀出時由該符號開始一直走到最後的「1」, 將路線上所遇到的「0」和「1」按最低位到最高位的順序排好,就是該符號的霍夫曼編碼。

 

 

9.(2分)進程管理若是設計不當將會致使「死鎖」的產生,對待死鎖,典型的銀行家算法屬於(1),而剝奪資源屬於(2)的方法。

  A、(1)=死鎖預防,(2)=死鎖避免

  B、(1)=死鎖預防,(2)=死鎖解除

  C、(1)=死鎖避免,(2)=死鎖預防

  D、(1)=死鎖避免,(2)=死鎖解除

  解析:答案B

  死鎖: 是指兩個或兩個以上的進程在執行過程當中,因爭奪資源而形成的一種互相等待的現象,若無外力做用,它們都將沒法推動下去。

  系統產生死鎖的四個必要條件:

  1)互斥條件:指進程對所分配到的資源進行排它性使用,即在一段時間內某資源只由一個進程佔用。若是此時還有其它進程請求資源,則請求者只能等待,直至佔有資源的進程用畢釋放。

  2)請求和保持條件:指進程已經保持至少一個資源,但又提出了新的資源請求,而該資源已被其它進程佔有,此時請求進程阻塞,但又對本身已得到的其它資源保持不放。

  3)不剝奪條件:指進程已得到的資源,在未使用完以前,不能被剝奪,只能在使用完時由本身釋放。

  4)環路等待條件:指在發生死鎖時,必然存在一個進程——資源的環形鏈,即進程集合{P0,P1,P2,···,Pn}中的P0正在等待一個P1佔用的資源;P1正在等待P2佔用的資源,……,Pn正在等待已被P0佔用的資源。

  銀行家算法:咱們能夠把操做系統看做是銀行家,操做系統管理的資源至關於銀行家管理的資金,進程向操做系統請求分配資源至關於用戶向銀行家貸款。操做系統按照銀行家制定的規則爲進程分配資源,當進程首次申請資源時,要測試該進程對資源的最大需求量,若是系統現存的資源能夠知足它的最大需求量則按當前的申請量分配資源,不然就推遲分配。當進程在執行中繼續申請資源時,先測試該進程已佔用的資源數與本次申請的資源數之和是否超過了該進程對資源的最大需求量。若超過則拒絕分配資源,若沒有超過則再測試系統現存的資源可否知足該進程尚需的最大資源量,若能知足則按當前的申請量分配資源,不然也要推遲分配。

 

 

10.(2分)關於數據庫索引,如下說法正確的是()

  A、針對某些字段創建索引,可以有小減小相關數據庫表的磁盤空間佔用;

  B、針對某些字段創建索引,可以有效的提高相關字段的讀與寫的效率;

  C、常見數據庫管理系統,一般使用hash表來存儲索引;

  D、數據庫索引的存在,可能致使相關字段刪除的效率下降;

  解析:索引須要佔物理空間,除了數據表佔數據空間以外,每個索引還要佔必定的物理空間,若是要創建聚簇索引,那麼須要的空間就會更大 因此A×

     當對錶中的數據進行增長、刪除和修改的時候,索引也要動態的維護,下降了數據的維護速度 因此D√

     大大加快數據的檢索速度,這也是建立索引的最主要的緣由  可是不會提升寫效率B×

     B樹  C×

 

 

第二部分:專業題(前端開發)

  題型有1.不定項選擇題 12道,2.填空題 5道左右 3.簡答題 4.編程題 5道左右,偏重考察 javascript,編程題要求手寫代碼,其中包含 js 題目3道仍是4道,一道給出三切換標籤界面原型圖,要求手寫html+css+javascript實現原型圖和交互效果。因爲距離有一段時間了,詳細的題目記不清楚了。就回憶一下幾個知識點吧。

 

 

1.簡答題:什麼是閉包,閉包有什麼用?請舉例說明。

  解析:Javascript中,函數內部能夠讀取全局變量,函數外部沒法讀取函數內部的局部變量。

  

function f1(){
  var n=1024;
  function f2(){
    console.log(n)
  }
    return f2();
}
var foo =f1();
foo();

  //以上函數f2()就是閉包

  閉包就是可以讀取其餘函數內部變量的函數。

 

 

2.填空題:apply 和 call 的用法和區別。

  解析:

  二者的做用都是將函數綁定倒另一個對象上面去,二者僅僅在定義參數方式有所區別。

  來自 MDN 的解釋:NOTE: While the syntax of this function is almost identical to that of apply(), the fundamental difference is that call() accepts an argument list, while apply() accepts a single array of arguments.

  apply(thisArg,argArray);

  call(thisArg[,arg1,arg2…] ]);

 

 

 

3.bind 函數的兼容性

  解析:

  bind方法會建立一個新函數,稱爲綁定函數.當調用這個綁定函數時,綁定函數會以建立它時傳入bind方法的第一個參數做爲this,傳入bind方法的第二個以及之後的參數加上綁定函數運行時自己的參數按照順序做爲原函數的參數來調用原函數.

  fun.bind(thisArg[, arg1[, arg2[, ...]]])

 

 

4.參考給出的原型圖和要求,手寫 html,css和 js。

相關文章
相關標籤/搜索