【2020秋招_前端】微软一面 2020.10.12


1.经典题目leetcode1-twoSum
function twoSum(arr, target) {     let l = arr.length;     if (l < 2) return [];     arr.sort((a, b) => a - b);     let i = 0, j = l - 1, res = [];     while (i < j){         let cur = arr[i] + arr[j];         if (cur == target) {             res.push(i);             res.push(j);             return res;         } else if (cur < target) {             i++;         } else {             j--;         }     } } function twoSum(arr, target) {     let map = new Map(), l = arr.length, res;     for(let i = 0; i < l; i++){         let t = target - arr[i];         if (map.has(t)){             res = [i, map.get(t)];             return res;         } else {             map.set(arr[i], i);         }     } } 2.合并有序数组 function mergeArray(arr1, arr2) {     let arr = [];     let i = 0, j = 0;     let l1 = arr1.length, l2 = arr2.length;     while (i < l1 && j < l2) {         if (arr1[i] <= arr2[j]) {             arr.push(arr1[i]);             i++;         }else {             arr.push(arr2[j]);             j++;         }     }     while (i < l1){         arr.push(arr1[i]);         i++;     }     while(j < l2) {         arr.push(arr2[j]);         j++;     }     return arr; } 3.大数据相加 function bigSum(num1, num2) {     let l1 = num1.length, l2 = num2.length;     let str1 = num1, str2 = num2;     if (l1 > l2) {         let arr = new Array(l1-l2).fill(0);         str2 = arr.join('') + str2;     } else if (l1 < l2) {         let arr = new Array(l2-l1).fill(0);         str1 = arr.join('') + str1;     }     let l = Math.max(l1, l2), res = [], carry = 0;     for(let i = l - 1; i >= 0; i--) {         let cur = parseInt(str1[i]) + parseInt(str2[i]) + carry;         if (cur >= 10) {             carry = 1;             cur = cur - 10;         } else {             carry = 0;         }         res.push(cur);     }     if (carry == 1) res.push(carry)     return res.reverse().join(''); } 4.数组中有个数字的出现次数超过了一半,怎么找出来 function getMost(arr){     let map = new Map();     for(let i = 0; i < arr.length; i++){         if (map.has(arr[i])){             map.set(arr[i], map.get(arr[i])+1);         } else {             map.set(arr[i], 1);         }     }     for(let [key, value] of map.entries()){         if (value > parseInt(arr.length/2)){             return value;         }     } } function moreThanHalfNum(arr) {     let l = arr.length;     let res = arr[0], times = 1;     for(let i = 1; i < l; i++) {         if (times == 0) {             res = arr[i];             times = 1;         } else if (arr[i] == res) {             times++;         } else {             times--;         }     }     return res; } let arr = [1,2,3,1,2,1,1]; let res = moreThanHalfNum(arr); console.log(res);
--------------------------------------------------分隔线------------------------------------------------------
1.leetcode 105, 根据前序和中序重建二叉树
2.leecode 91, decode ways
3.大文件排序问题:有个非常大的文件,要对文件内容进行排序,但是内存有限,应该如何进行(k路归并,如何保证全局有序,堆排序)
#笔试题目#
全部评论
你好,请问大概什么时候约的面试呀?每次就约一面吗?
点赞 回复 分享
发布于 2020-10-12 17:16
来顶一下
点赞 回复 分享
发布于 2020-10-12 17:52
一次面试做了这么多个题??
点赞 回复 分享
发布于 2020-10-12 20:47
就完全在手撕代码呗...
点赞 回复 分享
发布于 2020-10-13 02:07
楼主什么部门呀
点赞 回复 分享
发布于 2020-10-18 15:31
第四题有两个简单点的解法:1.排序后返回nums[mid]即可,2.牛顿投票法
点赞 回复 分享
发布于 2020-10-18 18:30
楼主这一个小时全程在写算法吗,没问点别的嘛
点赞 回复 分享
发布于 2021-03-03 16:30

相关推荐

11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
7 28 评论
分享
牛客网
牛客企业服务