Google 电面一面

原帖地址:一亩三分地

第一个technical initerview就是来自G, 攒RP:
电话有背景噪音, 听的不是很清楚, 很多地方要求对话重复问题, 面试官没有口语

HR联系的时候问我用什么语言, 告诉HR比较Prefer Python, 最近一直在用Java刷题。
面试官告诉我他用Python.

问了一个包含四个小题的大题:
1. 用Python random模块里的random()来模拟randint(a, b)
random() 返回[0, 1)间的float
randint(a, b) 返回v, v in [a, b]

2. 实现 random_choice(seq), 返回给定sequence里的任意一个值

3. 实现 weighted_choice(seq), seq是一个list, 里面存有tuples, 比如:
seq = [(a, 4), (b, 3), …], 返回一个random value, 返回值的概率和
tuple里第二个值大小成正比。 如果seq = [(a, 4), (b, 3)], 返回a的概率为4/7,b为3/7

4. 如果weighted_choice被调用多次, 在pass同一seq情况下, 如何提高weighted_chocie速度:
class random:
def __init__(seq):
…..
def weighted_choice():
……
第四个是brainstorm 没有要求coding

当时回答说用binary search tree可以, 面试官告诉我大部分人用直接用binary search, 然后要求
分析 BS vs BST优缺点