基本 JavaScript 面试问题

2025-05-24

基本 JavaScript 面试问题

大家好!今年我参加了几个 JavaScript 软件开发职位的面试,我觉得有必要写一篇文章,介绍一下我面试时遇到的一些问题。
在这篇文章里,我会分享一些面试问题以及它们的答案。

解释数据结构

数据结构是一种数据组织、管理和存储格式,旨在实现高效的访问和修改。数据结构是数据值、数据值之间的关系以及可应用于数据的函数或操作的集合。

简而言之,数据结构是一种存储和管理数据集合的定义格式/方式。

列出数据结构的例子,解释并实现一个

一些常见的数据结构包括:

  • 大批
  • 链接列表
  • 双向链表
  • 队列
  • 哈希图
  • ETC

我将解释并实现一个堆栈。

栈是一种线性数据结构,以后进先出 (LIFO) 的方式存储数据,即最后添加/插入的数据项最先被访问。栈中的数据只能从一端(栈顶)访问。
栈数据结构仅支持两种操作,即PUSH插入/添加数据项和POP删除/移除数据项。

执行

class Stack {
    constructor() {
        this.top = -1;
        this.store = [];
    }

    pop = () =>{
        if(this.top<0){
            return null;
        }
        let poppedItem = this.store[this.top];
        this.store.length = --this.top+1;
        return poppedItem;
    }

    push = (item)=>{
        this.store[++this.top] = item;
        return;
    }

    getTop = ()=>{
        return this.store[this.top];
    }
}

let myStack = new Stack();

myStack.push("10");
myStack.push("34");
myStack.push("17");
console.log(myStack.getTop());//output 17
console.log(myStack.pop());
console.log(myStack.getTop());//output 34
Enter fullscreen mode Exit fullscreen mode

用代码示例解释闭包

闭包是指即使在父函数关闭后,仍可访问父作用域的函数。
实现

var add = (function(){
    let accumulator = 0;
    return function(value){
        return accumulator+=value;
    }
})();

console.log(add(3)); //output 3
console.log(add(5)); //output 8
console.log(add(7)); //output 15
Enter fullscreen mode Exit fullscreen mode

闭包使得函数可以拥有私有变量。例如,在上面的代码中,accumulator即使匿名函数执行完毕,匿名函数返回的函数仍然可以访问该变量。

通过代码示例解释 JavaScript 中的异步性

JavaScript 是单线程的,这意味着代码是顺序/同步执行的(一行接一行)。异步 JavaScript 允许代码执行而不阻塞主线程,即代码执行时不会阻塞/停止其他代码在其仍在运行/执行时立即执行。

代码示例

console.log("start");
new Promise((resolve,reject)=>{
    resolve({data:'hello world'});
}).then(res=>{
    console.log(res);
})
console.log("end");
//outputs
//start
//end
//{ data: 'hello world' }
Enter fullscreen mode Exit fullscreen mode

在上面的代码中,即使先开始执行console.log("end"), 也会在 之前执行。这是因为是异步的,并且没有阻塞主线程,因此允许在 执行时执行。promisepromisepromiseconsole.log("end")

解释高阶函数。

高阶函数是将其他函数作为参数的函数和/或返回函数的函数。
代码示例

function logger(){
console.log("Hello world!");
}
setTimeOut(logger,2000);
Enter fullscreen mode Exit fullscreen mode

上面setTimeOut是一个更高级的其他函数,它将该函数logger作为参数。

结论

希望这篇文章对你有帮助,并能帮助你准备面试。
如果你喜欢这篇文章,欢迎随时联系我,在推特上关注我。

文章来源:https://dev.to/dverybest/basic-javascript-interview-questions-3491
PREV
如何在 Visual Studio Code 中通过 Cline 或 Roo Code 免费使用 DeepSeek R1
NEXT
什么造就了 10x 开发人员?