以下文章来源方志朋的博客,回复”666“获面试宝典

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

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

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

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

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

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

正文

接下来咱们来尝试解决这个问题。假设 if(a==1&&a==12)是等于 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,也算是咱们解题思路的上最直接的帮手...

尾声

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

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

热门内容:Java这个高级特性-泛型,很多人还没用过!
面试官问:MySQL 的自增 ID 用完了,怎么办?
王者荣耀中一个英雄是怎么被产生的?
饿了么CTO:“不能被烂用的框架不是好框架”!
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

if(a==1 a==2 a==3),为true,你敢信???相关推荐

  1. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  2. 程序主动进行电话短信报警,自定义电话、短信、钉钉报警通知

    程序主动进行电话短信报警,自定义电话.短信.钉钉报警通知 一. 规则说明 这里我们要利用到阿里云的云监控的手段,有一个叫做事件监控的东西,可以通过自定义事件上传来进行监控报警. 流程: 程序发现错误 ...

  3. Not injecting HSTS header since it did not match the requestMatcher HSTS设置问题解决

    HSTS请求设置 错误描述:在使用文件上传功能时,form表单提交带有header数据的请求时遇到这个问题,报错如下: Not injecting HSTS header since it did n ...

  4. 牛年前的一小结——打响本命年的第一枪,继续刷题!

    经过一段时间的小尝试,摸索出了一点点头儿吧. 总结一下子. 关于面试的java,像我这个经验层次(1-2year普通厂)的都不会太难.最多超不出力扣中等难度. 多练习链表.树.指针类的比较基础的题目: ...

  5. 分割数组(将数组三等分)

    简单面试题--分割数组 时间复杂度O(n) //输入:一个自然数数组,选取其中2个数字num[i], num[j], 把数组三分, // 每一部分的累加和(不包括分割点的数字)相等. // 例:num ...

  6. 快起床刷题去,别人把你offer拿走啦

    好久没有上力扣刷题咯,又到了关键的时刻,却忘得零零散散,囧~ 话说,刷题.学算法.常用,这些技能才能长在身上! 上一道刚刚遇到的正菜~ 题:给定一个整数数组 nums 和一个目标值 k,请实现一个方法 ...

  7. 在js中使用HashMap数据结构,在js中使用K,V数据结构

    首先是定义一个HashMap方法,做基类(复制在js中即可,然后引用) //简单的哈希表,begin function HashMap() {/** Map 大小 * */var size = 0;/ ...

  8. 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录

    将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...

  9. 力扣每日一题——独一无二出现的次数

    难度:简单 题目: 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数. 如果每个数的出现次数都是独一无二的,就返回 true:否则返回 false. 示例 1: 输入:arr = [1,2 ...

  10. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

最新文章

  1. Myeclipse启动不了的解决方法
  2. mysql timestamp 晚8小时_mysql插入timeStamp类型数据时间相差8小时的解决办法
  3. 据说这是程序员为什么改行送外卖的原因
  4. Flask与Ajax
  5. 判断一个字符串的所有字符是否都在另一个字符串中
  6. Oracle 排序中使用nulls first 或者nulls last 语法
  7. 鼻塞用鼻喷剂-调研(成分+刺激性)
  8. Jmeter JDBC请求-----数据库读取数据进行参数化 通过SSH跳板机连接数据库
  9. JavaFX 2.0布局窗格– HBox和VBox
  10. 超硬核!躺进BAT以后我总结了出现最多的15道数组题
  11. Recoll:Unix和Linux桌面的文本搜索工具
  12. 计算机项目教学法探讨,项目教学法在计算机教学中应用计算机教学论文计算机论文...
  13. 计算机系统的优化具体操作,win7系统优化提升低配置电脑运行速度的详细技巧...
  14. 12届毕业生回顾我的2012年,给2013届同学一点启迪
  15. Linux下history命令用法
  16. Javascript:ES6语法简述
  17. 纷杂的Spring-boot-starter: 2 快速 Web 应用 开发 与 spring- boot- starter- web
  18. 刷BOIS的要点方法
  19. 青岛飞阳计算机学校,青岛通济实验学校:综艺比赛 青春飞扬
  20. cesium 移除实体方法

热门文章

  1. COALESCE语句解救sql的sum问题
  2. eclipse打开处于无响应状态解决办法
  3. UNL(Ubiquitous Navigation Lab)
  4. 虚拟机ubuntu14.04系统设置静态ip
  5. bzoj1927: [Sdoi2010]星际竞速
  6. 通过代码自定义cell(cell的高度不一致)
  7. Python 快速生成 web 动态展示机器学习项目!
  8. 超硬核全套Java视频教程(学习路线+免费视频+配套资料)
  9. A股暴跌,户均亏2万!刚写好的辞职信又撕了……
  10. 教你如何编写第一个爬虫