📜  微软 IDC 面试经历

📅  最后修改于: 2022-05-13 01:58:19.921000             🧑  作者: Mango

微软 IDC 面试经历

测试:

  • 查找字符串中的第一个非重复字符。
    输入:“aabcbd”
    输出:c
  • K-反向链表
    输入:1 2 3 4 5 -1 k = 3
    输出:3 2 1 5 4
  • 在给定整数范围内切割短二叉搜索树。
    输入:7 5 10 4 6 8 -1 2 -1 -1 -1 -1 9 1 3 -1 -1 -1 -1 -1 -1(电平指令输入)
    下限 = 4 上限 = 8
    输出:
    7:5、8
    5:4、6
    8:-1、9
    4:-1,-1
    6:-1,-1
    9:-1,-1

大约 200-300 人参加了这一轮比赛,其中 80 人成功通过。

团体飞轮:

  • 从给定的输入字符串中删除字符“c”并将其替换为双字符“**”
    输入:“钙”
    输出:**al**i**
  • 给定一棵二叉树,其结构如下
    Class BSTspecial{
    public:
      BSTspecial* parent = NULL;
      BSTspecial* left = NULL;
      BSTspecial* right = NULL;
      int data;
      BSTspecial(int data){
        this->data = data;
      }
    };

    给定一个节点(注意它可以是树的任何一个节点,无论它是否是根节点),如果有的话,您需要找到它的直接右兄弟/表亲,如果不存在则返回 NULL。

    输入:
    1 2 3 4 5 -1 6 -1 -1 -1 -1 -1 -1(电平指令输入)
    对于节点“5”,答案是“6”
    对于节点“4”,答案是“5”
    对于节点 '6' 的答案是 -1
    对于节点 '1' 的答案是 -1

在 80 人中,有 14 人入围面试。

面试:

第1轮:

  • 你对时间复杂度的理解是什么?您在小组飞行中提出的问题的时间复杂度是多少?
  • 给你 n 个字符串和一个字符串连接函数,它接受两个参数(两个字符串),它的时间复杂度是两个字符串长度之和。
    如果 s1 是 k 个单位长,s2 是 l 个单位长 TC = O(k + l)

    现在,您需要生成一个算法,以便用最少的时间连接 n 个字符串。

    字符串:s1、s2、s3、s4、……………………………………、sn。

    长度:l1,l2,l3,l4,……………………………….,ln。

    提示:O(log(n)*(l1 + l2 + l3 + ........ + ln)) 可能不是最好的方法,这只适用于长度几乎相等的字符串。

  • 查找给定的链表是否为回文。
    在 O(n) 中没有额外的空间并且没有破坏任何链接。

    注意:递归的堆栈空间将被忽略。

第二轮:

  • 从给定的树返回一个数据结构,使得每个节点的所有子节点都指向它们各自的父节点,根节点指向 NULL。

    讨论该方法的时间复杂度。

    然后我被要求改进它。

由于深夜,第 3 轮和 HR 被打了一顿,我们只有 4 人,但我被要求离开。