ホームページ  >  記事  >  Java  >  Ele.me の筆記試験問題は簡単そうに見えますが、多くの人が困惑します。

Ele.me の筆記試験問題は簡単そうに見えますが、多くの人が困惑します。

Java后端技术全栈
Java后端技术全栈転載
2023-08-24 15:29:412028ブラウズ


質問をお読みください

このコードが出力する内容を書き留めてください。

/**
 * @author 面试专栏
 * @date 2021/7/11 13:57
 */
public class Test1 {
    public static void main(String[] args) {
        //输出什么?
        test();
    }

    public static void test() {
        for (int i = 4; i > 0; i--) {
            int j = 0;
            do {
                j++;
                if (j == 2) {
                    break;
                }
            } while (j <= i);
            System.out.print(j);
        }
    }
}

この質問を見ると、多くの人は簡単すぎると思うでしょう。 実際、この質問では 3 つの知識ポイントを検討します。

  • forloop
  • do...whileLoop
  • breakExit

私も過小評価しないでください多くの人に尋ねましたが、その答えはどれも奇妙なものでした。最も頻繁に現れるのは 4 つの答えです:

  • 第一个:4321
  • 第二个:1232
  • 第三个:2211
  • 第四个:2222

你觉得是哪个?还是觉得都不是?

注意点

注意点1

do...while循环是while循环的变种,在检查条件是否为真之前,该循环其实已经执行过一次了,然后在检查条件是否为真,如果为true,就重复执行这个循环。注意:只要循环体中执行break后也会结束循环。

注意点2

for(表达式1;表达式2;表达式3){
//循环体
}

这个循环体执行步骤如下:

  • 最初のステップ: 初期化の実行: 式 1 (一度だけ実行されます)
  • 第 2 ステップ: 式 2 を実行します。 if 式 2 If結果が false の場合、ループは終了します。そうでない場合は、ループ本体が実行され、式 3 が実行されます。
  • ステップ 3: ループ ステップ 2、式 2 の結果が false の場合、ループを終了するか、returnbreak キーワードが発生します。

オントロジー分析

  • #初めて for ループ本体に入るとき, i=4、そして do...while ループ本体に含まれます。この時点では j=0 であり、このループは j=2 または j>i がループ本体を終了するまで j を実行し続けます。明らかに、jこのときも =2 つまり、このときの出力は 2 になります。

  • 次回 for ループ i=3 を実行しても、出力は 2 のままです。

  • 次の for ループ、i=2、同じ出力は依然として 2、

  • 次の for ループ、i=1、同じ出力このとき、foe ループの i_operation が実行され、i=0 となり、i>0 の条件が満たされなくなり、この時点で for ループが終了します。

つまり、最終的な出力結果は

2222 になります。

追記

多くの企業の筆記試験の問題を過小評価しないでください。落とし穴があります。注意しないと、間違って、落ちてしまった。サイクルに関するこの種の筆記試験問題に遭遇した場合は、冷静に考えて段階的に解答することをお勧めします。


筆記試験では、コーディングに関する質問が単純に見えるほど、軽視すべきではありません。

以上がEle.me の筆記試験問題は簡単そうに見えますが、多くの人が困惑します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はJava后端技术全栈で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。