第一题:一个乱序的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快手前端校招一面相关推荐

  1. 6轮字节前端校招面试经验分享

    大家好,我是若川.最近金三银四,今天分享一篇字节前端校招面试经验的轻松好文,相信看完会有所收获.也欢迎点击下方卡片关注或者星标我的公众号若川视野 因为我错过了2020年的秋招(ps: 那时候连数据结构 ...

  2. 百度阿里网易大疆等大小厂前端校招面筋 | 掘金技术征文

    百度阿里网易大疆等大小厂前端校招面筋 | 掘金技术征文:https://juejin.im/post/5bb470295188255c5e66f88f 转载于:https://www.cnblogs. ...

  3. 前端校招该考察什么?一个面试官的思考

    前言 我是团队的一个老校招面试官,这几年陆陆续续虐过不少校招学生,遇到过很优秀聊得很开心的,遇到过让我直皱眉头的,遇到过很懂套路的,也遇到过不善表达的.讲真,面试前我还常感到紧张,我怕一个好苗子因为我 ...

  4. 2020快手前端暑期实习面经

    快手前端面试 一面(凉凉) 面试的是一位很年轻的小哥,态度很和蔼,但是真的很难,面试的过程基本上属于我们聊到什么就问什么,问得都比较深入. 实习项目当中的后台信息管理系统用到了哪些技术栈?有了解过we ...

  5. 如何拿到9家大厂的前端校招offer

    关注前端达人,与你共同进步 本文由 杨珏成 首发于 掘金,未经许可请勿转载 原文链接:https://juejin.im/post/5d70ff205188253e4b2f07bd 0x00 作者是谁 ...

  6. 关于字节跳动前端校招一二三面+HR面试过程

    分享一下字节跳动 前端校招 一二三面+hr面 一面 (视频面 1小时35分钟) 20年3月1日 标题 自我介绍 vue和react有什么区别,更喜欢用哪个,为什么 react hook熟悉吗,解决了什 ...

  7. 2018前端校招总结

    2018前端校招总结 虽然现在很多大公司的校招都已经接近尾声了我才拿到满意的一个offer,但还是稍微分享一下我觉得前端校招的一些内容. 基本上的大公司对于前端校招同学的要求都不仅仅局限于前端领域,因 ...

  8. 面试之前,简历之上:给前端校招同学的简历建议

    原文链接:面试之前,简历之上:给前端校招同学的简历建议 | AlloyTeam 原文作者:腾讯Web前端团队-TAT.老教授 前言:作为前端面试官老司机,之前分享过我对前端校招面试的一些见解,这次来说 ...

  9. 【校招VIP】前端校招考点之页面转换算法

    考点介绍: 在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断.当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页 ...

最新文章

  1. python网盘提取码怎么用_Python 一键获取百度网盘提取码
  2. iOS UI 12 block传值
  3. step1 . day8 C语言基础练习之指针和函数
  4. 通过图书编号查询python_文字版图书管理-python练习
  5. java 四舍五入_Java常用类
  6. 基于Java+SpringMvc+vue+element实现上海汽车博物馆平台
  7. LVS DR模式搭建、keepalived + LVS
  8. sql插入多条记录_如何在SQL中插入多条记录
  9. c#实现的破解程序--针对软件使用时间限制
  10. 关于Egret项目升级引擎出现的问题
  11. 关于Spring Bean的生命周期
  12. 实现类似于目录的虚线填充样式
  13. 用Python实现TXT文件分割
  14. 电商平台商品详情API调用,获取SKU各类信息
  15. R语言中插补缺失值的R包simputation
  16. ArcGIS 对道路名称进行标注
  17. matlab实现彩色图像的直方图均衡化
  18. 关于Mybatis的错误Statement returned more than one row, where no more than one was expected
  19. Deep Compression, Song Han, Caffe 实现
  20. python爬虫之墨迹天气

热门文章

  1. 使用pyenv进行Python多版本控制
  2. 提高生产力之高效使用搜索引擎
  3. 【leetcode】最大数
  4. C语言及程序设计初步例程-4 C语言程序初体验
  5. arm-none-eabi-gcc编译、链接选项详解
  6. WIN10按shift取消大写锁定(非Caps Lock设置和粘滞键)
  7. 信用卡危机会在中国上演吗?
  8. SDUT_人活着系列
  9. 魔兽服务器修改端口,魔兽怀旧服:PTR四项全新改动,开放仇恨端口,或将影响副本难度...
  10. 安装程序配置服务器失败。参考服务器错误日志和C:\WINDOWS\sqlstp.log