高級前端面試題目大全(三)

第 41 - 50 題

第 41 題:下面代碼輸出什么

var a = 10;
(function () {
    console.log(a)
    a = 5
    console.log(window.a)
    var a = 20;
    console.log(a)
})()

解析:第 41題

第 42 題:實現(xiàn)一個 sleep 函數(shù)

比如 sleep(1000) 意味著等待1000毫秒府树,可從 Promise殷勘、Generator笤昨、Async/Await 等角度實現(xiàn)

    //Promise
    const sleep = time => {
        return new Promise(resolve => setTimeout(resolve, time))
    }
    sleep(1000).then(() => {
        console.log(1)
    })

    //Generator
    function* sleepGenerator(time) {
        yield new Promise(function (resolve, reject) {
            setTimeout(resolve, time);
        })
    }
    sleepGenerator(1000).next().value.then(() => { console.log(1) })

    //async
    function sleep(time) {
        return new Promise(resolve => setTimeout(resolve, time))
    }
    async function output() {
        let out = await sleep(1000);
        console.log(1);
        return out;
    }
    output();

    //ES5
    function sleep(callback, time) {
        if (typeof callback === 'function')
            setTimeout(callback, time)
    }

    function output() {
        console.log(1);
    }
    sleep(output, 1000);

解析:第 42 題

第 43 題:使用 sort() 對數(shù)組 [3, 15, 8, 29, 102, 22] 進(jìn)行排序,輸出結(jié)果

    let arr = [3, 15, 8, 29, 102, 22]
    arr.sort((a, b) => a - b);
    console.log(arr)

解析:第 43 題

第 44 題:介紹 HTTPS 握手過程

1尉桩、客戶端使用https的url訪問web服務(wù)器,要求與服務(wù)器建立ssl連接
2、web服務(wù)器收到客戶端請求后, 會將網(wǎng)站的證書(包含公鑰)傳送一份給客戶端
3舌涨、客戶端收到網(wǎng)站證書后會檢查證書的頒發(fā)機(jī)構(gòu)以及過期時間, 如果沒有問題就隨機(jī)產(chǎn)生一個秘鑰
4、客戶端利用公鑰將會話秘鑰加密, 并傳送給服務(wù)端, 服務(wù)端利用自己的私鑰解密出會話秘鑰
5扔字、之后服務(wù)器與客戶端使用秘鑰加密傳輸

解析:第 44 題

第 45 題:HTTPS 握手過程中囊嘉,客戶端如何驗證證書的合法性

解析:第 45 題

第 46 題:輸出以下代碼執(zhí)行的結(jié)果并解釋為什么

var obj = {
    '2': 3,
    '3': 4,
    'length': 2,
    'splice': Array.prototype.splice,
    'push': Array.prototype.push
}
obj.push(1)
obj.push(2)
console.log(obj)

1.使用第一次push,obj對象的push方法設(shè)置 obj[2]=1;obj.length+=1
2.使用第二次push革为,obj對象的push方法設(shè)置 obj[3]=2;obj.length+=1
3.使用console.log輸出的時候扭粱,因為obj具有 length 屬性和 splice 方法,故將其作為數(shù)組進(jìn)行打印
4.打印時因為數(shù)組未設(shè)置下標(biāo)為 0 1 處的值震檩,故打印為empty琢蛤,主動 obj[0] 獲取為 undefined

解析:第 46 題

第 47 題:雙向綁定和 vuex 是否沖突

解析:第 47 題

第 48 題:call 和 apply 的區(qū)別是什么蜓堕,哪個性能更好一些

1、Function.prototype.apply和Function.prototype.call 的作用是一樣的博其,區(qū)別在于傳入?yún)?shù)的不同套才;
2、第一個參數(shù)都是慕淡,指定函數(shù)體內(nèi)this的指向背伴;
3、第二個參數(shù)開始不同峰髓,apply是傳入帶下標(biāo)的集合傻寂,數(shù)組或者類數(shù)組,apply把它傳給函數(shù)作為參數(shù)携兵,call從第二個開始傳入的參數(shù)是不固定的疾掰,都會傳給函數(shù)作為參數(shù)。
4徐紧、call比apply的性能要好静檬,平常可以多用call, call傳入?yún)?shù)的格式正是內(nèi)部所需要的格式

