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

微软电面

全局:

2019(7-9月) 码农类General 硕士 全职@microsoft - 内推 - 技术电面  | | Fail | 在职跳槽

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

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

x
本帖最后由 肥耳朵猫猫 于 2019-8-24 09:26 编辑

azure stream analytical组,hiring manager简单聊后,上了一道coding题:

您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies


楼主最后想了两种方法:
方法1:从后往前找头,先扫找到X记录下来,然后通过X的index往前找,直到page的index没前项,即为头page;(稍微紧张了下,没有在此基础上直接用hashmap存,而选择了扫pages);不太满意
方法2:花了点时间,想出了另一种方法,直接用indegree思路,用hashmap标识next出现数字或者X的page是否可能头page。比如:next带数字的,直接将其index添加hashmap标识false,或者已在hashmap将其值改为false(不可能头page),然后在hashmap里面查找当前page的index是否在其中,如果没有将自己index加入hashmap并暂时标记为true;最后遍历hashmap里面为true的page即为所有头page。

manager挑了几个case,最后觉得work,然后我白板实现了code。(应该不是和她心目中的解法一致,估计她想的是第一种解法用hashmap倒着搜索,像union-find找根)。

下午接到拒信,可能嫌弃background不是很strong,毕竟是转行。anyway,个人还是比较满意自己短时间想出另外一个approach。

评分

参与人数 3大米 +33 收起 理由
golittleflag + 2 给你点个赞!
匿名用户-X2VCP + 30
dundun1990 + 1 给你点个赞!

查看全部评分


上一篇:亚麻 哎达不留哎斯 虾图 店面
下一篇:Akuna Data Infra Junior OA
🔗
golittleflag 2019-9-22 16:50:30 | 只看该作者
全局:
可以请教一下这题的输入和输出嘛?已经加米咯~~~
回复

使用道具 举报

🔗
 楼主| 肥耳朵猫猫 2019-9-23 02:26:19 | 只看该作者
全局:
golittleflag 发表于 2019-9-22 16:50
可以请教一下这题的输入和输出嘛?已经加米咯~~~

你可以假设输入是一个定义好的list of page(vector of page),返回list of page index(head page index)。

page class在完成主代码后你可以自己定义(包括两个成员:int idx,和 string next)。
回复

使用道具 举报

🔗
JKBro 2019-9-23 03:14:03 | 只看该作者
全局:
我感觉这题是个BFS,
首先循环所有pages,建立一个page, prepage的map,同时把所有next page是x的加进queue.
然后就是BFS,一旦当前元素没有在map里,也就是当前元素没有previous page,就加入答案list,否则就把previous page加入queue。

另一个做法可能是UnionFind,但是还没太像仔细,感觉不会比BFS更简单,而且都是 O(n)

回复

使用道具 举报

🔗
JKBro 2019-9-23 06:23:07 | 只看该作者
全局:
想了想UnionFind的解法大概应该是这样,建一个UnionFind class,里面放个数组长度就是page总数的数组father[n + 1](下标处理无所谓了,个人偏好),初始值就是下标本身,或者-1之类不可能出现的page number,建立一个listx,用来存所有next是x的page。然后遍历一遍pages,遍历的过程update数组的值为他的previous page number. 比如遍历到(page 2, next page 4), 就把father[4] = 2,便利的同时把所有next是x的加进listx。遍历结束后,对每一个listx里的page number进行 findfather运算,findfather 这个recursive结束的条件就是father[n] == -1或则father[n] == n, 如果father[n] == -1就把father[n] = n。 左中每一个listx里的pagenumber找出来的father就是答案。
时间空间复杂度好像都是O(n),跟BFS相同,但是细节处理好像略为麻烦一点。

  
回复

使用道具 举报

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

本版积分规则

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