AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

11道JavaScript 面試題

來源: 責編: 時間:2024-06-05 17:43:36 168觀看
導讀我從事 JavaScript 面試已經(jīng)有一段時間了,我遇到過很多人,盡管知道自己要參加 JavaScript 面試,但他們要么不熟悉 JavaScript,要么沒有做好充分的準備。盡管從事過基于 JavaScript 的項目,但其中一些人甚至無法回答最基本

我從事 JavaScript 面試已經(jīng)有一段時間了,我遇到過很多人,盡管知道自己要參加 JavaScript 面試,但他們要么不熟悉 JavaScript,要么沒有做好充分的準備。rj428資訊網(wǎng)——每日最新資訊28at.com

rj428資訊網(wǎng)——每日最新資訊28at.com

盡管從事過基于 JavaScript 的項目,但其中一些人甚至無法回答最基本的 JavaScript 問題。因此,本文的目的是分享在JavaScript 面試中會遇到哪些問題以及如何回答這些問題。rj428資訊網(wǎng)——每日最新資訊28at.com

這些不是我在采訪中提出的確切問題,但它們確實涵蓋了概念。讓我們從一些基本問題開始,然后逐步討論更高級的概念。rj428資訊網(wǎng)——每日最新資訊28at.com

1. var、let 和 const 之間的區(qū)別?

盡管這是 JS 的基本問題之一,但令人驚訝的是,許多人都無法區(qū)分 let 和 var 之間的區(qū)別。rj428資訊網(wǎng)——每日最新資訊28at.com

答案很簡單:var 是函數(shù)作用域,可以重新聲明和更新,而 let 是塊作用域,不能重新聲明,但可以更新。同時,const 是塊作用域的,不能重新聲明或更新。rj428資訊網(wǎng)——每日最新資訊28at.com

var a = 10 // Can re-declared and updatelet b = 20 // Can't re-declared but can updateconst c = 30 // Can't re-declared or update

當然,var 如今已經(jīng)不太常用了,但是仍然有代碼使用它,我們可能會遇到。未能回答此問題還表明你不熟悉 JavaScript 中塊作用域和函數(shù)作用域之間的區(qū)別。rj428資訊網(wǎng)——每日最新資訊28at.com

2. == 和 === 運算符的區(qū)別?

這也是一個很常見的JS問題。== 運算符僅檢查值是否匹配,而忽略數(shù)據(jù)類型。如果要比較的兩個變量的類型不同,它會在后臺執(zhí)行類型強制。另一方面, === 運算符確保值和類型相等。rj428資訊網(wǎng)——每日最新資訊28at.com

2 == "2" //true2 === "2" //falsenull == undefined //truenull === undefined //false

3. 如何在不改變原始數(shù)組的情況下對數(shù)組進行排序?

在 2023 年之前,要對數(shù)組進行排序而不改變它,你需要對其進行淺表復制,因為 JS 排序函數(shù)會改變原始數(shù)組。rj428資訊網(wǎng)——每日最新資訊28at.com

因此,最簡單的方法是使用擴展運算符,然后對數(shù)組進行排序,如下例所示。rj428資訊網(wǎng)——每日最新資訊28at.com

const numbers = [3, 1, 4, 1, 5];const sorted = [...numbers].sort();

然而,在 2023 年,JS 引入了 toSorted() 函數(shù),它允許您在不改變原始數(shù)組的情況下對數(shù)組進行排序。這個問題測試候選人的知識以及是否是最新的。rj428資訊網(wǎng)——每日最新資訊28at.com

const numbers = [3, 1, 4, 1, 5];const sorted = numbers.toSorted();

4. 解釋回調(diào)函數(shù)并提供用例?

簡而言之,回調(diào)是一個函數(shù),它作為參數(shù)傳遞給另一個函數(shù),然后在后者完成其任務后執(zhí)行。它支持異步操作,允許 JavaScript 處理耗時的任務,而不會延遲其他操作的執(zhí)行。rj428資訊網(wǎng)——每日最新資訊28at.com

const fetchData = (callbackFunc) => {    setTimeout(() => {      const data = "Sample data";      callbackFunc(data);   }, 2000);}const processFetchedData = (data) => {    console.log("Processing data:", data);}fetchData(processFetchedData);

