还好能拖着同学的内推福气去参加微软这个国际大面试,结果虽然不合格,但体验了大工厂的技术和氛围
头版1h面试官是93年的帅哥,真的很厉害!
0 .面试官介绍了面试内容的流程。 是的,就这样开始写编程问题了。
1 .面试试题包括: 假设有三栋楼,每栋楼都有对应的高度。 假设(10,15,12 )。 我们有按升序排列的包裹,代号为) 9,14,25,36 )。 这意味着要输出包裹被交付到第几栋楼的几楼。 也就是说,如果包裹是9,就输出第一栋楼。14是第二栋楼的4楼,24。 接下来类推。
一开始只能想到暴力的解法,如果将这三栋大楼的数字分为区间[ (1,10 )、(11,25 )、(26,37 ) ]这样的三维排列,就会看各包裹的号码是否在这些区间内,然后横穿各小区之间,然后如果成立,则直接输出该区间的下标和item-levels[i][0] 1。 这样的话,可以输出第几栋楼的第几层。 但是,这里的时间复杂度取决于区间的数量,也就是第几栋。 另外,因为要比较区间中的数字,所以至少会达到o(k*2)的复杂度。 有更快更低复杂度的方法吗? 有。 就是维持堆栈。 我们的包裹号码是按升序排列的,所以在这个区间可以直接把前面的数字落在pop上。 剩下的是这个包裹,不断地丢进pop里。 在这个想法的过程中,我们只有o(k )的时间会变得复杂。
工程能力、算法的数据结构非常重要,微软考察的就是这些。
面试人员穿着运动裤来见我。 说明还是尊重员工的个性
0 .直接在去会议室的路上自我介绍。
1 .我谈到了我的无人机项目。
2 .我听说了操作系统的事。 内核的状态是什么? 不知道。 你写过并行的代码吗? 你写过多线程代码优化过自己的代码吗? 进程和线程的概念、进程间同步和线程间同步的概念。
3 .解答问题。 一个二叉树将n定义为有叶的节点,l定义为叶的节点。 于是,给出一系列先行路径的字符串假说(NNLLL ),求出该树的高度。
这个问题的解法从前面的遍历定义中直接重构了二叉树,但这竟然被遗忘了。 我真的是做饭。 那个地方很冷。
总结:要加强计算机基础,代码能力自不必说。 我甚至对自己的能力有点怀疑。 降低一下对自己的期待吧。 请加油。