面试问答解码 - # 1

2025-06-04

面试问答解码 - # 1

大家好!欢迎来到本系列的第一期!我将尝试解释一个常见的软件工程面试题,以便大家更好地理解它,并希望到时候能够记住它!

这些问题将主要用 JavaScript 来解决,因为这是我测试时选择的语言(我只是想成为一名优秀的前端开发人员。🥺)


问:找出给定数组中的第二大数字。

参数:给定一个包含正整数(不含负数和浮点数)的数组。我们需要编写一个函数,返回第二大的整数。

开始吧!

我们将编写函数的骨架,将输入/参数设置数组的“arr”

function secondLargest(arr){};
Enter fullscreen mode Exit fullscreen mode

然后,我们需要设置两个空变量:largestsecond

为什么?因为我们循环遍历数组时,需要为预期的最大数字第二
大数字设置占位符。 我们需要跟踪数组中的每个整数,并比较它们的值与其他整数的比较。

function secondLargest(arr){ 
    let largest = '';
    let second = '';
}
Enter fullscreen mode Exit fullscreen mode

……这就引出了下一步:创建一个 for 循环!
在遍历数组时,我们会将每个值相互比较,将变量“最大值”与当前迭代值 (arr[i]) 进行比较。

function secondLargest(arr){
    let largest = '';
    let second = '';
    //
    for(let i=0; i < arr.length; i++){};
    //
};
Enter fullscreen mode Exit fullscreen mode

为了进行比较,我们将创建一个if 语句,将最大值arr[i]进行比较

如果arr[i]大于biggest,则通过重新声明biggest并将其设置为等于arr[i ] ,将其替换为arr[i]的当前值

function secondLargest(arr){
    let largest = '';
    let second = '';
    for(let i=0; i < arr.length; i++){
        //
        if(arr[i] > largest){
           largest = arr[i]
        };
       //
    };
};
Enter fullscreen mode Exit fullscreen mode

我们找到了最大的数!但是如何得到第二大数呢?
我们已经找到了(某种程度上):我们只需将之前的“最大”数设置为“second”变量即可。

但是,我们必须在声明新的最大数字之前声明第二个变量,因为顺序很重要——JavaScript 从上到下执行代码。

function secondLargest(arr){
    let largest = '';
    let second = '';
    for(let i=0; i < arr.length; i++){
        if(arr[i] > largest){
           //
           second = largest;
           //
           largest = arr[i];
        }; 
    };
};
Enter fullscreen mode Exit fullscreen mode

说到顺序和特殊性,现在是时候我们在数组中找到“真正的”第二大数字了。

让我们创建另一个具有更具体参数的 if 语句:

如果arr[i]大于second 小于biggest,则将arr[i]设置为second

function secondLargest(arr){
    let largest = '';
    let second = '';
    for(let i=0; i < arr.length; i++){
        if(arr[i] > largest){
           second = largest;
           largest = arr[i];
        };
        //
        if(arr[i] > second && arr[i]< largest){
           second = arr[i];
        };
        // 
    };
};
Enter fullscreen mode Exit fullscreen mode

最后,我们将返回第二个变量来完成要求。

function secondLargest(arr){
    let largest = '';
    let second = '';
    for(let i=0; i < arr.length; i++){
        if(arr[i] > largest){
           second = largest;
           largest = arr[i];
        };
        if(arr[i] > second && arr[i]< largest){
           second = arr[i];
        };
    };
    //
    return second;
    //
};
Enter fullscreen mode Exit fullscreen mode

就这样!这是一个相当简单的解决方案,虽然有点长,因为我们用的是传统的 for 循环,但它确实有效!

请随意在评论中使用您选择的编程语言发布您自己的解决方案!


感谢阅读!

如果您想保持联系,请通过Twitter与我联系

文章来源:https://dev.to/cat/interview-qs-decoded-issue-1-40i3
PREV
构建这些项目,获得你的第一份开发工作!#2:马尔可夫链歌词生成器
NEXT
使用 Pokémon Evolution 解释函数组合