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个
没写,写了注释,就是循环输出2number - 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什么程度
会用,用的不多,看文档找配置项。别人能实现的肯定就能实现。