热乎的多益、cvte 前端面经

实在是曲折的经历。首先收到了cvte的面试通知,预约下午6点。今天下午坐车过去的时候,突然一个hr打电话来说,预约4点面试,我就奇怪了,我说我昨天预约6点,然后叫我加面试官qq视频面。我说我就在坐车去你公司,你想我现场面还是视频面,去和他们说清楚,好像对方和我也牛头不搭马嘴的。后来说视频面试,叫我加面试官qq,一加发现,多益面试官!然而我已经下车准备跑回宿舍!
cvte原先约6点,多益的通知就是突然来的hr短信叫我4点面试(没有注明公司,看见短信的时候我以为是cvte),接着发生了这一幕,双方懵逼,直到加qq我才知道一切

公共问题:自我介绍、怎么学习,简单的问题我就不说了

多益(视频20分钟)

  • 最自豪的项目?遇到的难点?做了多久(新手的时候,慕课网的加强版个人demo搬出来了,vue1变换到2踩的坑,求稳就说了这个,说做了一个月)难道这点就自豪?(其实我3天做完毕设,但是在熟悉的情况下做出来的我不自豪)
  • 最自豪的事情?(公司一天速成ng并能够按时或者提前完成任务)
  • 前端工程化(webpack、gulp、grunt。对了给你介绍一个好东西,dva)
  • webpack和gulp区别(模块化与流的区别)
  • dom是什么,你的理解?(...)
  • 关于dom的api有什么(...)
  • css预处理器有什么,擅长哪个?(less)
  • 说一下less(嵌套、组合、组合爆炸、运算、变量、混合)
  • post和get区别(...)
  • 我看见你写了一个js库,说一下有什么?(封装了es6一些方法原生实现、一些设计模式、常规操作)
  • 看过什么书?(红书、犀牛、css权威、css世界)
  • 有没有一页一页看?(重复看的只有红书)

cvte(50分钟)

  • 怎么学习前端->其中说了社区互相交流->那你有没有参与社区网站的开发和开源项目(没有,我只是在MDN贡献了一点)
  • 公司的后端是node中间层,再发到java吗?(直接node的egg框架)那你有搞过这个项目的后端吗?(开一个接口给我自己测试)
  • 怎么cors跨域跨域cors的cookie设置,安全性,接下一题(那个地址设置成我们自己那个,'Allow-creadentials'true,)
  • 公司的后台对cookie的处理、xss、csrf(我只是说了过滤、反转义、httponly)
  • cookie在多个页面的通信,有效和过期的区别( 单机党这就开始悲剧,反正只说了setcookie和getcookie方法,expire、登录拦截)
  • nginx反代熟悉吗(我只是过了一遍文档用过)
  • vuex数据流的理解(把流程图背一遍,然后用原生vue+storage和vuex做比较)
  • vue双向绑定原理(MV->(文档片段节点劫持)->VM(defineproperty的set和get)->MV(观察者模式,第二阶段导致变化,发布信息publish))
  • promise实现(function promise(fn),内部存放一个this.list、一个that=this和一个n=0,如果n不大于list长度就that.list[n++](that.resolve)。最后在promise函数后面放一个settimeout包住fn(that.resolve))
  • 你擅长什么方面,为什么不去搞算法(因为前端有webrtc、然后到webar,需要很强数学基础)
  • 手撕assign的深拷贝(太急不审题、递归拷贝得太深,事后我和他都吐槽)mac电脑的键有点不一样,出丑了一分钟。男面试官:其实这个题目挺有意思,每个人都有不同的方法,而且处理不同的数据类型,以及不同的递归深度控制...........(早知道我看看lodash源码的深拷了,我觉得最完美的深拷但是只是mark没有看)

多益的比较看重经历,技术问题都简单。
cvte比较看重的是node中间层、http那块,我擅长的设计模式、手撕源码都没有具体问到,而且是我自己引开的话题,又被他带回来http这块,然后我答的比较普通,然后他给我科普,难受。反正是必死的了,在答cookie这块看出他不满意。
多益这波,我中途跑回去是有点冲动了,其实白跑了,在车上也可以视频面试,然后cvte又迟到又气喘吁吁地排队,刚刚好是最后一个

现场写的:

function copy(obj){
    var temp
    if(obj instanceof Array){
        temp = []
        var i = obj.length
        while(i--){
            temp[i] = copy(obj[i])
        }
        return temp
    }else if(obj instanceof Object){
        temp = {}
        for(var x in obj){
            temp[x] = copy(obj[x])
        }
        return temp
    }else{
        return obj
    }
}

附带心中完美的答案jQuery的extend:

$.extend = function(){
        var len = arguments.length
        var target = arguments[0]||{}
        var i = 1
        if (typeof target !== "object"&&typeof target !== "function") {
            target = {}
        }
        if(i==len){//给本身或者实例扩展
            target = this
            i--
        }
        //任意对象
        for(;i<len;i++){
            for(key in arguments[i]){//遍历对象:arg2之后
                console.log(key)
                target[key] = arguments[i][key]
            }
        }
        return target
    }

其实,他们是要我手撕jQuery的extend,还是我自己太急不审题,快要做完的时候发现,人家给的参数是:
类似这样子deepClone({a:1},{b:2,c:{d:'hello cvte'}}),就是要我实现es6的assign和jQuery的extend嘛,我居然......,然后又被引出了数据类型的问题......

#春招##面经##前端#
全部评论
楼主是怎么学的设计模式呀
点赞 回复 分享
发布于 2018-03-14 23:44
厉害,mark
点赞 回复 分享
发布于 2018-03-15 01:11
楼主cvte出结果了吗?
点赞 回复 分享
发布于 2018-03-17 08:47
春招实习还是春招应届?
点赞 回复 分享
发布于 2018-03-18 13:11
红书? 是哪本啊
点赞 回复 分享
发布于 2018-03-23 09:41

相关推荐

6 89 评论
分享
牛客网
牛客企业服务