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

Bloomber 算是 地里面经 比较难的题目了

全局:

2016(1-3月) 码农类General 硕士 全职@bloomberg - 网上海投 - 技术电面  | | Other | 应届毕业生

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

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

x
感觉 老印问的问题 不怎么简单 首先 聊了聊实习 问了点C++的基础问题 (virtual function 大二学的 完全 不记得了)

coding的题目如下

An industrial machine uses this table of operation IDs  to orchestrate a complex process.  Each
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
小时 老印说 题是做完了 但他follow up没问完 (关于corner case的)

最后 挂的可能性更大一些吧 毕竟 面试官印度兄弟 加上 follow up 并没有全部答完
  1. class GraphNode {
  2.     int ID;
  3.     bool flagComplete;
  4.     vector<GraphNode*> DependsOn;
  5.    
  6. public:
  7.     GraphNode(int inputID) {
  8.         ID = inputID;
  9.         f
  10.         dependsOn.clear();
  11.     }
  12. }

  13. void performInSequence(vector<int> Target, vector<vector<int>> DependsOn) {
  14.     // Quick check
  15.     if (Target.empty() || DependsOn.empty()) return;
  16.     if (Target.size() != DependsOn.size()) return;
  17.    
  18.     int nSize = Target.size();
  19.     unordered_map <int, GraphNode*> targetNodeHash;
  20.     unordered_set <int> dependOnSet;
  21.    
  22.     for (int i = 0; i < nSize; i++) {
  23.         // Construct graph
  24.         GraphNode* toInsert;
  25.         if (targetNodeHash.find(Target[i]) == targetNodeHash.end()) {
  26.             // We didn't find target[i] in the hash table, initiate a new one
  27.             toInsert = new GraphNode(Target[i]);
  28.             targetNodeHash[Target[i]] = toInsert;
  29.         }
  30.         
  31.         else {
  32.             toInsert = targetNodeHash[Target[i]];
  33.         }
  34.         
  35.         for (int j = 0; j < DependsOn[i].size(); j++) {
  36.             GraphNode* toDepend;
  37.             
  38.             if (targetNodeHash.find(DependsOn[i][j]) != targetNodeHash.end()) {
  39.                 toDepend = targetNodeHash[DependsOn[i][j]];
  40.             }
  41.             
  42.             else {
  43.                 toDepend = new GraphNode(DependsOn[i][j]);
  44.                 targetNodeHash[DependsOn[i][j]] = toDepend;
  45.             }
  46.             
  47.             toInsert.DependsOn.push_back(toDepend);
  48.             dependOnSet.insert(DependsOn[i][j]);
  49.         }
  50.     }
  51.    
  52.     // Find the root of the tree
  53.     int k = 0;
  54.     for (; k < nSize; k++) {
  55.         if (dependOnSet.find(Target[k]) != dependOnSet.end()) {
  56.             // Find it in hash set,
  57.             continue;
  58.         }
  59.         else break;
  60.     }
  61.     // root is k
  62.     constructResultRec(targetNodeHash[Target[k]]);
  63. }

  64. void constructResultRec(GraphNode* cur) {
  65.     for (int i = 0; i < cur.DependsOn.size(); i++) {
  66.         if (cur.DependsOn[i].flagComplete) continue;
  67.         constructResultRec(cur.DependsOn[i])
  68.     }
  69.    
  70.     perform(cur.ID);
  71.     cur.flagComplete = true;
  72. }
复制代码

评分

参与人数 2大米 +60 收起 理由
jacksterling + 10 感谢分享!
夏虫不知雪花 + 50

查看全部评分


上一篇:qumulo OA 4道题,120分钟
下一篇:Snapchat Intern面经

本帖被以下淘专辑推荐:

全局:
马上要面了。。。。看到这题觉得慌了。。。我觉得用拓扑排序 但是并不会做。。。。。
回复

使用道具 举报

🔗
 楼主| loveonts 2016-1-29 00:20:46 | 只看该作者
全局:
老印 并不给 class或任何input 全部是自己定义的
回复

使用道具 举报

🔗
孤笑客 2016-1-29 23:58:05 | 只看该作者
全局:
topological sort?
你别说,这个问题在现实工作中真的会遇到,不过BB朋友的做法一般是,for 套 for 查有没有循环。O(N^2)在N不大的时候并不吓人
回复

使用道具 举报

🔗
 楼主| loveonts 2016-1-30 00:06:45 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
