- 相關(guān)推薦
2015網(wǎng)易前端開發(fā)面試題
9月22日晚收到網(wǎng)易筆試通知,提示歡迎參加23號廣州地區(qū)校招,詳情筆試地點(diǎn)請等詳細(xì)通知,結(jié)果一直到23日下午4點(diǎn)半,距離筆試開始只有2個(gè)半小時(shí),才收到筆試地點(diǎn)的郵件和短信,這蛋疼得,于是趕在下班高峰期,趕往大學(xué)城華工。又是華工,看來各大企業(yè)都很偏愛大學(xué)城華工啊。投的崗位是杭州研發(fā)院的前端開發(fā)。
半路上買了一個(gè)麥當(dāng)勞套餐,下地鐵,換了三次站,在六點(diǎn)半終于趕到了大學(xué)城。A4教學(xué)樓,考場在2樓的一間教室,教室門口貼著一張筆試名單:一張半紙。前端開發(fā)的大概20個(gè),運(yùn)維的、產(chǎn)品的也都在一張紙上,總共大概100多人,哥驚訝發(fā)現(xiàn)自己排在第一(座位號),大部分筆試者是華工、中大、廣外的,暨大的我只見到3個(gè)(百年僑校情何以堪),另外見到一個(gè)西安電子科技大學(xué),一個(gè)香港中文、一個(gè)深大的。廣州其他學(xué)校的幾個(gè)學(xué)校的同學(xué)基本沒有,看情況網(wǎng)易這次筆試是直接設(shè)了學(xué)歷檻,不知道有沒有了解情況的朋友?當(dāng)然,廣州這邊的考生一般也不怎么想出省也是一個(gè)原因,網(wǎng)易游戲倒是廣州的,可能那個(gè)會比較多人吧。
現(xiàn)場還有不少來霸筆的,感覺比正常筆試的還多,工作人員讓正常筆試的排一隊(duì),霸筆的在另一邊再排一隊(duì)。跟在場的其他同學(xué)隨便扯了扯,然后拿出手機(jī)開 Evernote 看了一下以前整理的前端相關(guān)的一些筆記,7點(diǎn)就進(jìn)考場了,監(jiān)控的人員胸口掛了一個(gè)「智聯(lián)招聘」的牌子,敢情網(wǎng)易把這個(gè)筆試是直接外包了。筆試者按照座位號入座,霸筆的被工作人員領(lǐng)到了其他地方。發(fā)試卷了,一張答題卡,一套試卷。這個(gè)答題卡,就上面一個(gè)「個(gè)人信息欄」,下面就是空白,意味著,所有的選擇題、填空題、編程題,都要你自己寫,如果答題卡不夠,可以再要。下面來說說考題。
考什么
總共有兩大部分,第一部分為計(jì)算機(jī)科學(xué)基礎(chǔ)題,所有技術(shù)崗的筆試者都要答。第二部分為「專業(yè)題」,根據(jù)所報(bào)崗位不同而分別出題。
第一部分:計(jì)算機(jī)科學(xué)基礎(chǔ)題
表示試卷發(fā)下來,我就傻眼了,前面12道選擇題+3道填空題,屬于所有技術(shù)崗位都必須考的計(jì)算機(jī)專業(yè)基礎(chǔ)題。
由于我不是計(jì)算機(jī)專業(yè)的,不少計(jì)算機(jī)科學(xué)很理論化的知識的確是不了解,剛剛搜到CSDN 已經(jīng)有人放出了前面的一部分,自己也就先 COPY 過來吧,解析部分為自己整理,若出錯(cuò),請指正。
1.(2分)對于多關(guān)鍵字而言,那種文件組織方便而又高效()
A、順序文件 B、倒排文件 C、散列文件 D、B+樹索引文件
解析:答案 B。
文件在外存上的基本的組織方式有四種:順序組織,索引組織,散列組織和鏈組織;對應(yīng)的的文件名稱分別為:順序文件、索引文件、散列文件和多關(guān)鍵字文件。選擇哪一種文件組織方式,取決于對文件中記錄的使用方式和頻繁程度、存取要求、外存的性質(zhì)和容量。
多關(guān)鍵字文件:包含有多個(gè)次關(guān)鍵字索引的文件稱為多關(guān)鍵字文件。
倒排表的主要優(yōu)點(diǎn)是:在處理復(fù)雜的多關(guān)鍵字查詢時(shí),可在倒排表中先完成查詢的交、并等邏輯運(yùn)算,得到結(jié)果后再對記錄進(jìn)行存取。這樣不必對每個(gè)記錄隨機(jī)存取,把對記錄的查詢轉(zhuǎn)換為地址集合的運(yùn)算,從而提高查找速度。
2.(2分)以下哪些算法可用于遍歷網(wǎng)絡(luò)圖()
A、廣度優(yōu)先搜索 B、深度優(yōu)先搜索 C、線性規(guī)劃策略 D、決策樹
解析:答案 A、B。
廣度優(yōu)先搜索假設(shè)從圖中某個(gè)頂點(diǎn)v出發(fā),在訪問了v之后依次訪問v的各個(gè)未曾訪問過的鄰接點(diǎn),然后再分別從這些鄰接點(diǎn)出發(fā)依次訪問它們的鄰接點(diǎn),并使先被訪問的頂點(diǎn)的鄰接點(diǎn)先于后被訪問的頂點(diǎn)的鄰接點(diǎn)被訪問(因此需要用隊(duì)列來存儲頂點(diǎn)),直到圖中所有已被訪問的頂點(diǎn)的鄰接點(diǎn)都被訪問為止。如果此時(shí)圖中還有未被訪問的頂點(diǎn),則另選圖中未被訪問的頂點(diǎn)作為起點(diǎn),重復(fù)上述過程,直到圖中所有頂點(diǎn)都被訪問為止。
深度優(yōu)先搜索法是樹的先根遍歷的推廣,它的基本思想是:從圖G的某個(gè)頂點(diǎn)v0出發(fā),訪問v0,然后選擇一個(gè)與v0相鄰且沒被訪問過的頂點(diǎn)vi訪問,再從vi出發(fā)選擇一個(gè)與vi相鄰且未被訪問的頂點(diǎn)vj進(jìn)行訪問,依次繼續(xù)。如果當(dāng)前被訪問過的頂點(diǎn)的所有鄰接頂點(diǎn)都已被訪問,則退回到已被訪問的頂點(diǎn)序列中最后一個(gè)擁有未被訪問的相鄰頂點(diǎn)的頂點(diǎn)w,從w出發(fā)按同樣的方法向前遍歷,直到圖中所有頂點(diǎn)都被訪問。
3.(2分)我們使用一個(gè)6元組來表示6個(gè)節(jié)點(diǎn)的無向圖的頂點(diǎn)數(shù),請問以下哪些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>
解析:
無向圖:一個(gè)無向圖(undirected graph)是一個(gè)二元組,其中:1.V是非空集合,稱為頂點(diǎn)集。2.E是V中元素構(gòu)成的無序二元組的集合,稱為邊集。
若一個(gè)圖中每條邊都是無方向的,則稱為無向圖。
若G是無向圖,則0≤e≤n(n-1)/2
4.(2分)以下關(guān)于可計(jì)算性的說法正確的是()
A、 所有問題最終都可以抽象為一個(gè)計(jì)算模型,圖靈機(jī)可以在一個(gè)有限的時(shí)間(雖然可能會占用非常久的時(shí)間)內(nèi)完成計(jì)算:現(xiàn)代計(jì)算機(jī)的設(shè)計(jì)正是基于該理論。
B、 存在部分問題,我們無法在有限時(shí)間內(nèi),給出解答:但是,所有問題都可以在有限時(shí)間內(nèi)驗(yàn)證其解答的正確性。
C、 Godel(哥德爾)第一定律指明不存在完備且相容的公理系統(tǒng)。
D、 以上說法都不正確。
5.(2分)16進(jìn)制數(shù)值C396和8進(jìn)制數(shù)值64474的異或結(jié)果值(10進(jìn)制)為()
A、43690 B、16660 C、60350 D、20375
解析:
異或:Exclusive OR(異-或運(yùn)算、模2和),異或(xor)是一個(gè)數(shù)學(xué)運(yùn)算符。它應(yīng)用于邏輯運(yùn)算。異或符號為“^”。真異或假的結(jié)果是真,假異或真的結(jié)果也是真,真異或真的結(jié)果是假,假異或假的結(jié)果是假。就是說兩個(gè)值不相同,則異或結(jié)果為真。反之,為假。 不同為1,相同為0.
若x是二進(jìn)制數(shù)0101,y是二進(jìn)制數(shù)1011,則x^y=1110。
只有在兩個(gè)比較的位不同時(shí)其結(jié)果是1,否則結(jié)果為0
即“相同為0,不同為1”!
6.(2分)以下經(jīng)典的問題哪些屬于NP問題()
A、圖靈停機(jī)問題 B、排序 C、0,1背包問題 D、枚舉有限集合的所有子集
7.(2分)存在以下字母串:AGDCCDDDGFBBFFGGDDDGGGEFFDDCCCDDDFGAAA現(xiàn)在需要對該串進(jìn)行Huffman編碼,那么字母F對應(yīng)bit值(二進(jìn)制格式為)()
A、10 B、11 C、110 D、101
解析:
//既然現(xiàn)在用電腦,就用 javascript 來解決一下如果數(shù)數(shù)的問題
var temp='AGDCCDDDGFBBFFGGDDDGGGEFFDDCCCDDDFGAAA';
var count=temp.match(/F/g); // 搜索整個(gè)字符串匹配字母 F
console.log(temp.length); //字符總長度為36
console.log(count.length);; //輸出的結(jié)果應(yīng)該是6
霍夫曼編碼:(Huffman Coding)是一種編碼方式,是一種用于無損數(shù)據(jù)壓縮的熵編碼(權(quán)編碼)算法,該方法完全依據(jù)字符出現(xiàn)概率來構(gòu)造異字頭的平均長度最短的碼字,有時(shí)稱之為最佳編碼。
HC 具體方法:先按出現(xiàn)的概率大小排隊(duì),把兩個(gè)最小的概率相加,作為新的概率 和剩余的概率重新排隊(duì),再把最小的兩個(gè)概率相加,再重新排隊(duì),直到最后變成1。每次相 加時(shí)都將“0”和“1”賦與相加的兩個(gè)概率,讀出時(shí)由該符號開始一直走到最后的“1”, 將路線上所遇到的“0”和“1”按最低位到最高位的順序排好,就是該符號的霍夫曼編碼。
9.(2分)進(jìn)程管理如果設(shè)計(jì)不當(dāng)將會導(dǎo)致“死鎖”的產(chǎn)生,對待死鎖,典型的銀行家算法屬于(1),而剝奪資源屬于(2)的方法。
A、(1)=死鎖預(yù)防,(2)=死鎖避免
B、(1)=死鎖預(yù)防,(2)=死鎖解除
C、(1)=死鎖避免,(2)=死鎖預(yù)防
D、(1)=死鎖避免,(2)=死鎖解除
解析:答案B
死鎖: 是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過程中,因爭奪資源而造成的一種互相等待的現(xiàn)象,若無外力作用,它們都將無法推進(jìn)下去。
系統(tǒng)產(chǎn)生死鎖的四個(gè)必要條件:
1)互斥條件:指進(jìn)程對所分配到的資源進(jìn)行排它性使用,即在一段時(shí)間內(nèi)某資源只由一個(gè)進(jìn)程占用。如果此時(shí)還有其它進(jìn)程請求資源,則請求者只能等待,直至占有資源的進(jìn)程用畢釋放。
2)請求和保持條件:指進(jìn)程已經(jīng)保持至少一個(gè)資源,但又提出了新的資源請求,而該資源已被其它進(jìn)程占有,此時(shí)請求進(jìn)程阻塞,但又對自己已獲得的其它資源保持不放。
3)不剝奪條件:指進(jìn)程已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時(shí)由自己釋放。
4)環(huán)路等待條件:指在發(fā)生死鎖時(shí),必然存在一個(gè)進(jìn)程——資源的環(huán)形鏈,即進(jìn)程集合{P0,P1,P2,···,Pn}中的P0正在等待一個(gè)P1占用的資源;P1正在等待P2占用的資源,……,Pn正在等待已被P0占用的資源。
銀行家算法:我們可以把操作系統(tǒng)看作是銀行家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管理的資金,進(jìn)程向操作系統(tǒng)請求分配資源相當(dāng)于用戶向銀行家貸款。操作系統(tǒng)按照銀行家制定的規(guī)則為進(jìn)程分配資源,當(dāng)進(jìn)程首次申請資源時(shí),要測試該進(jìn)程對資源的最大需求量,如果系統(tǒng)現(xiàn)存的資源可以滿足它的最大需求量則按當(dāng)前的申請量分配資源,否則就推遲分配。當(dāng)進(jìn)程在執(zhí)行中繼續(xù)申請資源時(shí),先測試該進(jìn)程已占用的資源數(shù)與本次申請的資源數(shù)之和是否超過了該進(jìn)程對資源的最大需求量。若超過則拒絕分配資源,若沒有超過則再測試系統(tǒng)現(xiàn)存的資源能否滿足該進(jìn)程尚需的最大資源量,若能滿足則按當(dāng)前的申請量分配資源,否則也要推遲分配。
10.(2分)關(guān)于數(shù)據(jù)庫索引,以下說法正確的是()
A、針對某些字段建立索引,能夠有小減少相關(guān)數(shù)據(jù)庫表的磁盤空間占用;
B、針對某些字段建立索引,能夠有效的提升相關(guān)字段的讀與寫的效率;
C、常見數(shù)據(jù)庫管理系統(tǒng),通常使用hash表來存儲索引;
D、數(shù)據(jù)庫索引的存在,可能導(dǎo)致相關(guān)字段刪除的效率降低;
第二部分:專業(yè)題(前端開發(fā))
題型有1.不定項(xiàng)選擇題 12道,2.填空題 5道左右 3.簡答題 4.編程題 5道左右,偏重考察 javascript,編程題要求手寫代碼,其中包含 js 題目3道還是4道,一道給出三切換標(biāo)簽界面原型圖,要求手寫html+css+javascript實(shí)現(xiàn)原型圖和交互效果。由于距離有一段時(shí)間了,詳細(xì)的題目記不清楚了。就回憶一下幾個(gè)知識點(diǎn)吧。
1.簡答題:什么是閉包,閉包有什么用?請舉例說明。
解析:Javascript中,函數(shù)內(nèi)部可以讀取全局變量,函數(shù)外部無法讀取函數(shù)內(nèi)部的局部變量。
function f1(){
var n=1024;
function f2(){
console.log(n)
}
return f2();
}
var foo =f1();
foo();
//以上函數(shù)f2()就是閉包
閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。
2.填空題:apply 和 call 的用法和區(qū)別。
解析:
兩者的作用都是將函數(shù)綁定倒另外一個(gè)對象上面去,兩者僅僅在定義參數(shù)方式有所區(qū)別。
來自 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 函數(shù)的兼容性
解析:
bind方法會創(chuàng)建一個(gè)新函數(shù),稱為綁定函數(shù).當(dāng)調(diào)用這個(gè)綁定函數(shù)時(shí),綁定函數(shù)會以創(chuàng)建它時(shí)傳入bind方法的第一個(gè)參數(shù)作為this,傳入bind方法的第二個(gè)以及以后的參數(shù)加上綁定函數(shù)運(yùn)行時(shí)本身的參數(shù)按照順序作為原函數(shù)的參數(shù)來調(diào)用原函數(shù).
fun.bind(thisArg[, arg1[, arg2[, ...]]])
4.參考給出的原型圖和要求,手寫 html,css和 js。
【網(wǎng)易前端開發(fā)面試題】相關(guān)文章:
2017網(wǎng)易前端筆試題09-25
前端開發(fā)實(shí)習(xí)報(bào)告08-01
web前端面試題02-22
web前端開發(fā)求職簡歷01-18
Web前端面試題目及答案09-26
前端面試題庫及答案09-25
前端程序員JavaScript面試題02-19
前端開發(fā)常見面試試題02-14
web前端開發(fā)的自我評價(jià)簡歷模板07-18
web前端開發(fā)求職簡歷4篇01-18