微软上海C+AI 一二面挂经及复盘
一面2.21
全程中文面。
首先花了大概20分钟时间聊简历。主要是聊简历中面试官感兴趣的部分。
Basic questions
介绍一下你在实验室做的这个项目。
这个项目主要包含了几个部分,你负责的主要的模块是什么?
你觉得你负责的模块中最困难的部分是什么,为什么觉得他困难。
Coding
题目描述如下:
在方法执行开始和结束都会打印一条log 信息。输入的是一个log 信息数组。数组如下所示
log 信息里面有输入时的时间戳。
start a
start b
start d
end d
end b
start c
end c
end a
要求建立方法调用树。其中定义方法节点为 MethodNode = {duration, child = {}}. 建立方法的树结构。最后返回root 节点。
一听到题目之后我就感觉不妙。好像是树的反序列化题目。之前从来没有处理过Log 信息。硬着头皮往下分析。
题目要求在本地IDE 完成,并设计节点结构。打开IDE 反应比较慢浪费了几分钟。之后我做的是设计MethodNode 结构。面试官反问我为什么时长用int 不用 Date,因为这里没有复习..... 设计完Node 类型之后,开始尝试写递归。因为对log 不知道怎么处理,中间安静了十分钟我没有思路。感觉面试官也比较失望。我的思路是用HashMap 存储一个方法的起始位置和结束位置。面试官没有表示认可。之后我说了下自己的递归建树的过程。位于index 0 也就是最开始打印出log信息的肯定是根节点。再利用map 找到它的结束节点。中间的节点都是他的子节点,面试官说我的思路是正确的但是没有写代码。结束本场面试。
😢大家有遇到过这道题目码,力扣没有找到原题,能不能给一下思路。
第一场面试的coding 部分没有提前打开ide,也没有提前打开白板,交流全靠谈话,很困难
二面2.22
Basic Questions
- HashMap 的底层实现逻辑
- 说一下Java1.7 到1.8 HashMap 做了哪些改进
- 说一下HashSet 的底层实现逻辑
- 看到你用了MySQL,说一下ACID 分别是什么
- 说一下I,也就是隔离性,你知道隔离级别吗?项目中事务的控制如何设置隔离级别?
Coding
求两个带环的链表的链表的相交节点。
说实话拿到题目的一瞬间很懵,感觉这道题目是判断是否有环,求链表相交节点的一个复合题目。
这回我提前做好了准备,准备好了IDE 和 白板。
我只想到了这种情况,面试官提示我还有其他的情况,但是我没有想出来。面试官看我卡住了让我先去coding。 我先编写了判断是否有环的方法,之后又写了判断两个普通链表相交节点的方法。之后面试官让我自己写测试用例判断求相交链表的节点。解决完之后继续返回思考给的题目,面试官说我已经提示你好几次了😂😂😂还是没有想出来。最后时间到了停在这里没有继续coding。发现面试官竟然是吉大的师兄哈哈。
面试结束之后发现大家对于题目的完成程度以及解题速度都比我快很多,哈哈,收到感谢信也不惊讶。再接再厉💪。如果大家有做过这两道题目的或者有解题思路的麻烦告诉我一下,谢谢啦~
#暑期实习##微软##面试题目#