摘要:
本片文章中的題目均來自大廠,這些企業是行業內的標桿,代表了行業的最高水準,經過了層層篩選得出了一些較好的題目,難易適中,內容豐富,筆試面試中必考或者常規試題,記錄分享在此,希望看完對你有一定的幫助,
在本片文章中,我詳細記錄了做題時的想法和遇到的問題,將解題思路一絲不茍的記錄了下來,在結合之后查閱檔案,對題目的答案做出了詳細的解釋,并對知識點做出了充分的補充,
如果文中有的地方語意有偏差,或者解釋不充分,歡迎大家在文章底部留言或者私信我,我會虛心學習并及時做出修改,
文中可能會出現沒有回答或未解決的問題,因為我目前的知識量著實有限,無法每一道題都給出精確地解釋,希望各位同學在看到之后,能夠在下方評論區回復或私信我對其問題進行解答,這樣做的目的,是為了增加文章的互動性,能夠讓更多小伙伴們參與進來,對知識點的研究更加充分透徹,
1.下面對W3C描述錯誤的是?
A. W3C是一個非盈利性組織
B. W3C制定了HTML和CSS標準
C. OSI參考模型也是W3C制定
D. 通過W3C制定標準后,能降低開發人員的學習成本
答案:C
解題思路:當時做到這個題目的時候具體我也不知道那個選項是正確的,但我讀完這幾個選項之后,感覺這題應該是選C,之后我查閱檔案之后證明我的感覺是對的,
OSI參考模型是由國際化標準組織OSI定制的,
2. 下面不能創建FBC操作的是?
A. 元素的css屬性float為none
B. 元素的css屬性position為absolute
C. 元素的css屬性position為fixed
D. 元素的css屬性display為inline-block,
答案:A
答題思路: 我學習CSS的時候學到過這一塊知識知道什么是BFC,但是了解不深,但是看到這個A選項就肯定了這個選項不能創建,
BFC 即 Block Formatting Contexts (塊級格式化背景關系),能夠決定元素的內容如何渲染以及其他元素的關系和互動,
觸發 BFC 只要元素滿足下面任一條件即可觸發 BFC 特性:
- body 根元素
- 浮動元素:float 除 none 以外的值
- 絕對定位元素:position (absolute、fixed)
- display 為 inline-block、table-cells、flex
- overflow 除了 visible 以外的值 (hidden、auto、scroll)
3. 以下選項不屬于HTTP特征的是?
A. 持久連
B. 管道化
C. 三次握手
D. 無狀態
答案:C
答題思路:在我的知識庫里面,我記得HTTP是不能持久連接的,所以選了A,寫專案的時候也聽老師說到過,所以在通信功能中一般使用的WebSocket,我對這里也不太清除,這里有小伙伴知道的可以在評論區回復一下,
三次握手是TCP的一個特征,所以選C
4. 當按下鍵盤中的b鍵時,事件物件event的keyCode屬性回傳的值是?
A. 63
B. 64
C. 65
D. 66
答案:D
解題思路: 媽呀這個題,我知道這個keyCode是按鍵對應的編碼,但是不會真的有人去記這個玩意吧,既然遇到了就在這里給大家簡單介紹一下吧,經過查閱資料得出
數字值 實際鍵值 48到57 0到9 65到90 a到z(A到Z) 112到135 F1到F24
5. 極限編程(XP)的核心思想是?
A. 強調檔案和以敏捷性應對變化
B. 強調建模和以敏捷性應對變化
C. 強調設計和以敏捷性應對變化
D. 強調人與人之間的合作因素和以敏捷性應對變化
答案: D
解題思路:看到這個題的時候,我并不知道極限編程是什么東西,憑借著感覺選的D,之后我查閱檔案才知道,
極限編程是一種輕量級的,靈巧的軟體開發方法,同時它也是一種非常嚴謹和周密的方法,它的核心是交流、樸樹、反饋和勇氣,照相機加強交流,從簡單做起,尋求反饋,勇于事實求是,他是敏捷開發的典型代表,其核心思想是強調人與人之間的合作因素和以敏捷性應對變化,
6. 某主機的ip地址為202.117.131.12/20,其子網掩碼是?
A. 255.255.248.0
B. 255.255.240.0
C. 255.255.252.0
D. 255.255.255.4
答案:B
解題思路:我對這種題完全不懂是怎么換算的,計算機網路沒學好,希望有會的同學能夠解釋一下,這是如何確定子網掩碼的,
本題中/20表示ip地址的前20位都是網路號,后12位是主機號,由此可以確定子網掩碼為11111111.11111111.11111111.11100000.00000000即,255.255.240.0,
7. 下列情況中,不能使用堆疊來解決問題的是?
A. 講將數學運算式轉化為后綴形式
B. 實作遞回演算法
C. 高級編程語言的程序呼叫
D. 作業系統分配資源(如CPU)
答案:D
答題思路:emmmm~ 這里我是真不懂啊,有懂得小伙伴在評論區用通俗易懂的方式回復一下,
作業系統分配資源有多種分配策略,例如先到先行,此時就可以使用佇列來完成,所以選項D不正確,
8. 標準的html檔案必須包含的元素是?
A. p
B. html
C. head
D. div
答案:B、C
答題思路:這道題就很簡單了啊,天天寫代碼這肯定知道,html檔案必須包含的四個元素分別是,DCOTYPE、html、head和body
9. CSS3新增的屬性有?
A. column-count
B. border-radius
C. box-shadow
D. background-size
答案:A、B、C、D
解題思路:column-count 多列布局 、 border-radius 圓角 、 box-shadow 陰影 、background-size 背景圖片的尺寸大小,
10. 兩個相鄰的兄弟元素分別定義下,外邊距和上外邊距,代碼如下所示,此時兩個元素之間的間隔是_____ px
<body>
<div style="margin-bottom: 20px;"></div>
<div style="margin-top: 10px;"></div>
</body>
答案:當時看到這個題目一看好簡單,直接寫了30px,根本沒有考慮到margin塌陷問題,但是結果是錯誤的,希望以后小伙伴們做題的時候能夠深入的去思考和分析,
由于兩個元素之間發生了外邊距塌陷,所以此時下外邊距和上外邊距會合并在一起,因為兩個屬性設定的都是正數,所以兩個元素之間的間隔,就是其中的較大的值,
11. 下面代碼中的函式最侄訓傳結果為_____
function fn () {
return
true
}
fn()
答案:undefined
解題思路:這題沒什么難的,因為return 之后換行了之后的代碼都不會執行,回傳值為空,
當關鍵字return break和continue后緊跟著換行時,javascript會在換行處自動填補分號,
12. 2 + true 等于_____," 6 " + 9 等于_____,
答案:3 、69
解題思路:第一個運算式中的布林值會先被轉換為數值1,然后再與數值2相加,得到的結果為3,在第二個運算式中,字串和數字相加會執行拼接操作,因此得到的結果為字串"69"
13. (1 && 2) || 0 得到的結果為_____, 0 || (2 && 1) 得到的結果為_____,
答案: 2, 1
解題思路: 邏輯與的優先級要比邏輯或高,
14. 執行[x, ...y] = [1,2,3]后,x的值為_____, y的值為_____,
答案: 1,[2, 3]
解題思路:可以將...y稱為剩余元素,右側的陣列第一個元素賦值給了x變數,剩下的兩個元素被收集起來,賦值給了y陣列,
15. 請闡述對W3C的理解與認知,
答案:W3C是一個制定各種標準的非盈利性組織,標準包括html,css,xhtml和xml等,we學習成本降低,只需要按照一定的標準學習一套即可,否則將學習各個瀏覽器廠商制定的標準,繁而雜,
統一開發流程,用標準化的工具開發,占用標準化的瀏覽器,如firefox、chrome的測驗網頁,便于多人協作,
簡化網站代碼的維護,不會有不同瀏覽器的多個版本,網頁壽命也更長,
跨平臺可方便遷移到不同設備中,如添加無障礙標準后,能讓殘障人士也便捷的使用設備訪問網頁,
標準大部分是由使用他們的人決定的,如果瀏覽器制造商web開發人員這樣的標準既實用又專業,
16. 請簡單介紹一下html5
答案:Html5不僅僅是html的最新版本,它還是以系列的web技術的集合,包括css3,javascript,多媒體快取和無障礙訪問等,Html5的規范是有兩個組織制定的,分別是WHATWG(網頁超文本技術作業小組)和W3C,
17.Css前處理器有哪些優點和缺點
答案:Css前處理器的優點如下
- 用變數儲存多次參考的資訊如言設定,字體,邊距等,只需要修改一個地方,就能夠讓所有參考之處都隨之改變,
- 新語法中的混合mixin,能重復一段樣式代碼,可以用混合將自動截取或串列中的小箭頭樣式組織在一起,需要這段代碼的選擇題,只需要簡單引入即可,
- 內置豐富的函式,可處理顏色,字串,數字,和選擇器等,也可自定義函式,適應特定需求,
- 可像javascript那樣使用數學運算,如加、減、乘、除、等,條件判斷和回圈幾句代碼,就可以描述一大段css樣式,
Css前處理器的缺點如下
- 通過編譯器生成css檔案,降低了對css檔案的控制力,如果說寫不到,那么編譯出的css檔案將會巨大而復雜,
- 除錯難度增加,在瀏覽器中除錯是編譯后的css檔案,并不是編譯以前的源代碼,
- 帶來了一定的學習成本,新人需要學習前處理器的,語法規則雖然內容不多,但是要達到融會貫通,還是需要一定的錘煉,
18.什么是嚴格模式,嚴格模式有哪些限制?
答案:ECMAScript5引入了嚴格模式的概念,嚴格模式對javascript的語法和行為,多做了一些更改,消除了語言中的一些不合理,不確定,不安全,出提高了高效嚴謹的差錯機制,保證代碼安全運行,禁用在未來版本中可能會使用的語法,為新版本做好鋪墊,在腳本檔案的第一行或函式內引入use strict,這條指令就會觸發嚴格模式,這是一條沒有副作用的指令,舊版本的瀏覽器將會作為一行字串,直接忽略,
嚴格模式常見的限制有以下幾條
- 所有的變數需要先宣告,無法在意外創建全域變數,
- 函式中的this物件的默認值是undefined,而不是全域物件window,
- 試圖使用delete運算子洗掉不可洗掉的屬性是會拋出例外,
- 函式宣告中定義兩個或多個同名引數,這樣產生一個語法錯誤,
19. 請說明一下const的特點,
答案: const能宣告一個常量,常量是指一個定義初始值后固定不變只讀的變數,const在宣告時必須初始化,并且在設定后,其值無法再次更改,注意const限制的,其實是變數與記憶體地址之間的系結,也就是說const讓變數無法更改所對應的記憶體地址,
20. ES6的類比起建構式模擬的類,有哪些獨有的特性?
答案:雖然這兩種類非常相似,但是es6中的類有獨有的特性,具體如下所列,
- 類宣告和即將要講解的類運算式都不會被提升,
- 類的代碼在執行時會強制開啟嚴格模式,
- 類的所有方法都不可列舉,并且不能與new組合使用
21. VirtualDOM (虛擬DOM) 是如何作業的?
答案:可將VirtualDOM(虛擬DOM)的作業分為三個簡單的步驟,
- 每當對DOM節點執行增刪改查等操作時, VirtualDOM會將DOM元素轉換成javascript物件,
- 在通過diff演算法,找出新舊虛擬DOM之間的差異部分,
- 最后只更新真實DOM中需要變化的節點,而不是將整顆DOM樹重新渲染一遍,
22. 代理服務器有哪些功能?
答案:代理服務器能接收客戶端發送的請求,然后再將其轉發給其他服務器,相當于網路資訊中的中轉站,其功能如下所列,
- 提高訪問速度,
- 控制對內部資源的訪問,例如只對教育網開放的各類ftp,
- 過濾內容,例如限制對特定計算機的訪問,
- 隱藏真實ip免受攻擊,
- 突破訪問限制,解決跨域,
23. Vue.js中的.native修飾符有什么作用?
答案:.native修飾符能讓組件系結原生事件,為了解釋清楚這個問題,這里我在vue中寫了一小段代碼作為演示,
以下面的Btn組件為例
<body> <div id="app"> <!-- 使用組件 --> <!-- 如果我們在組件中不使用.native修飾符 系結在組件上的事件會被作為自定義事件使用 說以無法觸發原生的click事件 --> <!-- <Btn @click="fun"></Btn> --> <!-- 我們添加了.natvie修飾符之后組件就可以觸發click事件了 --> <Btn @click.native="fun"></Btn> </div> <script> // 定義了一個組件 Vue.component('Btn', { template: '<button>點擊</button>' }) const vm = new Vue({ el: '#app', methods: { fun () { alert("hello world"); } }, }) </script> </body>本質上,click事件系結的是Btn組件的根元素,即<button>點擊</button>元素,
如果在DOM元素身上使用.native會讓事件失效,請不要在ODM元素身上使用.native修飾符,
24.將一個匿名函式像下面這樣用圓括號包裹,有什么作用?
(function () {})
答案:這是一種即時函式,也就是那些剛定義好馬上就能自動執行的函式,即時函式用途非常廣泛,常用于創建塊級作用域,解決回圈中的異步回呼問題和類別庫封裝等,
解題思路:這個題還比較基礎的,大部分學過JavaScript的同學都應該知道,在開發中也比較常用,我們通常稱為立即執行函式,但是要描述清晰,還是需要有一定知識積累的,
25. 請談一下對TCP / IP的理解
答案:TCP/IP 是為互聯網服務的協議簇,它是網路通信協議的統稱,由ip,tcp,http和ftp等協議組成,Tcp/ip將通信程序抽象為四層,被視為簡化的osi參考模型,但負責維護這套協議不是iso,而是互聯網工程任務組,
26. 不使用css的border,使用其它的屬性模擬邊框
答案:不使用邊框,我們可以使用css3的陰影屬性(box-shadow),可以向邊框添加一個或者多個陰影,使用陰影可以模擬邊框,使得元素可以套無限層邊框,
下面我用代碼演示給一個div添加3條邊框
div{ width: 100px; height: 100px; background-color: lightcoral; box-shadow: 0 0 0 10px red, 0 0 0 20px goldenrod, 0 0 0 30px blue; }
可以看到在元素周圍出現了3條紅黃藍的邊框,
27. 封裝一個isInteger()函式,用于檢測傳入的值是整數
答案:整數是指沒有小數的數,包括正整數,負整數和零,在javascript中有三個特殊的數字NAN,infinity或者-infinity,isInteger()函式不僅能識別出小數,還要能識別出這三個,做的數字下面是一個滿足條件的isInteger()函式
下面用代碼描述一下
function isInteger(value) { // typeof 判斷值是否是數字 // isFinite() 方法判斷這個數字是否是有盡數 // value % 1 === 0 判斷是否是整數 return typeof value === "number" && isFinite(value) && value % 1 === 0 }
28. 請重新封裝一個isNaN2()函式,此函式彌補了全域函式isNaN()的不足
答案:全域函式isNaN()能夠判斷一個值是否為NaN,不過有一個嚴重的缺陷,如果引數既不是NaN,也不是數字,例如,是字串,回傳的結果不是false,而是true,因此需要加一個型別判斷,完善后的isNaN()函式代碼如下所示
function isNaN2 (value) { return typeof value == 'number' && isNaN(value) }
29. 如何用ES6語法匯出模塊成員
答案:一個模塊就是一個獨立的javascript檔案,如果要讀取檔案內的變數、函式或者類,那么必須先將它用export關鍵字匯出,因為他們默認都是私有的,
代碼演示
// 使用es6箭頭函式定義一個函式 let fn = a=> alert(a); // 匯出函式 export {fn};
30. 撰寫一個add()函式,能正常執行下面的代碼,并且能在控制臺輸出注釋中的數字,
console.log(add(1,2)); // 3
console.log(add(1,2,3)); // 6
console.log(add(1)(2)); // 3
console.log(add(1)(2)(3)); // 6
答案:暫無
解題思路:這道題確實emmm~ 我感覺好難,前兩個輸出我使用arguments實作了,但是后面兩個鏈式呼叫 不知道如何才能實作,問了一些大佬說用函式柯里化可以實作,哎,奈何知識面淺薄,我先去了學習一下函式柯里化之后再來補這一題的坑, 有知道的小伙伴可以在評論區留言或者私信我,
目前我的代碼只能寫到這了, 希望看到了這題的同學能夠發表一下思路,大家一起解決問題,共同進步,
function add () { // 將偽陣列轉為陣列 const params = [...arguments] // 計算和 let count = 0 params.forEach(item => { count += item }) // 將函式回傳出去 拿到count的值加傳遞的引數 (這里利用了閉包) return function (n) { return count + n } } console.log(add(1, 2, 3)(2));以上代碼非正確答案,僅供參考
最后感謝認真看完這篇文章的小伙伴們,感謝有你們的點贊和鼓勵,學習之路漫長艱辛,因為有你們的陪伴,使我充滿了學習的動力,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/304779.html
標籤:其他

