Uber面经汇总



  • 面经1:
    LZ面的是experiment组,因为面的太早所以实在记不太清了。一轮是product case study,一轮coding,一轮end to end做一个ab testing,一轮Data Science to solve social problem (e.g. Use data science knowledge to assess how uber help ease local unemployment problem),一轮Hiring Manager聊天,也有techinical的竟然还问到了ml里的OCR…LZ还是讲了一下Conditional Random Field不是很确定HM是不是get。。。
    Uber的offer出来的非常快,面试我的人性格都很好,我觉得是一个很好相处的组。LZ感觉他们做的有意思但是project方面的define稍微有些易变。

    面经2:
    电面:3sum 变形 很简单 就要O(n^2)做法就可以了 给三个sorted array 和target sum 每个array拿一个加起来是target sum

    onsite:

    1. Hiring Manager,法国人,没有code 只是讨论 给500k城市 搜索san 返回10个san 开头的城市 就用trie 做 分析了一堆时间空间 然后大概说了一下web server怎么交流
    2. Bar Raiser,印度人,Word ladder 我只写了返回t/f 他问了一下怎么返回shortest path 大概说了一下然后昨天查了一下肯定说的是错的。。。 然后就谈笑风生
    3. Problem Solving,abc,haystack needle 中间发现他test case有问题改了半天然后他已经用很久了感觉他很囧想说之前是不是也一直这样。。然后又口头说了一下get random() in O(1).
      4.Coding
      国人。返回可能的乘积组合 比如给12返回(2,6)(3,4)(2,2,3).之后跟我聊了20分钟他们组最近刚写的东西解释了一堆database的东西。。随口问了一些很小的问题。
      5.Coding
      lru 而且这个人本来只想用singly linked list 所以觉得我用了doubly linked list 非常好. 除了第一个之后的code都是要跑出来当场bug free的

    面经3:
    下面是他发给我的CODE,就是READ N BYTE II那个题,只是要OUTPUT READ到的东西,而不是像LEETCODE那样仅仅RETURN一个INT,不过面试官说他这个解法很多问题,然后提出了一个问题,就是说他这个解法MEMORY USAGE不行,他和面试官聊了半天,原来面试官嫌弃他用的是List,因为Byte要额外auto-boxing,所以还要存pointer,浪费空间,然后他改成byte[],然后面试官说,一开始因为不知道要READ的FILE的长度,他就只能initate一个byte[n],然后面试官又说这个不好,因为JAVA的ARRAY是不能RESIZE的,所以你如果一个文件只有5BYTE,但用户设置的N是10000000,那你一开始就要INITATE一个1000000长度的ARRAY,后面全都是0,浪费空间,然后我那朋友又说,那我读完了,发现长度OUTPUT ARRAY长度没有填满,我再INITIATE一个短的ARRAY,把数据拷贝过去可以吧,面试官说,那你一开始要INITIATE一个1000000的ARRAY还是没解决啊。我朋友只好说,那他也没辙了,感觉是JAVA语言缺陷。然后面试官说,你可以仿照ARRAYLIST的做法,先INITIATE一个短ARRAY,填满了,再INITIATE一个两倍长度的ARRAY,然后把数据拷贝过去。。。。这个感觉也不是很EFFICIENT吧
    另外面试官说这个CODE还有很多其他的问题,但他没时间说了,不知道哪位高手能指正一下,还有什么其他问题,难道是没考虑多线程加锁?

    public class ReadNBytes{

    Queue queue;

    public ReadBytes()
    {
    queue = new LinkedList();
    }
    public List readNBytes(int n)
    { // byte
    List; res = new ArrayList();
    if (n <= 0)
    return res;

    if (this.queue.size()>0)
    {. 1point3acres.com/bbs
        this.readFromQueue(res, n, 0);
    }
    
    if (res.size() < n).
    {
        this.readFromBuffer(res, n, res.size());
    }
    
    return res;
    

    }

    private void readFromBuffer(List res, int n, int length)
    {
    boolean endOfFile = false;

    while (!endOfFile && length < n). 
    {
        byte[] curRes = read4Bytes(); // 1 2 3 4 5 6
        if(curRes.length<4)
        endOfFile = true;
    
        int thisLen = Math.min(n-length, curRes.length);
        for (int byteIndex = 0; byteIndex< thisLen; ++byteIndex)
        {
            res.add (curRes[byteInex])
            ++length;
        }
    
        if (thisLen<curRes.length)
        {
            for (int queueIndex = thisLen; queueIndex<curRes.length; ++queueIndex)
            {
                this.queue.offer(curRes[queueIndex]);
            }
        }
    }
    
    return res;
    

    }
    private void readFromQueue(List res, int n, int length)
    {
    int lengthToRead = Math.min(n, this.queue.size())
    for (int readIndex = 0; readIndex<lengthToRead; ++readIndex)
    {
    res.add(queue.poll());

    面经4:

    1. design: facebook recommendation, 类似auto complete吧

    2. excel + behavior

    3. 算法,忘了题目了。。但是非要我写白板。

    4. behavior + culture fit
      第二天内部人就告诉我过了,是china组吧但是LZ仍然在U和FB之间纠结。
      给喜欢U的人建议吧: 算法就别费劲看了,多看design。

    推荐给大家一个CS群,都是找工作的大家聚在一起,定时会在群里分享IT咨询、工作机会,交流大牛的工作心得。
    0_1482534790896_782300758280234399.jpg


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待