由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - rocket fuel 面试题
相关主题
单词提示是怎么实现的?问道fackbook面试题
借人气请教个G题问一道 facebook 面试题
list of words找两个没有相同字母的string S和T并且使得S.length()*T.length()最大面试题:写一个猜单词策略
G家面经求指点--beanbun--G--dictionary一道amazon面试题
问个算法题求问一道面试题
有人了解 google 的 regular expression search 是怎么实现的吗是不是只要是search都是inverted index?
Google的一道面试题请教2个 huge file的面试题
请教一个常见的面试题的答案google 电面
相关话题的讨论汇总
话题: ad话题: query话题: 单词话题: 每个话题: york
进入JobHunting版参与讨论
1 (共1页)
f*****n
发帖数: 35
1
一道RF的面试题:
有N个ad, (n是million级别的)
每个ad的表示为(id, value)
比如:
121 -> new
130 -> new york
145 -> new york time square
156 -> new york department store
假设有一 query = new york department store
规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)
上述例子中ad 121, 130, 156是valid的,145是invalid
问:
如何设计一个solution,使得
vector getValid(string query) (返回所有valid的ad的id)这个函
数在worst case时复杂度也能小于O(n),面试官的说法是does not depend on N.
整个solution可以分两个阶段,第一阶段是preprocessing,这个可以是O(n)的,但是
第二阶段query阶段,也即调用函数getValid(),必须小于O(n)
我给是方案是在preprocessing阶段建立类似trie的结构,就是把trie中每个字母换成
单词,每增加一个单词,向下走一层。建树时就顺便mark每个node是否valid。query时
只要检查所有leaf node,如果valid就向上检查parent,直到invalid为止。这样
average的复杂度应该是O(logN)。但是面试官说worst case,就是每个ad都是valid时
,我的方案的复杂度还是O(N)。
大家有什么想法吗?
f*****n
发帖数: 35
2
up
x*********w
发帖数: 533
3

preprocessing 就是建reverse indexing,
然后查 ”new york department store“的时候得查4次reverse indexing的集合,
每个集合遍历检查每个广告排除包含其他单词的广告, 然后union这4次的结果

【在 f*****n 的大作中提到】
: 一道RF的面试题:
: 有N个ad, (n是million级别的)
: 每个ad的表示为(id, value)
: 比如:
: 121 -> new
: 130 -> new york
: 145 -> new york time square
: 156 -> new york department store
: 假设有一 query = new york department store
: 规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)

f*****n
发帖数: 35
4
你这方法就是建一个map,key是单词,value是包含这个单词的广告,这是我提出的第
一种方案,被否了。

【在 x*********w 的大作中提到】
:
: preprocessing 就是建reverse indexing,
: 然后查 ”new york department store“的时候得查4次reverse indexing的集合,
: 每个集合遍历检查每个广告排除包含其他单词的广告, 然后union这4次的结果

x*********w
发帖数: 533
5

不是符合要求吗,为啥被否呢?

【在 f*****n 的大作中提到】
: 你这方法就是建一个map,key是单词,value是包含这个单词的广告,这是我提出的第
: 一种方案,被否了。

b*****n
发帖数: 618
6
这题的要求preprocess是 O(n), 查找是O(2^k), 其中k为query的长度,假设query的
长度一般比较小,可以认为constant
对每个ad做hashing,每个query取所有子集的hashing查找,关键是怎么做hashing让不
同顺序但是所含单词相同的ad的hash值相同, 比如, h(new york time) = h(york
new time)
r**h
发帖数: 1288
7
将一个query里面的单词按照lexicology order排序后再计算hash值

【在 b*****n 的大作中提到】
: 这题的要求preprocess是 O(n), 查找是O(2^k), 其中k为query的长度,假设query的
: 长度一般比较小,可以认为constant
: 对每个ad做hashing,每个query取所有子集的hashing查找,关键是怎么做hashing让不
: 同顺序但是所含单词相同的ad的hash值相同, 比如, h(new york time) = h(york
: new time)

