登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
Gitee 年度开源项目评选中~
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
3
Star
45
Fork
21
DreamCoders
/
CoderGuide
代码
Issues
1169
Pull Requests
0
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
【踩坑题】一道简单的Java面试题,但答错率很高
待办的
#IAJKS2
陌生人
拥有者
创建于
2024-08-13 10:05
<blockquote style="text-align: start;">这可能是历史上最简单的一道java面试题了。</blockquote><p style="text-align: start;">题目很简单,完成代码,判断一个整数是否是奇数:</p><pre style="text-align: start;"><code class="language-java">public boolean isOdd(int i)</code></pre><p style="text-align: start;">相信相当数量的人都已经在准备吐槽了,只要看过《编程珠玑》的人都知道这道题的答案和其中极为简单的道理。不过别着急骂街,不管你信不信,这道笔试题我拿到的答案好多都长这样:</p><pre><code class="language-java">public boolean isOdd(int i) { if (i % 2 == 1) { System.out.println("是奇数"); } else { System.out.println("是偶数"); } }</code></pre><p><span style="color: rgb(62, 62, 62); background-color: rgb(255, 255, 255); font-size: 15px;">然后编译一下,发现错误了,挠挠头,顶多改成这样:</span></p><pre><code class="language-java">public boolean isOdd(int i) { if (i % 2 == 1) { return true; } else { return false; } }</code></pre><p style="text-align: start;">好吧,我承认我在筛选简历的能力可能有一些问题,不过不管你信不信,好多大厂工作了几年的程序员,都会写出如上风格的代码。</p><p style="text-align: start;">于是我继续进行引导:</p><p style="text-align: start;">我:“这个函数的定义要求返回一个什么类型的值?”</p><p style="text-align: start;">候选人看了看题干:“布尔类型。”</p><p style="text-align: start;">我:“那么,你if后面的括号里面的表达式的值是一个什么类型的?”</p><p style="text-align: start;">引导到这一步的时候,依然有高达两成的候选人选择了放弃,表示他们不知道。好吧,我真的不知道你们来面试这个职位的信心何在。不过大部分人想了想,还会回答出正确答案:</p><p style="text-align: start;">候选人:“也是布尔类型。”</p><p style="text-align: start;">我:“然后呢?”</p><p style="text-align: start;">有少量候选人虽然没说出来,但是我能看出来他们觉得这只是一个巧合,并不知道怎么进行下一步。不过,大多数人想了想之后,还是会优化成如下代码:</p><pre><code class="language-java">public boolean isOdd(int i) { return i % 2 == 1; }</code></pre><p style="text-align: start;">终于过了第一关了,进行第二关的引导:</p><p style="text-align: start;">我:“那我传进来一个-1呢?”</p><p style="text-align: start;">将近一半的人在想了想之后会嘴硬地表示他们从小被教导只有自然数才有奇数偶数之分,负数没有奇偶这一说。剩余的人接受了这个设定,想了一会儿,改成这样:</p><pre><code class="language-java">public boolean isOdd(int i) { return i % 2 == 1 || i % 2 == -1; }</code></pre><p><span style="color: rgb(62, 62, 62); background-color: rgb(255, 255, 255); font-size: 15px;">并且在提示之后优化成这样:</span></p><pre><code class="language-java">public boolean isOdd(int i) { return i % 2 != 0; }</code></pre><p style="text-align: start;">好吧,这是迄今为止第一个能通过编译且完全满足了需求的代码实现了。说实话,一开始就写成这样的人,如果没有其他什么明显的缺点的话,我这里基本就能通过了。我承认我的要求比较低,但是来面试的人能直接写出这样的真的不太多,粗略地估计的话,大概占一到两成吧。</p><p style="text-align: start;">但是这里还没完呢,还有最重要的第三关呢:</p><p style="text-align: start;">我:“有更好的办法吗?”</p><p style="text-align: start;">候选人:“?”</p><p style="text-align: start;">我:“我觉得取模操作比较慢,有更快的解决方案吗?”</p><p style="text-align: start;">除了少数人能自己想想就想出来了之外,绝大部分(毫不夸张)候选人表示没有或者不知道,于是进行下一步提示:</p><p style="text-align: start;">我:“奇数和偶数转换成二进制有什么区别?”</p><p style="text-align: start;">相当一部分候选人表示自己不懂什么叫二进制和位运算,有的还表示java不是c语言,不用研究这些,就跟很多评论会吐槽我在装逼一样。少部分候选人想了想,会怯怯地回答。</p><p style="text-align: start;">候选人:“奇数最后一位是1,偶数最后一位是0。”</p><p style="text-align: start;">我:“然后呢?”</p><p style="text-align: start;">这里很奇怪的点是,大部分能聊到这里来的候选人会想起来移位操作,我真的不知道是为什么,虽然这道题确实可以有这种操作:</p><pre><code class="language-java">public boolean isOdd(int i) { return i >> 1 << 1 != i; }</code></pre><p style="text-align: start;">但是这根本不是重点好吧!!!</p><p style="text-align: start;">总之,无论如何,能在第三关的各种引导之后,能写出下面这个结果来的人,真的不多。能一开始没有任何引导的就写出来的人,至今只见过两个,一个我去哪儿都带着,一个拒了我的offer。</p><pre><code class="language-java">public boolean isOdd(int i) { return (i & 1) == 1; }</code></pre><p style="text-align: start;">别以为这就完了!终极boss来了:</p><p style="text-align: start;">我:“这样是不是比上面取模运算要快?”</p><p style="text-align: start;">候选人:“那当然了,位运算肯定快啊。”</p><p style="text-align: start;">我:“但是我们实际代码测试过,发现上面的按位与操作和取模操作,实际运行的时间是差不多的,为什么呢?”</p><p style="text-align: start;">候选人心里mmp:“闹了半天你这是在逗我玩啊???”</p><p style="text-align: start;">然而真正能回答出原因来的人,面试过程中我没见过,可能是大牛都看不上我所在的公司吧。只有在某公司的时候,一个同事想了想,给出了我正确答案。</p><p style="text-align: start;">难道是我经历的公司都太low了么……</p><blockquote style="text-align: start;"><span style="color: rgba(0, 0, 0, 0.5); font-size: 13px;">来源:https://zhuanlan.zhihu.com/p/57859872</span></blockquote>
<blockquote style="text-align: start;">这可能是历史上最简单的一道java面试题了。</blockquote><p style="text-align: start;">题目很简单,完成代码,判断一个整数是否是奇数:</p><pre style="text-align: start;"><code class="language-java">public boolean isOdd(int i)</code></pre><p style="text-align: start;">相信相当数量的人都已经在准备吐槽了,只要看过《编程珠玑》的人都知道这道题的答案和其中极为简单的道理。不过别着急骂街,不管你信不信,这道笔试题我拿到的答案好多都长这样:</p><pre><code class="language-java">public boolean isOdd(int i) { if (i % 2 == 1) { System.out.println("是奇数"); } else { System.out.println("是偶数"); } }</code></pre><p><span style="color: rgb(62, 62, 62); background-color: rgb(255, 255, 255); font-size: 15px;">然后编译一下,发现错误了,挠挠头,顶多改成这样:</span></p><pre><code class="language-java">public boolean isOdd(int i) { if (i % 2 == 1) { return true; } else { return false; } }</code></pre><p style="text-align: start;">好吧,我承认我在筛选简历的能力可能有一些问题,不过不管你信不信,好多大厂工作了几年的程序员,都会写出如上风格的代码。</p><p style="text-align: start;">于是我继续进行引导:</p><p style="text-align: start;">我:“这个函数的定义要求返回一个什么类型的值?”</p><p style="text-align: start;">候选人看了看题干:“布尔类型。”</p><p style="text-align: start;">我:“那么,你if后面的括号里面的表达式的值是一个什么类型的?”</p><p style="text-align: start;">引导到这一步的时候,依然有高达两成的候选人选择了放弃,表示他们不知道。好吧,我真的不知道你们来面试这个职位的信心何在。不过大部分人想了想,还会回答出正确答案:</p><p style="text-align: start;">候选人:“也是布尔类型。”</p><p style="text-align: start;">我:“然后呢?”</p><p style="text-align: start;">有少量候选人虽然没说出来,但是我能看出来他们觉得这只是一个巧合,并不知道怎么进行下一步。不过,大多数人想了想之后,还是会优化成如下代码:</p><pre><code class="language-java">public boolean isOdd(int i) { return i % 2 == 1; }</code></pre><p style="text-align: start;">终于过了第一关了,进行第二关的引导:</p><p style="text-align: start;">我:“那我传进来一个-1呢?”</p><p style="text-align: start;">将近一半的人在想了想之后会嘴硬地表示他们从小被教导只有自然数才有奇数偶数之分,负数没有奇偶这一说。剩余的人接受了这个设定,想了一会儿,改成这样:</p><pre><code class="language-java">public boolean isOdd(int i) { return i % 2 == 1 || i % 2 == -1; }</code></pre><p><span style="color: rgb(62, 62, 62); background-color: rgb(255, 255, 255); font-size: 15px;">并且在提示之后优化成这样:</span></p><pre><code class="language-java">public boolean isOdd(int i) { return i % 2 != 0; }</code></pre><p style="text-align: start;">好吧,这是迄今为止第一个能通过编译且完全满足了需求的代码实现了。说实话,一开始就写成这样的人,如果没有其他什么明显的缺点的话,我这里基本就能通过了。我承认我的要求比较低,但是来面试的人能直接写出这样的真的不太多,粗略地估计的话,大概占一到两成吧。</p><p style="text-align: start;">但是这里还没完呢,还有最重要的第三关呢:</p><p style="text-align: start;">我:“有更好的办法吗?”</p><p style="text-align: start;">候选人:“?”</p><p style="text-align: start;">我:“我觉得取模操作比较慢,有更快的解决方案吗?”</p><p style="text-align: start;">除了少数人能自己想想就想出来了之外,绝大部分(毫不夸张)候选人表示没有或者不知道,于是进行下一步提示:</p><p style="text-align: start;">我:“奇数和偶数转换成二进制有什么区别?”</p><p style="text-align: start;">相当一部分候选人表示自己不懂什么叫二进制和位运算,有的还表示java不是c语言,不用研究这些,就跟很多评论会吐槽我在装逼一样。少部分候选人想了想,会怯怯地回答。</p><p style="text-align: start;">候选人:“奇数最后一位是1,偶数最后一位是0。”</p><p style="text-align: start;">我:“然后呢?”</p><p style="text-align: start;">这里很奇怪的点是,大部分能聊到这里来的候选人会想起来移位操作,我真的不知道是为什么,虽然这道题确实可以有这种操作:</p><pre><code class="language-java">public boolean isOdd(int i) { return i >> 1 << 1 != i; }</code></pre><p style="text-align: start;">但是这根本不是重点好吧!!!</p><p style="text-align: start;">总之,无论如何,能在第三关的各种引导之后,能写出下面这个结果来的人,真的不多。能一开始没有任何引导的就写出来的人,至今只见过两个,一个我去哪儿都带着,一个拒了我的offer。</p><pre><code class="language-java">public boolean isOdd(int i) { return (i & 1) == 1; }</code></pre><p style="text-align: start;">别以为这就完了!终极boss来了:</p><p style="text-align: start;">我:“这样是不是比上面取模运算要快?”</p><p style="text-align: start;">候选人:“那当然了,位运算肯定快啊。”</p><p style="text-align: start;">我:“但是我们实际代码测试过,发现上面的按位与操作和取模操作,实际运行的时间是差不多的,为什么呢?”</p><p style="text-align: start;">候选人心里mmp:“闹了半天你这是在逗我玩啊???”</p><p style="text-align: start;">然而真正能回答出原因来的人,面试过程中我没见过,可能是大牛都看不上我所在的公司吧。只有在某公司的时候,一个同事想了想,给出了我正确答案。</p><p style="text-align: start;">难道是我经历的公司都太low了么……</p><blockquote style="text-align: start;"><span style="color: rgba(0, 0, 0, 0.5); font-size: 13px;">来源:https://zhuanlan.zhihu.com/p/57859872</span></blockquote>
评论 (
0
)
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
Java
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
未关联
master
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)
1
https://gitee.com/DreamCoders/CoderGuide.git
git@gitee.com:DreamCoders/CoderGuide.git
DreamCoders
CoderGuide
CoderGuide
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册