直通硅谷每日面经整理
为了帮助小伙伴们更好的准备面试
直通硅谷帮助大家整理了每日最新面经
省去自己搜索面经的繁琐
重点标红我们每天都更新哦!
整理时间
2020年10月下旬
本期内容
今日头条、Robinhood、Facebook、Apple最新面经速递
部分面经阅读
(因为整理内容过多,这里只放有部分面经,想获取完整版的小伙伴们可以阅读下文“完整版获取方式”。)

今日头条/技术电面/Pass/全职

1. Get min divisor
给一个array of positive int和一个int upper limit k
求最大的int divisor d使得
upper(a1/d)+upper(a2/d)+...+upper(an/d) <= k
2. 有n个节点和m条路,你可以放障碍物在节点上block所有过这个节点的路,你不能把一条路的两边节点都block了。求能否block所有路,最少放多少障碍物block所有路。
来源:
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=640228&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26orderby%3Ddateline%26sortid%3D311%26orderby%3Ddateline
Robinhood/技术电面/全职
炒股软件面试:
bad transaction:
一个银行转账的伪代码,问有什么问题,怎么解决?
问题就是收钱方前面要是出问题,钱就没了,要变成atomic block才可以
然后转账方和收账方都要加锁,这样就不会出现同时更改钱数不对的问题,如果要更改账户余额, 这个账户必须先acquire 那个锁
然后email要放在最后发
【会让你添加伪代码】
然后就是一个算法题:
股票买卖:给定一些orders,计算出可以被执行的的order数量
buy's price >= the sell's price才可以买卖,不然就先hold住
example input: ("157", "10", "buy"), ("164", "7", "sell"), ("179", "4", "buy"), ("159", "5", "sell"), ("165", "8", "buy")
example output: 12
举个栗子:
157的时候,没有可以执行的
到164这个order的时候,我们不可以执行,因为164 > 157  sell > buy
到179这个order的时候,我们可以执行4个order,因为179 > 164,现在剩下3个164的order  res +=4
继续,到159的时候,159 > 157, 我们不可以执行
继续,到165的时候,165 > 159,可以先执行5个order,差价最大,然后可以继续执行164,因为165 > 164, 执行3个order  res += 8
小哥这道题一定要我用最clean的方式写,用了两个pq,然后一顿狂改。。。= = 感觉是个非常非常注重quality的小哥呀
来源:
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=640194&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26orderby%3Ddateline%26sortid%3D311%26orderby%3Ddateline

Facebook/技术电面/全职