u******g
发帖数: 89
8
这种算法如何判断145是invalid的。。

【在 x*********w 的大作中提到】
:
: 不是符合要求吗,为啥被否呢?

g*********s
发帖数: 150
9
题目中的N和n是同样的意思吗?

【在 f*****n 的大作中提到】
: 一道RF的面试题:
: 有N个ad, (n是million级别的)
: 每个ad的表示为(id, value)
: 比如:
: 121 -> new
: 130 -> new york
: 145 -> new york time square
: 156 -> new york department store
: 假设有一 query = new york department store
: 规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)

b*****n
发帖数: 618
10
这个是我当时给的答案
不过面试官的意思是排序这步也可以省掉,有直接算hash的方法

【在 r**h 的大作中提到】
: 将一个query里面的单词按照lexicology order排序后再计算hash值
相关主题
有人了解 google 的 regular expression search 是怎么实现的吗问道fackbook面试题
Google的一道面试题问一道 facebook 面试题
请教一个常见的面试题的答案面试题:写一个猜单词策略
进入JobHunting版参与讨论
l*****e
发帖数: 3
11
Is it related with 'Bag of words'? How about hash trick.
wiki: Bag of words, hash trick
x*********w
发帖数: 533
12

在第一轮查new的时候就排除了啊

【在 u******g 的大作中提到】
: 这种算法如何判断145是invalid的。。
u******g
发帖数: 89
13
哦你说“每个集合遍历检查每个广告排除包含其他单词的广告”。。看起来会复杂度会
更高些。。

【在 x*********w 的大作中提到】
:
: 在第一轮查new的时候就排除了啊

Y********f
发帖数: 410
14
需要加个count? preprocess加上ad中单词的count, 对query的每个单词查询时,把
对应的ad加入hash table并记录被查询的次数,然后traverse hashtable,查询的次数
等于ad的count的ad就是。
这个和前面xiaoxiaowww的差不多,但是感觉应该会快些。

【在 f*****n 的大作中提到】
: 你这方法就是建一个map,key是单词,value是包含这个单词的广告,这是我提出的第
: 一种方案,被否了。

h*****n
发帖数: 15
15
inverted index
IR里面的经典问题
r**h
发帖数: 1288
16
请教一下,使用inverted index的话,求并集或者交集如何做到小于O(N)呢?
无论是sort之后有序查找还是使用bitmap,最坏情况下复杂度还是O(N)呀

【在 h*****n 的大作中提到】
: inverted index
: IR里面的经典问题

x*****0
发帖数: 452
17
mark
e*****n
发帖数: 316
18
mark
f*********1
发帖数: 75
19
大家看这个行不行?
由2^k 得到启发
建一个大表 每行表示一个ad, 每列表示frequent query string 的一个词,表的值表
示单词是否出现在某一个ad里。
wordcount new... york ...department ...store ... sale.
ad1 5 1 1 1 1 1
ad2 1 0 1 0 0 1
ad3 4 1 1 1 1 0
...
adn 1 1 0 0 0 0
建表需要O(N)
查询需要先生成query string的所有subsets, 这一步需要2^k, 然后与(&)query
string match对应列vector,选与值为1的ads。最后再用第一列的word count 排除包
含多余query string 单词个数的ad即得到所求的ads。

【在 f*****n 的大作中提到】
: 一道RF的面试题:
: 有N个ad, (n是million级别的)
: 每个ad的表示为(id, value)
: 比如:
: 121 -> new
: 130 -> new york
: 145 -> new york time square
: 156 -> new york department store
: 假设有一 query = new york department store
: 规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)

y*c
发帖数: 904
20
mark
相关主题
一道amazon面试题请教2个 huge file的面试题
求问一道面试题google 电面
是不是只要是search都是inverted index?问两道amazon的面试题
进入JobHunting版参与讨论
c********p
发帖数: 1969
21
mark
H****S
发帖数: 1359
22
做一个reversed indexing先,然后建立另外一个哈希表,键是索引,值是所含*独特*
单词数量。查找时,先用reversed indexing求得所有索引,建立一个映射关系,索引
对应索引出现次数,如果这个次数低于其对应独特单词数量,即舍弃。

