2022快手前端校招一面
第一题:一个乱序的0-n数组,求确失的那个数.O(n),空间复杂度o(1)
[0,1] 缺失2
[0,3,1,4] 缺失2
1、数组完整元素为0-n,缺少一个元素后,下标为0-n-1。所以可以将数组内元素相加与0-n相加的结果比较,得出缺失的元素
function losNumber(arr){let sum = 0,curSum=0;for(let i =0 ;i<arr.length;i++){sum+=i;curSum+=arr[i]}return sum+arr.length-curSum
}
2、异或。一个数异或自身为0,0异或任何数为其自身,aXORbXORa=b;所以可以把数组中的元素异或一遍,同时把0-n异或一遍,再将2者异或。相当于一串数字异或,只有一个数字出现了一次,其他数字出现偶数次0
function losNumberXOR(arr){let sum = 0,curSum=0;for(let i =0 ;i<arr.length;i++){sum=sum^i;curSum=curSum^arr[i]}return sum^arr.length^curSum
}
第二题:一颗二叉树,求每一层值的节点的平均值
就是层序遍历树,求每层的平均值。可以使用BFS。首先记录一层的值,若当前节点有子节点,将子节点存入临时队列,等当前队列比遍历完后,开始遍历子队列。
function printLevel(root) {if (!root) return [];let result = [], temp = [], curQueue = [root], resLevel = [],sum = 0;let p;while (curQueue.length > 0 || temp.length > 0) {if (curQueue.length === 0) { // 当队列长度为0,说明当前层级所有节点已经访问过result.push(sum/resLevel.length); //保存当前层级的值curQueue = temp; //访问下一层temp = [];resLevel = [];}p = curQueue.shift();if (p) {sum+=p.val;resLevel.push(p.val);temp.push(p.left);temp.push(p.right);}}return result;
}
function myPrintLevel(root) {if (!root) return [];let result = [], temp = [], curQueue = [root], resLevel = [];while (curQueue.length > 0 || temp.length > 0) {for (let p of curQueue) {if (p) {resLevel.push(p.val);temp.push(p.left, p.right)}}if (resLevel.length > 0) {result.push(resLevel);}curQueue = temp;temp = [];resLevel = [];}return result;
}
第三题:一个2维数组,从第一层到租后一层,求最小权值路径
动态规划。当前坐标的下一步应该走的一定是可选路径中最短的,即从可选路径中选择下一坐标到终点最短的节点接上。
所以可以由最下层到最上层,记录当前坐标到最下层的最短路径。
状态转义方程: memo[x][y]=matrix[x][y]+Math.min(dp(x+1,y-1), dp(x+1,y), dp(x+1,y+1));
为了减少递归,用memo记录已经走过的地方。
let minFallingPathSum = function(matrix) {//记录已经走过的路径let memo = matrix.map((m)=>{return m.map(n=>101)});function dp(x,y){if(x<0||y<0||x>=matrix[0].length||y>=matrix[0].length){return Infinity;}if(memo[x][y]!=101){return memo[x][y];}else if(x==matrix[0].length-1){memo[x][y]= matrix[x][y];return memo[x][y]}memo[x][y]=matrix[x][y]+Math.min(dp(x+1,y-1), dp(x+1,y), dp(x+1,y+1));return memo[x][y];}let min=99999;for(let i=0;i<matrix[0].length;i++){min = Math.min(min,dp(0,i));}console.log(memo);return min;
};
第三题:网络知识
CDN
简介:
https://juejin.cn/post/6913704568325046279
CDN简单来说就是为了加快请求的首次响应速度,在源服务器和用户间实现的一种网络架构。具体实现有缓存代理服务器。
307状态码:
307,302,303都是临时重定向。
302会导致重定向后发往原url的post请求变成get请求。
307则不会。
303效果同302,也会改变请求方式,但是重定向导向的资源一般对原请求资源的描述。
区别
在这里总结一下,从实际效果看:302 允许各种各样的重定向,一般情况下都会实现为到 GET 的重定向,但是不能确保 POST
会重定向为 POST;而 303 只允许任意请求到 GET 的重定向;307 和 302 一样,除了不允许 POST 到 GET 的重定向。
简要历史原因
那为什么有了 307 和 303 还需要 302呢?把总结放在最前面。302 在最初的定义中,内容和现在的 307
是一样的,不允许重定向方法的改写(从 POST 到 GET,由于 GET 不应该有 body,实际上 body
也被改了)。但是早期浏览器在实现的时候有的实现成 303 的效果,有的实现成 307 的效果。于是在之后的标准,302
在某些浏览器中错误的实现被写进规范,成为 303,而 302 原本的效果被复制了到了 307。在最近的一次标准修订中,302
标准被修改成不再强制需要维持原请求的方法。所以就产生了现在的 302、303 和 307
第四题:vue2.0中的composition组合式api
2022快手前端校招一面相关推荐
- 6轮字节前端校招面试经验分享
大家好,我是若川.最近金三银四,今天分享一篇字节前端校招面试经验的轻松好文,相信看完会有所收获.也欢迎点击下方卡片关注或者星标我的公众号若川视野 因为我错过了2020年的秋招(ps: 那时候连数据结构 ...
- 百度阿里网易大疆等大小厂前端校招面筋 | 掘金技术征文
百度阿里网易大疆等大小厂前端校招面筋 | 掘金技术征文:https://juejin.im/post/5bb470295188255c5e66f88f 转载于:https://www.cnblogs. ...
- 前端校招该考察什么?一个面试官的思考
前言 我是团队的一个老校招面试官,这几年陆陆续续虐过不少校招学生,遇到过很优秀聊得很开心的,遇到过让我直皱眉头的,遇到过很懂套路的,也遇到过不善表达的.讲真,面试前我还常感到紧张,我怕一个好苗子因为我 ...
- 2020快手前端暑期实习面经
快手前端面试 一面(凉凉) 面试的是一位很年轻的小哥,态度很和蔼,但是真的很难,面试的过程基本上属于我们聊到什么就问什么,问得都比较深入. 实习项目当中的后台信息管理系统用到了哪些技术栈?有了解过we ...
- 如何拿到9家大厂的前端校招offer
关注前端达人,与你共同进步 本文由 杨珏成 首发于 掘金,未经许可请勿转载 原文链接:https://juejin.im/post/5d70ff205188253e4b2f07bd 0x00 作者是谁 ...
- 关于字节跳动前端校招一二三面+HR面试过程
分享一下字节跳动 前端校招 一二三面+hr面 一面 (视频面 1小时35分钟) 20年3月1日 标题 自我介绍 vue和react有什么区别,更喜欢用哪个,为什么 react hook熟悉吗,解决了什 ...
- 2018前端校招总结
2018前端校招总结 虽然现在很多大公司的校招都已经接近尾声了我才拿到满意的一个offer,但还是稍微分享一下我觉得前端校招的一些内容. 基本上的大公司对于前端校招同学的要求都不仅仅局限于前端领域,因 ...
- 面试之前,简历之上:给前端校招同学的简历建议
原文链接:面试之前,简历之上:给前端校招同学的简历建议 | AlloyTeam 原文作者:腾讯Web前端团队-TAT.老教授 前言:作为前端面试官老司机,之前分享过我对前端校招面试的一些见解,这次来说 ...
- 【校招VIP】前端校招考点之页面转换算法
考点介绍: 在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断.当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页 ...
最新文章
- python网盘提取码怎么用_Python 一键获取百度网盘提取码
- iOS UI 12 block传值
- step1 . day8 C语言基础练习之指针和函数
- 通过图书编号查询python_文字版图书管理-python练习
- java 四舍五入_Java常用类
- 基于Java+SpringMvc+vue+element实现上海汽车博物馆平台
- LVS DR模式搭建、keepalived + LVS
- sql插入多条记录_如何在SQL中插入多条记录
- c#实现的破解程序--针对软件使用时间限制
- 关于Egret项目升级引擎出现的问题
- 关于Spring Bean的生命周期
- 实现类似于目录的虚线填充样式
- 用Python实现TXT文件分割
- 电商平台商品详情API调用,获取SKU各类信息
- R语言中插补缺失值的R包simputation
- ArcGIS 对道路名称进行标注
- matlab实现彩色图像的直方图均衡化
- 关于Mybatis的错误Statement returned more than one row, where no more than one was expected
- Deep Compression, Song Han, Caffe 实现
- python爬虫之墨迹天气
热门文章
- 使用pyenv进行Python多版本控制
- 提高生产力之高效使用搜索引擎
- 【leetcode】最大数
- C语言及程序设计初步例程-4 C语言程序初体验
- arm-none-eabi-gcc编译、链接选项详解
- WIN10按shift取消大写锁定(非Caps Lock设置和粘滞键)
- 信用卡危机会在中国上演吗?
- SDUT_人活着系列
- 魔兽服务器修改端口,魔兽怀旧服:PTR四项全新改动,开放仇恨端口,或将影响副本难度...
- 安装程序配置服务器失败。参考服务器错误日志和C:\WINDOWS\sqlstp.log