日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端笔试题小结(一)

發布時間:2023/12/19 HTML 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端笔试题小结(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前端筆試題小結(一)

2020-03-13
題目一:
將一個js數組去重。
樣例:
輸入:[ 1, “apple”, 3, “a”, 3, 1, 5, 6, “a”, 4 ]
輸出:[ 1, “apple”, 3, “a”, 5, 6, 4 ]

分析1:
將兩個數組循環嵌套一個個的比較是否相等,如果此元素沒有雷同,則把它放入新的數組中。

function test(arr){let arr2 = [arr[0]];for (let i = 1; i < arr.length; i++) {let repeat = false;for (let j = 0; j < arr2.length; j++) {if (arr[i] == arr2[j]) {repeat = true;break;//跳出for的嵌套循環}else{}}if (!repeat) {arr2.push(arr[i]);}}return arr2;}console.log(test([1, "apple", 3, "a", 3, 1, 5, 6, "a", 4]));//結果為[1, "apple", 3, "a", 5, 6, 4]

分析2:
將一個數組中的元素進行排序,然后對前后元素進行比較,結果放入新的數組中。

function test2(arr){var formArr=arr.sort();var arr2=[formArr[0]];for (let i = 1; i < formArr.length; i++) { if (formArr[i]!= formArr[i-1]) {arr2.push(formArr[i]); }}return arr2;}console.log(test2([1, "apple", 3, "a", 3, 1, 5, 6, "a", 4]));//結果為[1, 3, 4, 5, 6, "a", "apple"]

其中,let主要定義塊級變量,只在定義的區域內有效。var定義全局變量或函數變量。

js的三等于號和雙等于號區別:雙等于號屬于一般比較,可以自動轉化數據類型,三等于號表示恒等于,比較的兩邊要絕對的相同先判斷類型,如果不是同一類型直接為false。


更新:

2020-03-14
題目二:
問:
1.變量i,s,a在堆還是在棧中?
2.第8行執行完后a.i的值是什么?

class A {String i = "op";void func(String s) {s = ""+9;}static void test() {A a = new A();a.func(a.i);} }

答案:
(1) i,s,a在棧中,new出來的對象A在堆上。
(2) 執行完后a.i的值還是字符串op。
解析:
1、考察js堆與棧:棧內存主要用于存儲各種基本類型的變量,包括Boolean、Number、String、Undefined、Null以及對象變量的指針,堆主要存儲object
所以字符串變量i,s以及對象指針a都存在棧中,new出來的對象開辟內存存在堆上,對應地址是指針a存的內容
2、考察參數傳遞按值傳遞:a是A類的實例,所以a.i=‘op’,a.func(a.i)這句執行函數,把a.i作為參數傳遞,該函數會復制一個變量,兩個變量完全獨立,所以在函數體里只是把復制的那個變量(一個新的局部變量)改變為’op9’,在函數體外的a.i并沒有被改變

題目三:
請按順序寫出打印結果,并說明原因。

var name = 'global'; var obj = {name: 'local',foo: function(){this.name = 'foo';}.bind(window) }; var bar = new obj.foo(); setTimeout(function() {console.log(window.name); }, 0); console.log(bar.name);var bar3 = bar2 = bar; bar2.name = 'foo2'; console.log(bar3.name);

答案:foo,foo2,global
解析:
‘foo’ //bind返回一個函數,該函數體中的this綁定到window上,然后new對該函數進行構造調用,返回一個新對象,函數體中的this指向該對象。bind是硬綁定,new綁定的優先級高于硬綁定。所以this還是綁定在bar這個新對象上。this.name='foo’就是bar.name=‘foo’
‘foo2’ //復雜類型值地復制是引用復制,bar3、bar2和bar指向的都是同一個對象,所以bar2.name='foo2’對對象的屬性進行修改時,bar3和bar的數據同樣收影響
‘global’ //setTimeout設置一個定時器,定時器到時后調用回調函數,但定時器到時后只能將回調的執行放到事件隊列的末尾,不能插隊,所以console.log(window.name)這條輸出語句是最后執行的

總結

以上是生活随笔為你收集整理的前端笔试题小结(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。