坐在高铁上,发个刚放假的MSRA二面凉经

一面:电话面(主要讨论research的东西)
先介绍了一下组做什么的,然后问我的东西,我觉得应该是看上了我给老师干活做的一个论文工作,然后问里面的东西,不过我回答得不好,就略过。
后面问我的研究方向,开始讨论图神经网络的东西,问问有哪些工作,说了常见的,切比雪夫核,一阶近似的GCN,graphsage和gat,然后好像问了graphsage,我说了几种聚合算子,后面让我详细说说池化算子,我当时直接说论文来凑数的,因为我也不太懂🤣,现在想想太草率了哈哈哈。假期又读了下,发现这个池化算子还是比较重要的,作者后面证明了sage能够以任意误差拟合网络中的三角形(衡量算法重构复杂网络能力的),这个证明用到了池化算子的性质。但我现在还没搞懂这个最大池化算子是怎么工作的,有懂的朋友可以交流一二🙏。

后面就在讨论GNN里的过平滑问题了,先回答为什么会产生,可以从频域空域视角理解,主要思路就是让节点向量趋于一致而失去应有的区分度。
然后问了一下图卷积网络和CV里的卷积网络都是卷积,为什么CNN可以做深,GCN不能?当时回答的是这俩卷积不是一个东西,可能机制不一样blabla。现在回想一下GNN其实是能做深的,不过和CNN一样都需要一些trick,最经典的就是残差连接。
然后问了怎样缓解过平滑,其实当时对这个问题没有深入的考虑和调研过,就主要谈了邻居采样问题,我主要觉得节点随着层数扩展是以指数级别聚合邻居节点特征的,所以聚多了自然就一致了,所以主要谈了谈怎么随机邻居采样,减少采样数量。现在再回答就是解耦+trick。

代码题最后简单问了一下思路,开平方问题,二分法,复杂度。

二面:由于一面没有严谨的撕代码,让我这个小辣鸡有了一张二面体验卡。
一开始又聊GNN的过平滑,由于聊过一次,对答如流,就在暗自庆幸之际,面试官就说来一道代码题吧:
“假设有T个城市,每个城市有L个类型的补给站。一个旅行者,需要从第1个城市依次走到第T个城市。第i个城市第j个类型的补给站可以提供的补给数量由数组A[i][j]表示,A是一个T*L的数组。从相邻城市的m补给站到n补给站,可以额外获得的补给奖励为B[m][n],B是一个L*L的数组。求可以获得最高补给的路径,以及最高补给数量。”
回答了暴力解法的思路和复杂度,优化要用动态规划,可是我不会啊,遂挂。

这就是我面试的流程,希望对大家有帮助,谢谢。#微软##面经#
全部评论
dp ij 维护到第i个城市的第j个补给站的最大补给 复杂度为tl*l 路径反向找就行 求一个路径的话复杂度tl 所以总的复杂度还是tll
1 回复 分享
发布于 2021-09-04 08:55
二面动态规划怎么解啊
点赞 回复 分享
发布于 2021-08-29 23:14
二面这个题貌似没在leetcode见过相似的
点赞 回复 分享
发布于 2021-08-30 13:55
是哪个组呀👀
点赞 回复 分享
发布于 2021-09-02 21:58
老哥是社招还是校招啊?
点赞 回复 分享
发布于 2021-09-08 15:43
楼主竟然能把动态规划的题记得这么完整,hhhhhh,枚举型动态规划,对于实习生还真不友好🤣
点赞 回复 分享
发布于 2021-09-14 23:14
感觉这个题,首先是把B根据补给站排序,就是每个补给站到下一个补给站怎么走B能得到最多的排序,然后到一个城市,去下一个城市的时候,然后就根据A和B的加和值更新,维护一个堆排序,填到下一个城市补给站都有值为止?但感觉这dp也不能帮到太多吧。
点赞 回复 分享
发布于 2022-02-15 18:44

相关推荐

投递小天才等公司10个岗位
点赞 评论 收藏
分享
11-13 20:32
门头沟学院 Java
面向未来编程code:我没看到他咋急,他不就问你个问题。。。
点赞 评论 收藏
分享
6 21 评论
分享
牛客网
牛客企业服务