<
回复: 16
收起左侧

数据砖L5 VO

匿名用户-906QC  2024-6-23 15:50:37 来自APP
本楼:   👍  3
100%
0%
0   👎

2024(4-6月) 码农类General 硕士 全职@databricks - 内推 - Onsite 视频面试  | 😃 Positive 😣 HardFail | 在职跳槽

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

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

x
Coding 1:
经典cidr题,给一堆cidr组成的firewall rules和一个 ip address,判断这个ip address能否被firewall rules allow。follow up:给一个cidr,看这个cidr能否被firewall rules allow.

Coding 2:
Array of intervals。给一个interval array,每个interval不相交。再给一个所有interval cover的list中的index。要求给出删掉这个index所cover的element之后的interval array.
比如:
有这样一个array: [(4, 7), (10, 11), (13, 15)],它所cover的list是: [4, 5, 6, 7, 10, 11, 13, 14, 15]。如果index是2的话,把6从covered list中删掉,output是[(4, 5), (7,7), (10, 11), (13, 15)]。

我的解法是根据prefix sum算出这个index落在哪个interval里,然后divide这个interval。但是得到的feedback是overly complicated。也不知道有什么更好的解法。还有这题有很多的edge case要考虑到。这轮坑的地方在于我写好base solution正要检查呢面试官就着急忙慌地说有个edge case没考虑到。等我fix了之后马上说还有这个edge case没考虑。真是一点让我自己debug的机会都不给。最后给的feedback是需要explicitly告诉我edge case在哪里。感觉他们就是希望能够写的时候一遍过,which我觉得在现实开发中一点也不现实啊。

SD:
多线程data wri
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
dive deep。项目的mileston,时间线,问的特别细致。

面试体验还是挺好的。整体感觉就是coding的bar很高,估计是因为大家都知道题目所以特别卷?follow up也要做出来。还有就是不要给面试官挑刺的机会,要把话语权掌握在自己手中。。。

补充内容 (2024-06-24 05:51 +08:00):

穷人求米!帖子里的问题我都尽量回复,感谢!!

评分

参与人数 5大米 +15 收起 理由
sunnybegoffers + 2 很有用的信息!
清道神君 + 10 欢迎分享你知道的情况,会给更多大米奖励!
是一只小可爱呀 + 1 赞一个
onefolder + 1 赞一个
pageajpeng + 1 给你点个赞!

查看全部评分


上一篇:OA 新形式
下一篇:雪花挂经
地里匿名用户
匿名用户-906QC  2024-6-26 00:59:37 来自APP
本楼:   👍  1
100%
0%
0   👎
pageajpeng 发表于 2024-06-23 23:12:49
楼主好,如果要做到server crash的fault tolerance的话,是不是Write-Ahead Log才能做到?
还有一个问题是既然文件是只有一
Crash recovery的第一反应肯定是WAL。但你不觉得这题本身就是一个WAL吗?用WAL recover WAL感觉没有什么意义。

评分

参与人数 1大米 +1 收起 理由
pageajpeng + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

本楼:   👍  1
100%
0%
0   👎
全局:   4331
92%
8%
381
佬是怎么考虑这个SD的
扫码关注一亩三分地求职移民公众号
更多干货内容等你发现
回复

使用道具 举报

本楼:   👍  0
0%
0%
0   👎
全局:   2
100%
0%
0
本帖最后由 微信用户_e0m4o 于 2024-7-7 10:49 编辑

没有积分看不到SD的部分。
关于coding的部分那个关于Interval的问题,我的思路跟楼主查不过,每个interval的长度是end - start + 1,所以直接遍历一遍,如果要删的index还没到(或者已经超过了)就直接输出到output,如果index在当前的interval里面,就把这个interval变成两个加回去。具体code可以看下面。请问这样是overly complicated了么?我想不到更简单的了

vector<vector<int>> deleteIndex(const vector<vector<int>>& intervals, int index) {
  // 如果intervals没sort的话,需要sort一下
  vector<vector<int>> res;
  for (auto& interval : intervals) {
    if (index >= 0 && index <= (interval[1] - interval[0])) {
      if (index != 0)  res.push_back({interval[0], index + interval[0] - 1});
      if (index != interval[1] - interval[0]) res.push_back({index + interval[0] + 1, interval[1]});
    } else {
      res.push_back(interval);
    }
    index -= interval[1] - interval[0] + 1;
  }
  return res;
}
回复

