17滴滴出行秋招

2017滴滴出行校招

正在找工作,互联网也不够景气,各种缩招,做笔试做的心塞。去参加某公司的宣讲会,主办方准备了一个教室,结果来了至少5教室的人(学计算机的人真多啊),没我的岗位去的目的是给同学助攻,结果卷纸不够。想着下午还有滴滴出行的笔试题,就先回来了,开电脑发现已经开考快一个小时了,就随便写了几道交了。=.= 又特么打酱油了。应聘的是算法岗,都是统计、机器学习方面的题目,这个我喜欢。印象中的几道题写下来,下面的是我从我的为知笔记拷贝过来的,为知笔记可能和博客园解析markdown效果不太一样,拷贝过来后格式有点乱。

选择题##

  1. 一个不透明的箱子中有红、黄、白、蓝、绿五种小球,每个人从篮子中取出2个小球,问至少需要多少个人抽,才能保证抽到重复颜色的小球(16
    一个人抽两个小球的结果一共有15中可能颜色相同的5个,颜色不同的有C(5,2)在第16个人抽的时候出现重复,所以是16人
  2. 35!末尾有多少个零?
    10=5*2,所以找0的个数只用找有多少个5的倍数2要比5多,所以有5,10,15,20,25,30,35,总共7个,由于25=5*5多出一个,所以共有8个
  3. 5个红球,10个黄球,15个蓝球,随机拿一个(不放回),则红色球先被拿完的概率7/12
    红球先被拿完的情况有红黄蓝红蓝黄分别讨论
    • 红黄蓝
      10个黄球,总共11个空,红球先被拿完就是用红球去前10个空,插入一个就多个空,总共有10*11*12*13*14种情况,由于红球是无差别的,需要除以A(5,5),即得到C(14,5),然后在用类似方法,把红黄插入蓝色即得到C(29,15)
    • 红蓝黄
      15个蓝色球,插入15个空位,有15*16*17*18*19,即得到C(19,5),红蓝插入到红色球中即得到C(29,20)
    • 总体情况
      A(30,30)/A(5,5)A(15,15)A(10,10)
      注意 A(10,10) = A(10,6)*A(5,5)
  4. 如图三个正方形并列,求x,y,z加起来多少度(90)

    tanz = 1,z=45°,tany = 1/2,tanx = 1/3 tan(x+y) = (1/2+1/3)/(1-1/2*1/3)=5/5=1
  5. 一根长度为100米长的绳子,需要被切割成10000根长度为1cm的小段,若一次可以同时切割多根绳子,请问最少需要切割(14)次
    一刀切2段 log22 ......,2n段需要N刀。213 < 10000 <214 需要14刀。
  6. 2016欧洲杯小组赛,分4个小组进行,每个小组由6支球队组成,每支球队都与同组对手比赛一场,小组共多少场比赛(60)
    (5+4+3+2+1)*4 = 60
  7. 假如技术团队有50人,其中会C语言的有36人,会JAVA的有44人,会GO语言的有32人,同时会三种语言的至少有多少人(B)?
    A.20 B.12 C.10 D.8
    我不会,我蒙的B 12人,我的方法是这样。
    假设C 和 JAVA的人构成了全集,为什么选这两个?答:人多。44 + 36 - X =50,X=30,下图

    三种语言都会的人就在这30人里面,32 - 6 - 14 = 12

编程题##

  1. 题目描述
    给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
    我的代码,可能存在bug
    public static void solution(int a,int n)
    {
        Stack<String> s = new Stack<String>();
        while(a != 0)
        {
            int remider = a % n;
            if(n > 10 && remider > 10)
            {
                int m = remider -10 + 97; //'a'
                s.push((char)m + "");
            }
            else
            {
                s.push(remider + "");
            }
            a /= n;
        }
        while(!s.isEmpty())
        {
            System.out.print(s.pop());
        }
    }
    
  2. 题目描述
    给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。 当两种选择方案有一个数字的下标不一样,我们就认为是不同的组成方案
    输入例子
    5 15 5 5 10 2 3
    输出例子
    4
    解答
    这是这么思考这个问题的:找出所有的子集,统计满足子集的个数,可以利用我前面的一篇文章求集合的子集总结及案例 解答。略微不同的是下标不一样,认为是不同的组成方案,所以就不能用set存储满足要求的子集了。代码在这里

posted on 2016-09-28 22:29  Wanna_Go  阅读(732)  评论(0编辑  收藏  举报

导航