解析:第 48 題

第 49 題:為什么通常在發(fā)送數(shù)據(jù)埋點請求的時候使用的是 1x1 像素的透明 gif 圖片浪汪?

解析:第 49 題

第 50 題:(百度)實現(xiàn) (5).add(3).minus(2) 功能巴柿。

例: 5 + 3 - 2凛虽,結(jié)果為 6

    //  5 + 3 - 2死遭,結(jié)果為 6
    Number.prototype.add = function (number) {
        if (typeof number !== 'number') {
            throw new Error('請輸入數(shù)字~');
        }
        return this + number;
    };
    Number.prototype.minus = function (number) {
        if (typeof number !== 'number') {
            throw new Error('請輸入數(shù)字~');
        }
        return this - number;
    };
    console.log((5).add(3).minus(2));

解析:第 50 題

第 51 - 60 題

第 51 題:Vue 的響應(yīng)式原理中 Object.defineProperty 有什么缺陷?

為什么在 Vue3.0 采用了 Proxy凯旋,拋棄了 Object.defineProperty呀潭?

解析:第 51 題

第 52 題:怎么讓一個 div 水平垂直居中

解析:第 52 題

第 53 題:輸出以下代碼的執(zhí)行結(jié)果并解釋為什么

var a = {n: 1};
var b = a;
a.x = a = {n: 2};

console.log(a.x)    
console.log(b.x)
復(fù)制代碼

解析:第 53 題

第 54 題:冒泡排序如何實現(xiàn),時間復(fù)雜度是多少至非, 還可以如何改進(jìn)钠署?

解析:第 54 題

第 55 題:某公司 1 到 12 月份的銷售額存在一個對象里面

如下:{1:222, 2:123, 5:888},請把數(shù)據(jù)處理為如下結(jié)構(gòu):[222, 123, null, null, 888, null, null, null, null, null, null, null]荒椭。

解析:第 55 題

第 56 題:要求設(shè)計 LazyMan 類谐鼎,實現(xiàn)以下功能。

LazyMan('Tony');
// Hi I am Tony

LazyMan('Tony').sleep(10).eat('lunch');
// Hi I am Tony
// 等待了10秒...
// I am eating lunch

LazyMan('Tony').eat('lunch').sleep(10).eat('dinner');
// Hi I am Tony
// I am eating lunch
// 等待了10秒...
// I am eating diner

LazyMan('Tony').eat('lunch').eat('dinner').sleepFirst(5).sleep(10).eat('junk food');
// Hi I am Tony
// 等待了5秒...
// I am eating lunch
// I am eating dinner
// 等待了10秒...
// I am eating junk food
復(fù)制代碼

解析:第 56 題

第 57 題:分析比較 opacity: 0趣惠、visibility: hidden狸棍、display: none 優(yōu)劣和適用場景。

解析:第 57 題

第 58 題:箭頭函數(shù)與普通函數(shù)(function)的區(qū)別是什么味悄?構(gòu)造函數(shù)(function)可以使用 new 生成實例草戈,那么箭頭函數(shù)可以嗎?為什么侍瑟?

解析:第 58 題

第 59 題:給定兩個數(shù)組唐片,寫一個方法來計算它們的交集丙猬。

例如:給定 nums1 = [1, 2, 2, 1],nums2 = [2, 2]费韭,返回 [2, 2]茧球。

解析:第 59 題

第 60 題:已知如下代碼,如何修改才能讓圖片寬度為 300px 揽思?注意下面代碼不可修改袜腥。

<img src="1.jpg" style="width:480px!important;”>

解析:第 60 題

第 61 - 70 題

第 61 題:介紹下如何實現(xiàn) token 加密

解析:第 61 題

第 62 題:redux 為什么要把 reducer 設(shè)計成純函數(shù)

解析:第 62 題

第 63 題:如何設(shè)計實現(xiàn)無縫輪播

解析:第 63 題

第 64 題:模擬實現(xiàn)一個 Promise.finally

解析:第 64 題

第 65 題: a.b.c.da['b']['c']['d'],哪個性能更高钉汗?

