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