首頁  >  文章  >  Java  >  餓了麼筆試題,看似簡單,難倒一批人

餓了麼筆試題,看似簡單,難倒一批人

Java后端技术全栈
Java后端技术全栈轉載
2023-08-24 15:29:412043瀏覽


請看題目

請寫出寫明這段程式碼輸出什麼?

/**
 * @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);
        }
    }
}

看到這題,很多人會覺得太簡單了。 其實這題檢視三個知識點;

  • for循環

########################## #do...while###循環###############break###退出#############千萬別小看,我也問過很多人,答案千奇百怪的,出現最多的答案有四個:###
  • 第一个:4321
  • 第二个:1232
  • 第三个:2211
  • 第四个:2222

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

注意点

注意点1

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

注意点2

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

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

  • 第一步:執行初始化:表達式1(只會執行一次)
  • #第二步:執行表達式2,如果表達式2的結果為false,則循環結束,否則執行循環體,然後再執行表達式3.
  • #第三步:循環第二步,知道表達式2結果為false時,退出循環,或遇到returnbreak關鍵字。

本體分析

  • #第一次進入for迴圈體時, i=4,然後計入do...while循環體,此時j=0,然後這個循環一直執行j ,直到j=2或j>i的時候退出循環體,顯然此時j=2,也就是此時輸出的是2。

  • 下次for迴圈時,i=3,同理輸出還是2,

  • 下一次for迴圈時,i=2,同理輸出依然是2,

  • #下次for迴圈時,i=1,同理輸出結果是2,此時執行foe迴圈的i--操作,i=0,不滿足i>0的條件了,此時for迴圈退出。

所以,最後輸出結果為:2222

後記

在許多公司的筆試題中,千萬別小看,都是有坑的,一不小心自己就掉進去了。遇到這種關於循環的筆試題,建議,自己冷靜思考,一步一步來。


在筆試中,程式碼這塊,越是看起來簡單的題目,越不能掉以輕心。

以上是餓了麼筆試題,看似簡單,難倒一批人的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:Java后端技术全栈。如有侵權,請聯絡admin@php.cn刪除