googlerr 2016-1-30 11:12:39 | 只看该作者
全局:
感觉这题不让用Topological Sort有些故意难为人,确实是很标准的TS,我贴个代码,欢迎拍砖:
  1. package onsite;

  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.HashMap;
  5. import java.util.HashSet;
  6. import java.util.LinkedList;
  7. import java.util.List;
  8. import java.util.Map;

  9. public class PerformOperations {
  10.         Map<Integer, List<Integer>> performs;
  11.         int[] targets;
  12.         public PerformOperations(Map<Integer, List<Integer>> performs, int[] targets) {
  13.                 this.performs = performs;
  14.                 this.targets = targets;
  15.         }
  16.        
  17.         public List<Integer> perforInorder() {
  18.                 List<Integer> list = new LinkedList<>();
  19.                 HashSet<Integer> visited = new HashSet<>();
  20.                 for(int target : targets) {       
  21.                         if(!visited.contains(target)) topologicalSort(target, visited, list);
  22.                 }
  23.                 return list;
  24.         }
  25.        
  26.         private void topologicalSort(int target, HashSet<Integer> visited, List<Integer> list) {
  27.                 visited.add(target);
  28.                 List<Integer> dependencies = getDependencies(target);
  29.                 if(dependencies!=null) {
  30.                         for(Integer prevPerforms : dependencies) {
  31.                                 if(!visited.contains(target)) topologicalSort(prevPerforms, visited, list);
  32.                         }
  33.                 }
  34.                 list.add(target);
  35.         }
  36.        
  37.         public List<Integer> getDependencies(int target) {
  38.                 return performs.get(target);
  39.         }
  40.        
  41.         public static void main(String[] args) {
  42.                
  43.                 Map<Integer, List<Integer>> performs = new HashMap<>();
  44.                 performs.put(9, new ArrayList<>(Arrays.asList(2,3,4,5,6,7)));
  45.                 performs.put(8, new ArrayList<>(Arrays.asList(5,6,1,2)));
  46.                 performs.put(7, new ArrayList<>(Arrays.asList(1,3,5)));
  47.                 performs.put(6, new ArrayList<>(Arrays.asList(2)));
  48.                 performs.put(5, new ArrayList<>(Arrays.asList(2)));
  49.                 performs.put(4, new ArrayList<>(Arrays.asList(1,2,3)));
  50.                 performs.put(3, new ArrayList<>(Arrays.asList(1,2)));
  51.                 performs.put(2, new ArrayList<>(Arrays.asList(1)));
  52.                
  53.                 int[] targets = {1,2,3,4,5,6,7,8,9};
  54.                
  55.                 PerformOperations po = new PerformOperations(performs, targets);
  56.                 List<Integer> res = po.perforInorder();
  57.                 System.out.println(res);
  58.         }
  59. }
复制代码
回复

使用道具 举报

🔗
zxl9171 2016-2-2 06:55:43 | 只看该作者
全局:
TS也可以用递归的,之前在ExtraHop面到一道,找一个有向图有没有环,就是DFS,只需要用O(E)的时间复杂度,如果node是N,确实是O(n^2)了。
  1. struct Node{
  2.     int value;
  3.     vector<Node*> edges;
  4.     int state=0;
  5. };
  6. bool helper(Node *node){
  7.     node->state=1;
  8.     for(int i=0;i<node->edges.size();i++){
  9.         if(node->edges[i]->state==0){  //There are 3 states. 0 is unreached
  10.             if(helper(node->edges[i]))
  11.                 return true;
  12.         }
  13.         else if(node->edges[i]->state==1){ //1 is reached but not finished all nodes connected to this node.
  14.             return true;
  15.         }
  16.         else if(node->edges[i]->state==2){ //2 is reached and finished all nodes connected to this node.
  17.             continue;
  18.         }
  19.     }
  20.     node->state=2;
  21.     return false;
  22. }

  23. bool haveCycle(vector<Node *> nodes){
  24.     for(int i=0;i<nodes.size();i++){
  25.         if(helper(nodes[i])){
  26.             return true;
  27.         }
  28.     }
  29.     return false;
  30. }
复制代码
回复

使用道具 举报

🔗
何打发123 2016-2-22 05:39:48 | 只看该作者
全局:
googlerr 发表于 2016-1-30 11:12
感觉这题不让用Topological Sort有些故意难为人,确实是很标准的TS,我贴个代码,欢迎拍砖:

hi~~  感觉你的topologicalSort  这里面 visited(target)要放到最后 要不你那个里面的迭代进不去啊
回复

使用道具 举报

🔗
何打发123 2016-2-22 05:42:04 | 只看该作者
全局:
googlerr 发表于 2016-1-30 11:12
感觉这题不让用Topological Sort有些故意难为人,确实是很标准的TS,我贴个代码,欢迎拍砖:

或者括号里面是  prevPerforms?......
回复

使用道具 举报

🔗
何打发123 2016-2-22 06:05:38 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

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

本版积分规则

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