首页 文章 精选 留言 我的

精选列表

搜索[Java],共10000篇文章
优秀的个人博客,低调大师

Java 数组 之 一维数组 冒泡排序算法

http://www.verejava.com/?id=16992682424030 /** 用冒泡算法:将成绩arrays 从小到大排序输出 思路: 第一趟排序 1. 将数组中n个元素从第一个元素开始 一一跟后面的元素比较 2. 如果前面的数据比后面的数据大, 两个交换位置直到一次循环完成,那么数组中最大的数据将会排在数组的最后一个位置。 第 i 趟排序 3. 依次类推, 将剩下未排序的n-i个元素再类似 1,2过程一遍,这样直到循环 n次结束后,数组中的元素就是从小到大排好序了. 注意: 只需要经过 n-1趟排序 */ public class BubbleSort { public static void sort(int[] arrays) { //第一个循环控制n-1趟排序 for (int i = 0; i < arrays.length - 1; i++) { //第二个循环控制每次要比较的元素个数n-1 for (int j = 0; j < arrays.length - i - 1; j++) { if (arrays[j] > arrays[j + 1]) { int flag = arrays[j]; arrays[j] = arrays[j + 1]; arrays[j + 1] = flag; } } } } public static void main(String[] args) { //一维数组的定义和初始化 int[] scores = { 90, 70, 50, 80, 60, 85 }; sort(scores); //输出排序后的 scores for (int i = 0; i < scores.length; i++) { System.out.print(scores[i] + ","); } } } http://www.verejava.com/?id=16992682424030

优秀的个人博客,低调大师

java -----------------LeetCode——电话号码的字母组合

