一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 2521|回复: 15
收起左侧

Uber Onsite (Full Stack非主流面试)

[复制链接] |试试Instant~ |关注本帖
norman_xin 发表于 2016-5-13 14:48:53 | 显示全部楼层 |阅读模式

2016(4-6月) 码农类 硕士 全职@Uber - 猎头 - Onsite |Fail在职跳槽

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

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

x
面的是Full Stack,题目略有些非主流,前端和full stack的同学可以参考下:
Round1:美国小伙和国人大哥,设计实现一个单元测试用的function, test(desc, cb),功能类似于Jasmine的it(desc, cb);
Round2:台湾hiring manager,behavior
Round3: 三哥,有两个api:/v1/api1返回{result: val1},/v1/api2返回{result: val2},提供异步方法request(url, successcb),写代码打印出{result: val1 + val2},不能使用Promise,不能嵌套callback。(不用promise的话判断所有request都resolve的条件不好处理,用了两个isFetching做flag来标志异步request是否完成,实际项目肯定不会那么写,完全不知道这道题目想考啥重点)。
Round4:国人大哥,obj1 = {a: 1, b: 2, c: {d: 3}},obj2 = {b: 'a', c: {d: 4}},写一个递归函数merge(obj1, obj2),合并后的结果为{a: 1, b: [2, 'a'], c: {d: [3, 4]}}
Round5: 三哥director,behavior,有n个cityLog,里面的包含各个城市各个时间点的车辆的数量,比如cityLog1 = ['1:00': 3, '1:03': 5, '2:00': 7],cityLog2 = ['1:00': 2, '1:02': 5, '2:02': 8],写function输出各个时间点车辆数量总和, total = ['1:00': 5,'1:02': 8, '1:03': 10, '2:00': 12, '2:02': 15],没想出什么太优化的方案,三层for循环brute force

评分

2

查看全部评分

csushin1992 发表于 2016-8-9 13:12:00 | 显示全部楼层
修正以上code...亲测有效。。
function main(obj1, obj2){
        var ret = new Object();
        for(var key1 in obj1){
                if(key1 in obj2){
                        if((obj1[key1] instanceof Object) && (obj2[key1] instanceof Object)){
                                ret[key1] = main(obj1[key1], obj2[key1]);
                        }-google 1point3acres
                        else{
                                var tmp = [];
                                tmp = tmp.concat(obj1[key1]);
                                tmp = tmp.concat(obj2[key1]);
                                ret[key1] = tmp;;
                        }
                }
                else{
                        ret[key1] = obj1[key1];
                }. From 1point 3acres bbs
        }
        for(var key2 in obj2){
                if(!(key2 in obj1)){
                        ret[key2] = obj2[key2];
                }
        }
        return ret;
}
回复 支持 1 反对 0

使用道具 举报

lillian0 发表于 2016-6-21 12:42:44 | 显示全部楼层
求认识楼主!
回复 支持 反对

使用道具 举报

larry 发表于 2016-6-21 16:23:11 来自手机 | 显示全部楼层
第三题 有没有可能是考察promise的具体实现…我猜…
回复 支持 反对

使用道具 举报

 楼主| norman_xin 发表于 2016-6-22 02:29:51 | 显示全部楼层
larry 发表于 2016-6-21 16:23
第三题 有没有可能是考察promise的具体实现…我猜…

其实就是想考怎样处理异步吧,不用promise的话可以这么写:. 鍥磋鎴戜滑@1point 3 acres
. visit 1point3acres.com for more.
function addResults(urls) {
  var cache = [];

  url.forEach(function(url) {. 1point3acres.com/bbs
    request(url, function(res) {
      cache.push(res);

      if (cache.length === urls.length) {
        var sum = cache.reduce(function(prev, cur) { return prev + cur; }, 0); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
        console.log({result: sum});
      }
    });
  });
}. From 1point 3acres bbs

保证异步的request方法并行取数据就好
回复 支持 反对

使用道具 举报

 楼主| norman_xin 发表于 2016-6-22 02:47:00 | 显示全部楼层
再来个Promise版的
function addResults(urls) {
  var promises = urls.map(function(url) {
    return new Promise((resolve) => { request(url, resolve); });
  });

  Promise.all(promises).then(results => {
    var sum = cache.reduce((prev, cur) => { return prev + cur; }, 0);.鐣欏璁哄潧-涓浜-涓夊垎鍦
    console.log({result: sum});. 鍥磋鎴戜滑@1point 3 acres
  });. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
}
回复 支持 反对

