苏州微软面试记录

拖同学内推的福气,有幸能去微软这所国际巨头面试,虽然结果是没有通过,但是也体验了一番大厂的技术与氛围

1面 1h 面试官是个93年的帅哥,真的是厉害!
0.面试官介绍了一下面试内容流程,没错就是直接就开始写编程题。
1.面试题是这样的,假设有3栋楼,每栋楼都有对应的高度,假设是(10,15,12),我们有升序排列的包裹,代号表示为(9,14,25,36),要输出包裹被deliver到第几栋大楼的第几层,这个意思就是假设包裹是9,就输出第一栋的第9层,19这个样子。14就是第二栋楼的第四层,24。以此类推。

刚开始就只能想到暴力解法,把这三栋楼的数字分成区间 [(1,10),(11,25),(26,37)]这样一个三维数组,那么每个包裹的编号就需要看是否在这几个区间内,遍历每一个小区间,比较这个包裹的数字是否小于等于每个区间的最大值,如果成立那么我们直接输出这个区间的下标以及item-levels[i][0]+1,这样就可以输出第几栋第几层,但是这里的时间复杂度取决于区间的数量,也就是第几栋楼,而且要比较区间当中的数字,所以至少是O(k*2)的复杂度。那有没有更快的时间复杂度更低的方法呢?有,就是维护一个栈,由于我们的包裹编号是升序排列的,所以可以直接在这个区间就直接把之前的数字给pop掉,留下来的就是这个包裹,不停地pop掉,通过这个思路过程,我们只需要O(k)的时间复杂度。

工程能力,算法数据结构实在太重要了,在微软考察的往往都是这些。

2面 1h 面试官穿个运动裤就来面我了,说明还是很尊重员工的个性的哈哈哈
0.直接在去会议室的路上就自我介绍的差不多了。。。
1.讲了一下自己的无人机项目。
2.问了操作系统的东西,内核态是什么(不知道),有没有写过并发的代码,有没有写多线程的代码来优化过自己的代码。进程和线程的概念,进程间同步与线程间同步的概念。
3.做题,一个二叉树,定义N为有叶子结点的结点,L为叶子结点,那么给定一串前序遍历过的字符串假设(NNLLL),求这棵树的高度。
这道题的解法就直接通过前序遍历的定义重构一棵二叉树,这个竟然给忘记了。。。我真的是菜,当场凉凉。

总结:计算机基础要加强,代码能力就不说了吧,甚至对自己的能力还是有点怀疑的,对自己的期望降低一些吧,加油!

你可能感兴趣的:(面试笔试准备/总结)