解析:第 65 題

第 66 題:ES6 代碼轉(zhuǎn)成 ES5 代碼的實現(xiàn)思路是什么

解析:第 66 題

第 67 題:數(shù)組編程題

隨機(jī)生成一個長度為 10 的整數(shù)類型的數(shù)組羹令,例如 [2, 10, 3, 4, 5, 11, 10, 11, 20],將其排列成一個新數(shù)組损痰,要求新數(shù)組形式如下福侈,例如 [[2, 3, 4, 5], [10, 11], [20]]

解析:第 67 題

第 68 題: 如何解決移動端 Retina 屏 1px 像素問題

解析:第 68 題

第 69 題: 如何把一個字符串的大小寫取反(大寫變小寫小寫變大寫)卢未,例如 ’AbC' 變成 'aBc' 肪凛。

解析:第 69 題

第 70 題: 介紹下 webpack 熱更新原理,是如何做到在不刷新瀏覽器的前提下更新頁面的

解析:第 70 題

第 71 - 80 題

第 71 題: 實現(xiàn)一個字符串匹配算法辽社,從長度為 n 的字符串 S 中伟墙,查找是否存在字符串 T,T 的長度是 m滴铅,若存在返回所在位置戳葵。

解析:第 71 題

第 72 題: 為什么普通 for 循環(huán)的性能遠(yuǎn)遠(yuǎn)高于 forEach 的性能,請解釋其中的原因汉匙。

[圖片上傳失敗...(image-2eeb30-1575446538468)]

<figcaption></figcaption>

解析:第 72 題

第 73 題: 介紹下 BFC拱烁、IFC、GFC 和 FFC

解析:第 73 題

第 74 題: 使用 JavaScript Proxy 實現(xiàn)簡單的數(shù)據(jù)綁定

解析:第 74 題

第 75 題:數(shù)組里面有10萬個數(shù)據(jù)噩翠,取第一個元素和第10萬個元素的時間相差多少

解析:第 75 題

第 76 題:輸出以下代碼運行結(jié)果

// example 1
var a={}, b='123', c=123;  
a[b]='b';
a[c]='c';  
console.log(a[b]);

---------------------
// example 2
var a={}, b=Symbol('123'), c=Symbol('123');  
a[b]='b';
a[c]='c';  
console.log(a[b]);

---------------------
// example 3
var a={}, b={key:'123'}, c={key:'456'};  
a[b]='b';
a[c]='c';  
console.log(a[b]);
復(fù)制代碼

解析:第 76 題

第 77 題:算法題「旋轉(zhuǎn)數(shù)組」

給定一個數(shù)組戏自,將數(shù)組中的元素向右移動 k 個位置,其中 k 是非負(fù)數(shù)伤锚。

示例 1:

輸入: [1, 2, 3, 4, 5, 6, 7] 和 k = 3
輸出: [5, 6, 7, 1, 2, 3, 4]
解釋:
向右旋轉(zhuǎn) 1 步: [7, 1, 2, 3, 4, 5, 6]
向右旋轉(zhuǎn) 2 步: [6, 7, 1, 2, 3, 4, 5]
向右旋轉(zhuǎn) 3 步: [5, 6, 7, 1, 2, 3, 4]
復(fù)制代碼

示例 2:

輸入: [-1, -100, 3, 99] 和 k = 2
輸出: [3, 99, -1, -100]
解釋: 
向右旋轉(zhuǎn) 1 步: [99, -1, -100, 3]
向右旋轉(zhuǎn) 2 步: [3, 99, -1, -100]
復(fù)制代碼

解析:第 77 題

第 78 題:Vue 的父組件和子組件生命周期鉤子執(zhí)行順序是什么

解析:第 78 題

第 79 題:input 搜索如何防抖擅笔,如何處理中文輸入

解析:第 79 題

第 80 題:介紹下 Promise.all 使用、原理實現(xiàn)及錯誤處理

解析:第 80 題

第 81 - 90 題

第 81 題:打印出 1 - 10000 之間的所有對稱數(shù)

例如:121屯援、1331 等

解析:第 81 題

第 82 題:周一算法題之「移動零」

