【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路归并,如何保证全局有序,堆排序)
#笔试题目#
全部评论
楼主这一个小时全程在写算法吗,没问点别的嘛
点赞 回复 分享
发布于 2021-03-03 16:30
第四题有两个简单点的解法:1.排序后返回nums[mid]即可,2.牛顿投票法
点赞 回复 分享
发布于 2020-10-18 18:30
楼主什么部门呀
点赞 回复 分享
发布于 2020-10-18 15:31
就完全在手撕代码呗...
点赞 回复 分享
发布于 2020-10-13 02:07
一次面试做了这么多个题??
点赞 回复 分享
发布于 2020-10-12 20:47
来顶一下
点赞 回复 分享
发布于 2020-10-12 17:52
你好,请问大概什么时候约的面试呀?每次就约一面吗?
点赞 回复 分享
发布于 2020-10-12 17:16

相关推荐

机智的豹子有点心碎:UU我还在找工作还没找到,一直在搜简历怎么改,总结了这些: 1.SEO:简历根据每一个岗位定制化:使用这个岗位中所描述的工作的词,它要求什么技能就把自己的技能描述成什么样子,把SEO用在自己身上(把我的简历和个人特质,当成一个热门产品来做 “搜索引擎优化”),让HR能用最低的门槛看到我 2."顺序:把岗位要求的技能跟经历放在简历的最开头、最显眼的位置" 3.包装:简历是一个最终交付说明书,只要最终学习成长做得到就可以,在合适的范围内自我吹捧(我这个人怎么能够在HR的角度被迅速的看懂和看到,减轻HR的工作压力) 4.每点加小标题​:用6~10字概括该段内容,便于面试官快速抓取信息。 5.避免空泛描述​:拒绝“培养了组织能力”等泛泛而谈,替换为具体行动和成果。 6."使用“三段式结构”​​:每段经历按“为什么做-做了什么-结果如何”展开: ​a) 为什么做​:痛点或目标(例如“品牌声量不足”) ​b) 做​了什么:方法论(例如“趋势洞察+竞品对标+人群细分”) ​c) 结果如何​:量化成果或影响(例如“推动客户投放20万预算”)" 7.量化成果​:用数字体现工作成效(如“整理500+份资料”“撰写2万字报告”)。 这些有的是我想去的岗的,如果对你有用的话按需修改就好~加油,早日上岸!
点赞 评论 收藏
分享
评论
7
28
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务