前端React工作小两年,准备换工作,遇到的面试问题整理一下,希望对大家有帮助~~坐标济南

前端React工作小两年,准备换工作,遇到的面试问题整理一下,希望对大家有帮助~~坐标济南,第1张

A公司

Q:react16前后,生命周期钩子有了很大变化,简单说一下。
直接上图

回答了钩子的作用,废弃了哪几个,用哪个替代了,shouldComponentUpdate怎么用,差不多这些


Q:大文件上传分片的解决办法
没有实际应用过,没回答出来
后续查了查,大概是这种意思

input表单的file类型,获取到上传到文件(很大),对他进行一个切片 *** 作(按照你的需求大小切),切一次发送一个上传的请求并且++count,然后递归该方法,直到你某次切完了(大于了文件大小),okk。合起来是后台处理,并且最后返回一个地址。


Q:类式组件和函数式组件的区别

回答了三个核心的区别,state,props,ref以及hooks的情况

然后紧接着问了针对于这两者之间的生命周期有什么区别

回答了useEffect怎么作为生命周期钩子来使用的


Q:Taro这种框架是怎么实现多端开发的
因为现在公司有用Taro多端开发,所以他才问我这个问题吧,没答上来,后续也没查。


Q:一个场景题:网站语言的中英文切换

没太懂场景需求,改变页面就state状态啊。
然后他点了一下所有的,我就答了一下redux的使用情况
然后聊天慢慢理解了场景需求,意思就是所有的页面都要访问中英文切换那个组件里的状态
然后就回答了一下context,后代组件获取父代的状态


Q:一个场景题:五个异步请求怎么处理

回答了一下Promise.all()的东西

紧接着问了假如某个Promise返回了catch,那整个all就都是catch了,这种情况怎么处理

我回答了如果catch就在前端有个提示的交互

但不是他想要的答案,他说Promise有个什么方法,如果catch,可以重新请求n遍(你来定n),n遍不行那就再加交互提示。
我不记得这个方法叫啥了,上网查了查,看到别人有说其实可以在每个Promise外套一个Promise来阻止因为某个Promise是catch导致Promise.all()是catch的情况


Q:关于React-router的中间件
完全不知道,也没查


Q:Ref相关的问题

答了ref的使用方法(很多),只说了自己常用的在dom上的回调的那种方式,ref={nede = this.nodeRef},然后又点了点hook的useRef

然后就紧接着问了useRef和createRef的区别
没答上来,也没查,好像是和current有啥关系吧,没有了解过。好像vue有这个东西,我用ref的时候没用到这个东西。


结果

技术(电话面的)过了,领导的复试没过,领导让介绍一下自己项目的时候说不是很好,也有可能是要的期望薪资有点高



B公司

这个面试很有喜剧性
当时接受完面试邀请才想起来还没看公司挂的薪资区间,看完发现是7-10k
薪资区间不都是以左区间那个为准吗,我就不考虑了,但是就答应人家总不能出尔反尔吧,就本着去赴约的心态去面试了
然后他们给个数,后续我就拒绝了呗。
去了技术负责人面的,问的啥问题我忘了,好像问了第一个问题我没答完就开始和他聊天了,然后针对一些不同的看法进行了battle,具体是啥我也忘了。然后稀里糊涂的就过了,可能是因为使用的技术栈和这个公司完全相符吧,就是React和Taro
然后薪资给到了9,很诧异,福利待遇也挺好。
但是怎么说呢,面试结束后偷偷看了下他们的产品,可以想到入职之后干的工作是啥,和现在公司没啥区别,新东西就得全靠自学了。



C公司

这家公司的前端技术栈使用的是Vue3,咱也不知道为啥招聘要求上说的React也可以。到了和技术聊人家说没有React,不过对他们的项目挺感兴趣的,好像是和地图相关的,不是那种简单的地图,是那种3D建模的地图加信息统计分析。
问的问题也忘了,列一下他们的面试题吧,具体问题就不展示了。

Q1:引用类型相关的问题

let a = {
	age: 1
}
const b = [a]
a.age = 2
console.log(b)
// [{age:1}]

Q2:对象的for in循环打印key

let persoon = {
   name:'222',
   age:223334
 }
 for(const item in persoon){
   console.log(item);
 }
 // name,age

这个我直接裂开,他的四个选项没一个对的。我没答,他还给我打岔了。


Q3:number和string的相加

console.log(1+2+3+"4") //64

Q4:const相关的问题

const obj = {name:'obj'}
const age = 3
function chageinfo(obj,age){
  obj.name = "qqq"
  age = 7
}
chageinfo(obj,age)
console.log(obj,age)
// {name: 'qqq'} 3

