一亩三分地论坛

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

扫码关注一亩三分地公众号
查看: 531|回复: 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.. visit 1point3acres.com for more.
然后问我的全是数据库的内容,问我index内部实现是什么,我说b, b+树,问我使用b+树的优点,我说可以降低时间复杂度,降低到logn,
并且每一块都是一个page size,并且可以减少IO 查询次数,然后又问我还有什么choice嘛,我说hashmap,他说为什么index不采用hashmap. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
而使用b+树,我说建hashmap需要额外的空间(其实我感觉建个树,额外指针也需要空间,但是我实在不知道为什么了),于是呢 他就问我如何进行
range search 举了个例子
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的程序

Index is a hash table where the key is the column to be indexed; value is primary key 鏉ユ簮涓浜.涓夊垎鍦拌鍧.

index on name:
hash {
  "Foo" => 1,-google 1point3acres
  "Bar" => 2,
}

index on name (as tree):
   Foo (1).1point3acres缃
  /   
Bar (2). Waral 鍗氬鏈夋洿澶氭枃绔,

struct Node {
  int key,
  int value,
  Node *left,
  Node *right

}

t  =
     7
   /   \
  3     10
/ \    / \
1   2  9   13. 鍥磋鎴戜滑@1point 3 acres

rangeQuery(t, 4, 10) => ?
rangeQuery(t, 8, 12) => ?
...

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>();
    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);.鏈枃鍘熷垱鑷1point3acres璁哄潧
        }
         else if(root.key < minKey){
            rangeQuery(root.right,minKey, maxKey);. 鍥磋鎴戜滑@1point 3 acres
        }. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
        return al;
    }.鐣欏璁哄潧-涓浜-涓夊垎鍦
}

写的时候有点紧张,有点小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, 2017-1-16 19:11

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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