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

Databricks电面SnapshotSet和HM面

🔗
匿名用户-MSI1F  2022-3-26 09:42:56 |倒序浏览

2022(1-3月) DataEng 博士 全职@databricks - 网上海投 - 技术电面 在线笔试 视频面试  | 🙁 Negative 😐 Average | Fail | 在职跳槽

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

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

x
本帖最后由 匿名 于 2022-3-25 19:07 编辑

我用C++写的,题目如下,要求实现SnapshotSet Interface,能够用iterator()取某一时刻这个set的所有元素,在调用iterator()和使用Iterator<T>之间,可以对SnapshotSet进行修改,不考虑多线程,所有操作都是顺序执行:

// java
// interface SnapshotSet
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
2
// --------- contains(2) = false
// --------- [x for x in it] = [2, 8] (No ordering guarantees),把2和8读出来。





评分

参与人数 4大米 +8 收起 理由
jyer555 + 1 很有用的信息!
匿名用户-Q81NS + 5
heyho666 + 1 Thanks!
BroSoap + 1 很有用的信息!

查看全部评分


上一篇:刀带湿挂
下一篇:加拿大Yelp新鲜VO面试
地里匿名用户
推荐
匿名用户-GMJXQ  2022-4-9 12:53:45
这个heyho是来偷面经的烙印,楼主别理。这b每个数据砖面经都有他,已经几个月了还没面。。
回复

使用道具 举报

地里匿名用户
推荐
匿名用户-MSI1F  2022-4-11 22:32:47
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-MSI1F  2022-3-26 09:54:45
技术面是上面那道题;隔了一天HM面,又被烙印manager黑了。三哥真是老中的克星。
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-AXOJL  2022-3-26 15:13:31
请问楼主第一题是怎么做的呢?set里每个val都单独记录timestamp和operation,然后做binary search,还是直接每次创建iterator的时候把整个set copy?
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-MSI1F  2022-3-26 23:49:13
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-MSI1F  2022-3-27 00:32:42
  1. import java.util.*;
  2. import java.lang.*;

  3. class MyIterator implements Iterator<Integer> {
  4.     Map<Integer, Integer> snapshot;
  5.     Map<Integer, Integer> curset;
  6.     Iterator<Integer> it;
  7.     MyIterator(Map<Integer, Integer> s, Map<Integer, Integer> c) {
  8.         this.snapshot = s;
  9.         this.curset = c;
  10.         it = s.keySet().iterator();
  11.     }
  12.     @Override
  13.     public boolean hasNext() {
  14.         boolean res = it.hasNext();
  15.         if(res == false) snapshot.clear();
  16.         return res;
  17.     }
  18.     @Override
  19.     public Integer next() {
  20.         Integer res = it.next();
  21.         if(snapshot.get(res) == 0) curset.put(res, 0);
  22.         return res;
  23.     }
  24. }

  25. public class SnapshotSet {
  26.     Map<Integer, Integer> snapshot = new HashMap<Integer, Integer>();
  27.     Map<Integer, Integer> curset = new HashMap<Integer, Integer>();
  28.     void add(Integer e) {
  29.         if(snapshot.containsKey(e)) snapshot.put(e, 0); // not deleted
  30.         else curset.put(e, 0);
  31.     }
  32.     void remove(Integer e) {
  33.         if(snapshot.containsKey(e)) snapshot.put(e, 1); // deleted
  34.         else curset.remove(e);
  35.     }
  36.     boolean contains(Integer e) {
  37.         return snapshot.containsKey(e) && snapshot.get(e) == 0 || curset.containsKey(e);
  38.     }
  39.     Iterator<Integer> iterator() {
  40.         snapshot = curset;
  41.         curset = new HashMap<Integer, Integer>();
  42.         return new MyIterator(snapshot, curset);
  43.     }
  44.    
  45.     public static void main(String[] args) {
  46.         SnapshotSet ss = new SnapshotSet();
  47.         ss.add(8);
  48.         ss.add(2);
  49.         ss.add(5);
  50.         ss.remove(5);
  51.         Iterator<Integer> it = ss.iterator();
  52.         System.out.println(ss.contains(2));
  53.         ss.add(1);
  54.         ss.remove(2);
  55.         System.out.println(ss.contains(2));
  56.         while(it.hasNext()) {
  57.             System.out.print(it.next() + ",");
  58.         }
  59.         System.out.println();
  60.         
  61.         ss.add(5);
  62.         it = ss.iterator();
  63.         while(it.hasNext()) {
  64.             System.out.print(it.next() + ",");
  65.         }
  66.         System.out.println(ss.contains(2));
  67.         
  68.     }
  69. }
复制代码
回复

使用道具 举报

🔗
heyho666 2022-3-27 06:42:08 | 只看该作者
全局:
Can you explain why we need line 22? ( if(snapshot.get(res) == 0) curset.put(res, 0);)
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-WNFCG  2022-3-27 06:53:42
匿名者 发表于 2022-3-25 21:54
技术面是上面那道题;隔了一天HM面,又被烙印manager黑了。三哥真是老中的克星。

HM挂我感觉其实不算黑吧,毕竟manger有一票否决这个人要不要我组里面,如果真招你进去了背锅那更惨
回复

使用道具 举报

🔗
heyho666 2022-3-27 07:18:35 | 只看该作者
全局:
This code fails the test below. It needs to print 1,5,8 but prints 1,5.
  1.         SnapshotSet ss = new SnapshotSet();
  2.         ss.add(8);
  3.         ss.add(2);
  4.         ss.add(5);
  5.         ss.remove(5);
  6.         Iterator<Integer> it = ss.iterator();
  7.         ss.add(1);
  8.         ss.remove(2);

  9.         ss.add(5);
  10.         Iterator<Integer> it2 = ss.iterator();
  11.         while(it2.hasNext()) {
  12.             System.out.print(it2.next() + ",");
  13.         }
复制代码
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-MSI1F  2022-3-27 09:30:39
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-MSI1F  2022-3-27 09:40:59
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

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

本版积分规则

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