微软STCA一二三四面面经,许愿offer~
一面
1. 项目介绍
2. 数学题:每隔一秒会收到一个数字,当收到查询命令时,在目前收到的数字中,随机挑选一个输出(每一个数字输出的概率相等)。在数据量很大,机器无法存储全部数字的情况下,如何实现上述功能。
3. 算法题:对一些有依赖关系的任务排序。思路:拓扑排序
4. 设计题:设计一个数据结构来存储key-value对,输入key来进行查询,key有可能是完整的,也有可能是前缀或后缀,如果是前缀或后缀则需要输出所有能匹配的value。思路:字典树、哈希表
二面
1. 介绍实习项目,问了一些问题
2. 基础数据结构
3. 算法题:给一个包含重复元素的有序链表,将所有重复的元素删除。例如1->2->2->3,变成1->3。
三面
1. 算法题1:(不需要实现)有一个主表A,包含多个列[a1, a2, ..., an],有一些子表,这些子表中的列会match到主表中的列,例如,一个子表B,其中的b1会match到主表中的a3,b2会match到a1。现在要将主表和子表画出来,主表在中间,子表排列在主表的左右两边,要求(1)match到同一列的子表必须在同一边;(2)在满足(1)的前提下,使得左右两边的子表数量尽可能接近。思路:并查集+背包
2. 算法题2:一道很简单很简单的题,就不写了
四面
1. 项目介绍
2. 算法题:设计一种数据结构来表示稀疏向量,并实现两向量的加法功能。
3. 数学题:在5点到6点之间,在时钟上,时针和分针的夹角第二次为90度的时间。
求一个offer~
