2019前端个人前端面试---2月篇

507 阅读5分钟

前言:

过完年看到同事有部分离职,也有出去面试的,我突然也有了一点冲动,于是在完全没有准备的情况下,简单,然后开始投递,排了一周5家面试。面试结果当时是不太理想,大部分都是自己的原因,也有一部分是面试公司相当不靠谱。

为什么不准备充分再面试呢,因为我觉得无论自己怎么复习(知识体系相对薄弱),都无法完全将自己所学知识点看完,不如在面试中复习,而且面试也是一个学习的过程,可以训练口才(尤其像我这样的,长时间不面试,语言组织都不好),学到新的知识点,了解当前外面的技术更迭和使用情况。

下面的面试题是我上周面试中觉得比较好的,如果各位觉得答案不对,欢迎私信或评论告知,我会及时修改。

面试题:

1.

    var p = new Map();
    p.add([5],'5');
    console.log(p.get([5]));

答案:undefined 这里考察了es6 map对象的键的类型,map的键可以保存基本类型或者引用类型的指针,由于上下两个【5】的指针不同,所以打印的是undefined,Set结构具有相同情况

2

function a (){ 
    setTimeout(()=>{
        console.log('a')
    },100);
}
function b(){
    console.log('b')
}
使用promise和async/await改写,使其按顺序打印 a,b

这道题考察es6异步编程,只要记住 await一定要和async一起使用,async内部必定会等待await返回结果后才会继续运行。

 function a(){
     return new Promise((resolve)=>{
            setTimeout(()=>{
                console.log('a')
                resolve()
            },100)
        }
     )
 }
 async function b(){
     await a();
     console.log('b')
 }

3:当我在使用axios异步请求banner数据时,使用swiper插件new一个swiper时,轮播图会出现什么情况?

思考:看题就知道轮播图肯定会出现问题,但是这个现象不太好说,如果是一直按照正常流程来进行开发,不会遇到这种情况,这道题是考察vue 如何能在数据更新完成且dom渲染完成后拿到最新的dom

答案: 轮播图会出现比较严重的bug,数据渲染不全,自身组件会出现一直可以滑动的现象,怎么解决? ----- 数据获取完成后,在updated生命周周期下用nexttick方法进行swiper的实例化

4: vue路由有几种模式,如何实现的?

思考:考察前端路由知识

答案:vue路由有两种:hash模式 和 history模式,通过监听url变化来渲染对应页面,hash模式使用hashchange来进行监听,history模式需要自定义监听事件,来监听pushState和 replaceState

5:将静态资源放在独立域名下有什么好处?

思考:这个我之前真没考虑过,后来google了一下,发现用处挺大,主要是从cookie,cdn,复用,缓存四方面来说

答案:1.静态资源http请求不携带cookie,减少网站流量。2 动静分离有利于cdn。3 浏览器对于统一域名的下载线程有限(6个),优化下载速度。4 方便公司其他项目的使用。5 客户端缓存后 不同页面引用相同文件将直接从本地获取,无需下载

6:vue页面出现内存泄漏有什么解决办法?

思考:vue项目不还是js吗,就从正常的内存泄漏这些方面讲,当时我说了一个切换页面后组件没有销毁,现在想一想是说错了,因为vue本身如果不是用keep-alive包裹的话,只要切换页面,组件就会自动销毁(destroy生命周期)

答案:内存泄漏出现在这几个场景:1 计时器没有清除,2.以外的全局变量,3 闭包 4 存在无效的dom引用,针对vue项目,内存泄漏的原因应该是存在无效的dom引用,vue项目组件的销毁后,对应组件的事件或者监听事件无法及时删除,反复如此之后,会造成内存泄漏,解决方案就是在生命周期destory内移除对应的事件。

7: 如何做出一个0.5px的边框

分析:刚开始看题,当成了0.5px的字体,随口说设置最小字体后用css3的scale进行缩放,经过面试官提示后,发现是边框,发现自己好像之前没有做过这样的需求,于是我就套了上面说的字体缩放的方法。之前面试css很少有人问,所以在这方面关注度不是很高。

答案(不是唯一):box不设置边框,用对应box的伪元素设height:1px.宽度自适应,然后用scaleY进行y轴的缩放,在进行定位,得到一个0.5px的边框。

8: vue项目打包后第三方ui库体积过大如何解决?

思考:由于之前做的项目基本都是单人完成,且项目比较小,所以在项目优化方面没有做过多的研究,当时这个问题没有回答上,扯了些无关痛痒的话。

答案:第三方ui框架可以通过cdn引入,避免webpack打包,或者采用按需引入的方式,避免将整个ui包打包进去

9 :小程序可以用jQuery写吗?

思考:当面试官问这个问题的时候,我在想我得马上离开这里。

答案:我想我和咱们公司有点差距,无法胜任这个工作,请您把简历还给我,我马上走

以上就是我2月最后一周的面试经历,这里面,大部分面试都让自己学到了点东西,但是也有些让我哭笑不得的(例如第九题的公司),不了解没关系,但是一定要有虚心学习的精神,面试这一星期,早上面试,晚上回去学习对应的知识点,进行查漏补缺。再说,万一碰到自己对眼的公司呢,

明天还有个面试,就先写到这里吧,拜了个拜~~~~!!!!