微软2022暑期实习提前批面经(oc)

Lead Round

整体回顾

做得好的:很勇敢,很敢于沟通,把想到的都说出来
做得差的:听信了流传的说法“外企只考算法”,没复习!而且踩了一个大坑,在ML/DL基础非常弱+没复习的情况下,说自己想做算法。这就是送人头吧…
面试要展示对自己最有利的部分,还不如踏踏实实地说自己想做研发,这样应该直接奔着八股文+算法题就去了

Behavior Question

还踩了behavior question的坑,说自己的优点和缺点
缺点:试图把“做事追求完美”说成缺点,但是因为之前没演练过,面试官很犀利地问:那你是说你写代码很慢吗?
现在都不记得我圆了啥了,我就说一开始确实是,后来有不懂的及时问同事、及时沟通清楚明晰思路,然后现在做事效率就比较高了…感觉这个问题差点半条命都没了,差一点就挂了:)

机器学习

没复习,可以说是稀碎:)

  1. over-fitting和under-fitting
  2. 怎么drop-out,常见的drop-out方式有哪些

计算机基础

  1. 讲讲垃圾回收(Garbage Collection)
    答:
    Java里面有四种引用
    引用计数法、可达性分析、GC Root
  2. 进程间通信的方式
  3. 讲讲进程和线程的区别
  4. 堆和栈的区别是什么

算法

一道dp题

一个矩阵,从第一列走到最后一列,求沿途最大和
每次(i,j) 只能从3个地方转移过来 (i-1,j-1), (i,j-1), (i+1,j-1)

	//int[][] matrix
    //dp[i][j]
    //j=0: dp[i][j] = a[i][j]
    //j>0: dp[i-1][j-1], dp[i][j-1], dp[i+1][j-1]
    //i [0, nr-1] max(dp[i][nc-1])
    public int getMaxPathSum(int[][] matrix) {
        if(matrix == null || matrix.length == 0)
            return -1;
        int nr = matrix.length, nc = matrix[0].length;
        int[][] dp = new int[nr][nc];
        for(int i=0; i<nr; i++) //col 0
            dp[i][0] = matrix[i][0];
        for(int j=1; j<nc; j++){
            for (int i=0; i<nr; i++){
                if(nr == 1)
                    dp[i][j] = (i == 0) ? matrix[i][j] : (dp[i][j-1] + matrix[i][j]);
                if(i == 0)
                    dp[i][j] = Math.max(dp[i][j-1], dp[i+1][j-1]) + matrix[i][j];
                else if (i == nr-1)
                    dp[i][j] = Math.max(dp[i][j-1], dp[i-1][j-1]) + matrix[i][j];
                else
                    dp[i][j] = Math.max(Math.max(dp[i-1][j-1], dp[i][j-1]), dp[i+1][j-1]) + matrix[i][j];
            }
        }
        int ans = dp[0][nc-1];
        for(int i=1; i<nr; i++)
            ans = Math.max(ans, dp[i][nc-1]);
        return ans;
    }

做算法题过程中的交流:

  1. 请问您期望使用白板,还是IDE也可以?
    面试官:IDE就行
  2. 面试官:写之前先说一下你的思路,还是你可以先说一下你的思路
    我:嗯我首先想到的是用动态规划的方法
  3. 先和面试官表达了我的思路,问是否可行
    面试官:开始写吧
  4. 我说先考虑一下corner case
    面试官:什么是corner case?
    我:一些边界情况的输入,或者程序运行时遇到的一些异常的输入
  5. 写完了,现在我想自测一下可以吗
    用注释的方式写测试用例、肉眼检查运行
    自测的时候发现有一些边界条件没注意到,又加了一行代码
  6. 最后问面试官,需要和您分析一下我的代码吗?
    面试官说不用了,你写的时候我一直在看
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值