【在 f*****n 的大作中提到】
: 一道RF的面试题:
: 有N个ad, (n是million级别的)
: 每个ad的表示为(id, value)
: 比如:
: 121 -> new
: 130 -> new york
: 145 -> new york time square
: 156 -> new york department store
: 假设有一 query = new york department store
: 规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)

v********n
发帖数: 18
23
mark nn【在 forecan (Harry)的大作中提到:】n:一道RF的面试题:n:有N个ad, (n
是million级别的)n:每个ad的表示为(id, value)n:比如:n:121 -> newn:130 -
> new yorkn:145 -> new york time squaren……nn--n[发自未名空间Android客户端
]
f*******b
发帖数: 520
24
mark
m****i
发帖数: 650
25
mark

【在 f*****n 的大作中提到】
: 一道RF的面试题:
: 有N个ad, (n是million级别的)
: 每个ad的表示为(id, value)
: 比如:
: 121 -> new
: 130 -> new york
: 145 -> new york time square
: 156 -> new york department store
: 假设有一 query = new york department store
: 规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)

f*****n
发帖数: 35
26
一道RF的面试题:
有N个ad, (n是million级别的)
每个ad的表示为(id, value)
比如:
121 -> new
130 -> new york
145 -> new york time square
156 -> new york department store
假设有一 query = new york department store
规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)
上述例子中ad 121, 130, 156是valid的,145是invalid
问:
如何设计一个solution,使得
vector getValid(string query) (返回所有valid的ad的id)这个函
数在worst case时复杂度也能小于O(n),面试官的说法是does not depend on N.
整个solution可以分两个阶段,第一阶段是preprocessing,这个可以是O(n)的,但是
第二阶段query阶段,也即调用函数getValid(),必须小于O(n)
我给是方案是在preprocessing阶段建立类似trie的结构,就是把trie中每个字母换成
单词,每增加一个单词,向下走一层。建树时就顺便mark每个node是否valid。query时
只要检查所有leaf node,如果valid就向上检查parent,直到invalid为止。这样
average的复杂度应该是O(logN)。但是面试官说worst case,就是每个ad都是valid时
,我的方案的复杂度还是O(N)。
大家有什么想法吗?
f*****n
发帖数: 35
27
up
x*********w
发帖数: 533
28

preprocessing 就是建reverse indexing,
然后查 ”new york department store“的时候得查4次reverse indexing的集合,
每个集合遍历检查每个广告排除包含其他单词的广告, 然后union这4次的结果

【在 f*****n 的大作中提到】
: 一道RF的面试题:
: 有N个ad, (n是million级别的)
: 每个ad的表示为(id, value)
: 比如:
: 121 -> new
: 130 -> new york
: 145 -> new york time square
: 156 -> new york department store
: 假设有一 query = new york department store
: 规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)

f*****n
发帖数: 35
29
你这方法就是建一个map,key是单词,value是包含这个单词的广告,这是我提出的第
一种方案,被否了。

【在 x*********w 的大作中提到】
:
: preprocessing 就是建reverse indexing,
: 然后查 ”new york department store“的时候得查4次reverse indexing的集合,
: 每个集合遍历检查每个广告排除包含其他单词的广告, 然后union这4次的结果

x*********w
发帖数: 533
30

不是符合要求吗,为啥被否呢?

【在 f*****n 的大作中提到】
: 你这方法就是建一个map,key是单词,value是包含这个单词的广告,这是我提出的第
: 一种方案,被否了。

