美团 一面/二面 客户端 面经

一面 8月26日
我觉得自己面得很不好,具体问题不太记得了(现在记得的只有:chmod有啥缺陷),但是面试官说他有一套自己的考核标准,度量我的知识内化能力,进而考核我的学习风格和学习能力。
  • 算法题:给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))
class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int length1 = nums1.length, length2 = nums2.length;
        int totalLength = length1 + length2;
        if (totalLength % 2 == 1) {
            int midIndex = totalLength / 2;
            double median = getKthElement(nums1, nums2, midIndex + 1);
            return median;
        } else {
            int midIndex1 = totalLength / 2 - 1, midIndex2 = totalLength / 2;
            double median = (getKthElement(nums1, nums2, midIndex1 + 1) + getKthElement(nums1, nums2, midIndex2 + 1)) / 2.0;
            return median;
        }
    }

    public int getKthElement(int[] nums1, int[] nums2, int k) {
        int length1 = nums1.length, length2 = nums2.length;
        int index1 = 0, index2 = 0;
        int kthElement = 0;

        while (true) {
            // 边界情况
            if (index1 == length1) {
                return nums2[index2 + k - 1];
            }
            if (index2 == length2) {
                return nums1[index1 + k - 1];
            }
            if (k == 1) {
                return Math.min(nums1[index1], nums2[index2]);
            }
            
            // 正常情况
            int half = k / 2;
            int newIndex1 = Math.min(index1 + half, length1) - 1;
            int newIndex2 = Math.min(index2 + half, length2) - 1;
            int pivot1 = nums1[newIndex1], pivot2 = nums2[newIndex2];
            if (pivot1 <= pivot2) {
                k -= (newIndex1 - index1 + 1);
                index1 = newIndex1 + 1;
            } else {
                k -= (newIndex2 - index2 + 1);
                index2 = newIndex2 + 1;
            }
        }
    }
}


很遗憾的是,虽然用的是leetcode官方同款写法,面试官不太能认可我的代码,后面也没让进一步解释,说是因为这道题写不写出来也不能影响面试结果。
面试官暗示我Android部门hc不怎么多,问我愿不愿意转前端或者是ios,我说我愿意,我确实挺乐意一套前端的,至此我基本知道自己凉透心了,还是自己太菜了。

Hr 9月3号约我面试,难以置信……


二面 9月04日
面试官是前端的
  • 询问项目,基本没细问
  • 你上次写了代码是吧(一面面试官估计对我评价很差),再来一道吧,斐波拉契数列
  • class Solution{
        public int fib(int n){
            int a = 0, b = 1;
            for(int i = 0; i < n/2; i++){
                a = (a + b) % 1000000007;
                b = (a + b) % 1000000007;
            }
            if(n%2 == 1){
                return b;
            }else{
                return a;
            }
        }
    }


  • 面试官觉得我代码写得怪,不过这位面试官让我运行结果给他看,是对的。
  • 为什么想做前端
  • 为什么刷leetcode
  • 城市选择(我说我北京上海都可以,非要选的话我选择hc多的,面试官反问为什么选择hc多的,我说我喜欢稳妥)
  • 目前手里的offer情况
  • 反问
大概是被hr捞起来刷kpi了,叹气。
#面经##美团##校招##安卓工程师#
全部评论
楼主你好,请问你是实习、校招还是社招?岗位是什么?开发的话,是Java方向还是C++方向?或者其他语言方向~
1 回复 分享
发布于 2020-09-04 17:58
两有序数组中位数不是hard嘛,现在客户端面试都这么难了嘛
点赞 回复 分享
发布于 2020-09-04 20:41
那个部门呢?
点赞 回复 分享
发布于 2020-09-04 23:59
楼主这个fib是怎么写的?我也没看懂😂
点赞 回复 分享
发布于 2020-09-08 17:32

相关推荐

10-26 23:36
北京大学 golang
比亚迪 工程院 40.8 211本软微硕
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务