給定一個數(shù)組 nums猛们,編寫一個函數(shù)將所有 0 移動到數(shù)組的末尾,同時保持非零元素的相對順序玄呛。

示例:

輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
復(fù)制代碼

說明:

  1. 必須在原數(shù)組上操作阅懦,不能拷貝額外的數(shù)組。
  1. 盡量減少操作次數(shù)徘铝。

解析:第 82 題

第 83 題:var耳胎、let 和 const 區(qū)別的實現(xiàn)原理是什么

解析:第 83 題

習(xí)題: https://blog.csdn.net/qq_37024887/article/details/106784068

第 84 題:請實現(xiàn)一個 add 函數(shù)惯吕,滿足以下功能。

add(1);           // 1
add(1)(2);    // 3
add(1)(2)(3)怕午;// 6
add(1)(2, 3); // 6
add(1, 2)(3); // 6
add(1, 2, 3); // 6
復(fù)制代碼

解析:第 84 題

第 85 題:react-router 里的 <Link> 標(biāo)簽和 <a> 標(biāo)簽有什么區(qū)別

如何禁掉 <a> 標(biāo)簽?zāi)J(rèn)事件废登,禁掉之后如何實現(xiàn)跳轉(zhuǎn)。

解析:第 85 題

第 86 題:(京東郁惜、快手)周一算法題之「兩數(shù)之和」

給定一個整數(shù)數(shù)組和一個目標(biāo)值堡距,找出數(shù)組中和為目標(biāo)值的兩個數(shù)。

你可以假設(shè)每個輸入只對應(yīng)一種答案兆蕉,且同樣的元素不能被重復(fù)利用羽戒。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
復(fù)制代碼

解析:第 86 題

第 87 題:在輸入框中如何判斷輸入的是一個正確的網(wǎng)址。

解析:第 87 題

第 88 題:實現(xiàn) convert 方法虎韵,把原始 list 轉(zhuǎn)換成樹形結(jié)構(gòu)易稠,要求盡可能降低時間復(fù)雜度

以下數(shù)據(jù)結(jié)構(gòu)中,id 代表部門編號包蓝,name 是部門名稱驶社,parentId 是父部門編號,為 0 代表一級部門测萎,現(xiàn)在要求實現(xiàn)一個 convert 方法亡电,把原始 list 轉(zhuǎn)換成樹形結(jié)構(gòu),parentId 為多少就掛載在該 id 的屬性 children 數(shù)組下硅瞧,結(jié)構(gòu)如下:

// 原始 list 如下
let list =[
    {id:1,name:'部門A',parentId:0},
    {id:2,name:'部門B',parentId:0},
    {id:3,name:'部門C',parentId:1},
    {id:4,name:'部門D',parentId:1},
    {id:5,name:'部門E',parentId:2},
    {id:6,name:'部門F',parentId:3},
    {id:7,name:'部門G',parentId:2},
    {id:8,name:'部門H',parentId:4}
];
const result = convert(list, ...);

// 轉(zhuǎn)換后的結(jié)果如下
let result = [
    {
      id: 1,
      name: '部門A',
      parentId: 0,
      children: [
        {
          id: 3,
          name: '部門C',
          parentId: 1,
          children: [
            {
              id: 6,
              name: '部門F',
              parentId: 3
            }, {
              id: 16,
              name: '部門L',
              parentId: 3
            }
          ]
        },
        {
          id: 4,
          name: '部門D',
          parentId: 1,
          children: [
            {
              id: 8,
              name: '部門H',
              parentId: 4
            }
          ]
        }
      ]
    },
  ···
];
復(fù)制代碼

解析:第 88 題

第 89 題:設(shè)計并實現(xiàn) Promise.race()

解析:第 89 題

第 90 題:實現(xiàn)模糊搜索結(jié)果的關(guān)鍵詞高亮顯示

[圖片上傳失敗...(image-aea64e-1575446538470)]

解析:第 90 題

第 91 - 100 題

第 91 題:介紹下 HTTPS 中間人攻擊

解析:第 91 題

第 92 題:已知數(shù)據(jù)格式份乒,實現(xiàn)一個函數(shù) fn 找出鏈條中所有的父級 id

