📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
查看: 3680| 回复: 4
跳转到指定楼层
上一主题 下一主题
收起左侧

[找工就业] Google Zenefits Nvidia

全局:

2015(10-12月)-CS硕士+fresh grad 无实习或全职 | 内推| 码农类General实习@google

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

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

x

Google
一面:Longest Consecutive Path in a Tree
二面:有一大坨candidate,每个人有一个ID integer,从中随机选择500个人参加Google的party,保证公平

Nvidia
一面:Search in rotated array,问了data mining的两个水问题,问了overfitting是什么,用线性的cost函数和quadratic的cost函数有什么trade off,一个收敛快,但容易有overfitting
二面:Seralize and Deseralize Binary Tree,问了奇葩的安卓问题,有一个安卓平板,你一直在往上面烧一个程序,这个程序让这个平板reboot,烧了一夜,第二天早上起来黑屏了,你怎么debug,除了看log你还怎么debug
三面:thread和process区别,不保护线程的后果是啥(deadlock),如何预防deadlock,java的多线程有哪些方式,写一个code把string abc变成abbccc,给了两段C代码改错,分别是防止buffer溢出和数组溢出

Zenefits
一面:有个vector<Iterator>,里面装了m个iterator,每个iterator是一个vector<int>的iterator,假设有next和hasNext接口,让你实现一个Zigzag traversal iterator
[
  [1,2,3]
  [5,4]
  [6,7,8,9]
一直调用next会返回1,5,6,2,4,7,3,8,9,先用了O(mn)的方法,m是最长的iterator的数组的长度,又改成queue或者cycle linkedlist,复杂度是O(k), k是总元素个数
Follow Up是,如果iterator有prev和hasPrev接口,实现Zigzag iterator的prev和hasPrev,用C++的deque和stack
二面:打印公司manager结构,要indent,follow up按字母序排序,聊了data mining project
.google  и


评分

参与人数 3大米 +58 收起 理由
紫衣云梦小怪兽 + 50 很有用的信息!
哈哈贼 + 5 么么哒
neal1st + 3 很有用的信息!

查看全部评分


上一篇:请问大家hr回复的这句话到底什么意思?
下一篇:报个在职跳槽的Uber Offer 不咋地供参考
推荐
LawranceH 2015-11-25 14:20:39 | 只看该作者
全局:
bitware 发表于 2015-11-25 14:11
google二面那题怎么解,重复产生500个随机数,并且keep一个set么?
. 1point 3 acres
应该是用Reservoir sampling 这个做。
回复

使用道具 举报

🔗
bitware 2015-11-25 14:11:07 | 只看该作者
全局:
google二面那题怎么解,重复产生500个随机数,并且keep一个set么?
回复

使用道具 举报

🔗
crisc3 2015-11-25 15:58:15 | 只看该作者
全局:
bitware 发表于 2015-11-25 14:11
google二面那题怎么解,重复产生500个随机数,并且keep一个set么?

楼主说的一大坨应该是指无法预先知道 N,所以不能直接用rand(1,N)的意思。那么我们只能慢慢从data stream读取S[i], 同时维护一个vector<int> R为最终产生的sample。也就是一楼说的reservoir sampling :
/*
  S has items to sample, R will contain the result. 1point 3 acres
*/
ReservoirSample(S[1..n], R[1..k]). ----
  // fill the reservoir array
  for i = 1 to k
      R[i] := S[i]

  // replace elements with gradually decreasing probability
  for i = k+1 to n
    j := random(1, i)   // important: inclusive range
    if j <= k
        R[j] := S[i]
具体可以用数学归纳法证明在iterator i到k的时候(k>500) 对于每个数1,2,...k被选中的概率都是500/k。所以k到 N 的时候,每个数字被选中的概率都相等 为500/N
回复

使用道具 举报

🔗
 楼主| begg930 2015-11-26 00:23:15 | 只看该作者
全局:
crisc3 发表于 2015-11-25 15:58. Waral dи,
楼主说的一大坨应该是指无法预先知道 N,所以不能直接用rand(1,N)的意思。那么我们只能慢慢从data stream ...

基本上就是这样的 赞赞赞 涨姿势

评分

参与人数 1大米 +5 收起 理由
哈哈贼 + 5 回答的很好!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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