最近无意间看到一个有趣的帖子:

var a = ???;
if(a == 1 && a == 12){  console.log(a);
}

这是一个JS社区抛出来的问题。第一眼看到这个问题的时候,感觉这似乎是一个无稽之谈,一个变量怎么可能会同时满足俩个条件呢!

不过后来深入思考一下,发现这类问题有点意思…

如果你也觉得不可能的话,一起随着文章看下去。你也会觉得有点意思~

下文不仅仅涉及的是JS,还有Java等等其他语言~

正文

接下来咱们来尝试解决这个问题。假设 if(a1&&a12)是等于 true的,那么a肯定不可能是一个“普通的变量”。它势必要有能力在执行的时候能够动态改动值。

一、JS版本

如果出于这种出发点,我们是不是能够假设:如果能够重新类似a方法的执行方法似乎就能够做到这种结果。

接下来这里贴一种答案:

看到这个答案,我猜搞Java或其他面向对象语言的同学有些“懵逼”。不过如果仔细看,仔细想其实也是可能从中看出一些解题思路的。

当然可能有JS的小伙伴想要求解答,这里碰巧写过解析,这里就贴出他的文章地址

看了JS的答案,我一直顺着这个解题思路再想:Java中有没有可能完成这个等式?只能说自己“功力太浅”始终没有找到合适的解决方式…因此自己就Google了一下,发现果然有“闲的蛋疼”的人提供了答案,甚至还提供了多种版本:

二、Java版本

这里就直接贴答案了,虽然不能说非常的贴近于题目,但也着实展示了其中的巧妙:

Class cache = Integer.class.getDeclaredClasses()[0];
Field c = cache.getDeclaredField("cache");
c.setAccessible(true);
Integer[] array = (Integer[]) c.get(cache);
// array[129] is 1
array[130] = array[129];
// Set 2 to be 1
array[131] = array[129];
// Set 3 to be 1
Integer a = 1;
if(a == (Integer)1 && a == (Integer)2 && a == (Integer)3){ System.out.println("Success");
}

另一个答案,说实话比较“牛逼”了:

这里用到了PowerMockRunner,也算是咱们解题思路的上最直接的帮手…

尾声

写这篇文章其实并不是为了去深挖这些语言特性,只是单纯的觉得很有意思。

如果从这个题目本身出发,它既可以考察解题者的语言特性掌握程度;也可以考察出解题者对待问题,尝试解决问题的方法论。学习这条路上,任重而道远。

来源:https://www.toutiao.com/i6805578326279717390

面试题:a==1 a==2 a==3 是 true 还是 false?相关推荐

  1. java 关键字(面试题)

    学而时习之,温故而知新. 今天群里有人问java中true ,false 是关键字吗, 这里记录下,不是关键字,我还特意翻看之前的书看看 下面是 Java 语言保留使用的 50 个关键字: 关键字 g ...

  2. dom vue 加载完 执行_前端面试题——Vue

    前言 前几天整理了一些 html + css + JavaScript 常见的面试题(https://segmentfault.com/u/youdangde_5c8b208a23f95/articl ...

  3. iOS基础问答面试题连载-附答案

    2017-02-02 timhbw CocoaChina 以下是一些自己收集的比较基础的问题(大神可以忽略),附上答案,方便大家阅读.俗话说得好,基础不牢,地动山摇.文章末尾会提供PDF版的文档,方便 ...

  4. java面试题2019 答案

    Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 Stri ...

  5. 最新Java面试题答案

    JAVA基础 JAVA中的几种基本类型,各占用多少字节? 下图单位是bit,非字节 1B=8bit String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类 ...

  6. Java面试题大汇总,2021年附答案解析

    最新常Java面试题大汇总(含答案解析)发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全汇总,希望对大家有帮助哈 本套Java面试题大全,全的不能再全,哈哈~ ...

  7. 基础面试题 — 数据结构与算法

    数据结构 数据结构是对实际问题中的数据元素及相互间的联系的抽象.一般用线性表来表示常用数据结构,线性表分为顺序存储的顺序表和连式存储的链表. 常用数据结构 在学习算法之前,必须要了解一些常用数据结构的 ...

  8. python期末考试试题

    python期末考试试题汇总 学习 2020-4-105589阅读 · 98喜欢 · 11评论 想个昵称憋一天 粉丝:370文章:31 关注 6.for i in range(2,n): if n%i ...

  9. Java 最常见的 100+ 面试题和答案:面试必备

    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的. 需要pdf版的可以 ...

  10. 程序员必看 c++笔试题汇总

    ①链表反转 单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题.比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3-& ...

最新文章

  1. Synchronize使用
  2. 开发人员如何成为架构师
  3. 浅析ThreadLocal
  4. sql2005 安装完成后只有配置工具,没有管理工具和性能分析工具
  5. OpenCV3学习(11.6) ORB特征检测器及BRIEF描述符
  6. linux tail 查找字符串,linux 查找包含字符串的文件
  7. html转义字符及css清除
  8. 加密、解密、openssl的基本应用以及CA的实现过程
  9. 【转】Oracle 行列转换
  10. Hadoop 配置文件存放位置
  11. 想网站与目标站点同步更新?利用采集侠轻松实现
  12. python群控模拟安卓系统_安卓群控系统模拟器
  13. 现代控制工程(二)状态方程的解
  14. spss导入Excel显示连接服务器超时,Excel里的日期在spss里怎么不正常显示
  15. python excel 空值_Python/Excel/SPSS/SQL数据处理方法比较之4 - 空值处理
  16. 为什么单片机定时器的TH和TL都要设置?
  17. DateCalander
  18. DIY空气检测仪:攀藤G5ST分析仪
  19. NLP第四范式:Prompt概述【Pre-train,Prompt(提示),Predict】【刘鹏飞】
  20. 优化| 手把手教你学会杉树求解器(COPT)的安装、配置与测试

热门文章

  1. 实战HTML:模拟Mac界面静态实现
  2. 点云投影_激光点云变换到图像平面并保存成int16灰度图一帧激光点云+一张RGB图像得到彩色点云
  3. 深度学习笔记_各种激活函数总结对比
  4. 视觉SLAM十四讲_3-李群和李代数
  5. 高等数学复习笔记(四)- 零点问题与微分不等式
  6. 数值分析(7)-正交多项式
  7. AI界的革命!终于可以自动标注了!
  8. LeetCode之搜索旋转排序数组
  9. springcloud 服务调用的两种方式
  10. DEV 实现CheckBox单选