使用道具 举报

地里匿名用户
匿名用户-EWOHG  2024-6-24 01:40:56
本楼:   👍  0
0%
0%
0   👎
谢谢楼主! 已加米
想问一下Arch,“并且保证每个vm至少有X (具体数字忘了) minimum bandwidth。”是不是意味着不设置每个VM的上限,而且X*#VM不超过host的bandwidth?
方便的话,可以分享一下思路嘛?
回复

使用道具 举报

地里匿名用户
匿名用户-T7UOQ  2024-6-24 02:55:18 来自APP
本楼:   👍  0
0%
0%
0   👎
请问电面是还有一轮coding么?然后为什么第二轮需要prefix sum呀?感谢!!
回复

使用道具 举报

地里匿名用户
匿名用户-906QC  2024-6-24 05:50:46
本楼:   👍  0
0%
0%
0   👎
匿名用户 发表于 2024-6-23 11:55
请问电面是还有一轮coding么?然后为什么第二轮需要prefix sum呀?感谢!!

是的店面还有一轮coding。

因为给的index表示的是covered list的第几个元素,所以我用prefix sum来算到每个interval为止一共cover了多少个元素,如果 prefix_sum(i - 1) < index + 1 <= prefix_sum(i) 就代表这个index落在第i个interval上。你有什么更好的思路吗?

求米求米
回复

使用道具 举报

地里匿名用户
匿名用户-906QC  2024-6-24 05:55:48
本楼:   👍  0
0%
0%
0   👎
匿名账號 发表于 2024-6-23 00:54
佬是怎么考虑这个SD的

求米求米。基本思路是把要写的data先存到一个thread-safe的queue里,然后class专门开一个writer thread从queue里的data写到file里。
回复

使用道具 举报

地里匿名用户
匿名用户-906QC  2024-6-24 05:58:32
本楼:   👍  0
0%
0%
0   👎
匿名用户 发表于 2024-6-23 10:40
谢谢楼主! 已加米
想问一下Arch,“并且保证每个vm至少有X (具体数字忘了) minimum bandwidth。”是不是 ...

对的,每个vm只保证下限,上限就是每个host的physical limit。我感觉就是常规的rate limiter的变种吧。
回复

使用道具 举报

本楼:   👍  0
0%
0%
0   👎
全局:   4331
92%
8%
381
匿名用户 发表于 2024-06-23 14:55:48
求米求米。基本思路是把要写的data先存到一个thread-safe的queue里,然后class专门开一个writer thread从queue里的data写

老哥 我能理解你说的类似于多个producer 然后中间有个queue 然后一个consumer来poll out到disk 但是我的面试官问了如下几个问题
1. 一个consumer显然会成为bottleneck queue里面的东西会越来越多 怎么办 毕竟我有上千的producer thread在送数据进来
1.5 我说那就多加consumer thread呗。他问:如何保证同一个producer thread送的数据的ordering。不同的producer thread无所谓 但是同一个thread来的数据 必须先到先被写入disk
2. 如果machine crush了怎么办 queue里的东西都丢了
反正最后给我挂了 我也不知道到底想要啥
回复

使用道具 举报

地里匿名用户
匿名用户-906QC  2024-6-24 11:44:21 来自APP
本楼:   👍  0
0%
0%
0   👎
匿名账號 发表于 2024-6-23 17:13
老哥 我能理解你说的类似于多个producer 然后中间有个queue 然后一个consumer来poll out到disk 但是我的 ...

第一个问题可以让consumer thread一次从queue里load多个data payloads写到file里。

第二个问题我也没有一个完美的解法。只能在满足latency的条件下尽可能多地load data来减少queue的损失?或者comprise latency让consumer thread每次都load queue里的所有data?

补充内容 (2024-06-24 13:45 +08:00):
compromise*
回复

使用道具 举报

pageajpeng 2024-6-24 14:12:49 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   133
91%
9%
13
匿名用户 发表于 2024-6-23 20:44
第一个问题可以让consumer thread一次从queue里load多个data payloads写到file里。

第二个问题我也没 ...

楼主好,如果要做到server crash的fault tolerance的话,是不是Write-Ahead Log才能做到?
还有一个问题是既然文件是只有一个descriptor来写入的话,上千个线程的总throughput必然需要小于Disk I/O的throughput?否则需要其他advanced approach?
回复

使用道具 举报

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

本版积分规则

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