[八我司] 介绍一下Uber tech stack和各个大组的情况

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 2726|回复: 11
收起左侧

Uber面经分享

[复制链接] |试试Instant~ |关注本帖
ab380765597 发表于 2015-9-24 02:58:36 | 显示全部楼层 |阅读模式

2015(7-9月) 码农类General 硕士 全职@Uber - 内推 - 其他  | Fail | fresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
今天刚面完Uber, 同学内推,growth组。
一个白人小哥,说话声音很懒散。。。上来就谈简历的事情,问做了什么project,我把自己准备的东西说了一下,花了十分钟,然后他说那我们现在开始做题吧
题目: How to insert a number in a rotated sorted array?
e.g: 给一个数组[4,5,8,9,1,2] target=10 --> [4,5,8,9,10,1,2]
当target=7 要返回 [4,5,7,8,9,1,2].1point3acres网
要求 要inplace(不要额外空间), 时间复杂度要快于线性。. visit 1point3acres for more.

想问问各位大神,这道题和Leetcode里面search in rotated array 有点像,但是是插入值。我实在是想不出如何用java做到inplace 数组的, 最后只用binary search找到了最大值的位置,解决了target大于最大值或小于最小值的情况。。。
还有当时没来及问出现 3的话是插头还是插尾, 哎。。

hanchen999 发表于 2015-9-24 04:35:29 | 显示全部楼层
感觉好难啊,得先求出最大值最小值吧
回复 支持 反对

使用道具 举报

cbwcs 发表于 2015-9-24 04:41:55 | 显示全部楼层
搜索插入位置应该都是leetcode的原题,但insert in数组,而且时间小于线性,真心不知道怎么弄啊,坐等大神解答
回复 支持 反对

使用道具 举报

wenqiang88 发表于 2015-9-24 06:40:57 | 显示全部楼层
要插入数组不可能快于线性吧...
回复 支持 反对

使用道具 举报

hanchen999 发表于 2015-9-24 07:26:03 | 显示全部楼层
自己写了个。。不知道对错。。。import java.util.*;
import java.lang.*;.留学论坛-一亩-三分地
import java.io.*;-google 1point3acres

public class rotatedarray{
        public static int position(int[] array, int target). visit 1point3acres for more.
        {
                if (array[0] < array[array.length - 1])
                        return getresult(array, 0, array.length - 1, target);
                int start = 0;. 牛人云集,一亩三分地
                int end = array.length - 1;
                while (start < end - 1)
                {
                        int mid = start + (end - start) / 2;
                        if (array[mid] < array[mid + 1] && array[mid] < array[mid - 1])
                        {
                                start = mid;
                                break;
                        }
                        else if (array[mid] > array[start] && array[mid] > array[end])
                                start = mid + 1;
                        else if (array[mid] < array[start] && array[mid] < array[end])
                                end = mid - 1;
                        else if (array[start] < array[end])
                          break; 来源一亩.三分地论坛.
                }
                if (array[start] > array[end])
                        start = end;
                if (target < array[start] || target > array[start - 1])
                        return start;
                else if (target <= array[array.length - 1]). From 1point 3acres bbs
                        return getresult(array, start, array.length - 1, target);
                else. visit 1point3acres for more.
                        return getresult(array, 0, start - 1, target);
        }

        private static int getresult(int[] nums, int i, int j, int target)
        {
                int start = i;
                int end = j;
                while (start <= end)
                {. 1point3acres
                        int mid = start + (end - start) / 2;
                        if (target == nums[mid])
                                return mid;. 围观我们@1point 3 acres
                        else if (nums[mid] < target)
                                start = mid + 1;
                        else
                                end = mid - 1;
                } 来源一亩.三分地论坛.
                if (nums[start] <= target)
                        return start + 1;
                return start;. more info on 1point3acres
        }

        public static void main(String[] args)
        {
                System.out.println(position(new int[]{5,2,4}, 3));
        }
}

. from: 1point3acres

回复 支持 反对

使用道具 举报

f1371342385 发表于 2015-9-24 07:37:42 | 显示全部楼层
LZ,这题不可能吧,插入数组怎么可能会小于线性。。。LZ,你是不是理解错误了?
回复 支持 反对

使用道具 举报

头像被屏蔽
ccjobhunter2011 发表于 2015-9-24 09:23:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

 楼主| ab380765597 发表于 2015-9-24 09:52:01 | 显示全部楼层
f1371342385 发表于 2015-9-24 07:37
LZ,这题不可能吧,插入数组怎么可能会小于线性。。。LZ,你是不是理解错误了?
. Waral 博客有更多文章,
这是真的,我也和面试官说过Array插入element一定会O(n)的,但他的意思是只要是O(n)就慢了, 最后我插入还是按O(n)写的。 仔细想下这题如果用O(n)我们直接遍历求解就行了, 那这样就没什么意义了
Mobile Apps Category (English)728x90
回复 支持 反对

使用道具 举报

 楼主| ab380765597 发表于 2015-9-24 09:53:13 | 显示全部楼层
wenqiang88 发表于 2015-9-24 06:40
要插入数组不可能快于线性吧...

我也和他说过这个问题
回复 支持 反对

使用道具 举报

f1371342385 发表于 2015-9-24 11:28:54 | 显示全部楼层
ab380765597 发表于 2015-9-24 09:53. from: 1point3acres
我也和他说过这个问题

LZ,他是怎么回复你的?
回复 支持 反对

使用道具 举报

leixiang5 发表于 2015-9-24 11:54:18 | 显示全部楼层
坐等大神解答。。
. 1point 3acres 论坛
补充内容 (2015-9-24 11:54):
除非有空位。。不然怎么样都要shift吧
回复 支持 反对

使用道具 举报

bobzhang2004 发表于 2016-2-10 11:36:11 | 显示全部楼层
应该是有空位吧,不然绝对要一个新的数组啊
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-5-26 01:14

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表