相关主题
问个google面试题借人气请教个G题
问个google面试题list of words找两个没有相同字母的string S和T并且使得S.length()*T.length()最大
单词提示是怎么实现的?G家面经求指点--beanbun--G--dictionary
进入JobHunting版参与讨论
b*****n
发帖数: 618
31
这题的要求preprocess是 O(n), 查找是O(2^k), 其中k为query的长度,假设query的
长度一般比较小,可以认为constant
对每个ad做hashing,每个query取所有子集的hashing查找,关键是怎么做hashing让不
同顺序但是所含单词相同的ad的hash值相同, 比如, h(new york time) = h(york
new time)
r**h
发帖数: 1288
32
将一个query里面的单词按照lexicology order排序后再计算hash值

【在 b*****n 的大作中提到】
: 这题的要求preprocess是 O(n), 查找是O(2^k), 其中k为query的长度,假设query的
: 长度一般比较小,可以认为constant
: 对每个ad做hashing,每个query取所有子集的hashing查找,关键是怎么做hashing让不
: 同顺序但是所含单词相同的ad的hash值相同, 比如, h(new york time) = h(york
: new time)

u******g
发帖数: 89
33
这种算法如何判断145是invalid的。。

【在 x*********w 的大作中提到】
:
: 不是符合要求吗,为啥被否呢?

g*********s
发帖数: 150
34
题目中的N和n是同样的意思吗?

【在 f*****n 的大作中提到】
: 一道RF的面试题:
: 有N个ad, (n是million级别的)
: 每个ad的表示为(id, value)
: 比如:
: 121 -> new
: 130 -> new york
: 145 -> new york time square
: 156 -> new york department store
: 假设有一 query = new york department store
: 规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)

b*****n
发帖数: 618
35
这个是我当时给的答案
不过面试官的意思是排序这步也可以省掉,有直接算hash的方法

【在 r**h 的大作中提到】
: 将一个query里面的单词按照lexicology order排序后再计算hash值
l*****e
发帖数: 3
36
Is it related with 'Bag of words'? How about hash trick.
wiki: Bag of words, hash trick
x*********w
发帖数: 533
37

在第一轮查new的时候就排除了啊

【在 u******g 的大作中提到】
: 这种算法如何判断145是invalid的。。
u******g
发帖数: 89
38
哦你说“每个集合遍历检查每个广告排除包含其他单词的广告”。。看起来会复杂度会
更高些。。

【在 x*********w 的大作中提到】
:
: 在第一轮查new的时候就排除了啊

Y********f
发帖数: 410
39
需要加个count? preprocess加上ad中单词的count, 对query的每个单词查询时,把
对应的ad加入hash table并记录被查询的次数,然后traverse hashtable,查询的次数
等于ad的count的ad就是。
这个和前面xiaoxiaowww的差不多,但是感觉应该会快些。

【在 f*****n 的大作中提到】
: 你这方法就是建一个map,key是单词,value是包含这个单词的广告,这是我提出的第
: 一种方案,被否了。

h*****n
发帖数: 15
40
inverted index
IR里面的经典问题
相关主题
G家面经求指点--beanbun--G--dictionaryGoogle的一道面试题
问个算法题请教一个常见的面试题的答案
有人了解 google 的 regular expression search 是怎么实现的吗问道fackbook面试题
进入JobHunting版参与讨论
r**h
发帖数: 1288
41
请教一下,使用inverted index的话,求并集或者交集如何做到小于O(N)呢?
无论是sort之后有序查找还是使用bitmap,最坏情况下复杂度还是O(N)呀

【在 h*****n 的大作中提到】
: inverted index
: IR里面的经典问题

x*****0
发帖数: 452
42
mark
e*****n
发帖数: 316
43
mark
f*********1
发帖数: 75
44
大家看这个行不行?
由2^k 得到启发
建一个大表 每行表示一个ad, 每列表示frequent query string 的一个词,表的值表
示单词是否出现在某一个ad里。
wordcount new... york ...department ...store ... sale.
ad1 5 1 1 1 1 1
ad2 1 0 1 0 0 1
ad3 4 1 1 1 1 0
...
adn 1 1 0 0 0 0
建表需要O(N)
查询需要先生成query string的所有subsets, 这一步需要2^k, 然后与(&)query
string match对应列vector,选与值为1的ads。最后再用第一列的word count 排除包
含多余query string 单词个数的ad即得到所求的ads。

