为了账号安全,请及时绑定邮箱和手机立即绑定

判断一个整数是否是奇数

标签:
Java

题目很简单,完成代码,判断一个整数是否是奇数:

public boolean isOdd(int i)

相信相当数量的人都已经在准备吐槽了,只要看过《编程珠玑》的人都知道这道题的答案和其中极为简单的道理。不过别着急骂街,不管你信不信,这道笔试题我拿到的答案好多都长这样:

public boolean isOdd(int i) {
    if (i % 2 == 1) {
        System.out.println("是奇数");
    } else {
        System.out.println("是偶数");
    }
}

然后编译一下,发现错误了,挠挠头,顶多改成这样:

public boolean isOdd(int i) {
    if (i % 2 == 1) {
        return true;
    } else {
        return false;
    }
}

好吧,我承认我在筛选简历的能力可能有一些问题,不过不管你信不信,好多大厂工作了几年的程序员,都会写出如上风格的代码。

于是我继续进行引导:

我:“这个函数的定义要求返回一个什么类型的值?”

候选人看了看题干:“布尔类型。”

我:“那么,你if后面的括号里面的表达式的值是一个什么类型的?”

引导到这一步的时候,依然有高达两成的候选人选择了放弃,表示他们不知道。好吧,我真的不知道你们来面试这个职位的信心何在。不过大部分人想了想,还会回答出正确答案:

候选人:“也是布尔类型。”

我:“然后呢?”

有少量候选人虽然没说出来,但是我能看出来他们觉得这只是一个巧合,并不知道怎么进行下一步。不过,大多数人想了想之后,还是会优化成如下代码:

public boolean isOdd(int i) {
    return i % 2 == 1;
}

终于过了第一关了,进行第二关的引导:

我:“那我传进来一个-1呢?”

将近一半的人在想了想之后会嘴硬地表示他们从小被教导只有自然数才有奇数偶数之分,负数没有奇偶这一说。剩余的人接受了这个设定,想了一会儿,改成这样:

public boolean isOdd(int i) {
    return i % 2 == 1 || i % 2 == -1;
}

并且在提示之后优化成这样:

public boolean isOdd(int i) {
    return i % 2 != 0;
}

好吧,这是迄今为止第一个能通过编译且完全满足了需求的代码实现了。说实话,一开始就写成这样的人,如果没有其他什么明显的缺点的话,我这里基本就能通过了。我承认我的要求比较低,但是来面试的人能直接写出这样的真的不太多,粗略地估计的话,大概占一到两成吧。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
33
获赞与收藏
206

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消