在地里口口声声说他们家不招E4了之后面试官还是准点出现在了摄像头面前,令人大喜过望。
题目是蠡口物流的变形,把input变成了两个interval array,每个array内部是按interval的起始值排好序的。
面经到这里就结束了,接下来是自己的思路以及为什么自认为答得不好,希望地里各位能够提供一些反馈。先谢谢大家了。
做题之前先寒暄4分钟,然后面试官问了我最challenging的project,我花了5分钟故事讲完了,开始做题时已经10分钟过去了。
我坦白这道题我是刷过2遍的。
我先问清楚了一下有没有可能遇到interval起始值和结束值相同的情况,得到了否定的答复。一开始先去想了想两个interval不会overlap的条件,然后说了一下自己的想法:用两个pointer分别从左到右扫描两个input array,然后用这个条件check overlap,如有overlap则取起始值的最小值和结束值的最大值作为新的interval。
然后面试官发问:如果一个input array里的interval能够overlap另一个array里的多个interval,如何处理?这个问题把我给问住了,于是换了个思路,把起始值和结束值model成自己定义的数据结构,把数值和”起始值“或”结束值“的enum属性组合起来,按照数值大小放入优先队列。然后在依次出列的时候track当前最小起始值和ongoing interval数量,当ongoing数量变成0时就找到了结束值,将它和当前最小起始值一起放入最终结果,然后在下一个起始值时reset当前最小起始值。
我花了很久才跟面试官解释清楚这个思路,然后开始写代码。写完后面试官说不用写test了,只需要用她给的例子walk through一下代码就可以。walk through完毕,她提问时间复杂度,我指着几个代码block说”这是O(N)这是O(N)...综合起来是O(N)“,然后面试官提醒说我用了优先队列,所以我修正了一下自己说应该是O(NlogN)。
当然这并不是最优解(最优解应该是两个指针分别从左向右扫描,然后持续判定有没有交集,同时保存最小起始值和最大结束值,当没有交集的时候产生一个结果),O(N)。
我认为自己比较失败的地方是:
1. 寒暄和BQ占了太多时间。
2. 自己也花了太多时间跟面试官解释清楚自己的想法(可能也是因为面试官心里的答案不是我所想的吧),因为面试官一直说自己不是很理解我的思路,然后在第三次语言描述我才解释清楚让面试官恍然大悟,导致后来代码虽然写完了却没时间测试以及检查拼写错误了(我真的不敢保证我的代码是bugfree的)。
3. 自己刷过很多interval的题但是没有系统性(写下来以及仔细思考)总结过这些问题,所以没有达到触类旁通的效果,导致考场上看到类似原题并没有能够立刻想出一个办法。
Action item:
1. 系统性总结自己的BQ故事,争取达到一针见血指出每个BQ面试官最想听到的内容并能快速用英语描述。
2. 今后刷题时用英语高声朗诵自己的想法,录音回放分析哪里不够好。
3. 多参加Mock interview。之前自己迷信大过题量才是王道,于是没把mock interview放在心上。
4. 定期亲自系统性总结问题。之前都是看地里的帖子总结然后赞叹好有道理,但实际上自己并没有真正消化这些内容。
来源:
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=640192&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26orderby%3Ddateline%26sortid%3D311%26orderby%3Ddateline

Apple/技术电面/全职

背靠背两轮视频 - hr提前告知,如果第一轮答不好就不会有第二轮的那种。。。第一轮结束中间有一个小时,等第二轮小哥出不出现= = 然后出现了lol
每一轮都是coderpad上写,并且要跑test case
1. 简历 + design pattern / mock code + 算法题:给一个数n,打出一个1-n 的array,比如给了15,打印【8,1,15,10,6,3,13,12,4,5,11,14,2,7,9】
使得相邻的数相加都是square number,e.g. 1+8 = 9 = 3 * 3,1+15=16=4*4,不可以组成的话返回空array
跑完问复杂度
2. 简历寒暄
第一道题:给你一个数组 = [2, 5, 3, 7], 求有几种组合方式可以相加为 8, 有【2,2,2,2】,【5,3】,【2,3,3】 三种,返回3
follow up:打出所有组合,复杂度
第二道题:打印对称数组
e.g. [1, 2, 3]                [1, 4, 7]
      [4, 5, 6]     -->       [2, 5, 8]
      [7, 8, 9]                 [3, 6, 9]
来源:
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=640189&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26orderby%3Ddateline%26sortid%3D311%26orderby%3Ddateline
完整版领取方式
没看过瘾?到处求米只为一篇面经?自己翻找面经太耗时?这里一次让你看个够!让你的科技求职变简单不是白喊的!直通谷公众号每日发布最新面经,赶快置顶吧!更有按公司整理的面经大全让你一次到位!
领取方法:
扫码添加小助手,回复“面经+公司名”
得到最新面经汇总!
每天不断更!不止这些哦~
最新面经看了,可答案不确定又该怎么办?
求职准备苦,找直通硅谷
Offer又被撸,找直通硅谷
直通硅谷成立4年多以来,已累计帮助3000+学员拿到心仪offer!
依托硅谷顶尖科技公司资深工程师教师资源,针对华人学生面试短板,打造精悍高效、高技术含量且紧贴面试趋势的求职辅导课程,帮助学员提高硬核能力、熟知面试技巧,拓展职场人脉,从而进入硅谷顶尖科技公司。
专业团队,经验打造,助你全面提升求职准备效率,短时间内迅速提升面试能力!
课程详细介绍请点击海报
继续阅读
阅读原文