【面试复盘】985硕科班远景科技集团前端一面面经

远景科技集团

时间:2022年4月7日 星期四17:00 ,时长50min左右,腾讯会议-视频面试

写在前面:面试官态度很好,语气平缓,我太菜了,面试官也是耐心给我解释

以下是靠回忆的,部分题目顺序可能有变化

  1. 自我介绍(主要讲了学校、个人小项目,时长1min左右)
  2. 学习前端多久了?为什么要学习前端?你现在在什么城市呢?公司在上海,实习的话来这边方便不?
  3. 介绍一下项目除了vue,还用到其他的框架吗(是想问node之类的框架吧)项目中的模块,项目(面试官想问的是让我用一些术语/行话,来介绍,如:登录、查询等模块,但是我没有明白面试官到底想知道什么,就答了这个项目中用到什么技术,实现什么功能,如列表展示,分页等,这个还是面试最后,他给我我解释的,希望自己的项目要用一些API,要尽可能贴近真实的项目开发场景)
  4. 项目中用到了路由vue -router,能解释一下路由切换的原理是什么呢?我刚开始没太明白题目的意思,就回答的是怎么使用路由,后来面试官重新解释了题目,我只能回答说不了解这个
  5. 介绍项目中,你认为有哪些亮点?介绍一下(我介绍了项目中设计到查询一个用户的信息,面试官问:这个查询的话,是严格匹配吗?)
  6. 介绍一下es6的特性(我说了let、const,箭头函数、promise等)
  7. 介绍一下let、const和var的区别,什么叫做变量提升,变量提升之后,第一行打印一个在第二行用var声明的变量为什么是undefined?如果第一行打印变量a,第二行var a,第三行定义了一个function a(),那么第一行输出什么?

注:面试结束后,我自己重新思考了这个问题:


console.log(a)
var a = 1
function a(){
    
}
输出:函数 a ,我第一次解释是正确的,哭死!


代码输出题目一:

输出什么内容?答:10个10,为什么会有这个结果?怎么修改代码,才能输出0,1,2……呢?

方法一:var 改let,解释为什么这样写

方法二:使用闭包,让我共享桌面,写出来,解释为什么这样写,解释闭包(闭包的产生条件,漏掉了内部函数引用外部函数的变量)

for (vari=0; i<10; i++) {
    (function (j) {
        setTimeout(function () {
            console.log(j)
        }, 0)
    })(i)
}

代码输出题目二:

varobj= {
    name: '章三',
    hi() {
        console.log(this.name)
    }
}

varfun=obj.hi

fun() //????

执行fun(),输出什么?我刚开始答 ‘章三’,面试官说不对,我然后发现应该是输出undefined,面试官问为什么?我提到了this指向的是window,让我解释一下this,

(这里需要注意:window中有一个同名属性name,且这个是一个空字符串,,原代码,应该输出的是空字符串,面试官应该没有考虑到同名属性name这个问题,以为window中没有name属性)

问:怎么修改代码,让fun()输出‘章三’?我刚开始回答使用闭包,面试官让我修改,我改不出来,最后面试官说这个是不能使用闭包修改的,因为obj是一个对象

面试结束后,自己尝试修改,最终明白这道题目,是考察的this指向

方法一:只改一行 ,让this指向obj,bind()返回的是一个函数,所以需要fun再执行一次

var fun=obj.hi.bind(obj)

方法二:修改两行 ,让this指向obj,apply()和call()返回函数执行的结果,所以不需要再执行fun


var fun=obj.hi.apply(obj) 或者 var fun=obj.hi.call(obj)
fun

代码编写题:
写一个类class A,含有一个属性,一个方法

我实在不知道,面试官就说,不用class,用其他的方法,实现一个属性,一个方法

最后面试官终止了这个题目

面试结束后,我查看阮一峰的es6文档,发现了很多class的例子https://es6.ruanyifeng.com/#docs/class

方法一:使用类class

class A{
    construcor(b){
    this.b= '123'
    }
    test(){
        console.log(this.b)
    }
}

方法二:使用构造函数的形式

function A(){
    this.b = '123'
}

A.prototype.test = function(){
    console.log(this.b)
}
8. for of 和for in的区别?什么叫做可迭代?(我的答案不太全面)
面试官解释:for..of适用遍历数/数组对象/字符串/map/set等拥有迭代器对象的集合
9. 说一下原型和原型链
我说了一堆,虽然面试官说能明白我的意思,但是我的语言表达能力太差了,我自己都觉得表述不太准确
10. 说一下事件代理,这个确实不清楚,没有深入学过
11. 说一下跨域,我说了跨域的概念和解决跨域的方法
总的来说,面试完,我发现自己的基础确实比较薄弱,而且,一些细节,平常都注意不到,建议大家在学习、做项目时,要多思考自己写这几行代码,发生什么的细节是什么。
#面试复盘#
全部评论
请问楼主接收到复试邀请了吗?
1 回复 分享
发布于 2022-04-18 18:46
老铁,说实话,你跟我应该是一个面试官面的🤣
2 回复 分享
发布于 2022-04-20 09:06
🎉恭喜同学成功投稿参与【面试复盘】,并通过审核! 😉请留意你的私信,官方红N人员将与你取得联系,进行奖励发放~ 👉🏻戳:https://www.nowcoder.com/discuss/872618了解更多活动详情~
1 回复 分享
发布于 2022-04-18 11:08
请问是实习面试还是春招面试呢
点赞 回复 分享
发布于 2022-04-19 09:38

相关推荐

评论
8
16
分享
牛客网
牛客企业服务