一亩三分地论坛

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

一亩三分地官方iOS手机应用下载
查看: 624|回复: 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需要额外的空间(其实我感觉建个树,额外指针也需要空间,但是我实在不知道为什么了),于是呢 他就问我如何进行. 1point 3acres 璁哄潧
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,
  "Bar" => 2,
}

index on name (as tree):
   Foo (1)
  /   
Bar (2)

struct Node {
  int key,
  int value,
  Node *left,.鐣欏璁哄潧-涓浜-涓夊垎鍦
  Node *right. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

}
. Waral 鍗氬鏈夋洿澶氭枃绔,
t  =
     7
   /   \. 1point3acres.com/bbs
  3     10
/ \    / \
1   2  9   13

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

rangeQuery(t, -1, 15) => ?. 1point 3acres 璁哄潧
. visit 1point3acres.com for more.
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;. From 1point 3acres bbs
        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);
        }. 1point 3acres 璁哄潧
        return al;
    }
}.1point3acres缃
. more info on 1point3acres.com
写的时候有点紧张,有点小bug,等号忘加了,并且arraylist.add()写成 arraylist.get()了,这个错误实在是不该哦,他说这些错误不太重要,因为在IDE上能改过来,他说要清楚index的实现,这个很重要。自己觉得这一轮应该很难过,
这些小公司基本就的bug free.有点瑕疵,onsite基本就没戏,学到了一点,hashmap只有搜索某一item的时候,才是
最快的,但是search a range 就不太适用了,以前在国内学过数据库,但是没想到index实现的问题,cmu 15615如果. more info on 1point3acres.com
能好好学过的话,这次面试就该过了~-google 1point3acres
. 1point 3acres 璁哄潧


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

评分

6

查看全部评分

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

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2017-2-25 07:21

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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