回复: 18
跳转到指定楼层
上一主题 下一主题
收起左侧

April 9 2014 Google onsite

全局:

2014(1-3月) 码农类General 硕士 全职@google - 网上海投 - Onsite  | | Other |

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
Google onsite.

4 轮面试,3轮Software Engineer 一轮 Software Engineer in Test.

一轮。 给定一个binary search tree, 知道到第k大的数。

二轮。
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Popular Interview Questions from Top Companies
的那个单词。尽可能的优化。

本人代码全都用Python写的。Google很好,给我分配的面试官都是写Python的。

求过,攒人品。



评分

参与人数 3大米 +9 收起 理由
bryanjhy + 3 给你点个赞!
tianz + 3 感谢分享!
neomiracle + 3 感谢分享!

查看全部评分


上一篇:Apple - siri team mandarin
下一篇:onsite

本帖被以下淘专辑推荐:

推荐
 楼主| johnnywsd 2014-11-25 05:17:40 | 只看该作者
全局:
lz就是个jb
回复

使用道具 举报

全局:
第三轮第一题,什么叫共同好友最多的“那个人”?意思是说共同好友最多的“两个人”吗?这题是就直接遍历所有用户,复杂度O(EV)吗?
还有第三题怎么回答?

谢谢!
回复

使用道具 举报

🔗
eusoff 2014-4-10 16:02:39 | 只看该作者
全局:
话说FLAG主要用什么语言?
回复

使用道具 举报

🔗
Linzertorte 2014-4-11 00:11:17 | 只看该作者
全局:
Did you use yield() in round 2?
回复

使用道具 举报

🔗
 楼主| johnnywsd 2014-4-13 12:36:25 | 只看该作者
全局:
楼主亲自作答。

一轮。 给定一个binary search tree, 知道到第k大的数。
  1. class TreeNode(object):

  2.     def __init__(self, val):
  3.         self.val = val
  4.         self.left = None
  5.         self.right = None


  6. class Solution(object):

  7.     def __init__(self):
  8.         self._idx = 0
  9.         pass

  10.     def find_kth(self, root, k):
  11.         self._idx = 0
  12.         res = self._inorder(root, k)
  13.         return res

  14.     def _inorder(self, node, k):
  15.         if not node:
  16.             return
  17.         left = self._inorder(node.left, k)
  18.         self._idx += 1
  19.         if self._idx == k:
  20.             return node
  21.         if left:
  22.             return left
  23.         right = self._inorder(node.right, k)
  24.         if right:
  25.             return right
复制代码
回复

使用道具 举报

🔗
readman 2014-4-13 13:19:33 | 只看该作者
全局:
题目三:假设google在火星上弄了个data center, 如何无人值守给他升级内核。如何判断机器挂掉了,挂掉了怎么办。

求答案...
回复

使用道具 举报

🔗
 楼主| johnnywsd 2014-4-13 22:30:10 | 只看该作者
全局:
楼主亲自作答。

二轮。
题目一:扩展的斐波那契数列。Sn = Sn-j + Sn-k (0<j<k). 写一个generator类。有实现next()方法。
  1. class Fibonacci(object):

  2.     def __init__(self, j, k, slist):
  3.         self._j = j
  4.         self._k = k
  5.         self._slist = slist
  6.         self._n = len(slist)

  7.     def next(self):
  8.         res = self._slist[self._n - self._j] +\
  9.             self._slist[self._n - self._k]
  10.         self._slist.append(res)
  11.         self._n += 1
  12.         return res
复制代码
  1. from solution import Fibonacci
  2. import unittest


  3. class Test(unittest.TestCase):

  4.     def test1(self):
  5.         slist = [1, 1]
  6.         f = Fibonacci(1, 2, slist)
  7.         res1 = f.next()
  8.         res2 = f.next()
  9.         res3 = f.next()
  10.         res4 = f.next()
  11.         # print res1, res2, res3, res4
  12.         self.assertEqual(2, res1)
  13.         self.assertEqual(3, res2)
  14.         self.assertEqual(5, res3)
  15.         self.assertEqual(8, res4)

  16.     def test2(self):
  17.         slist = [1, 2, 3, 4, 5]
  18.         f = Fibonacci(2, 5, slist)
  19.         res1 = f.next()
  20.         res2 = f.next()
  21.         res3 = f.next()
  22.         res4 = f.next()
  23.         # print res1, res2, res3, res4
  24.         self.assertEqual(5, res1)
  25.         self.assertEqual(7, res2)
  26.         self.assertEqual(8, res3)
  27.         self.assertEqual(11, res4)

  28. if __name__ == '__main__':
  29.     unittest.main(verbosity=2)
复制代码
回复

使用道具 举报

🔗
 楼主| johnnywsd 2014-4-13 23:42:31 | 只看该作者
全局:
楼主亲自作答。


三轮。
题目一:社交网络中,如何实现好友推荐。抽象成图,然后找出共同好友最多的那个人。
  1. class Node(object):

  2.     def __init__(self, val):
  3.         self.val = val
  4.         self.friends = []


  5. def recommend(node):
  6.     exclude = node.friends + [node]
  7.     freq = {}
  8.     for item in node.friends:
  9.         for sub_item in item.friends:
  10.             if sub_item not in exclude:
  11.                 freq[sub_item] = freq.get(sub_item, 0) + 1
  12.     max_val = 0
  13.     res = None
  14.     for key in freq:
  15.         val = freq[key]
  16.         if val > max_val:
  17.             max_val = val
  18.             res = key
  19.     return res
复制代码
回复

使用道具 举报

🔗
 楼主| johnnywsd 2014-4-14 02:20:31 | 只看该作者
全局:
楼主亲自作答。

四轮:
给一个text file, 里面是按行分割的各种单词,让找到频率第k大的那个单词。尽可能的优化。
  1. def get_kth_freq(input_file_path, k):
  2.     mydict = {}
  3.     with open(input_file_path) as input_file:
  4.         for line in input_file:
  5.             mydict[line] = mydict.get(line, 0) + 1

  6.     i = 0
  7.     while i < k:
  8.         max_key = None
  9.         max_val = 0
  10.         for key in mydict:
  11.             val = mydict[key]
  12.             if val > max_val:
  13.                 max_val = val
  14.                 max_key = key
  15.         res = max_key
  16.         del mydict[max_key]
  17.         i += 1
  18.     return res

  19.     print mydict
复制代码
回复

使用道具 举报

🔗
 楼主| johnnywsd 2014-4-14 02:22:04 | 只看该作者
全局:
楼主亲自作答

三轮:
题目二:BigInt 相加。 如何表示一个BigInt, 用一个数组。跟leetcode一样
  1. class BigInt(object):
  2.     max_val = 10000

  3.     def __init__(self):
  4.         self.val = []

  5.     def add(self, B):
  6.         lenA = len(self.val)
  7.         lenB = len(B.val)
  8.         carry = 0
  9.         i = 0
  10.         res = BigInt()
  11.         while i < lenA or i < lenB or carry != 0:
  12.             tmp = carry
  13.             if i < lenA:
  14.                 tmp += self.val[i]
  15.             if i < lenB:
  16.                 tmp += B.val[i]

  17.             if tmp >= BigInt.max_val:
  18.                 carry = 1
  19.                 tmp = tmp - BigInt.max_val
  20.             else:
  21.                 carry = 0
  22.             res.val.append(tmp)
  23.             i += 1
  24.         return res

复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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