摘要:解析第題第題為什么的和的中不能做異步操作解析第題第題京東下面代碼中在什么情況下會(huì)打印解析第題第題介紹下及其應(yīng)用。盡量減少操作次數(shù)。解析第題第題京東快手周一算法題之兩數(shù)之和給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。
引言
半年時(shí)間,幾千人參與,精選大廠前端面試高頻 100 題,這就是「壹題」。
在 2019 年 1 月 21 日這天,「壹題」項(xiàng)目正式開始,在這之后每個(gè)工作日都會(huì)出一道高頻面試題,主要涵蓋阿里、騰訊、頭條、百度、網(wǎng)易等大公司和常見題型。得益于大家熱情參與,現(xiàn)在每道題都有很多答案,提供的解題思路和答案也大大增長(zhǎng)了我的見識(shí),到現(xiàn)在已累積 100 道題目,『 8000+ 』Star 了,可以說你面試中遇到過的題目,在這里肯定能發(fā)現(xiàn)熟悉的身影。
后期計(jì)劃除了持續(xù)更新「壹題」之外,還將整理非常詳細(xì)的答案解析,提供完整的思考鏈路,幫助大家更好的理解題目,以及題目背后的知識(shí),「我們的目標(biāo)不是背題,而是通過題目查漏補(bǔ)缺,溫故知新」。
更多更全更詳細(xì)的每日一題和答案解析,戳這里查看
第 1 - 10 題 第 1 題:(滴滴、餓了么)寫 React / Vue 項(xiàng)目時(shí)為什么要在列表組件中寫 key,其作用是什么?解析:第 1 題
解析:第 2 題
解析:第 3 題
解析:第 4 題
解析:第 5 題
解析:第 6 題
解析:第 7 題
解析:第 8 題
解析:第 9 題
請(qǐng)寫出下面代碼的運(yùn)行結(jié)果
async function async1() { console.log("async1 start"); await async2(); console.log("async1 end"); } async function async2() { console.log("async2"); } console.log("script start"); setTimeout(function() { console.log("setTimeout"); }, 0) async1(); new Promise(function(resolve) { console.log("promise1"); resolve(); }).then(function() { console.log("promise2"); }); console.log("script end");
解析:第 10 題
已知如下數(shù)組:var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
編寫一個(gè)程序?qū)?shù)組扁平化去并除其中重復(fù)部分?jǐn)?shù)據(jù),最終得到一個(gè)升序且不重復(fù)的數(shù)組
解析:第 11 題
解析:第 12 題
解析:第 13 題
解析:第 14 題
解析:第 15 題
解析:第 16 題
如果A 與 B 建立了正常連接后,從未相互發(fā)過數(shù)據(jù),這個(gè)時(shí)候 B 突然機(jī)器重啟,問 A 此時(shí)處于 TCP 什么狀態(tài)?如何消除服務(wù)器程序中的這個(gè)狀態(tài)?(超綱題,了解即可)
解析:第 17 題
解析:第 18 題
class Example extends React.Component { constructor() { super(); this.state = { val: 0 }; } componentDidMount() { this.setState({val: this.state.val + 1}); console.log(this.state.val); // 第 1 次 log this.setState({val: this.state.val + 1}); console.log(this.state.val); // 第 2 次 log setTimeout(() => { this.setState({val: this.state.val + 1}); console.log(this.state.val); // 第 3 次 log this.setState({val: this.state.val + 1}); console.log(this.state.val); // 第 4 次 log }, 0); } render() { return null; } };
解析:第 19 題
解析:第 20 題
Object.prototype.toString.call() 、 instanceof 以及 Array.isArray()
解析:第 21 題
解析:第 22 題
解析:第 23 題
解析:第 24 題
解析:第 25 題
可從IIFE、AMD、CMD、CommonJS、UMD、webpack(require.ensure)、ES Module、 這幾個(gè)角度考慮。
解析:第 26 題
解析:第 27 題
解析:第 28 題
解析:第 29 題
請(qǐng)把兩個(gè)數(shù)組 ["A1", "A2", "B1", "B2", "C1", "C2", "D1", "D2"] 和 ["A", "B", "C", "D"],合并為 ["A1", "A2", "A", "B1", "B2", "B", "C1", "C2", "C", "D1", "D2", "D"]。
解析: 第 30 題
for (var i = 0; i< 10; i++){ setTimeout(() => { console.log(i); }, 1000) }
解析:第 31 題
解析:第 32 題
var b = 10; (function b(){ b = 20; console.log(b); })();
解析:第 33 題
var b = 10; (function b(){ b = 20; console.log(b); })();
解析:第 34 題
可以分成 Service Worker、Memory Cache、Disk Cache 和 Push Cache,那請(qǐng)求的時(shí)候 from memory cache 和 from disk cache 的依據(jù)是什么,哪些數(shù)據(jù)什么時(shí)候存放在 Memory Cache 和 Disk Cache中?
解析:第 35 題
解析:第 36 題
解析:第 37 題
var a = ?; if(a == 1 && a == 2 && a == 3){ console.log(1); }
解析:第 38 題
解析:第 39 題
如果修改了,Vue 是如何監(jiān)控到屬性的修改并給出警告的。
解析:第 40 題
var a = 10; (function () { console.log(a) a = 5 console.log(window.a) var a = 20; console.log(a) })()
解析:第 41題
比如 sleep(1000) 意味著等待1000毫秒,可從 Promise、Generator、Async/Await 等角度實(shí)現(xiàn)
解析:第 42 題
解析:第 43 題
解析:第 44 題
解析:第 45 題
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)
解析:第 46 題
解析:第 47 題
解析:第 48 題
解析:第 49 題
例: 5 + 3 - 2,結(jié)果為 6
解析:第 50 題
為什么在 Vue3.0 采用了 Proxy,拋棄了 Object.defineProperty?
解析:第 51 題
解析:第 52 題
var a = {n: 1}; var b = a; a.x = a = {n: 2}; console.log(a.x) console.log(b.x)
解析:第 53 題
解析:第 54 題
如下:{1:222, 2:123, 5:888},請(qǐng)把數(shù)據(jù)處理為如下結(jié)構(gòu):[222, 123, null, null, 888, null, null, null, null, null, null, null]。
解析:第 55 題
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
解析:第 56 題
解析:第 57 題
解析:第 58 題
例如:給定 nums1 = [1, 2, 2, 1],nums2 = [2, 2],返回 [2, 2]。
解析:第 59 題
第 61 - 70 題 第 61 題:介紹下如何實(shí)現(xiàn) token 加密解析:第 61 題
第 62 題:redux 為什么要把 reducer 設(shè)計(jì)成純函數(shù)
解析:第 62 題
第 63 題:如何設(shè)計(jì)實(shí)現(xiàn)無縫輪播
解析:第 63 題
第 64 題:模擬實(shí)現(xiàn)一個(gè) Promise.finally
解析:第 64 題
第 65 題: a.b.c.d 和 a["b"]["c"]["d"],哪個(gè)性能更高?
解析:第 65 題
第 66 題:ES6 代碼轉(zhuǎn)成 ES5 代碼的實(shí)現(xiàn)思路是什么
解析:第 66 題
第 67 題:數(shù)組編程題
隨機(jī)生成一個(gè)長(zhǎng)度為 10 的整數(shù)類型的數(shù)組,例如 [2, 10, 3, 4, 5, 11, 10, 11, 20],將其排列成一個(gè)新數(shù)組,要求新數(shù)組形式如下,例如 [[2, 3, 4, 5], [10, 11], [20]]。
解析:第 67 題
第 68 題: 如何解決移動(dòng)端 Retina 屏 1px 像素問題
解析:第 68 題
第 69 題: 如何把一個(gè)字符串的大小寫取反(大寫變小寫小寫變大寫),例如 ’AbC" 變成 "aBc" 。
解析:第 69 題
第 70 題: 介紹下 webpack 熱更新原理,是如何做到在不刷新瀏覽器的前提下更新頁面的
解析:第 70 題
第 71 - 80 題 第 71 題: 實(shí)現(xiàn)一個(gè)字符串匹配算法,從長(zhǎng)度為 n 的字符串 S 中,查找是否存在字符串 T,T 的長(zhǎng)度是 m,若存在返回所在位置。
解析:第 71 題
第 72 題: 為什么普通 for 循環(huán)的性能遠(yuǎn)遠(yuǎn)高于 forEach 的性能,請(qǐng)解釋其中的原因。
解析:第 72 題
第 73 題: 介紹下 BFC、IFC、GFC 和 FFC
解析:第 73 題
第 74 題: 使用 JavaScript Proxy 實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)綁定
解析:第 74 題
第 75 題:數(shù)組里面有10萬個(gè)數(shù)據(jù),取第一個(gè)元素和第10萬個(gè)元素的時(shí)間相差多少
解析:第 75 題
第 76 題:輸出以下代碼運(yùn)行結(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]);解析:第 76 題
第 77 題:算法題「旋轉(zhuǎn)數(shù)組」
給定一個(gè)數(shù)組,將數(shù)組中的元素向右移動(dòng) k 個(gè)位置,其中 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]示例 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]解析:第 77 題
第 78 題:Vue 的父組件和子組件生命周期鉤子執(zhí)行順序是什么
解析:第 78 題
第 79 題:input 搜索如何防抖,如何處理中文輸入
解析:第 79 題
第 80 題:介紹下 Promise.all 使用、原理實(shí)現(xiàn)及錯(cuò)誤處理
解析:第 80 題
第 81 - 90 題 第 81 題:打印出 1 - 10000 之間的所有對(duì)稱數(shù)
例如:121、1331 等解析:第 81 題
第 82 題:周一算法題之「移動(dòng)零」
給定一個(gè)數(shù)組 nums,編寫一個(gè)函數(shù)將所有 0 移動(dòng)到數(shù)組的末尾,同時(shí)保持非零元素的相對(duì)順序。
示例:
輸入: [0,1,0,3,12] 輸出: [1,3,12,0,0]說明:
必須在原數(shù)組上操作,不能拷貝額外的數(shù)組。
盡量減少操作次數(shù)。
解析:第 82 題
第 83 題:var、let 和 const 區(qū)別的實(shí)現(xiàn)原理是什么
解析:第 83 題
第 84 題:請(qǐng)實(shí)現(xiàn)一個(gè) 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解析:第 84 題
第 85 題:react-router 里的 標(biāo)簽和 標(biāo)簽有什么區(qū)別
如何禁掉 標(biāo)簽?zāi)J(rèn)事件,禁掉之后如何實(shí)現(xiàn)跳轉(zhuǎn)。解析:第 85 題
第 86 題:(京東、快手)周一算法題之「兩數(shù)之和」
給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。
你可以假設(shè)每個(gè)輸入只對(duì)應(yīng)一種答案,且同樣的元素不能被重復(fù)利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9 因?yàn)?nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]解析:第 86 題
第 87 題:在輸入框中如何判斷輸入的是一個(gè)正確的網(wǎng)址。
解析:第 87 題
第 88 題:實(shí)現(xiàn) convert 方法,把原始 list 轉(zhuǎn)換成樹形結(jié)構(gòu),要求盡可能降低時(shí)間復(fù)雜度
以下數(shù)據(jù)結(jié)構(gòu)中,id 代表部門編號(hào),name 是部門名稱,parentId 是父部門編號(hào),為 0 代表一級(jí)部門,現(xiàn)在要求實(shí)現(xiàn)一個(gè) 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 } ] } ] }, ··· ];解析:第 88 題
第 89 題:設(shè)計(jì)并實(shí)現(xiàn) Promise.race()
解析:第 89 題
第 90 題:實(shí)現(xiàn)模糊搜索結(jié)果的關(guān)鍵詞高亮顯示
解析:第 90 題
第 91 - 100 題 第 91 題:介紹下 HTTPS 中間人攻擊
解析:第 91 題
第 92 題:已知數(shù)據(jù)格式,實(shí)現(xiàn)一個(gè)函數(shù) fn 找出鏈條中所有的父級(jí) id
const value = "112" const fn = (value) => { ... } fn(value) // 輸出 [1, 11, 112]解析:第 92 題
第 93 題:給定兩個(gè)大小為 m 和 n 的有序數(shù)組 nums1 和 nums2。請(qǐng)找出這兩個(gè)有序數(shù)組的中位數(shù)。要求算法的時(shí)間復(fù)雜度為 O(log(m+n))。
示例 1:
nums1 = [1, 3] nums2 = [2]中位數(shù)是 2.0
示例 2:
nums1 = [1, 2] nums2 = [3, 4]中位數(shù)是(2 + 3) / 2 = 2.5
解析:第 93 題
第 94 題:vue 在 v-for 時(shí)給每項(xiàng)元素綁定事件需要用事件代理嗎?為什么?
解析:第 94 題
第 95 題:模擬實(shí)現(xiàn)一個(gè)深拷貝,并考慮對(duì)象相互引用以及 Symbol 拷貝的情況
解析:第 95 題
第 96 題:介紹下前端加密的常見場(chǎng)景和方法
解析:第 96 題
第 97 題:React 和 Vue 的 diff 時(shí)間復(fù)雜度從 O(n^3) 優(yōu)化到 O(n) ,那么 O(n^3) 和 O(n) 是如何計(jì)算出來的?
解析:第 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);解析:第 98 題
第 99 題:(bilibili)編程算法題
用 JavaScript 寫一個(gè)函數(shù),輸入 int 型,返回整數(shù)逆序后的字符串。如:輸入整型 1234,返回字符串“4321”。要求必須使用遞歸函數(shù)調(diào)用,不能用全局變量,輸入函數(shù)必須只有一個(gè)參數(shù)傳入,必須返回字符串。解析:第 99 題
第 100 題:(京東)請(qǐng)寫出如下代碼的打印結(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();解析:第 100 題
?? 看完三件事
如果你覺得這篇內(nèi)容對(duì)你挺有啟發(fā),我想邀請(qǐng)你幫我三個(gè)小忙:
點(diǎn)贊,讓更多的人也能看到這篇內(nèi)容(收藏不點(diǎn)贊,都是耍流氓 -_-)
關(guān)注我的 GitHub,讓我們成為長(zhǎng)期關(guān)系
關(guān)注公眾號(hào)「高級(jí)前端進(jìn)階」,每周重點(diǎn)攻克一個(gè)前端面試重難點(diǎn),公眾號(hào)后臺(tái)回復(fù)「資料」 送你精選前端優(yōu)質(zhì)資料。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/105489.html
摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測(cè)試不同環(huán)境結(jié)果可能有差異而就是。 花了很長(zhǎng)時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...
摘要:?jiǎn)螜C(jī)游戲重視沉浸感和體驗(yàn)感。這是我做判斷時(shí)的一條重要準(zhǔn)則。在我的心目中,我是廣外的走讀生。所以我對(duì)廣外總是有一種特別的感謝之情。而這段時(shí)間是最純粹穩(wěn)定的。這種崗位確是挺對(duì)口的。還是相當(dāng)感謝同學(xué)們的。本來題目是沒有年齡的。只是在網(wǎng)上??吹揭呀?jīng)25歲是否還適合轉(zhuǎn)行當(dāng)程序員之類的問題,就覺得有必要暴露下我的年齡。 在過去的2018年,我從新媒體藝術(shù)的小圈子里面跳出來,自學(xué)編程,轉(zhuǎn)行前端。現(xiàn)已經(jīng)入職...
摘要:初來乍到,請(qǐng)多多指教,踏入廣州那一刻,我滿懷熱情的對(duì)廣州說。本以為,作為大學(xué)畢業(yè)的我,在國(guó)內(nèi)最大的軟件服務(wù)商被寄予厚望的我,在廣州應(yīng)該也是個(gè)熱餑餑,不愁吃不愁穿不愁的。然而現(xiàn)實(shí)是廣州的公司對(duì)我并沒有多多指教,而是多多拋棄。 十月,金秋季節(jié),本是豐收之時(shí),卻因?yàn)殛懤m(xù)有同事離職,心中多少有些悲涼之意,頓然想起從參加工作到現(xiàn)在,五年已過,當(dāng)年青澀懵懂的小年輕,如今出街招搖過市時(shí),被小孩子看到...
摘要:初來乍到,請(qǐng)多多指教,踏入廣州那一刻,我滿懷熱情的對(duì)廣州說。本以為,作為大學(xué)畢業(yè)的我,在國(guó)內(nèi)最大的軟件服務(wù)商被寄予厚望的我,在廣州應(yīng)該也是個(gè)熱餑餑,不愁吃不愁穿不愁的。然而現(xiàn)實(shí)是廣州的公司對(duì)我并沒有多多指教,而是多多拋棄。 十月,金秋季節(jié),本是豐收之時(shí),卻因?yàn)殛懤m(xù)有同事離職,心中多少有些悲涼之意,頓然想起從參加工作到現(xiàn)在,五年已過,當(dāng)年青澀懵懂的小年輕,如今出街招搖過市時(shí),被小孩子看到...
閱讀 2874·2021-11-22 14:45
閱讀 3026·2021-09-10 11:26
閱讀 3398·2021-09-07 10:18
閱讀 2284·2019-08-30 14:08
閱讀 698·2019-08-29 12:22
閱讀 1451·2019-08-26 13:48
閱讀 2696·2019-08-26 10:24
閱讀 1225·2019-08-23 18:35