今天在CSDN上看到的两道面试题,怀着好奇的心态去看了一下,发现自己的脑子果然不好使了,看问题太表面了。所以我必须拿出来给大家分享一下,这是两道百度的面试题,适合程序员们来做。
面试题
1、一个篮子里装着20个红球和20个蓝球,每次从中取出2球,如果取出的2球颜色不一样的,那么放回红球,取出蓝球;如果取出的2球颜色一样,则都不放回;不断重复以上步骤。问题:求最后一次取球的时候两球颜色不一样的概率。
2、给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数。
看完这两题,大家会有什么想法,首先第一题,一看就觉得是概率题,很多人都想不起求概率的那些公式了,就不愿意再去想。第二题,程序员认为这是一道算法题,按照题意,只要会求素数,就能把答案求出来。
可惜以上是大部分人的想法,第一题,红球要么被取走2个,要么0个,红球每次都是以偶数的个数存在,最后一次取的时候不是0,就是2,所以可以直接得出最后一次取到1个红球的概率为0,这一点你们想到了吗?其实要想到这一层很简单,很多人是被概率吓到了就不敢进一步去想,这道题考的不是概率,而是面试者是不是善于思考。
第二题,按照题目的意思,写程序,跑一遍虽然也能得出结果,不过有一个东西叫“哥德巴赫猜想”,即任一大于2的偶数都可写成两个素数之和。对于这一题,我认为不管是编程实现,还是直接用“哥德巴赫猜想”打印结果,都算是合格的,前者体现基础知识,后者体现编程能力和算法。