avatar
L家 index设计题# JobHunting - 待字闺中
s*m
1
Given a large number of records (with increasing but not necessarily
consecutive sequence number), design a indexing scheme
factorial digits sum。比如input为10,因为10!= 3628800,就应该返回sum的值 =
3+6+2+8
avatar
l*n
2
第一题能说的具体一点吗?不是很明白是什么意思啊?
第二题不就是array相乘嘛,贴个代码练习一下:(跑了几个test case,应该是对的)
public int factorialDigitsSum(int n){
int sum = 0;
int[] pre = intToArray(n);
for(int i=n-1; i>=2; i--){
int[] curr = intToArray(i);
pre = multiply(pre, curr);
}
for(int i=0; isum += pre[i];
}
return sum;
}
private int[] intToArray(int n){
int size = 0;
int copy = n;
while(copy!=0){size++; copy /= 10;}
int[] arr = new int[size];
copy = n;
for(int i=0; iarr[i] = copy%10;
copy /= 10;
}
return arr;
}
private int[] multiply(int[] pre, int[] curr){
int[] result = new int[pre.length + curr.length];
int carry = 0;
for(int i=0; ifor(int j=0; jresult[i+j] += pre[i]*curr[j] + carry;
carry = result[i+j]/10;
result[i+j] %= 10;
}
if(carry != 0){
result[i+curr.length] += carry;
carry = 0;
}
}
return result;
}
avatar
s*s
3
第一题没idea啊,求大牛指点
avatar
l*s
4
第一题是要构造BST么?
avatar
s*s
5
database自带的index功能本身就是BST, 这是要考如何实现database里面的index么

【在 l******s 的大作中提到】
: 第一题是要构造BST么?
avatar
l*s
6
大概是这个目的,要是要求平衡的,就是被黑了。

【在 s*****s 的大作中提到】
: database自带的index功能本身就是BST, 这是要考如何实现database里面的index么
avatar
k*i
7
第一题没说清楚,这种题都要问支持什么操作的。如果只是一个O(1)的look up,用
hashtable就行,如果是要支持ordered iteration,用B+-tree
avatar
g*e
8
第一题是online streaming系统
具体参考kafka
说btree的都fail了

=

【在 s*******m 的大作中提到】
: Given a large number of records (with increasing but not necessarily
: consecutive sequence number), design a indexing scheme
: factorial digits sum。比如input为10,因为10!= 3628800,就应该返回sum的值 =
: 3+6+2+8

avatar
m*r
9
求大牛给详细一点的解释
没太明白

【在 g*********e 的大作中提到】
: 第一题是online streaming系统
: 具体参考kafka
: 说btree的都fail了
:
: =

avatar
s*s
10
是不是大约这个意思, 问的不是数据库里面如何做index而是kafka内部如何做index
0.8中增加了逻辑offset,那么就需要做逻辑offset和物理地址间的转化
简单的方法,直接用hashmap,cache所有offset,问题就是这样空间耗费比较大
所以kafka的方式,是分段索引,用offset通过二分查找中index中找出段的起始地址,
然后再去file里面遍历找出精确的地址, 时间换空间的设计
1. LogSegment.translateOffset
首先是从index文件中找到近似的物理地址
前面说了,index中从效率考虑并不会为每个offset建立索引entry,只会分段建立
offset索引, 所以从index中直接可以找到精确物理地址的概率不大,但是可以找到最
接近的那个物理地址
如果你觉得index的粒度比较粗,可以直接给出开始查找的startingFilePosition
所以精确的物理地址需要到MessageSet文件里面去继续找

【在 g*********e 的大作中提到】
: 第一题是online streaming系统
: 具体参考kafka
: 说btree的都fail了
:
: =

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。