你的面试物语:电话面试

358 阅读4分钟

image.png

‘叮叮叮~叮叮叮’

你:‘喂,你好’

xx企业HR:‘您好,我们这边是xx企业,您投递的前端开发岗位,简历这边已经查阅过了,请问您现在方便接听电话吗?’

你:‘嗯嗯,方便的,你讲’

xx企业HR:‘我们现在进行简单的电话面试,可以吗?’

你(自信满满):‘可以的,你问吧’

1.xx企业HR(面试官没有停顿):‘JS中的基本类型和引用类型有哪些?’

你(一点都不慌):‘基本类型有undefined、null、string、number、boolean、symbo(ES6),引用类型有Object、Array、RegExp、Date、Function,他们的区别是引用类型值可添加属性和方法,而基本类型值则不可以。’

2.xx企业HR(语速放慢了些):‘es6中的set(集合)和map(字典)的使用了解过吗?’

你(思考一下):‘Map是类似Object的一种键值对集合,区别在于Map的键不仅限于是字符串,其他各种类型的值包括对象都可以成为Map的键;Set是类似数组的一种数据结构,不同点在于Set中没有重复的值;’

3.xx企业HR:‘bfc布局规则了解过吗?’

你(对答如流):‘bfc是块级元素格式化上下文,bfc的布局规则有,内部的Box会在垂直方向,一个接一个地排列;Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠;BFC的区域不会与float box重叠;计算BFC的高度时,浮动元素也参与计算。’

4.xx企业HR:‘知道什么是事件委托吗??’

你(多加思考):‘事件委托就是利用js事件冒泡的特性,将内层元素的事件委托给外层处理,将元素的事件委托给它的父级或者更外级的元素处理,例如我们要监听ul标签里面的li标签的事件,我们可以直接监听ul标签的事件。’

5.xx企业HR:‘对Promise了解吗?’

你:‘Promise 是异步编程的一种解决方案,promise可以支持多个并发的请求,获取并发请求中的数据;Promise的构造函数接收一个函数,并且这个函数需要传入两个参数;一个是resolve,异步操作执行成功后的回调函数,一般在then()中被捕捉;另一个是reject,异步操作执行失败后的回调函数,一般在catch方法中被捕捉;还有一个是all方法,该方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调;Promise本身是同步的,在then里面才是异步;’

xx企业HR(满意):‘嗯嗯,不错,最后一个问题’

6.xx企业HR:‘你之前遇到过跨域问题吗?是怎么解决的?’

你(依旧努力回答):‘之所以出现跨域问题,是因为有同源策略的原因,也就是说协议、域名、端口要一致!但是标签img、link、script允许跨域加载资源;遇到跨域的解决方法,有JSONP方法,原理是用的script标签,达成类似于url的get请求方法进行请求数据,从而达到跨域;另一种是CORS 方法,这个方法需要后端实现 CORS了,前端这边在请求头进行设置,要与后端相对应;还有一个是nginx反向代理,了解过是修改nginx的配置,在location那块进行了域名的转发请求,达到跨域;最后有iframe的方法,例如document.domain + iframe的方法,该方式只能用于二级域名相同的情况下, 两个页面document.domain赋值同一个一级域名,然后用frame.contentWindow对象进行取值;’

xx企业HR(满意):‘嗯嗯,今天的电话面试到此结束,这边对你有了基本的了解,你明天下午有空吗?可以过来进行第二轮面试吗?’

你(终于松口气了):‘好的,有空的,我会按时到达贵公司,谢谢!’

‘嘟~嘟嘟’

电话挂断,你瘫了到沙发上,明天还要继续耶!

(你为明天面试进行了准备,未完待续...)