那些年让你吐血的面试题
2015-11-17 09:47
411 查看
QQ群288567073,无商业广告,每日干货电子书+视频分享荔枝FM手机客户端搜索“挨踢脱口秀”即可订阅我们视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html
看完我就想:靠,小明咋没喝汽水撑死。
不过想完题还是要做的,代码还是要写的。其实这题想想也不难,递归实现,不断喝,撑死为止。
两行代码搞定,还是还是可以的嘛。
不过被告知答案错误,最后只剩下一瓶的时候,小明还可以找老板借个空瓶子,两个空瓶子换一瓶汽水,喝完再把空瓶子还回去嘛。
小W一口老血。
这还不算关键,最后测试了几组数据,惊奇地发现,答案原来就是:
2N
仔细想想,也好解释,我们需要把每个瓶子看成一个独立的单位,当喝完后拿该瓶子和和另外的空瓶一起去换时,可以想象成从别的去借来一个空瓶子,换来的汽水喝完后再把空瓶子还回去。
这样就相当于每买一瓶都可以喝两瓶,且不会有剩余,最大化利用了,最后的结果就是2n。
好吧,只能感概现在小学生的题目越来越益(bian)智(tai)了。
那下面来道小学生没做过的吧(不代表小学生不会做哦~)
给你一个数n,让你找出m(m >= 3)个数,使得:a1 - a2 + a3 - a4 + a5 - a6...am = n且前面数是后面数的整数倍(至少2倍),即a1除以任何一个后面的数结果都为一个大于1的整数,依此类推a2,a3...am
例如:99 = 128 - 32 + 4 - 1224 = 256 - 64 + 322 就无法拆分成这样的序列
现在给你一个正整数n,让你构造这样的序列。拿到题了想啊,这题绝壁是化为二进制处理嘛,化成二进制串,搜索加剪枝,搞搞差不多。
但是n = 2(n-1) - (n-1) + 1只要保证 n - 1 > 1,即n > 2都可以这样拆,小于等于2的无解。好吧。
2、想了会,还是没有巧解的想法,那就赶紧先把最基本的想法写出来,像第一题你先写个递归的也还可以;
3、就是完全没有想法,像第二题,即想不到巧解的办法,又不会写复杂的搜索程序。那这个时候你就危险了,但记住千万不要什么都不做,你可以写个不是完全对的代码,比如这题我可以写个遍历,选择一定的范围一个个尝试。虽然这种做法容易遭到鄙视,但是总比什么不做好,至少向面试官证明你在努力解决问题,这个勇于死磕难题态度很重要。此外,如果你项目经验丰富,或者代码习惯好等等也可以在这时候展示给面试官,或许能从其他方面打动面试官;
4、如果你还是在校生,建议可以看看编程之美之类的书籍,如果你还是大一大二的话,那搞搞ACM吧,这个能给你面试提供很大的帮助,很大!!!
喝汽水撑死的小明
小明去小卖部买汽水喝,一块钱一瓶,且喝完两个空瓶可以换一瓶汽水。现在小明一共有20块钱,问一共能喝多少瓶汽水?看完我就想:靠,小明咋没喝汽水撑死。
不过想完题还是要做的,代码还是要写的。其实这题想想也不难,递归实现,不断喝,撑死为止。
两行代码搞定,还是还是可以的嘛。
不过被告知答案错误,最后只剩下一瓶的时候,小明还可以找老板借个空瓶子,两个空瓶子换一瓶汽水,喝完再把空瓶子还回去嘛。
小W一口老血。
这还不算关键,最后测试了几组数据,惊奇地发现,答案原来就是:
2N
仔细想想,也好解释,我们需要把每个瓶子看成一个独立的单位,当喝完后拿该瓶子和和另外的空瓶一起去换时,可以想象成从别的去借来一个空瓶子,换来的汽水喝完后再把空瓶子还回去。
这样就相当于每买一瓶都可以喝两瓶,且不会有剩余,最大化利用了,最后的结果就是2n。
吐血2.0
什么,上面那题你做过,还是小学!!!好吧,只能感概现在小学生的题目越来越益(bian)智(tai)了。
那下面来道小学生没做过的吧(不代表小学生不会做哦~)
给你一个数n,让你找出m(m >= 3)个数,使得:a1 - a2 + a3 - a4 + a5 - a6...am = n且前面数是后面数的整数倍(至少2倍),即a1除以任何一个后面的数结果都为一个大于1的整数,依此类推a2,a3...am
例如:99 = 128 - 32 + 4 - 1224 = 256 - 64 + 322 就无法拆分成这样的序列
现在给你一个正整数n,让你构造这样的序列。拿到题了想啊,这题绝壁是化为二进制处理嘛,化成二进制串,搜索加剪枝,搞搞差不多。
但是n = 2(n-1) - (n-1) + 1只要保证 n - 1 > 1,即n > 2都可以这样拆,小于等于2的无解。好吧。
面对这种吐血的题该怎么办
1、很快有想法了不用急着写代码,因为一旦思维定式了很难回来,而且或许你多想两分钟就可以少敲20分钟的代码,更重要的是在面试官的心中的印象分会大大提高;2、想了会,还是没有巧解的想法,那就赶紧先把最基本的想法写出来,像第一题你先写个递归的也还可以;
3、就是完全没有想法,像第二题,即想不到巧解的办法,又不会写复杂的搜索程序。那这个时候你就危险了,但记住千万不要什么都不做,你可以写个不是完全对的代码,比如这题我可以写个遍历,选择一定的范围一个个尝试。虽然这种做法容易遭到鄙视,但是总比什么不做好,至少向面试官证明你在努力解决问题,这个勇于死磕难题态度很重要。此外,如果你项目经验丰富,或者代码习惯好等等也可以在这时候展示给面试官,或许能从其他方面打动面试官;
4、如果你还是在校生,建议可以看看编程之美之类的书籍,如果你还是大一大二的话,那搞搞ACM吧,这个能给你面试提供很大的帮助,很大!!!
相关文章推荐
- win下程序员的救星powercmd
- 程序员的那些事儿 -- 高级程序员买衣服
- 有了这个列表,程序员不愁没练手的小项目了
- SMART原则助你设定有效目标
- 黑马程序员_iOS_C_数组
- 2015-11-16面试的一些问题 我想记录一下。
- 史上最全面的程序员招聘建议
- [非凡程序员]XibView tableViewXib
- 码农的祖宗是个妹子?!信不信由你!
- 北漂程序员的笑与泪
- 书评-----疯狂Java:突破程序员基本功的16课.李刚
- 关于运算符问题的两道面试题
- 黑马程序员_java对泛型的限定: <? extends E > , < ? super E > 的理解和体会。
- 四件在我步入职业软件开发生涯那天起就该知道的事情
- 最新Android面试题集锦
- 嵌入式程序员应该知道的16个问题
- Java程序员常用工具集
- 程序员必读书单
- 非著名程序员公众号
- 非著名程序员公众号