快手-基础架构-前端一面
一、自我介绍
二、CSS和JS基础
1. 从css布局开始,什么是盒模型?
2.了解BFC吗?BFC的作用,BFC的开启方式?
3.float有什么用?如何清除浮动?
4.position有什么属性?staic/relative/absolute/fixed的特性?还有什么吗?sticky和这四个有什么区别?
5. 口述:如何实现一个垂直居中布局?定位+2D平移/flex/grid? flex具体设置的属性值,grid具体设置的属性值?
6. 如何实现一个两栏布局(左边固定宽度,右边自适应)?三栏布局呢(左右两边固定中间自适应宽度,且左右两边贴合容器左右边界,盒子间间隔相等)?
7.问一些JS基础,了解var吗?什么是变量提升?let和var的区别?
8.JS如何进行类型判断?Object.prototype.toString.call()怎么实现类型判断的?
9.call是做什么的?apply和call的区别?bind和这两者又有什么区别?讲一下什么是函数柯里化?函数柯里化如何实现?
10. 你说用闭包实现,什么是闭包?
11.闭包会造成内存泄漏,JS的垃圾回收机制了解吗?V8的垃圾回收机制。引用计数方式中,如果产生循环引用如何解决?或者换一个场景,一个项目中模块间的循环依赖怎么解决?
12. 讲一讲数组吧,常用的数组api有哪些?push的返回值,splice的返回值? 如何做数组去重?如何做数组拍平?除了类型判断+递归还有什么实现数组拍平的方式?系统有没有现成的api实现数组拍平?
13.什么是伪数组,JS是伪数组的变量有哪些?伪数组和数组的区别?如何将伪数组转为数组?如果不转为数组,伪数组还能怎么调用数组的api?
14.你刚刚说了原型,JS设计原型的初衷是什么?JS中实现继承的方式有哪几种,不用说全,挑最主要的说(组合式/寄生组合式)?ES6实现继承的方式是什么?
15. 说一说new关键字的执行流程?
16. 解释一下eventLoop?
17.Promise用过吗?考几个api,all和allSettled的区别?它们的返回值?它们返回值的promise状态?
18.输入一个URL的流程说一下?
19.说一下DNS解析过程?
20.说一下回流和重绘?在考虑回流和重绘的基础上,如何对页面进行优化?
21.考你一些网络基础吧,http在哪一层?http2.0和http1.0的区别?http和https的区别?https用到了哪些加密算法进行传输?DES和AES的原理知道吗?
22.TCP在哪一层?TCP和UDP的区别?TCP如何保证可靠传输?除了你说的(序列号校验/超时重传/流量控制/拥塞控制),还有其他什么机制吗?
...基本部分就记得这么多
三、项目
第一个项目和CDN有关:
23.CDN的原理是什么?如果CDN没命中该怎么办?
24.权限管理模块是怎么进行实现的?是基于角色还是基于白名单的权限管理?基于角色的权限管理的设计模型说一下?
25.token是什么?token可以放在cookie里面吗?token放在storage里面有什么好处?你用的是哪种token?jwt能否解释一下?jwt具体包含了哪些字段?
第二个项目和NFV有关:
26.讲一下项目的整体流程。你说的监控任务下发是怎么实现的?这个Prometheus工具下面的流程知道吗?NFV中如何对虚拟设备进行监控?刚说socket变成,你熟悉socket编程吗?
27.讲一讲你发的论文做了什么贡献?
四、手写
leetcode: 257二叉树的所有路径
五、反问
1.所在部门,所做业务?
2.面试结果多久出?
面试下来大概 1小时30分,面试官人很好,问的比较基础也比较全面。
#快手秋招#