80%的人都回答不上来的一道Java面试题

四面美团开发岗,成功斩获offer,这份面经总结终结篇看完就是血赚! 这篇文章分享我一个学弟的美团实习面试经历,万万没想到现在大厂实习面试也这么难,下面是他的面经,各位读者老哥可以参考浏览。 美团我是在拉勾网上投的简历,之前也投过一次,简历都没通过删选,后来让学姐帮我改了一下简历,重新投另一个部门,获得了面试机会。10月23日中午HR打电话过来预约了下午4点半面试,说会在线写代码,让我准备好网络环境。结果5点半还没打电话过来,被放鸽子。与hr重新沟通过后,确定下周一下午再面,可是跟hr沟通预约这一套貌似在美团并没有什么用。 美团技术一面20分钟 晚7点,因为想到下周一才 阅读详情

 

这可能是历史上最简单的一道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;
}

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

但是这里还没完呢,还有最重要的第三关呢:

我:“有更好的办法吗?”

候选人:“?”

我:“我觉得取模操作比较慢,有更快的解决方案吗?”

除了少数人能自己想想就想出来了之外,绝大部分(毫不夸张)候选人表示没有或者不知道,于是进行下一步提示:

我:“奇数和偶数转换成二进制有什么区别?”

相当一部分候选人表示自己不懂什么叫二进制和位运算,有的还表示java不是c语言,不用研究这些,就跟很多评论会吐槽我在装x一样。少部分候选人想了想,会怯怯地回答。

候选人:“奇数最后一位是1,偶数最后一位是0。”

我:“然后呢?”

这里很奇怪的点是,大部分能聊到这里来的候选人会想起来移位操作,我真的不知道是为什么,虽然这道题确实可以有这种操作:

public boolean isOdd(int i) {
    return i >> 1 << 1 != i;
}

但是这根本不是重点好吧!!!

总之,无论如何,能在第三关的各种引导之后,能写出下面这个结果来的人,真的不多。能一开始没有任何引导的就写出来的人,至今只见过两个,一个我去哪儿都带着,一个拒了我的offer。

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

别以为这就完了!终极boss来了:

我:“这样是不是比上面取模运算要快?”

候选人:“那当然了,位运算肯定快啊。”

我:“但是我们实际代码测试过,发现上面的按位与操作和取模操作,实际运行的时间是差不多的,为什么呢?”

候选人心里mmp:“闹了半天你这是在逗我玩啊???”

然而真正能回答出原因来的人,面试过程中我没见过,可能是大牛都看不上我所在的公司吧。只有在某公司的时候,一个同事想了想,给出了我正确答案。难道是我经历的公司都太low了么……

小结:

最后小编整理了一份Java相关的资料,需要的小伙伴可以小编免费领取

 

 

保姆级教程:用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信(附完整代码) 本文详细介绍了如何利用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信,涵盖硬件连接、寄存器配置、时序优化及FPGA接口设计等关键步骤。通过实例代码和调试技巧,帮助开发者快速掌握高效数据交互技术,提升嵌入式系统设计能力。 阅读详情

相关推荐

Mac用户必看:Parallels Desktop 18.1.1最新破解版安装与优化全攻略(附资源)

本文为Mac用户提供Parallels Desktop 18.1.1的详细安装与优化指南,涵盖虚拟化技术选型、专业级配置流程及性能调优技巧。重点解析Parallels Desktop在图形加速、系统资源调度方面的核心优势,并分享生产力增强技巧与典型应用场景实战方案,帮助用户最大化利用这一高效虚拟化工具。

weixin_29240343的博客 824

亡羊补牢,犹未迟也丨Java程序员面试时如果发现回答不好,该怎么办?

大家在面试时,哪怕准备再充分,也不都可能一帆风顺。请记住:面试回答不好是很正常的,尤其在你刚开始面试的时候。 所以你一定要有良好的心态:面试成了最好,不成的话面试官是免费给你一次锻炼的机会,而且免费告诉了你一些面试题,你也是赚的。但如果你一方面被在面试中表现不好,同时另一方面什么都不做,那么我可以说,哪怕面试十次也不会提高,而且即使你进了公司,你的薪资待遇也是被严重低估的。 在本文里,就将结合本...

Java_supermanNO1的博客 811

箱式连续提升机

