網易前端開發筆試題
第一部分:計算機科學基礎題
表示試卷發下來,我就傻眼了,前面12道選擇題+3道填空題,屬于所有技術崗位都必須考的計算機專業基礎題。
由于我不是計算機專業的,不少計算機科學很理論化的知識的確是不了解,剛剛搜到CSDN 已經有人放出了前面的一部分,自己也就先 COPY 過來吧,解析部分為自己整理,若出錯,請指正。
1.(2分)對于多關鍵字而言,那種文件組織方便而又高效()
A、順序文件 B、倒排文件 C、散列文件 D、B+樹索引文件
解析:答案 B。
文件在外存上的基本的組織方式有四種:順序組織,索引組織,散列組織和鏈組織;對應的的文件名稱分別為:順序文件、索引文件、散列文件和多關鍵字文件。選擇哪一種文件組織方式,取決于對文件中記錄的使用方式和頻繁程度、存取要求、外存的性質和容量。
多關鍵字文件:包含有多個次關鍵字索引的文件稱為多關鍵字文件。
倒排表的主要優點是:在處理復雜的多關鍵字查詢時,可在倒排表中先完成查詢的交、并等邏輯運算,得到結果后再對記錄進行存取。這樣不必對每個記錄隨機存取,把對記錄的查詢轉換為地址集合的運算,從而提高查找速度。
2.(2分)以下哪些算法可用于遍歷網絡圖()
A、廣度優先搜索 B、深度優先搜索 C、線性規劃策略 D、決策樹
解析:答案 A、B。
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、 以上說法都不正確。
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、枚舉有限集合的所有子集
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、數據庫索引的存在,可能導致相關字段刪除的效率降低;
第二部分:專業題(前端開發)
題型有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。
【網易前端開發筆試題】相關文章:
網易web前端開發師面試問答的經歷11-13
精選網易筆試題09-02
前端開發簡歷表格08-03
如何面試Web前端開發12-12
web前端開發簡歷范文08-23
網易游戲策劃筆試題09-07
前端開發電子簡歷模板11-12
前端開發工程師待遇11-08
網易游戲策劃筆試題201504-15