回調(diào)用于處理用戶事件,例如按鈕單擊和輸入更改。當用戶事件發(fā)生時,可以調(diào)用回調(diào)函數(shù)來執(zhí)行一段代碼?;卣{(diào)對于處理異步數(shù)據(jù)請求也非常有用。當從服務器獲取數(shù)據(jù)時,回調(diào)函數(shù)處理接收到的數(shù)據(jù)。rj428資訊網(wǎng)——每日最新資訊28at.com

5. JavaScript 中的閉包是什么?

閉包是一個可以訪問其自身作用域、外部函數(shù)作用域和全局作用域的函數(shù)。閉包還與 JavaScript 中的詞法作用域相關(guān)。詞法作用域描述了變量和函數(shù)在運行時如何確定作用域。為了解釋什么是閉包,最好用一個簡單的例子。rj428資訊網(wǎng)——每日最新資訊28at.com

let makeSizer = (size) =>   () => {    console.log(`fontSize = ${size}px`);  };const size10 = makeSizer(10);const size12 = makeSizer(12);const size14 = makeSizer(14);size10(); // fontSize = 10pxsize12(); // fontSize = 12pxsize14(); // fontSize = 14px

在前面的示例中,size10、size12 和 size14 函數(shù)是閉包。閉包在事件驅(qū)動編程中很有用。例如,你可以編寫一個生成事件處理程序的函數(shù),每個處理程序都可以訪問特定數(shù)據(jù),而不會污染全局范圍。rj428資訊網(wǎng)——每日最新資訊28at.com

6.什么時候需要使用Async代碼?

當我們需要避免 JavaScript 中阻塞主線程時,我們必須使用異步代碼。主線程管理調(diào)用堆棧,其中包含當前的函數(shù)調(diào)用序列。如果主線程被阻塞,函數(shù)在調(diào)用之前將必須等待。rj428資訊網(wǎng)——每日最新資訊28at.com

因此,異步代碼對于高效處理耗時操作至關(guān)重要。JavaScript 提供了回調(diào)、promise 和 async/await 等技術(shù)來更好地管理異步操作。rj428資訊網(wǎng)——每日最新資訊28at.com

7. JavaScript 中的 Promise 是什么?

Promise 是代表異步操作最終成功或失敗的對象。它們是與 ES6 JavaScript 添加一起引入的。當 Promise 被解決或拒絕時,您可以使用 Promise 實例的 then 和 catch 方法來調(diào)用函數(shù)。以下是 Promise 的簡單 JavaScript 代碼示例。rj428資訊網(wǎng)——每日最新資訊28at.com

const fetchData = () => { return new Promise((resolve, reject) => {    // Simulate an asynchronous operation    setTimeout(() => {      // Resolve the promise with some data      resolve("Data fetched successfully!");    }, 1000); });};// Use the PromisefetchData() .then(data => {    console.log(data); }) .catch(error => {    console.error("An error occurred:", error); });

8. Promise 和 Observables 之間的區(qū)別?

這是一個比前面的問題更高級的問題。Observables 是 Promise 的更強大版本,但它們不是 Javascript 原生的。它們用于處理產(chǎn)生多個值的操作,例如,用戶輸入事件或?qū)崟r數(shù)據(jù)流。rj428資訊網(wǎng)——每日最新資訊28at.com

與 Promises 不同,Observables 允許你通過調(diào)用 unsubscribe() 方法來取消正在進行的操作。Observables 也比 Promises 更適合復雜的數(shù)據(jù)操作,因為它們支持更廣泛的運算符(例如 map、filter、switchMap 等)。rj428資訊網(wǎng)——每日最新資訊28at.com

然而,Observables 要求應用程序包含 RxJS 依賴開銷。此外,Observables 比 Promise 更難使用。因此,如果需要一種簡單的方法來處理異步操作的單個結(jié)果,Promise 更適合。rj428資訊網(wǎng)——每日最新資訊28at.com

9. Promise 和 Async Await 之間的區(qū)別?

Async/Await 具有比 Promises 更同步的語法,使閱讀和理解程序的流程變得更容易。與 Promise 鏈相比,Async/Await 的樣板代碼更少。鏈接是連續(xù)執(zhí)行兩個或多個異步操作,每個后續(xù)操作在前一個操作成功完成后開始。rj428資訊網(wǎng)——每日最新資訊28at.com

const fetchData = async () => { // Simulate an API call that returns a promise let promise = new Promise((resolve, reject) => {    setTimeout(() => resolve("Data fetched!"), 1000); }); let result = await promise; console.log(result);}fetchData().catch(error => {    console.error("An error occurred:", error);});

上面是 async/await 在 JavaScript 中如何工作的示例。wait 關(guān)鍵字指示 JavaScript 等待,直到 Promise 對象被解析或拒絕。rj428資訊網(wǎng)——每日最新資訊28at.com

Async/Await 基于 Promises,并作為對開發(fā)人員更友好的語法在 Promises 之后添加到 JavaScript 中。rj428資訊網(wǎng)——每日最新資訊28at.com

但是,在必須并發(fā)處理多個異步操作的場景中,應該使用 Promises 而不是 async/await。Promise.all() 方法在這種情況下會很有用。rj428資訊網(wǎng)——每日最新資訊28at.com

10. 解釋一下去抖動和節(jié)流?

去抖動意味著延遲函數(shù)的執(zhí)行,直到自上次觸發(fā)事件以來經(jīng)過一定時間。另一方面,節(jié)流限制了調(diào)用函數(shù)的頻率。它確保函數(shù)以指定的時間間隔執(zhí)行,并且該時間間隔內(nèi)的任何其他調(diào)用都將被忽略。rj428資訊網(wǎng)——每日最新資訊28at.com

用例rj428資訊網(wǎng)——每日最新資訊28at.com

去抖動最常見的應用之一是搜索建議,您希望等待用戶完成輸入后再獲取建議。這避免了每次擊鍵時都調(diào)用 API 并提高了性能。rj428資訊網(wǎng)——每日最新資訊28at.com

限制對于處理滾動和調(diào)整大小事件非常有用,可以在這些事件中限制函數(shù)調(diào)用的頻率,以便應用程序不會因重新渲染而過載。rj428資訊網(wǎng)——每日最新資訊28at.com

11. 什么是 JavaScript 中的事件冒泡以及如何阻止它?

當你單擊嵌套在其他幾個元素中的按鈕時,該按鈕及其父元素都會觸發(fā)單擊事件,從而在 DOM 樹中向上移動。這稱為事件冒泡,DOM 中的大多數(shù)事件都會發(fā)生這種情況。如果組件具有嵌套的單擊事件,這可能會成為問題。rj428資訊網(wǎng)——每日最新資訊28at.com

要停止事件冒泡,可以使用事件對象的 stopPropagation() 方法。此方法可防止事件在 DOM 樹上進一步傳播。rj428資訊網(wǎng)——每日最新資訊28at.com

onClick((event) => {  event.stopPropagation();  console.log("button clicked");})

總結(jié)

以上這11道面試題中有基本和高級 JavaScript 問題與概念。作為面試官,我試圖使這些信息盡可能簡單,以便即使是初學者也能理解。rj428資訊網(wǎng)——每日最新資訊28at.com

我希望今天分享的這期內(nèi)容能夠幫助你自信地面對下一次 JavaScript 面試。最后,感謝您的閱讀,祝編程愉快。rj428資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-92129-0.html11道JavaScript 面試題

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python 數(shù)億次數(shù)值對對比,如何高效率處理?

下一篇: 25個每個開發(fā)人員都應該知道的CSS 技巧

標簽:
  • 熱門焦點
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內(nèi)市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • 六大權(quán)益!華為8月服務日開啟:手機免費貼膜、維修免人工費

    8月5日消息,一年一度的華為開發(fā)者大會2023(Together)日前在松山湖拉開帷幕,與此同時,華為8月服務日也式開啟,到店可享六大專屬權(quán)益。華為用戶可在華為商城Ap
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標系統(tǒng)提供非預期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件漏洞的方法??梢杂脕戆l(fā)現(xiàn)應用程序、操作系統(tǒng)和網(wǎng)絡協(xié)議等中的漏洞或
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產(chǎn)懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元“人在職場,應該選擇什么樣的著裝?”近日,在網(wǎng)絡上,一個與著裝相關(guān)的帖子引發(fā)關(guān)注,在該帖子里,一位在高級寫字樓亞洲金
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災

    8月2日消息,今日小米科技創(chuàng)始人雷軍在其微博上發(fā)布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災。攜手抗災,京冀安康!以下為公告原文
  • 攜眾多高端產(chǎn)品亮相ChinaJoy,小米帶來一場科技與人文的視聽盛宴

    7月28日,全球數(shù)字娛樂領(lǐng)域最具知名度與影響力的年度盛會中國國際數(shù)碼互動娛樂展覽會(簡稱ChinaJoy)在上海新國際博覽中心盛大開幕。作為全球領(lǐng)先的科
  • 國行版三星Galaxy Z Fold5/Z Flip5發(fā)布 售價7499元起

    2023年8月3日,三星電子舉行Galaxy新品中國發(fā)布會,正式在國內(nèi)推出了新一代折疊屏智能手機三星Galaxy Z Fold5與Galaxy Z Flip5,以及三星Galaxy Tab S9
  • 英特爾Xe-HP項目終止,將專注Xe-HPC/HPG系列顯卡

    據(jù)10 月 31 日消息報道,英特爾高級副總裁兼加速計算系統(tǒng)和圖形事業(yè)部總經(jīng)理 表示,Xe-HP“ Arctic Sound” 系列服務器 GPU 已經(jīng)應用于 oneAPI devcloud 云服
Top