箱式连续提升机,是对具有高度差较大(>1500mm)的输送线之间进行连接,将箱式物资进行连续输送的提升(或下降)的输送设备,可根据输送线的具体输送要求作相应的参数设计。目前的箱式连续提升机种类比较多,常用的形式主要有Z型和C型,工作原理相同,只是入口和出口分别在两侧和同侧。

月生沧溟 1249

Java程序员面试失败的五大原因

01 说得太少 尤其是那些开放式的问题,如“请介绍下你自己”或“请讲一下你曾经解决过的复杂问题”。 面试官会通过你对这些技术和非技术问题的回答来评估你的激情。他们也会通过模拟团队氛围和与你的交流互动来判断你的经验和能力。 所以,仅仅只用两三句话来回答不但不能显示出你对这个专业的兴趣,还会让整个面试过程显得非常无聊。 如果你不能很好地说明你的经验、成就和技能可以给企业带来的价值,那么你的竞争力毫无疑问就高不起来。 所以,你需要对一些最常见的开放式问答作充分的准备,学会推销自己。 02 说得太多 不断地说,不断

que_cgmx9880的博客 1240

ROS TF坐标转换实战:从零搭建机器人坐标系(附常见问题排查)

本文提供了一份ROS TF坐标转换的实战指南,详细讲解了如何从零为机器人搭建完整的坐标系,并深入解析了TF的原理。内容涵盖静态与动态坐标变换的发布、URDF模型使用、以及Rviz和rqt_tf_tree等可视化调试工具。文章还附带了常见问题排查表,帮助开发者快速定位并解决TF树断裂、数据错位等典型问题。

weixin_29268385的博客 204

20231126-超详细Isaac Gym安装教程(基于双系统版本)

我一开始使用了WSL2虚拟环境试了集群服务器里面的交互式桌面,但是都失败了,WSL2因为没办法调用系统的GPU,应该有办法配置但我放弃了,感兴趣的可以自己探索(图片贴出来了)。服务器上出现的问题是Segmentation fault (core dumped),目前还没解决,有可能是驱动和cuda版本的问题(后面有时间再解决)等上图右边都达到了100%,就创建了一个名为rlgpu的conda环境,然后会出现success。注意安装版本要低于3.9!参考链接:非常详细,大家直接看这个博主的安装就行。

m0_37802038的博客 2万+

一名高水平的程序员,为什么面试总是失败?

作为Java面试官,我发现有三个值得注意的观点。首先,很多程序员认为“高水平”就是熟练掌握业务知识并能解决单机版问题,但在面试官眼里,这只是基本的增删改查操作而已。 其次,真正掌握高并发、微服务和云技术等价值技能的程序员,却不一定懂得如何在面试中展示自己的专业能力,或者在面试官主导的面试中得到展示的机会很少。最后,在面试中,“说”比“做”更重要,因此程序员需要准备好展示自己的技能,并掌握如何在面试中凸显自己的优点。即使技能不够强,也可以依靠出色的面试表现获得更高级别的职位。例如,有些培训班学员就是通过出色

java小白翻身 1592

14、多级快速多极子算法(MLFMA)详解

多级快速多极子算法(MLFMA)是一种高效加速矩阵向量乘法(MVM)的数值方法,广泛应用于电磁场积分方程求解中。该算法通过构建多级树结构,将MVM分解为近场直接计算和远场分组计算两部分,利用递归聚类、聚合-平移-分解三阶段处理远场相互作用,并结合采样、模式计算与优化策略,将计算复杂度从O(N^2)降低至O(N log N)。博文详细阐述了MLFMA的核心步骤、数学推导、计算复杂度及实际应用中的优化技术,如伽辽金方案改进、对称性利用和反插值方法,为大规模电磁问题的高效求解提供了系统性指导。

t8u9v0w1x的博客 242

应聘Java岗啥都答不出,面试官无奈吐槽“啥时候能有人给我挖坑”

Java 面试中的重要话题 除了你看到的惊人的问题数量,我也尽量保证质量。我不止一次分享各个重要主题中的问题,也确保包含所谓的高级话题,这些话题很多程序员不喜欢准备或者直接放弃,因为他们的工作不会涉及到这些。 Java NIO 和 VM 底层就是最好的例子。你也可以将设计模式划分到这一类中,但是越来越多有经验的程序员了解 GOF 设计模式并应用这些模式。我也尽量在这个列表中包含2020 年最新的面试问题,这些问题可能是大家关注的核心。为了给你一个大致的了解,下面列出这份 Java 面试问题列表包含的主题

