博主目前在蚂蚁集团-体验技术部,AntV/S2 是博主所在团队的开源项目——多维交叉分析表格,欢迎使用,感谢到 S2 github 仓库点赞 star,有任何关于前端面试、就业、技术问题都可给在文章后留言。
一面-杭州(2021/7/31)
一、算法:大数相加。
二、知乎导航栏的设计思路。
三、DOM的事件代理(事件委托)。
事件代理: 利用事件冒泡,指定一个事件处理程序,就可以管理某一类型的所有事件。也就是把一个或一组元素的响应事件(click、keydown。。。)的函数委托到它的父层或更外层元素上,真正绑定事件的是外层元素,不是目标元素。
应用场景:
- 有一个列表,列表里面有很多列表项,点击某一个列表项响应一个事件,可以直接在父级元素ul上面绑定。
- 虽然列表里面的列表项不多,但是需要动态的添加或删除列表元素,添加一个列表元素要绑定事件,删除一个列表元素要解绑事件,可以直接在父级元素ul上面绑定。
优点:
- 减少整个页面所需要的内存,提高整体性能。
- 动态绑定,减少重复工作。
四、vue的数据监听原理。
五、跨域。
六、闭包,浏览器怎么解决内存泄漏。
在JS中,变量的作用域属于函数作用域,在函数执行后,作用域会被清理,内存也随之回收,但由于闭包是建立在一个函数中的子函数,由于可以访问上级作用域的原因,即使上级函数执行完,作用域也不会被销毁。
解决内存泄漏: 在退出函数之前,将不使用的局部变量全部删除。
vue里面的内存泄漏总结
七、http状态码。
八、垃圾回收机制(引用计数、标记清除的原理)
- 引用计数: 申明一个变量,将一个引用类型的值赋给这个变量,那么这个变量的引用就加1;如果这个变量的值又指向另外一个值,或者说这个变量被重新赋值了,那么以上引用类型的值的引用就减1;如此一来,该引用类型的值的引用次数变为0,垃圾回收器会清理引用次数为0的值并回收其内存。注意: 对于循环引用的值无法回收。
- 标记清除: 垃圾回收器再运行时会给存储在内存中的所有变量加上标记;当变量进入执行环境时,它会去掉执行环境中的变量以及被执行环境中的变量引用的标记;当离开执行环境时,再次被加上的标记的变量就是准备被删除的变量。
还是一面-成都(2021/8/6)
一、JS数据类型
二、怎么理解JS中的万物皆对象
对于引用类型Array、Function都可以被看作对象,而每当读取一个基本类型的时候,js内部会自动创建一个基本类型包装对象,以让我们调用一些方法来操作。
三、var let const的区别
四、let a = 1; 和 let b = new Number(1); 的区别
a是原始类型,b是包装对象。原始类型在计算时的属性和方法是对应的包装对象的,所有a和b在使用层面其实是没有区别的,都可以使用toFixd()、toString()等方法。
五、less 和 sass 的区别,好处
less和sass都是一种动态样式语言,具有混入、参数混入、嵌套、运算、名字空间、作用域等共性。
区别: 主要区别是实现方式上:less是基于JavsScript,是在客户端处理的,而sass是基于Ruby的,是在服务端处理的,因此sass解析js更快一些;关于变量的区别:less用@,sass用$。
六、GET和POST的区别,PUT和POST的区别
Get 和 Post 请求的区别:
(1)Get 请求的参数是连接在 url 中的,而 Post 请求的参数是存放在请求体(Request body)中的;
(2)由于 url 的长度是有限的,所以 Get 请求的参数是有限的,而 Post 请求的参数是不受限制的;
(3)相比 Post 请求,Get 请求更不安全,因为 Get 请求的参数是暴露在 url 中的,不能用来传递敏感信息;
(4)Get 请求会被浏览器主动缓存,而 Post 不会,除非手动设置;
(5)Get 请求的参数会被浏览器存在历史记录中,而 Post 请求不会;
(6)Get 请求只能进行 url 编码,而 Post 请求可以进行多种方式的编码;
(7)浏览器发送 Get 请求会将 header 和 data 一起发送给服务器,服务器响应成功返回200状态码;而 Post 请求先将 header 发送给服务器,服务器返回100状态码,然后再将 data 发送给服务器,服务器响应成功返回200状态码;
(8)Get 请求在浏览器回退是无害的,无持续的副作用,如进行搜索;而 Post 会重新提交请求,有副作用,如往数据库添加数据行。
Get 请求一般用于获取、查询数据,不会修改服务器上的数据;Post 请求一般用于修改服务器上的数据,上传数据等,或者涉及到敏感信息的传输,如用户登录。
Put 和 Post的区别:
Put和Post都能更改指定URI的语义,但Put被认为是幂等的方法(幂等: 同一个方法执行多次,产生的效果是一样的。),但Post不是幂等的方法,对于Put请求:如果两个请求相同,后一个请求会把前一个请求覆盖掉,而Post请求不会覆盖,所以Put请求一帮用于修改资源,而Post请求一般用于增加资源。例:编辑文件和上传文件。
七、nginx的使用
八、跨域
九、数组的map()和forEach()的区别
都是对数组中的每个元素依次执行回调函数,map()不会改变原数组,会返回一个新的数组;forEach()会改变原数组,返回undefined。
十、echarts的使用
十一、做的一件对项目提升比较大的事
canvas
二面(2021/8/9)
一、介绍实习的pms系统,自己做了哪些工作。
二、文件上传的流程。
三、项目开发怎么使用git的,git的常用操作,git fetch和git pull的区别。
四、webpack的原理,项目中使用了webpack的哪些功能,写plugin的流程。
五、介绍石油可视化项目,echarts的使用,业界还有哪些可视化工具。
六、HTTP的各种请求方式,应用场景。
七、补笔试:
三面(2021/8/17)
一、怎么接触、学习前端的
二、实习对自己有哪些提升
三、石油项目遇到了哪些难点
。。。
反问:数据中台、React
HR面(2021/8/19)