一亩三分地论坛

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

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

shopkick second round phone interview

[复制链接] |试试Instant~ |关注本帖
sumingche 发表于 2014-2-22 08:59:46 | 显示全部楼层 |阅读模式

2014(1-3月) 码农类 硕士 全职@Shopkick - 网上海投 - 技术电面 |Other

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

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

x
Shopkick 第二轮面试,server组的人面试我,开始讲了一大堆他做的project如何如何fancy.
然后问我的全是数据库的内容,问我index内部实现是什么,我说b, b+树,问我使用b+树的优点,我说可以降低时间复杂度,降低到logn,
并且每一块都是一个page size,并且可以减少IO 查询次数,然后又问我还有什么choice嘛,我说hashmap,他说为什么index不采用hashmap. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
而使用b+树,我说建hashmap需要额外的空间(其实我感觉建个树,额外指针也需要空间,但是我实在不知道为什么了),于是呢 他就问我如何进行
range search 举了个例子. 1point 3acres 璁哄潧
how do we query for rows that have a date in the year 2013?
然后我说用sql应该这样写
select * from a where data >= "2013-01-01" && data <="2013-12-31" -- what's the complexity if we have a hash index vs. a tree index?
他说这样查找的话,hashmap的时间复杂度是多少,我说是o(n),因为要遍历,他说我get point啦,然后rangquery的程序
. visit 1point3acres.com for more.
Index is a hash table where the key is the column to be indexed; value is primary key

index on name:
hash {
  "Foo" => 1,. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  "Bar" => 2,
}

index on name (as tree):
   Foo (1)
  /   
Bar (2)
. Waral 鍗氬鏈夋洿澶氭枃绔,
struct Node {
  int key,
  int value,. visit 1point3acres.com for more.
  Node *left,
  Node *right
. from: 1point3acres.com/bbs
}

t  =
     7
   /   \
  3     10
/ \    / \. from: 1point3acres.com/bbs
1   2  9   13
. more info on 1point3acres.com
rangeQuery(t, 4, 10) => ?
rangeQuery(t, 8, 12) => ?
...
. 1point 3acres 璁哄潧
rangeQuery(t, -1, 15) => ?

rangeQuery(root, minKey, maxKey) -> returns all nodes that have keys falling between minKey and maxKey (inclusive)

public class Solution{
    ArrayList<Node> al = new ArrayList<Node>();. 1point 3acres 璁哄潧
    public ArrayList<Node> rangeQuery(root, minKey, maxKey){

        if(root == null) return al;
        if(root.key <= maxKey && root.key >= minKey) {
             al.add(root);
             rangeQuery(root.left, minkey, maxKey);. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
             rangeQuery(root.right ,minkey, maxKey);
        }
        else if(root.key > maxKey){. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
            rangeQuery(root.left, minKey, maxKey);
        }
         else if(root.key < minKey){.鐣欏璁哄潧-涓浜-涓夊垎鍦
            rangeQuery(root.right,minKey, maxKey);
        }
        return al;.1point3acres缃
    }. 鍥磋鎴戜滑@1point 3 acres
}

写的时候有点紧张,有点小bug,等号忘加了,并且arraylist.add()写成 arraylist.get()了,这个错误实在是不该哦,他说这些错误不太重要,因为在IDE上能改过来,他说要清楚index的实现,这个很重要。自己觉得这一轮应该很难过,
这些小公司基本就的bug free.有点瑕疵,onsite基本就没戏,学到了一点,hashmap只有搜索某一item的时候,才是
最快的,但是search a range 就不太适用了,以前在国内学过数据库,但是没想到index实现的问题,cmu 15615如果
能好好学过的话,这次面试就该过了~



补充内容 (2014-2-25 22:13):
很开心,最后有onsite啦

评分

6

查看全部评分

大屁股妖 发表于 2014-5-13 05:14:29 | 显示全部楼层
明天就要去面这个逗比shopkick了..楼主有onsite的面经吗?感谢..
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-5 21:04

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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