2020-11-09 微软一面

面试过程中使用了微软的teams进行桌面共享,可以使用自己本地的IDE

1.第一个问题是求一个数是否为奇数,面试官说为了缓解面试的紧张,所以先问一个简单的来适应下环境

楼主使用了跟二取余的方式:

 public boolean isOdd(int i){
        if (0 == i % 2) {
            return false;
        }
        return true;
    }

面试官说用一条指令完成,然后楼主又写了一个:

return 0 != i % 2 ?false:true;

后来面试官提示说,0 != i % 2这个返回的直接就是个boolean值,无需在写后面的false、true之类的,额,这才反应过来确实是这样。。。

2.面试官说这种取模运算效率可能不高,还有更好的思路么?楼主说使用位运算,但是并没有能用代码实现出来(还需要努力啊),面试官说思路是对的,奇偶数的差别就是最后一位是不是1,位运算都有哪些操作?(楼主确实是忘记了,只记得有什么左移右移但是在不知道是怎么操作的了。。。所以这个问题没能实现出来)

3.第三个问题是给定一个数组求不在这个数组里面的最小的正整数(数组值不重复)

面试官也是很耐心的在提示思路:

<1>如果我们看到一个数组,那我们怎么找?先排序,完了看最小的整数是啥;

<2>最小的正整数是1,那如果1不在数组里面,这个值肯定就是1,如果在,那继续加一再找;

楼主最终使用了以下解法,时间复杂度在O(n):

public int getInt(int[] array){
        HashMap hm = new HashMap();
        int i=0;

        for (int a:array){
            hm.put(a,i);
            i++;
        }
        int flag = 1;
        while(hm.get(flag) !=null){
            flag++;

        }
        return flag;
    }

4.面试官问有没有学过算法,楼主是通信专业,所以课程里没有这类的课,只是自己有简单了解过,这方面真的不精通实在是,所以并没有答出来面试官的这一个问题:

一个m*n的矩阵,从左上到右下最短路径有几种

楼主只能看出来这个题目需要动态规划了,所以,额,惭愧。。。

5.题目完了之后,交流了下这个teams这个会议软件有啥优缺点没有,楼主也提了些自己的使用体验。面试到这就结束了,一个小时左右的时间。

总结了下,感觉一面还是很看重算法的,还有解决问题的思路;革命尚未成功,同志仍需努力呀。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值