饿了么笔试题,看似简单,难倒一批人

本文分析了一道来自饿了么笔试的Java编程题目,涉及for循环、do...while循环和break的使用。题目看似简单,但答案并不直观,多数人给出了错误的答案。博主详细解释了代码执行过程,最终得出正确输出为2222。提醒读者在笔试中面对看似简单的题目也要谨慎对待。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇是1000期面试系列文章的第117期,持续更新中.....

 回复“面试”获取优质面试资源!

面试专栏

面试专栏

精选1000 期 java相关面试题,以及技术知识点,帮助你提升技术、收割offer!

16篇原创内容

公众号

这是一道网友爆料的饿了么笔试题目,第一眼看这道题还是不难的,但是能做对却不简单。

请看题目

请写出写明这段代码输出什么?

/**
 * @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

后记

在很多公司的笔试题中,千万别小看,都是有坑的,一不小心自己就掉进去了。遇到这种关于循环的笔试题,建议,自己冷静思考,一步一步来。

图片

在笔试中,代码这块,越是看起来简单的题目,越不能掉以轻心。

最后,记得帮忙点个赞!分享给更多的朋友。

推荐阅读

常见的SQL面试题:经典50例

面试官:分布式事务解决方案(附代码)

合奥科技网络 面试(含参考答案)

阿里面试官:接口的幂等性怎么设计?

112期汇总,建议收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值