【在 f*****n 的大作中提到】
: 一道RF的面试题:
: 有N个ad, (n是million级别的)
: 每个ad的表示为(id, value)
: 比如:
: 121 -> new
: 130 -> new york
: 145 -> new york time square
: 156 -> new york department store
: 假设有一 query = new york department store
: 规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)

y*c
发帖数: 904
45
mark
c********p
发帖数: 1969
46
mark
H****S
发帖数: 1359
47
做一个reversed indexing先,然后建立另外一个哈希表,键是索引,值是所含*独特*
单词数量。查找时,先用reversed indexing求得所有索引,建立一个映射关系,索引
对应索引出现次数,如果这个次数低于其对应独特单词数量,即舍弃。

【在 f*****n 的大作中提到】
: 一道RF的面试题:
: 有N个ad, (n是million级别的)
: 每个ad的表示为(id, value)
: 比如:
: 121 -> new
: 130 -> new york
: 145 -> new york time square
: 156 -> new york department store
: 假设有一 query = new york department store
: 规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)

v********n
发帖数: 18
48
mark nn【在 forecan (Harry)的大作中提到:】n:一道RF的面试题:n:有N个ad, (n
是million级别的)n:每个ad的表示为(id, value)n:比如:n:121 -> newn:130 -
> new yorkn:145 -> new york time squaren……nn--n[发自未名空间Android客户端
]
f*******b
发帖数: 520
49
mark
m****i
发帖数: 650
50
mark

【在 f*****n 的大作中提到】
: 一道RF的面试题:
: 有N个ad, (n是million级别的)
: 每个ad的表示为(id, value)
: 比如:
: 121 -> new
: 130 -> new york
: 145 -> new york time square
: 156 -> new york department store
: 假设有一 query = new york department store
: 规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)

相关主题
问一道 facebook 面试题求问一道面试题
面试题:写一个猜单词策略是不是只要是search都是inverted index?
一道amazon面试题请教2个 huge file的面试题
进入JobHunting版参与讨论
s******e
发帖数: 128
51
为什么前面人说用inverted index 或 hash 什么的?
我看就是普通的trie嘛。从根往下走,记住沿路的叶子点(有flag的点)。

【在 h*****n 的大作中提到】
: inverted index
: IR里面的经典问题

h*d
发帖数: 19309
52
suffix tree?

【在 f*****n 的大作中提到】
: 一道RF的面试题:
: 有N个ad, (n是million级别的)
: 每个ad的表示为(id, value)
: 比如:
: 121 -> new
: 130 -> new york
: 145 -> new york time square
: 156 -> new york department store
: 假设有一 query = new york department store
: 规定ad中每个单词都包含在query中时,这个ad为valid (即ad是query的子集)

s******r
发帖数: 21
53
用bloom filter可能能解决这个问题。
预处理,每一个广告单词hash后建立bloom filter,例如广告130 new york对应的bloom
filter可能是
10001001
145对应的是
11011111
查询时
把query string里面的每个单词hash后建立一个bloom filter的表格,例如是
10011111
比较10001001 和10011111,可以看出广告130每个单词都极可能在query string里面出
现。
广告145不符合要求,因为第二位的bit是1,而query第二位是0
c*********n
发帖数: 1057
54
bloom filter没法满足复杂度要求吧?
1 (共1页)
进入JobHunting版参与讨论
相关主题
google 电面问个算法题
问两道amazon的面试题有人了解 google 的 regular expression search 是怎么实现的吗
问个google面试题Google的一道面试题
问个google面试题请教一个常见的面试题的答案
单词提示是怎么实现的?问道fackbook面试题
借人气请教个G题问一道 facebook 面试题
list of words找两个没有相同字母的string S和T并且使得S.length()*T.length()最大面试题:写一个猜单词策略
G家面经求指点--beanbun--G--dictionary一道amazon面试题
相关话题的讨论汇总
话题: ad话题: query话题: 单词话题: 每个话题: york