疫情期间的两次前端面试

273 阅读6分钟

和往年的金三银四不一样,今年的招聘市场没有了往年的热闹。主动投了15份左右的简历吧,只收到4个面试邀请,其中三个线上面试邀请接受了两个拒绝了一个,还有一个面试邀请对方希望我返回当地城市后再联系她,估计是没那么着急。

因为今年比较特殊,大家可能都比较关心线上面试是怎么样的?这里我想说其实并没有太大的区别,唯一的区别就是你不能对所面试的公司有一个直观的体验,比如公司的氛围,hr对求职者的态度等。我接受的两个邀请中,一家是直接发面试题并要求半小时内完成的,这应该是属于广撒网的公司。另外一家是通过视频面试。视频面试的话大家要注意自己所在环境不要闹什么幺蛾子(比如家里人突然闯进来),还有就是注意网络环境不要太差,不然影响面试体验。下面讲讲两次面试被问到的面试题以及我的一些答案。

面试一

问题1:parsetInt(“hello”,10)返回值是什么?为什么?

这题考察parseInt()函数的用法和定义。parseInt()函数可解析一个字符串,并返回一个整数。它的用法是:parseInt(string,radix)。其中string是被解析的字符串,为必填项。radix可选,表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,则数字将以10为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。如果字符串的第一个字符不能被转换为数字,那么parseInt()会返回NaN。很明显,radix等于10只是设置了解析的基数有没有都无所谓,而hello本身无法解析成数字,所以这题返回的是NaN。

问题2:三元表达式a?a:b可以简写成(使用逻辑表达式)?

这题我一开始是懵的,有没有人和我一样刚开始想写成ifelse的,我最后的答案是a&&a||b。

问题3:浏览器输入网址后发生的事情?

这题可以说是经久弥新了,不管过了多久都经常问。我的回答是:首先进行dns解析,得到请求的服务器ip地址后进行tcp连接,进行http三次握手,最后返回请求的资源。回答的比较简单,大家可以看看这篇文章:segmentfault.com/a/119000002…

问题4:前端项目中如何处理安全问题?

其实我知道的前端项目的安全问题有: 1、表单sql注入; 2、xss攻击; 3、cookie防范(设置cookie为只读); 4、第三方插件如npm包的使用。 除了第四个,其它三个都只能服务端来做预防和处理。

问题5:ES6中的map和for的优缺点分别在哪里?

这题细说的话内容可以很多,大家可以参考这个:www.zhihu.com/question/27…

问题6:在异步请求回来数据量较大的情况下,怎么优化加载速度?至少列出两个优化方案

我的回答:1、使用页面骨架屏使页面看起来很快;2、使用分页。回答的不好,不知道大家怎么回答?

问题7:页面上有1万个button,要如何绑定事件?

我当时的回答是使用事件委托,在父容器绑定事件。现在想想,这种问法一点都不严谨。因为你不知道这些按钮的事件处理方式是否一样,按钮在dom中的层级嵌套关系,据我所知事件冒泡其实也是需要消耗性能的。其次,假设一万个按钮这种假设根本不会存在。假设虽然是假设,但不能不着边际,不知道大家怎么分析这个问题?

问题8:vue性能优化(至少列出三点)?

1、纯ui组件使用纯函,可以减少不必要的事件监听; 2、计算量大的可以使用计算属性缓存; 3、for循环使用key提高diff算法的性能

问题9:简单阐述Vue数据绑定原理。

使用Object.defineProperty在其getter和setter中收集依赖,将依赖通过观察者模式统一管理。

面试二

问题1:平时是否有自己做一些单元测试?

这种问题很开放啊,我听到测试第一反应就是自动化测试,当时只是回答了有了解过jest。其实像我们前端做业务开发的,测试是有必要,但也要看情况。如果你是开发通用性的组件的话,那么测试是很有必要的,而且覆盖率也要在80%~90%之间,但如果是业务居多的话,测试覆盖率就可以相应减少甚至移除了,因为业务是变化的,覆盖率大成本就会变得昂贵。

问题2:项目中遇到的难点与收获?

想一想自己做的项目你封装了什么组件,难点就是代码是怎么优化的,收获就是优化后的好处与对技术点的加深理解。

问题3:怎么看待团队协作?

团队协作首先要多沟通,然后根据团队的规模进行区分。如果是小团队作战的话,多沟通已经解决了80%的协作问题。而如果我们的团队比较大的话,就要注意制定一系列的开发规范,比如git的commit提交格式,需求变更需要审核,项目进度的排期以及完成的考核指标都要形成标准。上面说的规范可以通过团队讨论形成,根据情况适当适时的调整。

问题4:做个人项目当时的初衷是什么?

我做的是一个cms的文章管理系统,用node做的服务端开发。主要功能是发布文章,推荐文章,发布广告。当时做这个项目主要是想了解尝试node做服务端开发。

以上就是我面试两家公司碰到的问题,欢迎大家有不同的回答,可以下方评论。

最后,码字不容易求个赞!