回溯算法是不是很是陌生啊,我敢开始也是一脸你蒙蔽,后来我终于忍不住了,就去查查什么是回溯,原来是这个情况,回溯和递归有点类似,但是又不是递归,比如我现在计算数据从0开始到2,当到达状态值2我就回溯,我从1开始回溯,我在回到0,就是for循环我不按套路从小到打,去输出了,我采用回溯, public class Main { public static void main(String[] args) { List<String> stringList = begin("23"); System.out.println(stringList.toString()); } // 定义每个数字对应的字符 static String[] a = new String[] {"","","abc","def", "ghi","jkl","mno","pqrs","tuv","wxyz"}; // 这个是输出的字符串 static StringBuffer sb = new StringBuffer(); private static List<String> begin(String str) { if (str.length() == 0) { return null; } List<String> result = new ArrayList<>(15); zihe(str,0,result); return result; } private static void zihe(String str, int n, List<String> result) { if (n == str.length()) { result.add(sb.toString()); return; } for (int i = 0; i < a[str.charAt(n)-'0'].length(); i++) { sb.append(a[str.charAt(n)-'0'].charAt(i)); zihe(str, n + 1, result); sb.deleteCharAt(sb.length() - 1); } } }

优秀的个人博客,低调大师

JAVA以后是怎么找工作的呢?

最低什么程度就可以出去碰碰运气? 我这里并不是教大家投机取巧,而是为不了解求职的小白朋友提供一个参考。理论上当然是基础越牢固越好,你最好把科班的“四大课”都啃了。 就我自己做外包的经验,基本上培训视频中ssm框架往后教的就用不太到了,什么redis,ActiveMQ负载均衡等等,都用不太到(但我不敢打包票)。而且你一个零基础的,学了能咋滴?工作一两年的人都没怎么搞透的技术,你还能用它写出花?最多学会几个单词罢了。总之,如果你没有朋友内推,没有过人天赋,我默认你和我一样,学得再好几个月刚出来也就外包水平。那么既然做外包,视频中电商项目啦、高并发这些都和你没什么关系了。甚至什么maven也和你没什么关系。什么?你说导包太繁琐、自己不会独立搭建ssm框架?别逗了老铁,给你几千块,你还真当自己是架构师啊....外包工作基本就是ssm一套,前端搞个layui或者easyui这种第三方模块化框架凑合一下,而这些环境都是项目经理给你搭好的,你就是增删改查而已。另外,你要知道,外包很少有什么前端工程师、后端工程师之分的,给你一把键盘,你就是从前台页面撸到后台数据库的“全绽”工程师。也就是什么都会一点,但是代码都是“破绽”的码农。所以有心思搞什么高并发,还是学好怎么切图做页面吧。 但我也要对我说的话负责,万一你们心直,信了我的话,学完ssm就出去骗钱,然后被社会主义无情扇耳光,我也是很心痛的。给个重点吧: 1.JavaSE基础: 一定要好好学,很多人都不明白基础的重要性。上来就什么ssm,springBoot,redis。比谁认识的单词多吗?面向对象、字符串处理、集合、IO一定要重点学!2.JavaWeb前端:不要老一副吊样,觉得自己出去就是后端工程师,不学什么HTML, CSS, JavaScript。老铁,不存在的。进了外包公司你万一发现后台逻辑简单的一逼,就几个接口,反而前端页面切个图都要一天,难道你还好意思暗搓搓问老板:怎么我们公司没有前端的吗?所以前端一定要重视。div+css布局一定要麻溜的,js的dom操作必须给力。jQuery/bootstrap你必须会吧!3.JavaWeb服务器端:Tomcat目录结构必须了如指掌吧。让你手动部署个webapp总要会吧。哪里配置虚拟主机,哪里改端口号,web-info文件夹下的内容外部无法访问这些都要懂一点吧?这些皮毛都不懂,怎么好意思说自己搞服务器端?jsp和servlet什么关系,servlet最常见的三种创建方式,Javaweb四大域对象,jsp九大内置对象都要知道吧?el表达式必须熟悉吧?mysql增删改查sql语句要会写吧,多表关联、左外右外不能怂吧?jdbc是干嘛的,sql注入是啥,如何用jdbc实现事务等等都要知道吧?4.框架预备知识:xml读写操作要知道,反射、内省、泛型不要求精通,但怎么用总要心里有点那个什么数吧。不然你框架学起来就是懵逼的。5.ssh、ssm框架:不要求你精通底层原理,但是山寨版的原理总要略知一二吧。如何山寨实现IoC容器,如何对dao进行抽取,如何借助反射实现同一个servlet处理多个请求,这些最好都要了解吧。在理解山寨版框架的基础上,把配置多配几遍,做到心里有数。明白每个配置大致起到什么作用。另外,我一向觉得,学习框架必须带着下面的疑问:这个框架没有出现之前,我们的前辈们如何解决的?它的出现解决了哪些痛点?又有什么缺点没有?都是需要去琢磨的。最后,还是忍不住说一下,很多小白老是觉得框架是学习路上的终极boss。too young, too simple. Sometimes naive! 框架如果不细究底层(我承认底层很复杂),其实完全可以看做很大很大的工具类。只不过以前我们写代码调工具类,现在我们写点代码让框架调...工具类就像钥匙,是工具,我们用它开门。框架就像房子,我们的代码是窗户,窗户是嵌在房子了的。反正,框架不是大boss,你的项目经验和编码能力才是拦路虎! 2.学到什么程度比较保险? 那这个就没有上限了。你面试上去就说:我,20年开发经验,6岁开始开发。对方就应该准备递烟了。但是很显然,你没有经验。没有经验,那么大公司就会要求你基础要扎实。你越往后学,就会越发现自己和科班出身的朋友的差距。就好比你开车,能到目的地不被违章拍照就好了。而人家开车,考虑的是乘客的舒适性、耗油、轮胎磨损等等。这个时候,是不是老司机就高下立判了。你没有底层知识的支撑,难免浮沙筑高台。要么后期心有余力不足,要么垮了。所以,我建议啊,培训班视频ssm后面的内容可以看,也鼓励多学一点。但是能掌握多少,到时你自己就知道了。压根就是天书,听完就忘。你只是学到几个高级单词,还心里美滋滋。所以还在校,不急着找工作的朋友,建议数据结构,操作系统有时间都学学。万一你出来找不到工作,还可以曲线救国,先去考个计算机的研究生,然后出来报复社会呢?考研基本上数据结构,操作系统必考啊... 最后呢,建议大家不要执着。现在转行工作真的不好找。360行,哪条不是路呢?更不要贸然裸辞,今天看IT人傻钱多,第二天就裸辞。脱衣服都没见你这么快的。大可以先自学试试,万一你发现你一学编程就脱发,女朋友就闹着分手呢? 最后,给个路线吧,我8个月学出来差点找不到工作,很是心酸。但是有了我这个路线相信你只要6个月 此文章为隋七哥原创,特此声明!”

优秀的个人博客,低调大师

Java并发编程笔记之ThreadLocal内存泄漏探究

使用 ThreadLocal 不当可能会导致内存泄露,是什么原因导致的内存泄漏呢? 我们首先看一个例子,代码如下: /** * Created by cong on 2018/7/14. */ public class ThreadLocalOutOfMemoryTest { static class LocalVariable { private Long[] a = new Long[1024*1024]; } // (1) final static ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(6,6,1,TimeUnit.MINUTES, new LinkedBlockingQueue<>()); // (2) final static ThreadLocal<LocalVariable> localVariable = new ThreadLocal<LocalVariable>(); public static void main(String[] args) throws InterruptedException { // (3) for (int i = 0; i < 50; ++i) { poolExecutor.execute(new Runnable() { public void run() { // (4) localVariable.set(new LocalVariable()); // (5) System.out.println("use local varaible"); // localVariable.remove(); } }); Thread.sleep(1000); } // (6) System.out.println("pool execute over"); } } 代码(1)创建了一个核心线程数和最大线程数为 6 的线程池,这个保证了线程池里面随时都有 6 个线程在运行。 代码(2)创建了一个 ThreadLocal 的变量,泛型参数为 LocalVariable,LocalVariable 内部是一个 Long 数组。 代码(3)向线程池里面放入 50 个任务。 代码(4)设置当前线程的 localVariable 变量,也就是把 new 的 LocalVariable 变量放入当前线程的 threadLocals 变量。 由于没有调用线程池的 shutdown 或者 shutdownNow 方法所以线程池里面的用户线程不会退出,进而 JVM 进程也不会退出。 运行后,我们立即打开jconsole监控堆内存变化,如下图: 接着,让我们打开 localVariable.remove() 注释,然后在运行,观察堆内存变化如下: 从第一次运行结果可知,当主线程处于休眠时候进程占用了大概 75M 内存,打开 localVariable.remove() 注释后第二次运行则占用了大概 25M 内存,可知没有写 localVariable.remove()时候内存发生了泄露,下面分析下泄露的原因,如下: 第一次运行的代码,在设置线程的 localVariable 变量后没有调用localVariable.remove()方法,导致线程池里面的 5 个线程的 threadLocals 变量里面的new LocalVariable()实例没有被释放,虽然线程池里面的任务执行完毕了,但是线程池里面的 5 个线程会一直存在直到 JVM 退出。这里需要注意的是由于 localVariable 被声明了 static,虽然线程的 ThreadLocalMap 里面是对 localVariable 的弱引用,localVariable 也不会被回收。运行结果二的代码由于线程在设置 localVariable 变量后即使调用了localVariable.remove()方法进行了清理,所以不会存在内存泄露。 接下来我们要想清楚的知道内存泄漏的根本原因,那么我们就要进入源码去看了。 我们知道ThreadLocal 只是一个工具类,具体存放变量的是在线程的 threadLocals 变量里面,threadLocals 是一个 ThreadLocalMap 类型的,我们首先一览ThreadLocalMap的类图结构,类图结构如下图: 如上图 ThreadLocalMap 内部是一个 Entry 数组, Entry 继承自 WeakReference,Entry 内部的 value 用来存放通过 ThreadLocal 的 set 方法传递的值,那么 ThreadLocal 对象本身存放到哪里了吗? 下面看看 Entry 的构造函数,如下所示: Entry(ThreadLocal<?> k, Object v) { super(k); value = v; } 接着我们再接着看Entry的父类WeakReference的构造函数super(k),如下所示: public WeakReference(T referent) { super(referent); } 接着我们再看WeakReference的父类Reference的构造函数super(referent),如下所示: Reference(T referent) { this(referent, null); } 接着我们再看WeakReference的父类Reference的另外一个构造函数this(referent , null),如下所示: Reference(T referent, ReferenceQueue<? super T> queue) { this.referent = referent; this.queue = (queue == null) ? ReferenceQueue.NULL : queue; } 可知 k 被传递到了 WeakReference 的构造函数里面,也就是说 ThreadLocalMap 里面的 key 为 ThreadLocal 对象的弱引用,具体是 referent 变量引用了 ThreadLocal 对象,value 为具体调用 ThreadLocal 的 set 方法传递的值。 当一个线程调用 ThreadLocal 的 set 方法设置变量时候,当前线程的 ThreadLocalMap 里面就会存放一个记录,这个记录的 key 为 ThreadLocal 的引用,value 则为设置的值。 但是考虑如果这个 ThreadLocal 变量没有了其他强依赖,而当前线程还存在的情况下,由于线程的 ThreadLocalMap 里面的 key 是弱依赖,则当前线程的 ThreadLocalMap 里面的 ThreadLocal 变量的弱引用会被在 gc 的时候回收,但是对应 value 还是会造成内存泄露,这时候 ThreadLocalMap 里面就会存在 key 为 null 但是 value 不为 null 的 entry 项。 其实在 ThreadLocal 的 set 和 get 和 remove 方法里面有一些时机是会对这些 key 为 null 的 entry 进行清理的,但是这些清理不是必须发生的,下面简单讲解ThreadLocalMap 的 remove 方法的清理过程,remove 的源码,如下所示: private void remove(ThreadLocal<?> key) { //(1)计算当前ThreadLocal变量所在table数组位置,尝试使用快速定位方法 Entry[] tab = table; int len = tab.length; int i = key.threadLocalHashCode & (len-1); //(2)这里使用循环是防止快速定位失效后,变量table数组 for (Entry e = tab[i]; e != null; e = tab[i = nextIndex(i, len)]) { //(3)找到 if (e.get() == key) { //(4)找到则调用WeakReference的clear方法清除对ThreadLocal的弱引用 e.clear(); //(5)清理key为null的元素 expungeStaleEntry(i); return; } } } private int expungeStaleEntry(int staleSlot) { Entry[] tab = table; int len = tab.length; //(6)去掉去value的引用 tab[staleSlot].value = null; tab[staleSlot] = null; size--; Entry e; int i; for (i = nextIndex(staleSlot, len); (e = tab[i]) != null; i = nextIndex(i, len)) { ThreadLocal<?> k = e.get(); //(7)如果key为null,则去掉对value的引用。 if (k == null) { e.value = null; tab[i] = null; size--; } else { int h = k.threadLocalHashCode & (len - 1); if (h != i) { tab[i] = null; while (tab[h] != null) h = nextIndex(h, len); tab[h] = e; } } } return i; } 代码(4)调用了 Entry 的 clear 方法,实际调用的是父类 WeakReference 的 clear 方法,作用是去掉对 ThreadLocal 的弱引用。 代码(6)是去掉对 value 的引用,到这里当前线程里面的当前 ThreadLocal 对象的信息被清理完毕了。 代码(7)从当前元素的下标开始看 table 数组里面的其他元素是否有 key 为 null 的,有则清理。循环退出的条件是遇到 table 里面有 null 的元素。所以这里知道 null 元素后面的 Entry 里面 key 为 null 的元素不会被清理。 总结: 1.ThreadLocalMap 内部 Entry 中 key 使用的是对 ThreadLocal 对象的弱引用,这为避免内存泄露是一个进步,因为如果是强引用,那么即使其他地方没有对 ThreadLocal 对象的引用,ThreadLocalMap 中的 ThreadLocal 对象还是不会被回收,而如果是弱引用则这时候 ThreadLocal 引用是会被回收掉的。 2.但是对于的 value 还是不能被回收,这时候 ThreadLocalMap 里面就会存在 key 为 null 但是 value 不为 null 的 entry 项,虽然 ThreadLocalMap 提供了 set,get,remove 方法在一些时机下会对这些 Entry 项进行清理,但是这是不及时的,也不是每次都会执行的,所以一些情况下还是会发生内存泄露,所以在使用完毕后即使调用 remove 方法才是解决内存泄露的最好办法。 3.线程池里面设置了 ThreadLocal 变量一定要记得及时清理,因为线程池里面的核心线程是一直存在的,如果不清理,那么线程池的核心线程的 threadLocals 变量一直会持有 ThreadLocal 变量。

优秀的个人博客,低调大师

Android和java面试中的智力题

智力题,每个正式的笔试、面试都会出,而且在面大企业的时候必然会问到,笔者曾在很多面试中,都被问到过,不过答得都不是很好,因为时间很短,加上我们有时候过于紧张,所以做出这类问题,还是有一定的难度,从这篇文章中我会总结一些常见的智力题,希望各位读者能在本章所列的题中找出做这类题的方法,克服面试中的难题! 1、农民分金条问题 题目:你让农民为你工作7天,给他的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费,保证该农民在七天中任意一天结束时都可以领到相应的报酬。(例:第一天结束时他可领到1/7,第三天结束时他可领到3/7) 我当时在面试某企业的时候被问到了这个问题,面试官没有和我说“金条是平分成7段的”。所以我当时把精力都集中在:如何通过2刀将一个金条分成7份的问题上,其实这个问题根本不用我们考虑,题目默认已经平分为7份了,关键是分成7分后再怎么分。当时面试官只给我3分钟时间,所以我绝对悲剧了。 解答:将7份分成1/7,2/7,4/7.第一天结束时给1/7,第二天结束时给2/7,然后将农民手上的1/7要过来。第三天结束时将1/7给农民,第四天将4/7给农民,再将农民手里的3/7要过来,第五天再给1/7,第六天....... 其实这个题很简单,我只是思路没对,其实也不能怪我,当你们做了接下来的第二题后,就大概知道我当时为什么会那么想了。 2、两柱香问题 题目:有两柱不均匀的香,每柱香燃烧完需要1个小时,问:怎样用两柱香切出一个15分钟的时间段?这个题的重点就是怎么切 解答:将甲香的一头点着,将乙香的两头点着,当乙香燃烧完时,说明已经过了半个小时,同时也说明甲香也正好燃烧了一半,此时,将甲香的另一头点着,从此时起到甲香完全烧完,正好15分钟。 3、瞎子翻牌 题目:给一个瞎子52张扑克牌,并告诉他里面恰好有10张牌是正面朝上的。要求这个瞎子把牌分成两堆,使得每堆牌里正面朝上的牌的张数一样多。瞎子应该怎么做?(瞎子摸不出牌是正面或者是反面,但是却可以随意翻动每一张牌) 我曾经在参加某企业的笔试的时候,被考了这个题,当时被一个条件给弄迷茫了,如上述:使得每堆牌里正面朝上的牌的张数一样多,我当时的想法就是每堆里5张,因为一共只有10张向上,其实就是自己给想错了,并没有要求加起来10张,只要保证向上的牌数一样就行了。 解答:将52张牌分为2堆,一堆10张,另一堆42张,将10张的那一堆全部翻起来就行了。 分析: 10张堆 翻起来后 42张堆 向上 向下 向上 向下 向上 向下 1 9 9 1 9 33 2 8 8 2 8 34 3 7 7 3 7 35 ..... 从上面的分析过程可以看出:10张里面向下的张数和42张里面向上的张数相同,所以只需要将10张堆整体翻一下,向下的牌就向上了,同时和42张里向上的就相同了。 4、100个苹果 桌上有100个苹果,你和另一个人一起拿,一人一次,每次拿的数量大于等于1小于等于5,问:如何拿能保证最后一个苹果由你来拿? 分析:如果要保证拿最后一个,那么就得保证拿到第94个,以此类推,要拿第94个,就要保证拿到第88个、82、76、70...最后只要保证你拿到第四个就行了,所以看下面: 解答:只需要你先拿,第一次拿4个,以后看对方拿的个数,根据对方拿的个数,保证每轮对方和你拿的加起来是6就行了,其实就是保证你拿到4,还要拿到10,16...直到94。 5、10斤酒两个桶 有三口酒缸,分别能装3斤;7斤;10斤。现在10斤的缸装满了酒,在没有称得情况下,怎么把这10斤酒平均分成两个5斤。 解答:第一步,用10斤的先倒入3斤的,将3斤的装满,将3斤的倒入7斤的,再将10斤的缸子中的7斤倒入3斤的装满,将3斤的再倒入7斤的,最后再将10中剩下的4斤倒入3斤的缸子,此时,三个缸子的状态为,10斤中有1斤,7斤的缸子中有6斤,3斤的缸子中有3斤。第二步,用3斤的将7斤的装满,状态为:10斤中有1斤,7斤中有7斤,3斤中有2斤。第三步,将7斤的缸子里的酒全部倒入10斤的缸子,状态:10斤的有8斤,7斤的有0斤,3斤的有2斤。第四步,将3斤的倒入7斤的。状态为:10斤的有8斤,7斤的有2斤,3斤的有0斤。第五步,用10斤的缸子将3斤的缸子装满,10斤的缸子中正好剩余5(8-3)斤,将3斤缸子里的倒入7斤缸子里,也正好5斤。正好实现。 6、微软灯管问题 在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分那个开关控制那一盏灯?据《编程之美》一书中介绍,在微软大厦,没晚都会有一些新员工在会议室测试,灯一亮一灭。可见这个问题有多么古怪!解答:打开一盏灯10分钟,关掉,打开第二盏,进去看看哪盏亮,摸摸哪盏热,热的是第一个打开的开关开的,亮的是第二个开关开的,另一个就是第三个。 7、经理的三个女儿问题 一个经理有三个女儿,三个女儿的年龄加起来等于13,三个女儿的年龄乘起来等于经理自己的年龄,有一个下属已知道经理的年龄,但仍不能确定经理三个女儿的年龄,这时经理说只有一个女儿的头发是黑的,然后这个下属就知道了经理三个女儿的年龄。请问三个女儿的年龄分别是多少?为什么?答案:三个女儿只有一个有黑头发,说明另两个女儿都很小,大约在3岁以下.如果有个女儿是一岁的话(1,1,11 1,2,10 1,3,9 1,4,8),不论怎样都不成立.如果两个女儿在3岁或3岁以上的话,那样的话家长的年龄就过大了,所以两个小女儿应该都是2岁或一个2岁另一个3岁.(2,2,9或2,3,8)家长的年龄为36或48,大女儿出生时家长的年龄应该是27或40.按常理推断家长有第一个孩子是为27岁比较合理.所以三个女儿分别为2岁,2岁,9岁.经理为36岁.(中国的婴儿一出生是黄色头发的。但过了差不多5岁的时候就头发就开始变黑色的了。); 8、两位盲人问题 他们都各自买了两对黑袜和两对白袜,八对袜了的布质、大小完全相同,而每对袜了都有一张商标纸连着。两位盲人不小心将八对袜了混在一起。 他们每人怎样才能取回黑袜和白袜各两对呢?答案:每一对分开,一人拿一只,因为袜子不分左右脚的; 9、两辆货车及小鸟问题 有一辆火车以每小时15公里的速度离开洛杉矶直奔纽约,另一辆火车以每小时20公里的速度从纽约开往洛杉矶。如果有一只鸟,以30公里每小时的速度和两辆火车同时启动,从洛杉矶出发,碰到另一辆车后返回,依次在两辆火车来回飞行,直到两辆火车相遇,请问,这只小鸟飞行了多长距离?答案:要知道纽约与洛杉基的距离,然后算出两列火车相遇要用多少小时,然后用小时×30公里/小时,得出小鸟飞行的距离,纽约到洛杉矶的路程给漏掉了。设路程s,鸟飞距离则是:{s/(20+15)} * 30; 10、两个罐子+红球+蓝球问题 你有两个罐子,50个红色弹球,50个蓝色弹球,随机选出一个罐子,随机选取出一个弹球放入罐子,怎么给红色弹球最大的选中机会?在你的计划中,得到红球的准确几率是多少?答案:我的方案是:所有蓝球先装罐,再随机取没有装罐的球,得到红球的几率是100%!!!(哈哈是不是疯了~) 11、四个罐子问题 你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1.只称量一次,如何判断哪个罐子的药被污染了?答案:给四个罐子编上号,1、2、3、4。然后1号拿一个,2号拿2个,3号拿3个,4号拿4个,称一下,若是都没被污染,应该重10个重量,若是11个重量就是1号罐,12就是2号罐,13就是3号罐,14就是4号罐;1 给5个瓶子标上1、2、3、4、5。2 从1号瓶中取1个药丸,2号瓶中取2个药丸,3号瓶中取3个药丸,4号瓶中取4个药丸,5号瓶中取5个药丸。3 把它们全部放在天平上称一下重量。4 现在用1×10+2×10+3×10+4×10+5×10的结果减去测出的重量。5 结果就是装着被污染的药丸的瓶子号码。 12、果冻问题 你有一桶果冻,其中有黄色,绿色,红色三种,闭上眼睛,同时抓取两个果冻。抓取多少个就可以确定你肯定有两个同一颜色的果冻?答案:2次4个! 13、100个灯的问题 对一批编号为1~100,全部开关朝上(开)的灯进行以下*作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:最后为关熄状态的灯的编号。 答案:除掉2,3的倍数号,再又加上6的倍数好。最后一个是97号; 第十三题,楼主应该读错题意了。最后为关熄状态的灯的编号应该是1、4、9、16、25、36、49、64、81、100。1到10的平方数。因为平方数的因数个数为奇数。 14、个人照镜子 想象你在镜子前,请问,为什么镜子中的影像可以颠倒左右,却不能颠倒上下?答案:因为你眼睛是平行长的。 因为判断左右是以人的视觉习惯而言的。视角上分辨左右和分辨上下是不同的概念; 15、戴帽子问题 一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什幺帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?答案:3个黑帽子。分析: 设有x个黑帽子。x=1,则戴黑帽子的第一次就看到其他人都是白帽子,那么自己就肯定是黑帽子了。所以该打自己嘴巴。但第一次没人打,说明至少有两个黑帽子。x=2,第一次开灯后否没人打,说明黑帽不止一个,所以第二次如果有人只看到别人只有一顶黑帽子的话,就能判断自己头上是黑帽子,就该打嘴巴, 但没人打,说明至少有3个黑帽。x=3,由于前两次没人打,所以至少三顶黑帽。第三次开灯后,有人打嘴巴,说明打嘴巴的人看到其他人只有两顶黑帽,所以能判断自己头上是黑帽。因此是三顶; 16、三人住旅馆 有三个人去住旅馆,住三间房,每一间房$10元,于是他们一共付给老板$30,第二天,老板觉得三间房只需要$25元就够了于是叫小弟退回$5给三位客人,谁知小弟贪心,只退回每人$1,自己偷偷拿了$2,这样一来便等于那三位客人每人各花了九元,于是三个人一共花了$27,再加上小弟独吞了不$2,总共是$29。可是当初他们三个人一共付出$30那么还有$1呢?答案:他们所消费的27元里已经包括小弟贪污的2元了,再加退还的3元=30元。这种题一定不要乱了阵脚,根据一条思路做:这30元现在的分布是:老板拿25元,伙计拿2元,三人各拿1元,正好! 17、切蛋糕问题 有一个长方形蛋糕,切掉了长方形的一块(大小和位置随意),你怎样才能直直的一刀下去,将剩下的蛋糕切成大小相等的两块?答案:将完整的蛋糕的中心与被切掉的那块蛋糕的中心连成一条线。这个方法也适用于立方体!请注意,切掉的那块蛋糕的大小和位置是随意的,不要一心想着自己切生日蛋糕的方式,要跳出这个圈子。 18、三筐苹果问题 有三筐水果,一筐装的全是苹果,第二筐装的全是橘子,第三筐是橘子与苹果混在一起。筐上的标签都是骗人的,(就是说筐上的标签都是错的)你的任务是拿出其中一筐,从里面只拿一只水果,然后正确写出三筐水果的标签。答案:从标着“混合”标签的筐里拿一只水果,就可以知道另外两筐装的是什么水果了。 分析:从混合的拿出一个来,如果是苹果,而贴苹果的筐里有可能是橘子和混合,如果是混合,说明贴橘子的筐里是橘子,不成立(因为前提说了,每个标签都是错的)。所以贴苹果的筐里是橘子,则贴橘子的筐里是混合。不懂的童鞋在纸上画画,就看出来了。 19、村子里50条狗的问题 村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗 。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不 得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只 有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵 枪声,问有几条病狗,如何推算得出? 解答:3条病狗. 如果是1条病狗,第一天,它的主人就会发现其他49条狗都是好狗,那么他将在第一天推断出自己的狗是病狗; 如果是2条病狗,第一天,2条病狗的主人都会看到1条病狗,都在等待 那条狗的主人开枪。但第一天没有听到枪声,则2条病狗的主人都可推断出自己的狗是病狗,则第二天肯定会听到枪响;如果是3条病狗,第一天,3病狗的主人都会看到2条病狗,如果第二天还没有听到枪响,则3人都可推断出自己的狗是病狗,于是第三天肯定会听到枪响。如果出题严谨点,应该说明49人全都是逻辑能力较高的人。 20、蛋糕切8份问题 请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份。 解答:面对这样的怪题,有些应聘者绞尽脑汁也无法分成;而有些应聘者却感到此题实际很简单,把切成的8份蛋糕先拿出7份分给7人,剩下的1份连蛋糕盒一起分给第8个人。 21、拿最大钻石问题 一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗? 解答:选择前五层楼都不拿,观察各层钻石的大小,做到心中有数。后五层楼再选择,选择大小接近前五层楼出现过最大钻石大小的钻石。 22、拿手电过桥问题 U2合唱团在17分钟内得赶到演唱会场,途中必需跨过一座桥,四个人从桥的同一端出发,你得帮助他们到达另一端,天色很暗,而他们只有一只手电筒。一次同时最多可以有两人一起过桥,而过桥的时候必须持有手电筒,所以就得有人把手电筒带来带去,来回桥两端。手电筒是不能用丢的方式来传递的。四个人的步行速度各不同,若两人同行则以较慢者的速度为准。Bono需花1分钟过桥,Edge需花2分钟过桥,Adam需花5分钟过桥,Larry需花10分钟过桥。他们要如何在17分钟内过桥呢? 23、为什么下水道的盖子是圆的? 解答:从麻省理工大学一位计算机系教授那里听来的答案,首先在同等用材的情况下他的面积最大。第二因为如果是方的、长方的或椭圆的,那无聊之徒拎起来它就可以直接扔进地下道啦!但圆形的盖子嘛,就可以避免这种情况了。这种问题是非常开放性的问题,言之有理即可! 24、美国有多少辆加油站(汽车)? 解答:这个乍看让人有些摸不着头脑的问题时,你可能要从问这个国家有多少小汽车入手。面试者也许会告诉你这个数字,但也有可能说:"我不知道,你来告诉我。"那么,你对自己说,美国的人口是2.75亿。你可以猜测,如果平均每个家庭(包括单身)的规模是2.5人,你的计算机会告诉你,共有1.1亿个家庭。你回忆起在什么地方听说过,平均每个家庭拥有1.8辆小汽车,那么美国大约会有1.98亿辆小汽车。接着,只要你算出替1.98亿辆小汽车服务需要多少加油站,你就把问题解决了。重要的不是加油站的数字,而是你得出这个数字的方法。 25、两个桶称出准确的水 如果你有无穷多的水,一个3夸脱的和一个5夸脱的提桶,你如何准确称出4夸脱的水? 解答: A、先用3 夸脱的桶装满,倒入5 夸脱。以下简称3->5) , 在5 夸脱桶中做好标记b1,简称b1)。 B、用3 继续装水倒满5 空3 将5 中水倒入3 直到b1 在3 中做标记b2。 C、用5 继续装水倒满3 空5 将3 中水倒入5 直到b2。 D、空3 将5 中水倒入3 标记为b3。 E、装满5 空3 将5 中水倒入3 直到3 中水到b3 。 结束了,现在5 中水为标准的4 夸脱水。 26、诚实和说谎的连个人 一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问? 解答:问其中一人:另外一个人会说哪一条路是通往诚实国的?回答者所指的那条路必然是通往说谎国的。 27、12个球一个天平问题 12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?(注意此题并未说明那个球的重量是轻是重,所以需要仔细考虑) 解答: 12个球。 第一次:4,4 如果平了:那么剩下的球中取3放左边,取3个好球放右边,称:如果左边重,那么取两个球称一下,哪个重哪个是次品,平的话第三个重,是次品,轻的话同理如果平了,那么剩下一个次品,还可根据需要称出次品比正品轻或者重如果不平: 那么不妨设左边重右边轻,为了便于说明,将左边4颗称为重球,右边4颗称为轻球,剩下4颗称为好球取重球2颗,轻球2颗放在左侧,右侧放3颗好球和一颗轻球如果左边重称那两颗重球,重的一个次品,平的话右边轻球次品如果右边重称左边两颗轻球,轻的一个次品如果平称剩下两颗重球,重的一个次品,平的话剩下那颗轻球次品13个球。 第一次:4,4,如果平了剩5颗球用上面的方法仍旧能找出次品,只是不能知道次品是重是轻如果不平,同上。 28、海盗分金币的问题 传说,从前有五个海盗抢得了100枚金币.他们通过了一个如何确定选用谁的分配方案的安排.即: 1.抽签决定各人的号码(1,2,3,4,5); 2.先由1号提出分配方案,然后5个人表决.当且仅当超过半数人同意时,方案才算被通过,否则他将被扔入大海喂鲨鱼; 3.当1号死后,再由2号提方案,4个人表决,当且仅当超过半数同意时,方案才算通过,否则2号同样将被扔入大海喂鲨鱼; 4.往下依次类推…… 根据上面的这个故事,现在提出如下的一个问题。即,我们假定每个海盗都是很聪明的人,并且都能够很理智地判断自己的得失,从而做出最佳的选择,那么第一个海盗应当提出怎样的分配方案才能够使自己不被扔入大海喂鲨鱼,而且收益还能达到最大化呢? 解答: 倒推,从后往前推,人数依次增加如 果1-3号强盗都喂了鲨鱼,只剩4号和5号的话,5号一定投反对票让4号喂鲨鱼,以独吞全部金币。所以,4号惟有支持3号才能保命。3号知道这一点,就会 提(100,0,0)的分配方案,对4号、5号一毛不拔而将全部金币归为已有,因为他知道4号一无所获但还是会投赞成票,再加上自己一票,他的方案即可通 过。2号推知到3号的方案,就会提出(98,0,1,1)的方案,即放弃3号,而给予4号和5号各 一枚金币。由于该方案对于4号和5号来说比在3号分配时更为有利,他们将支持他而不希望他出局而由3号来分配。这样,2号将拿走98枚金币。2号的方案会被1号所洞悉,1号并将提出(97,0,1,2,0)或(97,0,1,0,2)的方案,即放弃2号,而给3号一枚金币,同时给4号(或5号)2枚金币。由于1号的这一方 案对于3号和4号(或5号)来说,相比2号分配时更优,他们将投1号的赞成票,再加上1号自己的票,1号的方案可获通 过,97枚金币可轻松落入囊中。这无疑是1号能够获取最大收益的方案了! 29、飞机加油问题 每个飞机只有一个油箱, 飞机之间可以相互加油(注意是相互,没有加油机) 一箱油可供一 架飞机绕地球飞半圈。为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场) 解答: 猜想 验证 猜想: 至 少需要出动5 架飞机。思路是这样的,一架飞机要想完成绕地球一周的飞行,至少需要别的飞机给它提供1 箱油。最划算的办法显然是,派飞机和它结伴飞行前四分之一周以及后四分之一周,(因为这两段路程距离基地近所花代价小。)由它独立飞行中间的半程。必须保 证两个加油点,前四分之一处,加满,后四分之一点,及时补充。那么必须有两架飞机与目标机结伴飞行四分之一周,这两架飞机需要做折返飞行,正好花费2 箱油。所以补充油的任务实际上该由另外两架飞机完成。这两架飞机飞八分之一周,做折返飞,正好富余1 箱油。因此,5 架飞机刚好完成任务。到了此时,问题只考虑了一半。能够提供多少油并不意味着就能够全部接受,受到结伴飞行的距离,即腾 出的油箱空间所限制。而以下做法正 好可以满足此条件。 验证: 3架飞机同时从机场出发,飞行八分之一周,各耗油四分之一。此时某架飞机给其余两架补满油,自己返回基地。 另一机和目标机结伴,飞至四分之一周,给目标机补满油,自己返回。目标机独自飞行半周,与从基地反向出发的一机相遇,2 机将油平分,飞至最后八分之一 处,与从基地反向出发的另一机相遇,各分四分之一油,返回。 30、汽车加油问题 一辆载油500升的汽车从A开往1000公里外的B,已知汽车每公里耗油量为1升,A处有无穷多的油,其他任何地点都没有油,但该车可以在任何地点存放油以备中转,问从A到B最少需要多少油 解答:严格证明该模型最优比较麻烦,但确实可证,大胆猜想是解题关键。题目可归结为求数列an=500/(2n 1) n=0,1,2,3......的和Sn什么时候大于等于1000,解得n>6当n=6时,S6=977.57,所以第一个中转点离起始位置距离为1000-977.57=22.43公里.所以第一次中转之前共耗油22.43(27 1)=336.50升此后每次中转耗油500升,所以总耗油量为7*500 336.50=3836.50升。 31、种子被摔破问题 一种杯子,若在第N层被摔破,则在任何比N高的楼层均会破,若在第M层不破,则在任何比M低的楼层均会破,给你两个这样的杯子,让你在100层高的楼层中测试,要求用最少的测试次数找出恰巧会使杯子破碎的楼层。 32、两个人猜数问题 教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数, 甲说:“我猜不出”, 乙说:“我猜不出”, 甲说:“我猜到了”, 乙说:“我也猜到了”, 问这两个数是多少? 答:3和4。设两个数为n1,n2,n1> =n2,甲听到的数为n=n1 n2,乙听到的数为m=n1*n2,证明n1=3,n2=4是唯一解。证明:要证以上命题为真,不妨先证n=7 1)必要性: i) n> 5 是显然的,因为n <4不可能,n=4或者n=5甲都不可能回答不知道 ii) n> 6 因为如果n=6的话,那么甲虽然不知道(不确定2 4还是3 3)但是无论是2,4还是3,3乙都不可能说不知道(m=8或者m=9的话乙说不知道是没有道理的) iii) n <8 因为如果n> =8的话,就可以将n分解成 n=4 x 和 n=6 (x-2),那么m可以是4x也可以是6(x-2)而4x=6(x-2)的必要条件是x=6即n=10,那样n又可以分解成8 2,所以总之当n> =8时,n至少可以分解成两种不同的合数之和,这样乙说不知道的时候,甲就没有理由马上说知道。以上证明了必要性。 2)充分性 当n=7时,n可以分解成2 5或3 4 显然2 5不符合题意,舍去,容易判断出3 4符合题意,m=12,证毕 于是得到n=7 m=12 n1=3 n2=4是唯一解。 33、猴子吃香蕉问题 一个小猴子边上有100 根香蕉,它要走过50 米才能到家,每次它最多搬50 根香蕉,每走1 米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。 解答:设 小猴从0 走到50, 到A 点时候他可以直接抱香蕉回家了, 可是到A 点时候他至少消耗了3A 的香蕉( 到A, 回0, 到A), 一个限制就是小猴只能抱50 只香蕉, 那么在A 点小猴最多49 只香蕉.100-3A=49, 所以A=17. 这样折腾完到家的时候香蕉剩100-3A-(50-A)=50-2A=16. 34、拿硬币问题(与问题4类似) 16 个硬币,A 和B 轮流拿走一些,每次拿走的个数只能是1 ,2 ,4 中的一个数。谁最后拿硬币谁输。问:A 或B 有无策略保证自己赢? 博弈类问题,分清两概念 必胜态:有一种方法导致下一状态为必败态 必败态:每一种方法导致下一状态为必胜态 解决办法:递推 1: 必败 2: 必胜:取1 ,导致变为1 状态( 必败) 3: 必胜:取2-> 必败态 4: 必败:取1 或2 或4 均导致必败态或直接失败 以些类推知16 为必败态,即后手必胜 剩2 个时, 取1 个必胜; 剩3 个时, 取2 个必胜; 剩4 个时, 如果对手足够聪明则必败; 剩5 个时, 去1 个必胜... 记作 2(1) 3(2) 4(x) 5(1) 6(2) 7(x) 8(1) ... 从中找出规律: 当剩余个数K=3N-2,N 为自然数时, 只要对手足够聪明则必败. 当K=3N-1 时, 有必胜策略: 取1 个; 当K=3N 时, 有必胜策略: 取2 个; 所以, 当16 个时, 后取者有必胜策略. 35、平均分问题(与问题5类似) 有三个酒杯,其中两个大酒杯每个可以装8两酒,一个可以装3两酒。现在两个大酒杯都装满了酒,只用这三个杯子怎么把酒平均的分给4个人喝? 解答:用 一个三位数表示三个杯,880 ,前两个为8 升的杯最后一个3 升。开始:880_853A 喝掉3 升变为:850_823_B 喝掉2 升为:803_830_533_560_263_281A 喝掉1 升(A 已经喝4 升完毕)为:280_253_550_523_820_802_703_730_433_460_163_181CD 各喝一升为:080_053_350_323CD 各喝3 升B 喝2 升,分水结束,ABCD 四人各喝4 升。 36、爱因斯坦提出的问题 爱因斯坦出了一道题,他说世界上有90%的人回答不出,看看你是否属于10%。内容:1、有5栋5种颜色的房子2、每一位房子的主人国籍都不同3、这五个人每人只喝一个牌子的饮料,只抽一个牌子的香烟,只养一种宠物4、没有人有相同的宠物,抽相同牌子的烟,喝相同牌子的饮料已知条件:1、英国人住在红房子里2、瑞典人养了一条狗3、丹麦人喝茶4、绿房子在白房子的左边5、绿房子主人喝咖啡6、抽PALL MALL 烟的人养了一只鸟7、黄房子主人抽DUNHILL烟8、住在中间房子的人喝牛奶9、挪威人住在第一间房子10、抽混合烟的人住在养猫人的旁边11、养马人住在抽DUNHILL烟人的旁边12、抽BLUE MASTER烟的人喝啤酒13、德国人抽PRINCE烟14、挪威人住在蓝房子旁边15、抽混合烟的人的邻居喝矿泉水 问题:谁养鱼? 解答过程:(这种题,耐心想多几次比看答案来得简单些) 已知条件: 首先这9,1,2,3,13可以先填,只是卡片排列顺序还不能确定 9、挪威人住在第一间房子 1、英国人住在红房子里 2、瑞典人养了一条狗 3、丹麦人喝茶 13、德国人抽PRINCE烟 14、挪威人住在蓝房子旁边 4、绿房子在白房子的左边 这里得出房子颜色排列:挪威色->蓝色->绿色->白色->红色 或 挪威色->蓝色->红色->绿色->白色( 前提左边表示第一个房子) 这里推理出错了,绿色在白色左边并不表示相邻的左边 所以顺序为:挪威色-蓝色-绿色-白色-红色或挪威色-蓝色-绿色-红色-白色或挪威色-蓝色-红色-绿 色-白色 7、黄房子主人抽DUNHILL烟 得出挪威人住的是黄色房子,并且挪威人抽DUNHILL烟 所以顺序为:黄色-蓝色-绿色-白色-红色或黄色-蓝色-绿色-红色-白色或黄色-蓝色-红色-绿色-白色 并且有:黄色挪威DUNHILL 11、养马人住在抽DUNHILL烟人的旁边 得出养马人住在挪威人右边,因为假设了挪威的第一间房子是在最左边 得出:黄色挪威DUNHILL 蓝色马 … 红色英国 5、绿房子主人喝咖啡 8、住在中间房子的人喝牛奶 得出应该是红色房子在中间,并且有英国人喝牛奶 颜色排列:黄色->蓝色->红色->绿色->白色 可以得出 黄色挪威DUNHILL,蓝色养马,红色英国牛奶,绿色喝咖啡,白色在最右边,顺序已经固定 好 10、抽混合烟的人住在养猫人的旁边 15、抽混合烟的人的邻居喝矿泉水 由于第一间(黄挪威)以及中间(红英牛奶)固定,所以抽混合烟的人在最后(最右边) 那么得:绿色咖啡猫 白色混合烟 由于红色英国喝牛奶 绿色喝咖啡,所以白色不可能抽混合烟,而黄色挪威抽DUNHILL,所以是蓝色养 马抽混合烟 得到:黄色挪威矿泉水DUNHILL,蓝色马混合烟,红色英国牛奶,绿色咖啡,白色 并且:黄色挪威矿泉水猫DUNHILL 或 红色英国牛奶猫 12、抽BLUE MASTER烟的人喝啤酒 排除易得:这个就是白色啤酒BLUE MASTER 得到:黄色挪威矿泉水DUNHILL,蓝色马混合烟,红色英国牛奶,绿色咖啡,白色啤酒BLUE MASTER 根据丹麦茶 得到:黄色挪威矿泉水DUNHILL,蓝色丹麦茶马混合烟,红色英国牛奶,绿色咖啡,白色啤酒BLUE MASTER 根据德国PRINCE 得到:绿色德国咖啡PRINCE 得到:黄色挪威矿泉水DUNHILL,蓝色丹麦茶马混合烟,红色英国牛奶,绿色德国咖啡PRINCE,白色 啤酒BLUE MASTER 根据瑞典人养狗 得到:白色瑞典啤酒狗BLUE MASETER 得到:黄色挪威矿泉水DUNHILL,蓝色丹麦茶马混合烟,红色英国牛奶,绿色德国咖啡PRINCE,白色 瑞典啤酒狗BLUE MASTER 6、抽PALL MALL 烟的人养了一只鸟 得到:红色英国牛奶鸟PALLMALL 得到:黄色挪威矿泉水DUNHILL,蓝色丹麦茶马混合烟,红色英国牛奶鸟PALLMALL,绿色德国咖啡 PRINCE,白色瑞典啤酒狗BLUE MASTER 由前面10,15得到的猫的可能性 得到:黄色挪威矿泉水猫DUNHILL,蓝色丹麦茶马混合烟,红色英国牛奶鸟PALLMALL,绿色德国咖啡 PRINCE,白色瑞典啤酒狗BLUE MASTER 最后得到:鱼是绿色德国咖啡鱼PRINCE 37、连续整数之和为1000的共有几组? 首先1000为一个解。连续数的平均值设为x,1000必须是x的整数倍。假如连续数的个数为偶数个,x就不是整数了。x的2倍只能是5,25,125才行。因为平均值为12.5,要连续80个达不到。125/2?62.5是可以的。即62,63,61,64,等等。连续数的个数为奇数时,平均值为整数。1000为平均值的奇数倍。1000?2×2×2×5×5×5;x可以为2,4,8,40,200排除后剩下40和200是可以的。所以答案为平均值为62.5,40,200,1000的4组整数。 专家意见: 这类题目多出现于跨国企业的招聘面试中,对考察一个人的思维方式及思维方式转变能力有极其明显的作用,而据一些研究显示,这样的能力往往也与工作中的应变与创新状态息息相关。所以回答这些题目时,必须冲破思维定式,试着从不同的角度考虑问题,不断进行逆向思维,换位思考,并且把题目与自己熟悉的场景联系起来,切忌思路混乱。 38 两个圆环,半径分别是1和2,小圆在大圆内部绕大圆圆周一周,问小圆自身转了几周?如果在大圆的外部,小圆自身转几周呢? 39 1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水? 40 10个箱子,每个箱子10个苹果,其中一个箱子的苹果是9两/个,其他的都是1斤/个。 要求利用一个秤,只秤一次,找出那个装9两/个的箱子。 41、囚犯活命问题 5个囚犯,分别按1-5号在装有100颗绿豆的麻袋抓绿豆,规定每人至少抓一颗,而抓得最多和最少的人将被处死,而且,他们之间不能交流,但在抓的时候,可以摸出剩下的豆子数。问他们中谁的存活几率最大? 提示:1,他们都是很聪明的人2,他们的原则是先求保命,再去多杀人3,100颗不必都分完4,若有重复的情况,则也算最大或最小,一并处死 42、山羊问题 卢姆教授说:“有一次我目击了两只山羊的一场殊死决斗,结果引出了一个有趣的数学问题。我的一位邻居有一只山羊,重54磅,它已有好几个季度在附近山区称王称霸。后来某个好事之徒引进了一只新的山羊,比它还要重出3磅。 开始时,它们相安无事,彼此和谐相处。可是有一天,较轻的那只山羊站在陡峭的山路顶上,向它的竞争对手猛扑过去,那对手站在土丘上迎接挑战,而挑战者显然拥有居高临下的优势。不幸的是,由于猛烈碰撞,两只山羊都一命呜呼了。解答:现在要讲一讲本题的奇妙之处。对饲养山羊颇有研究,还写过书的乔治·阿伯克龙比说道:“通过反复实验,我发现,动量相当于一个自20英尺高处坠落下来的30磅重物的一次撞击,正好可以打碎山羊的脑壳,致它死命。”如果他说得不错,那么这两只山羊至少要有多大的逼近速度,才能相互撞破脑壳?你能算出来吗? 43、酒肆老板娘的难题 据说有人给酒肆的老板娘出了一个难题:此人明明知道店里只有两个舀酒的勺子,分别能舀7两和11两酒,却硬要老板娘卖给他2两酒。聪明的老板娘毫不含糊,用这两个勺子在酒缸里舀酒,并倒来倒去,居然量出了2两酒,聪明的你能做到吗? 44 在9个点上画10条直线,要求每条直线上至少有三个点? 45 12个球和一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?(注意此题并未说明那个球的重量是轻是重,所以需要仔细考虑) 46 你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻? 47、算指针的重合次数 在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的? 48 3个球外观相同,其中有一个球不一样重,如何用天平称三次找出这个球? 49 1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水? 50、国王与预言家 在临上刑场前,国王对预言家说:“你不是很会预言吗?你怎么不能预言到你今天要被处死呢?我给你一个机会,你可以预言一下今天我将如何处死你。你如果预言对了,我就让你服毒死;否则,我就绞死你。”但是聪明的预言家的回答,使得国王无论如何也无法将他处死。请问,他是如何预言的? 51、奇怪的村庄 某地有两个奇怪的村庄,张庄的人在星期一、三、五说谎,李村的人在星期二、四、六说谎。在其他日子他们说实话。一天,外地的王从明来到这里,见到两个人,分别向他们提出关于日期的题。两个人都说:”前天是我说谎的日子。”如果被问的两个人分别来自张庄和李村,那么这一天是星期几? 52、监狱问题 监狱里有100个房间,每个房间内有一囚犯。一天,监狱长说,你们狱房外有一电灯,你们在放风时可以控制这个电灯(熄或亮)。每天只能有一个人出来放风,并且防风是随机的。如果在有限时间内,你们中的某人能对我说:“我敢保证,现在每个人都已经至少放过一次风了。”我就放了你们! 问囚犯们要采取什么策略才能被监狱长放掉?如果采用了这种策略,大致多久他们可以被释放?约定好一个人作为报告人(可以是第一个放风的人)解答:1、报告人放风的时候开灯并数开灯次数2、其他人第一次遇到开着灯放风时,将灯关闭3、当报告人第100次开灯的时候,去向监狱长报告,要求监狱长放人......按照概率大约30年后(10000天)他们可以被释放(好像不必100次) 53、终生受用的一个题 你开着一辆车。在一个暴风雨的晚上。你经过一个车站。有三个人正在焦急的等公共汽车。 一个是快要临死的老人,他需要马上去医院。一个是医生,他曾救过你的命,你做梦都想报答他。还有一个女人/男人,她/他是你做梦都想嫁/娶的人,也许错过就没有了。但你的车只能在坐下一个人,你会如何选择? 前提:国外某公司的面试题 答案: 老人代表你有颗怜悯易感动的心;医生代表感恩的心;喜欢的人是代表爱心;假如是我,我将下车和我爱的人在一起让医生送老人去医院. 原文发布时间为:2018-07-04本文来自云栖社区合作伙伴“安卓巴士Android开发者门户”,了解相关信息可以关注“安卓巴士Android开发者门户”。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册