这个我答错了,直接裂开,脑子当时抽抽了,以为考的是作用域。我也不知道为啥会想考的是作用域


Q5:作用域的问题

(()=>{
  let x = (y=777)
 })()
 
 console.log(typeof x, typeof y);//undefined number

Q6:new Set()

console.log(new Set([1,2,3,4,1,3,4,6,7]));//{1, 2, 3, 4, 6}

Q7:delete相关

const name = "name"
age =222
console.log(delete name);//false
console.log(delete age);//true

这个题不会,只用过delete删除对象的某个属性,这种用法不知道返回的是啥,可能和let const的定义方式有关吧。


Q8:es6的解构赋值

const arr = [1,2,3,4,5]
const[x,y] = arr
console.log(x,y);// 1 2

Q9:es6的拓展运算符

const obj1 = {name:'obj1',age:3}
const obj2 = {x:'x',y:'y',...obj1}
console.log(obj2);//{x: 'x', y: 'y', name: 'obj1', age: 3}

Q10:简答题了,Vue的,不会,只把自己知道的写上了

简述vue生命周期vue组件之间如何传值vuex是什么?怎么使用?哪种场景使用它?vuex有哪几种属性

Q11:代码题,一个方法,接受一个number参数,输出number行的星星,每一行是2number - 1个
没写,写了注释,就是循环输出2
number - 1


Q12:算法题
50个人围成一圈排上编号1-50,然后按照1、2、3循环报数。报到3人的移除,乘人接着从1开始报数,直至剩下一人。请问最后一人的编号是多少?

我这想了一下,回答了采用环链表的结构,每next三次,把当前的delete掉,把上一个的next指向下一个,一直到delete最后一个。(不知道对不对,毕竟是个菜前端,算法啥的确实上不了台面)


结果

聊完,人家没有react技术栈,相互客套了一下表示了可惜就走了。



D公司

线上一次面试,过了。

Q:hooks有没有了解

了解,工作中不会需要特别用hook,都是自学的,主动往上面靠。像useState,useEffect,useMemo这些都有了解过。


Q:在class组件中有没有遇到过避免重复加载的问题,类似于useMemo

没用过


Q:JS对象的判空

for in循环或者 Object.keys()
后续查了查,好像用for in不太严禁,好像是for in还可以循环枚举原型链 ,用Object.keys()或者Object.values()


Q:深浅拷贝

回答了普通类型和引用类型的区别,说了一些es6的拓展运算符


Q:如何判断变量的类型

先是说了type of方法,又说了instanceof,然后又说了可以去原型链上找


Q:=== 和 == 的区别

当时确实不知道咋说,就说了 === 区别于 == 除了数值上的相等外,还有类型上的不同


Q:css外边距重合的问题

说了BFC的概念可以解决这个问题,BFC有好多种实现方式,具体的实现情况看具体情况(嘿嘿,意思就是百度百度怎么实现),实在不行就用padding


Q:数组排序

就说了sort,感觉不太行。


Q:知不知道react-router中的HashRouter

说了有用过BrowserRouter,是解决页面刷新状态消失的问题,也说了HashRouter,在地址上加了个#,具体作用不清楚,应该是解决路径的问题的。


Q:js当中的继承

说了Object有个方法,可以把对象a继承自对象b,当时没想起方法叫啥,后来查了查是:let a = Object.create(b),我不知道这个答案对不对。后来查了查,看来是不对的,他想问的应该是原型链继承,构造函数继承,实例继承这种


Q:原型的概念,怎么调用继承的对象的方法

说了可以在对象上有个__proto__,在里边调继承的方法吧,或者是constructor构造函数里有。(因为没有实际应用过,不知道到底在哪,说肯定有个地方可以调)


Q:知不知道apply call bind,有什么应用场景

回答了知道,重定向this吗,应用场景就是因为react不支持数据双向绑定,获取表单input这种dom里的值的时候就需要重新绑定一下this。


Q:多个异步请求

先说了es6的promise和es7的async await概念,又说了可以用promise.all()实现多个异步请求返回数组


Q:紧接着又问了回调地狱怎么解决

回答就用的回调地狱,因为接口不多,他笑了。然后他说async await就可以解决这个问题,我恍然大悟。


Q:map filter有用过吗

有用过,一个数组的遍历,一个过滤。实际应用中react很多情况下需要循环渲染dom,就用的map。


Q:Echarts什么程度

会用,用的不多,看文档找配置项。别人能实现的肯定就能实现。



OKK,就这些。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1320826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-11
下一篇 2022-06-11

发表评论

登录后才能评论

评论列表(0条)

保存