微软2022暑期实习研发岗 一二面凉经
2022-01-17 微软2022暑期实习研发岗 一面
是第一次实习面试,各方面都没有好好准备,结果果然很糟糕啊。。。
总体情况:
- 总共大概55min
- 没开摄像头(幸好没开,题目难的我在屏幕另一端抓耳挠腮)
整个面试流程如下:
1. 自我介绍
2. 提问环节:
- 介绍自己在项目中负责的内容
- 知识提问(如:堆和栈的区别;在浏览器输入一个url,讲讲会发生什么;三次握手是什么)
跟自我介绍时提到的内容关联性很高,自我介绍要谨慎!
3. 口述题目写代码:
- 第一题,给出一个二叉搜索树,实现两个函数next和hasNext,next用于迭代到下一个结点,hasNext用于判断是否存在下一个结点(提示是使用迭代器,但我一直没get题目意思,尴尬请求进入下一题了……)
if(s.hasNext()) { print(s.val) s.Next() } //面试官给的大致框架
- 第二题,动态规划,有n块土地,土地有各自的***和售价,已知有m块钱,拿钱购买连续的土地,请问怎样可以获得最大的利润;写完后自行设计测试用例(尽量多),并讲述自己设计的思路
因为是第二天,没有自我介绍的环节,只有项目介绍和做题。
第一题: 找出两个无环链表的第一个公共节点,一开始想了一个空间复杂度O(n)的解决方法,面试官要求不用额外空间,因此最后采用了双指针的写法。
原题指路:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/
第二题: 第一题的升级版,如果有环且公共节点在环中,那么两个链表进入环的第一个节点都可以被视为公共节点;思考有哪几类情况,并设计相应的测试用例。
面试前的准备很重要!