摘要:整理最近的一些面試題請(qǐng)問(wèn)有哪些數(shù)據(jù)數(shù)據(jù)類型,并畫(huà)出內(nèi)存圖有種簡(jiǎn)單的數(shù)據(jù)類型也稱為基本數(shù)據(jù)類型復(fù)雜的數(shù)據(jù)類型即引用數(shù)據(jù)類型包含對(duì)象,對(duì)象和等舉個(gè)例子引用類型數(shù)據(jù)在棧內(nèi)存中保存的實(shí)際上是對(duì)象在堆內(nèi)存中的引用地址。實(shí)際上改變的是堆內(nèi)存對(duì)象。
我們?cè)趈s的學(xué)習(xí)中,往往很多東西看過(guò)之后,一段時(shí)間不用,就忘記了。或者當(dāng)時(shí)就沒(méi)有深入的理解,能促使我們不斷深入學(xué)習(xí)的動(dòng)力最好的辦法往往參加些面試,能找到自己的不足也能加深之前學(xué)的知識(shí)點(diǎn)的記憶。
整理最近的一些面試題
(1)請(qǐng)問(wèn)js有哪些數(shù)據(jù)數(shù)據(jù)類型,并畫(huà)出內(nèi)存圖
js有5種簡(jiǎn)單的數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型)Undefined、Null、Boolean、Number、String
復(fù)雜的數(shù)據(jù)類型(即引用數(shù)據(jù)類型) 包含Object對(duì)象,array對(duì)象和Function,Date等
舉個(gè)例子
引用類型數(shù)據(jù)在棧內(nèi)存中保存的實(shí)際上是對(duì)象在堆內(nèi)存中的引用地址。通過(guò)這個(gè)引用地址可以快速查找到保存中堆內(nèi)存中的對(duì)象。
var obj1 = new Object(); var obj2 = obj1; obj2.name = "我有名字了"; console.log(obj1.name); // 我有名字了
obj1賦值給onj2,實(shí)際上這個(gè)堆內(nèi)存對(duì)象在棧內(nèi)存的引用地址復(fù)制了一份給了obj2,但是實(shí)際上他們共同指向了同一個(gè)堆內(nèi)存對(duì)象。實(shí)際上改變的是堆內(nèi)存對(duì)象。
(2)下面代碼輸出結(jié)果
for (var i = 1; i <= 4; i++) { console.log(i) setTimeout(function timer() { console.log(i) // 5,5,5,5,5 }, 1000) }
答案:// 5,5,5,5,5
(3)下面代碼輸出結(jié)果
var foo = "hello"; (function() { var bar = " word" console.log(foo + bar) })() console.log(foo + bar)
//答案:報(bào)錯(cuò)bar is not defined
(4)下面代碼輸出結(jié)果
var bar = true console.log(bar + 0) //1 console.log(bar + "xyz") //truexyz console.log(bar + true) //2 console.log(bar + false) //1 console.log(undefined == null) //true console.log(1 == true) //true console.log(2 == true) //false console.log(0 == false) //true console.log(0 == "") //true console.log(NaN == NaN) //false console.log([] == false) //true console.log([] == ![]) //true
補(bǔ)充一些可能會(huì)考到的例子
// Boolean + Number -> 數(shù)字相加 true + 1 // 2 // Boolean + Boolean -> 數(shù)字相加 false + false // 0 // Number + String -> 字符串連接 5 + "foo" // "5foo" // String + Boolean -> 字符串連接 "foo" + false // "foofalse" // String + String -> 字符串連接 "foo" + "bar" // "foobar" 減法 (-) 減法運(yùn)算符使兩個(gè)操作數(shù)相減,結(jié)果是它們的差值。減法字符串都會(huì)試圖轉(zhuǎn)成數(shù)字 -"1"http://1 5 - 3 // 2 3 - 5 // -2 "15"-2 //13 "foo" - 3 // NaN "5" + 3 // 53 如果字符在前面,并且后面是加號(hào)(+)就是字符串拼接 +3 // 3 +"3" // 3 +true // 1 +false // 0 +null // 0 +function(val){ return val;} //NaN
(5)假設(shè)有這樣一個(gè)數(shù)組[1,2,3,4,5],現(xiàn)在想要左移或者右移N位,比如左移1位變成[2,3,4,5,1],右移1位變成[5,1,2,3,4],請(qǐng)寫(xiě)一個(gè)函數(shù)實(shí)現(xiàn)
思路:假如左移的情況,如果左移2位,把原數(shù)組的左邊2個(gè)元素刪除,并把刪除的2個(gè)元素存儲(chǔ)在新建的數(shù)組中,最后把原數(shù)組刪除后的數(shù)組與刪除的數(shù)組連接起來(lái),右移的情況也是把右移數(shù)量的元素刪除,并把刪除后的元素存儲(chǔ)起來(lái),最后連接。
完整的例子:
var data = ["blue", "green", "red", "purple"]; var dataLength = data.length var deleteData; var resultData; function move(n) { if (n >= 0) { deleteData = data.splice(0, n); resultData = data.concat(deleteData); console.log(resultData); } else { deleteData = data.splice(dataLength + n, -n); resultData = deleteData.concat(data) console.log(resultData); } } move(3)
(6)有這樣一個(gè)URL http://www.baidu.com/item.htm...,請(qǐng)寫(xiě)一段js程序提取url中的各個(gè)GET參數(shù)(參數(shù)名和參數(shù)個(gè)數(shù)不確定),將其按key-value形式返回到一個(gè)json結(jié)構(gòu)中
思路:
1、找出“?”的index 位置(url.indexOf("?"))
2、截取“?”后面的字符串(可以使用slice,substring,substr)
3、使用split把字符串分隔成字符串?dāng)?shù)組(str.split("&"))
4、循環(huán)字符串?dāng)?shù)組,在循環(huán)內(nèi)部主要代碼
for (i = 0; i < data.length; i++) { var data1 = data[i]; data2 = data1.split("=") key = data2[0]; value = data2[1]; JosnObject.key = value }
如有疑問(wèn)請(qǐng)關(guān)注微信公眾號(hào):前端之攻略,此公眾號(hào)我也會(huì)定期更新前端知識(shí)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/96727.html
摘要:收集的一些前端面試題從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得及各大互聯(lián)網(wǎng)公司前端筆試面試題篇及各大互聯(lián)網(wǎng)公司前端筆試面試題篇面試題個(gè)和個(gè)經(jīng)典面試題前端開(kāi)發(fā)面試題如何面試前端工程師很重要個(gè)變態(tài)題解析如何通過(guò)餓了么面試輕 收集的一些前端面試題 從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得 1 BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:收集的一些前端面試題從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得及各大互聯(lián)網(wǎng)公司前端筆試面試題篇及各大互聯(lián)網(wǎng)公司前端筆試面試題篇面試題個(gè)和個(gè)經(jīng)典面試題前端開(kāi)發(fā)面試題如何面試前端工程師很重要個(gè)變態(tài)題解析如何通過(guò)餓了么面試輕 收集的一些前端面試題 從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得 1 BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:字囊括上百個(gè)前端面試題的項(xiàng)目開(kāi)源了這個(gè)項(xiàng)目是什么項(xiàng)目?jī)?nèi)容這個(gè)項(xiàng)目目前在上剛剛開(kāi)源主要內(nèi)容如下前端面試題主要整理了高頻且有一定難度的前端面試題對(duì)這些面試題進(jìn)行解讀前端原理詳解針對(duì)一些有一定難度面試題涉及的知識(shí)點(diǎn)進(jìn)行詳解比如涉及的編譯原理響應(yīng)式 20W字囊括上百個(gè)前端面試題的項(xiàng)目開(kāi)源了 這個(gè)項(xiàng)目是什么? 項(xiàng)目?jī)?nèi)容 這個(gè)項(xiàng)目目前在GitHub上剛剛開(kāi)源,主要內(nèi)容如下: 前端面試題: 主要整...
閱讀 4092·2021-11-24 09:38
閱讀 1533·2021-11-19 09:40
閱讀 2838·2021-11-18 10:02
閱讀 3773·2021-11-09 09:46
閱讀 1884·2021-09-22 15:27
閱讀 3170·2019-08-29 15:24
閱讀 1060·2019-08-29 12:40
閱讀 1743·2019-08-28 18:24