这次电话面试的公司是个外包公司,所以一电话面试就很快进入主题,纵观整个电话面试流程,问题都不会很难,但是涉及的知识点很广,也基本没有问你的项目经历,可能外包注重的时基础写代码的能力吧。
- 首先问我对于html语义化的理解,首先是为了能够更好地开发和维护吧,方便同事间沟通交流,然后就是在css样式无法加载的时候也能保持良好的程序层次结构,最后是有利于优化SEO吧,语义化的标签比如h1和header这些,能够更方便爬虫抓取数据。
- 然后问我对于css选择器有使用过哪些,无外乎就是id选择器(为了样式更加通用,不建议使用),标签选择器,类选择器、子类选择器等。有用过什么伪元素呢?像h5新增的before、after这些,后悔没答到我前段时间一直纠结的nth:child和nth-of-type =^=
- 然后问了我对于闭包的理解,我认为闭包就是能够访问另外一个函数的变量,因为js的作用域概念是跟其它语言有差异的,它只分全局变量和局部变量,不使用闭包的话有时会污染全局变量,所以通过形成一个闭包 使得闭包的变量私有化不会污染全局变量 。闭包的变量引用一直保存在内存中,滥用闭包会造成内存泄漏。
- 那刚才你说到了防止全局变量污染,除了闭包这种,还有什么解决方案?太紧张了答不出来,就说我一般是使用闭包的。(为后面挖坑了=^=)
- 那js如何创建一个块级的局部作用域呢?function函数作用域就是一个封闭的作用域吧,function函数里可以向上取得外部的变量,但是外部对于functio的变量访问时不行的,这里我太紧张扯到了原型这个东西(!!扣分!!)。那除了函数作用域还有什么其他创建局部作用域的方法吗?h5的新的创建变量的方式let(!!扣分!!let是在ES6中提出的),let对于循环结构和判断结构,不会将其中的变量提升到外部,所以也形成了一个作用域。嗯这是一种,那更通常的创建局部作用域的方法是什么呢?面试官一直在提示我,可惜我没想起来=^=,使用立即执行函数也是创建了一个局部作用域(也是可以防止全局变量污染的!)。我多嘴又说了创建一个对象将变量和属性封装也是形成一个作用域......其实创建对象形成的一个命名空间是可以防止全局变量污染,是上一题的答案。。。面试官说对象属性的概念和作用域中的变量的概念是不一样的。
- 有没有用过什么框架呢?三大框架有用过什么?有用过vue,基础的操作,了解了下双向数据绑定吧。那双向数据绑定的原理是什么呢?就我浅显的理解来说就是在使用标签的时候,给标签的属性绑定一个值,通过创建的vue对象可以与该属性关联,标签值改变或者vue里值的改变都能相互影响,同步更新。组件的生命周期有没有了解呢?这些还没看。。。
- 你是什么时候开始接触前端的呢?大概大二下学期到现在,不到一年吧。
- 如果你通过电话面试会通知你过来进行笔试和面试的了(肯定凉了,电话面试都不过......)
- 有什么问题要问我们的呢?你们前端开发实习具体的工作方向是什么呢?以外包业务为主,主要做微信体系下的微信小程序、微信小游戏、以及微信公众号然后是移动端的H5网页,PC端的是官网类型,管理后台类型,主要技术栈式react。
这次回答的好水,感觉电话面试比现场面试发挥的更差,逻辑混乱,语意不清,基础知识记得不够牢固,引以为戒吧!