文章中资料均可获取,有需要请添加yunduoa2019即可 8471

学Simulink——基于大数据处理与云计算的场景实例:无人机与云计算中心之间的高效数据传输链路设计

本文以无人机与云计算中心的高效数据传输链路设计为例,手把手指导使用Simulink进行系统级建模。针对智慧城市、灾害监测等场景中无人机采集的海量数据(视频、图像、点云等),构建包含数据源、传输协议、无线链路、云接入和性能分析的五层架构模型。通过智能数据压缩、多链路聚合和QoS优先级调度等关键技术,实现5G+Wi-Fi等多通信技术的自适应切换。仿真结果表明,5G+Wi-Fi链路聚合在城市环境中表现最优,而4G+卫星组合适合偏远地区。该模型为无人机实时数据传输提供了有效的设计方法和优化方向,可拓展至边缘计算、A

xiaoheshang_123的博客 120

halcon知识:常见三种模板匹配方法总结

halcon的三种模板匹配方法总结,halcon有三种模板匹配方法:即Component-Based、Gray-Value-Based、Shaped_based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配,此外还有变形匹配和三维模型匹配也是分属于前面的大类 本文只对形状匹配做简要说明和补充: Shape_Based匹配方法: 上图介绍的是形状匹配做法的一般流程及模板制作的两种方法。 先要补充点知识:形状匹配常见的有四种情况 一般形状匹配模板shape_model、线性变

gongdiwudu的专栏 4万+

面试官一次次问Java的锁时,你是怎么回答的?80%的人都说不完善(1)

大家看完有什么不懂的可以在下方留言讨论.作者:一角钱链接:https://juejin.im/post/6870484893295050759上述知识点,囊括了目前互联网企业的主流应用技术以及能让你成为“香饽饽”的高级架构知识,每个笔记里面几乎都带有实战内容。很多人担心学了容易忘,这里教你一个方法,那就是重复学习。

2401_84688608的博客 1026

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

背完这10个经典面试答案,80%的面试都能喜提offer

前段时间,在网上看到一个很火的投票贴,关于面试感受的: 面试后,你会不会觉得自己表现远远低于真实水平? 有90%以上的人选择了“一出门脑子里就有成千上百个更好的答案”,这代表什么? 说明大家其实都比较有能力,但在面试时不能很好的展现出来...... 今天小编总结了10条经典面试的回答套路,让你在面试时有效地展示自己的才华,把握来之不易的机会!谈谈你的简历(自我介绍) 可以根据以下三个步骤去回答问...

weixin_34232744的博客 908

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

最新Java高级面试题汇

面试准备 不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试: 1. 自我介绍。(介绍自己的项目经历以及一些特长而不是简单自我介绍喜好等) 2. 自己面试中可能涉及哪些知识点、那些知识点是重点。 3. 面试中哪些问题会被经常问到、面试中自己该如何回答。 4. 自己的简历该如何写。 “80%的offer掌握在20%的人手中” 这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部

m0_56824583的博客 1529

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

程序员醒醒吧,Anthropic自己的代码都被AI写了80%了,就你还有多少价值?(非常详细)从零基础到精通,收藏这篇就够了!

刚才看了一段访谈,特别有意思!这是来自全球前三的AI公司的工程团队的Leader Boris Cherny的。核心一句话就是:也就是Antrhopic自己的代码有80%以上是用AI完成的。我转录了所有的中间对话:可以看到完整的意思是:大概有80%甚至更高的代码是用Claude写的。通常的工作方式是Claude先写一波,如果不好了,再用人干。不过涉及到一些特别复杂的,可能需要人决策的事通常是不用Claude干的。因为解释给Claude再让它干远没有自己干的容易。

Libra1313的博客 796

网易二面:CPU狂飙900%,该怎么处理?

尼恩提示:大家介绍场景的时候,就说自己主要涉及了两个场景, Java进程飙升900%、MySQL进程飙升900%两种场景,其实,这两个场景就足够讲半天了, 其他的,使用规避技巧规避一下就行。转换后的结果分别为7665,由于导出的线程快照中线程的nid是16进制的,而16进制以0x开头,所以对应的16进制的线程号nid为0x7665。但是,一旦高并发场景,要么走到了死循环,要么就是在做大量的 GC, 容易出现这种 CPU 飙升的情况,CPU飙升900%,是完全有可能的。目测数据量不大,也就几百万条而已。