const value = '112'
const fn = (value) => {
...
}
fn(value) // 輸出 [1, 11零酪, 112]
復(fù)制代碼

[圖片上傳失敗...(image-21d53f-1575446538470)]

解析:第 92 題

第 93 題:給定兩個大小為 m 和 n 的有序數(shù)組 nums1 和 nums2冒嫡。請找出這兩個有序數(shù)組的中位數(shù)拇勃。要求算法的時間復(fù)雜度為 O(log(m+n))四苇。

示例 1:

nums1 = [1, 3]
nums2 = [2]
復(fù)制代碼

中位數(shù)是 2.0

示例 2:

nums1 = [1, 2]
nums2 = [3, 4]
復(fù)制代碼

中位數(shù)是(2 + 3) / 2 = 2.5

解析:第 93 題

第 94 題:vue 在 v-for 時給每項元素綁定事件需要用事件代理嗎?為什么方咆?

解析:第 94 題

第 95 題:模擬實現(xiàn)一個深拷貝月腋,并考慮對象相互引用以及 Symbol 拷貝的情況

解析:第 95 題

第 96 題:介紹下前端加密的常見場景和方法

解析:第 96 題

第 97 題:React 和 Vue 的 diff 時間復(fù)雜度從 O(n^3) 優(yōu)化到 O(n) ,那么 O(n^3) 和 O(n) 是如何計算出來的瓣赂?

解析:第 97 題

第 98 題:(京東)寫出如下代碼的打印結(jié)果

function changeObjProperty(o) {
  o.siteUrl = "http://www.baidu.com"
  o = new Object()
  o.siteUrl = "http://www.google.com"
} 
let webSite = new Object();
changeObjProperty(webSite);
console.log(webSite.siteUrl);
復(fù)制代碼

解析:第 98 題

第 99 題:(bilibili)編程算法題

用 JavaScript 寫一個函數(shù)榆骚,輸入 int 型,返回整數(shù)逆序后的字符串煌集。如:輸入整型 1234妓肢,返回字符串“4321”。要求必須使用遞歸函數(shù)調(diào)用苫纤,不能用全局變量碉钠,輸入函數(shù)必須只有一個參數(shù)傳入纲缓,必須返回字符串。

解析:第 99 題

第 100 題:(京東)請寫出如下代碼的打印結(jié)果

function Foo() {
    Foo.a = function() {
        console.log(1)
    }
    this.a = function() {
        console.log(2)
    }
}
Foo.prototype.a = function() {
    console.log(3)
}
Foo.a = function() {
    console.log(4)
}
Foo.a();
let obj = new Foo();
obj.a();
Foo.a();
復(fù)制代碼

解析:[第 100 題](https://github.com/Advanced-Frontend/Daily-

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喊废,一起剝皮案震驚了整個濱河市祝高,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌污筷,老刑警劉巖工闺,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瓣蛀,居然都是意外死亡陆蟆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門惋增,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遍搞,“玉大人,你說我怎么就攤上這事器腋∠常” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵纫塌,是天一觀的道長诊县。 經(jīng)常有香客問我,道長措左,這世上最難降的妖魔是什么依痊? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮怎披,結(jié)果婚禮上胸嘁,老公的妹妹穿的比我還像新娘。我一直安慰自己凉逛,他們只是感情好性宏,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著状飞,像睡著了一般毫胜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诬辈,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天酵使,我揣著相機(jī)與錄音,去河邊找鬼焙糟。 笑死口渔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的穿撮。 我是一名探鬼主播缺脉,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼瞧哟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了枪向?” 一聲冷哼從身側(cè)響起勤揩,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秘蛔,沒想到半個月后陨亡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡深员,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年负蠕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倦畅。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡遮糖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叠赐,到底是詐尸還是另有隱情欲账,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布芭概,位于F島的核電站赛不,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏罢洲。R本人自食惡果不足惜踢故,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惹苗。 院中可真熱鬧殿较,春花似錦、人聲如沸桩蓉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽触机。三九已至帚戳,卻和暖如春玷或,著一層夾襖步出監(jiān)牢的瞬間儡首,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工偏友, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蔬胯,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓位他,卻偏偏與公主長得像氛濒,于是被迫代替她去往敵國和親产场。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容