使用道具 举报

lillian0 发表于 2016-6-22 02:56:21 | 显示全部楼层
现在面试都用es6了吗?.鏈枃鍘熷垱鑷1point3acres璁哄潧

补充内容 (2016-6-21 12:56):
求认识大神
回复 支持 反对

使用道具 举报

 楼主| norman_xin 发表于 2016-6-22 03:33:57 | 显示全部楼层
lillian0 发表于 2016-6-22 02:56
现在面试都用es6了吗?

补充内容 (2016-6-21 12:56):

大部分面试写ES5就好,也许有一些公司会要求ES6,投简历之前可以看看job description。Promise的概念即使使用ES5也是要熟悉的。

我不是大神啦,可以加我微信,norman_xin。有前端技术问题可以讨论下。
回复 支持 反对

使用道具 举报

 楼主| norman_xin 发表于 2016-6-22 05:45:48 | 显示全部楼层
再说说第一题,这是个设计题,test这个函数主要作用是执行测试,输出测试成功/失败信息。

var logs = new Map();

function test(desc, fn) {
  logs.set(desc, []);
-google 1point3acres
  var promise = new Promise((resolve) => {
    fn(resolve);
  });

  promise.then(() => {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
    var failures = logs.get(desc);
    console.log(`${desc} ${failures.length ? 'failed' : 'passed'}`);. more info on 1point3acres.com
    failures.forEach((failure) => {. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
      console.log(failure); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
    });
  });
}

调用起来就是类似Jasmine
test('test something', function(done) {
  //var a = 1, b = 2;
  //assertEquals(a, b);

//或者异步
//setTimeout(function() {
//   assertEquals(a, b);
//   done();
// }, 1000);
});. Waral 鍗氬鏈夋洿澶氭枃绔,

补充内容 (2016-6-22 05:49):
断言类的函数像是assertEquals如果遇到断言失败就在logs相应的记录里面插入一条信息
回复 支持 反对

使用道具 举报

fansilek 发表于 2016-6-23 00:59:48 | 显示全部楼层
norman_xin 发表于 2016-6-22 05:45
再说说第一题,这是个设计题,test这个函数主要作用是执行测试,输出测试成功/失败信息。

var logs = n ...

大神求认识,可以加你微信吗?
回复 支持 反对

使用道具 举报

 楼主| norman_xin 发表于 2016-6-23 01:09:42 | 显示全部楼层
fansilek 发表于 2016-6-23 00:59
大神求认识,可以加你微信吗?
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
当然可以咯,norman_xin,有问题可以一起讨论
回复 支持 反对

使用道具 举报

fansilek 发表于 2016-6-28 10:01:04 | 显示全部楼层
norman_xin 发表于 2016-6-23 01:09
当然可以咯,norman_xin,有问题可以一起讨论

我加您了,周小喵
回复 支持 反对

使用道具 举报

 楼主| norman_xin 发表于 2016-6-28 12:20:19 | 显示全部楼层
fansilek 发表于 2016-6-28 10:01
我加您了,周小喵
. more info on 1point3acres.com
不好意思,微信号写错了,我的是NormanXin,要麻烦你重新加一下啦
回复 支持 反对

使用道具 举报

lilihao2014 发表于 2016-6-29 08:00:39 | 显示全部楼层
没有system design???
回复 支持 反对

使用道具 举报

 楼主| norman_xin 发表于 2016-6-29 08:33:12 | 显示全部楼层

木有system design,其他题目也没一道面经
回复 支持 反对

使用道具 举报

csushin1992 发表于 2016-8-9 13:00:03 | 显示全部楼层
话说第四轮我这样写:
function main(obj1, obj2){
        var ret = new Object();
        for(var key1 in Object.keys(obj1)){
                if(key1 in Object.keys(obj2)){
                        if(key1 instanceof Object){. from: 1point3acres.com/bbs
                                ret[key1] = main(obj1[key1], obj2[key1]);
                        }
                        else{
                                var tmp = [];
                                tmp.concat(obj1[key1]);
                                tmp.concat(obj2[key1]);
                                ret[key1] = tmp;;
                        }
                }. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
                else{
                        ret[key1] = obj1[key1];
                }
        }
        for(var key2 in Object.keys(obj2)){
                if(!(key2 in obj1)){
                        ret[key2] = obj2[key2];. more info on 1point3acres.com
                }
        }
        return ret;
}
请指教~
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

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

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-5 12:38

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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