架构师尼恩 2万+

最全BAT大型互联网公司面试题整理,没有之一,掌握80%进阿里没问题

这些题目是网友去百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。网上的都是按照公司划分的,想找具体某一方面的知识点有点不好找,我这里就根据知识点分门别类的整理了一下,想看哪一块可以快速找到,希望可以帮助大家,祝大家求职顺利。本文同步发布在github上,想要md文件的,有兴趣的可以去github下载下来研究,同时也欢迎网友提交面试题库,欢迎点赞和留言。github.com/AweiLoveAnd…主要分为以下几

m0_67617438的博客 1058

去拼多多闭着眼涨薪80%,但。。。

今日面试题:Java 中 wait() 和 sleep() 的区别?

codenav的博客 579

【大厂面试真题自测】你是什么水平?答过这些必问基础面试题 通过率提高80%!

点赞关注,不会迷路! 前言 持续更新Java学习面试优质内容。最近有人跟我说,看问题的时候总是会忍不住去瞄答案。这回我把大厂面试常问的一些技术问题合集整理出来了,正好你们也可以自检一下。这些基础问题回答好了,通过率就高了! 正文 测试开始 准备好了吗? 并发编程28题 Synchronized 用过吗,其原理是什么? 你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁? 什么是可重入性,为什么说 Synchronized 是可重入锁? ...

weixin_50333534的博客 204

java迅雷面试题如果你回答80%薪水至少2万/月

678

字节跳动的面试官甩给了我一份面试题说,如果我都能回答出来,其他公司的技术面80%几率能过

大家好,我是Java大厂面试君。 是的,没有错,年前我去字节面试了! 给大家分享一个面试小插曲 面试官:“你结婚了吗?” 我:“没有” 面试官:“我也没有” 言归正传,具体的简历怎么写和面试流程我就不说了,很多人都有分享。 面完之后问我什么时候能到岗,我说再考虑考虑。 此次面试可谓是从java基础语法、JVM、多线程到MySQL、spring、springboot、springcloud,再有dubbo、mybatis、redis、网络底层IO、Linux、MQ、zookeeper、netty、大数据、

超越无限_ 2226

背完这10个经典面试答案,80%的面试都能喜提offer,2024年最新2024spring面试题

因此,我获得了另外一家公司市场部实习生的岗位,实习期间,协助公司完成新产品上线及推广,最终达到了XXX的结果,通过实习,我发现这是最适合我的岗位,我也更想迎接新的挑战。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值。这个问题的目的是HR想了解你的求职动机和对工作的态度,更是希望了解你对公司业务以及所处行业的熟悉和了解程度。如果你对薪酬的要求太低,那显然贬低自己的能力;回答套路三步走:明确自己的职业定位,确认自己的职业目标,分解职业目标的时间节点。

2401_84103100的博客 514

如何回答面试题

此文章包含在回答面试问题的基本要求,以及在遇到各类问题时如何回答的示例。

干货笔记 511

2023Java最新真实面试题汇总(持续更新)

完字节跳动 1、为什么MySQL索引更适合B+树而不是二叉树、B树 https://blog.youkuaiyun.com/qq_38038480/article/details/81738079 2、微服务下的用户登录权限校验解决方案 https://www.cnblogs.com/zxfei/p/11716822.html 3、微服务之熔断、降级、限流 熔断是在客户端还是服务端? https://blog.youkuaiyun.com/aa1215018028/article/details/81700796

chuanchengdabing的博客 1万+

Java面试题及答案整理

比如在开发一个对账批处理系统时,我根据任务IO密集的特点和服务器资源,设置了较大的队列容量和合适的核心线程数,避免了任务被频繁拒绝或创建过多线程导致上下文切换开销。我记得在项目中处理一个商品分类映射时,因为键的对象没有正确重写hashCode和equals,导致出现了内存泄漏和获取数据失败的问题,这就是因为破坏了HashMap基于哈希桶存储和比较的基本原则。坦诚说:“这个技术点/框架(比如某些中间件的底层协议、非常前沿的技术)我目前项目中没有深入应用过,但我了解它要解决的核心问题以及它在技术栈中的定位。

m0_50180963的博客 896
上一篇: 阿里巴巴的P8架构师会辞职吗?
下一篇: 六个月离职空档期获得足够时间反思自我+常见Netty面试题详解
Java斗帝之路
博客等级 码龄7年 2392粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值