Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!

简介: 小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。



Hi,大家好,我是小米,一个29岁爱分享技术的程序员。今天想给大家聊聊我前几天面试的一次经历,说起来有点搞笑,但也算收获满满。

这次面试是一家国内知名互联网公司,面试官的提问套路真是防不胜防。其中一个问题就是:Java中 & 和 && 的区别。别看问题简单,要不是平时积累够多,我可能真就掉坑里了!

开场翻车:面试官的灵魂发问

面试官微微一笑,问我:“小米,你知道 & 和 && 的区别吗?”

我心里想着这不就是基础题嘛,脱口而出:“& 是按位与,&& 是逻辑与,两者用法不同。”说完,我自信地等着面试官点头。

结果,面试官追问了一句:“那如果在条件判断中,& 和 && 有啥区别呢?”

这一问,直接让我警觉起来。单纯的定义显然不够,面试官想挖更深的坑。

救场:理论知识解析

还好,我临场发挥,开始给面试官细细讲解。以下是我的回答逻辑(希望对大家有帮助!):

1. 基本概念

按位与 &:对两个二进制位按位进行 “与”运算。只有两个位都为 1,结果才为 1;否则结果为 0。

例子

逻辑与 &&:只适用于布尔值。用于判断两个布尔表达式是否都为 true,如果第一个为 false,直接短路,不再判断第二个表达式。

例子

2. 条件判断中的区别

这是重点!面试官其实考察的是 & 和 && 在条件判断中的不同。

&:非短路与

在条件判断中,& 不管左侧的表达式结果如何,右侧都会被执行。

例子

&&:短路与

如果左侧表达式为 false,右侧表达式直接被忽略。

例子

3. 实战场景:短路与的妙用

面试官听我讲到这,点了点头,但接着又问了一个场景题:

“如果有两个条件判断,第二个条件可能会抛出异常,你用 & 和 && 的效果会有什么区别?”

这个问题才是真正的杀手锏!于是我回答:

  • 使用 & 时,代码可能报错,因为即使第一个条件是 false,第二个条件也会被执行。
  • 而使用 && 时,如果第一个条件是 false,第二个条件根本不会被计算,自然不会抛异常。

代码验证

4. 总结成表格:一目了然

尾声:面试官被我“反杀”

讲完这些后,面试官微微一笑,说:“看来你对基础知识还是很扎实的,那换个问题……”

那一刻,我内心咆哮:又来?!

好在有惊无险,整场面试下来我和面试官“斗智斗勇”,最后成功拿到 offer。

彩蛋:为什么面试会爱考这题?

聊到这里,小伙伴们可能会好奇:& 和 && 这么简单的知识点,为什么面试官喜欢考?

其实,这道题背后反映了几件事:

  • 基础扎实与否:很多人会混淆 & 和 && 的用法。能回答清楚,说明你对 Java 基础语法熟悉。
  • 逻辑清晰与否:不仅要知道区别,还得能说明实际场景中的影响,比如短路特性。
  • 代码思维与否:面试官喜欢通过条件判断和异常来挖坑,看你是否具备写健壮代码的能力。

END

面试别慌! 问到基础题,别轻视,越基础的东西,越考验你的理解深度。

多写代码! 不管是 & 还是 &&,记住光看理论没用,敲代码练习才是王道。

今天的分享就到这里啦,关于 & 和 && 的问题,大家还有什么想问的,欢迎留言!小米随时在线解答~

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号软件求生,获取更多技术干货!

相关文章
|
13天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
44 2
|
18天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
24天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
20天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
43 4
|
21天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
71 4
|
2月前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
97 1
Java面试题之Java集合面试题 50道(带答案)
|
2月前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
55 5
|
2月前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
23 1
|
2月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
30 3
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
439 37