美团到家前端一面 8.30 舔狗本狗
看我实习多,没怎么问基础,盯着简历问
- 屏幕适配,遇到的问题,怎么解决,原因。举了个实习的例子,某个tab栏切换会卡到屏幕中间。postCss,pxtorem遇到的问题。
- react用的版本,原理。答:虚拟dom,diff,fiber,任务优先级划分。
- 为什么要impoer React。答:用于jsx转换虚拟dom。React.createElement.。个人延伸:不import报错,有些eslint规则会自动去除noused,所以这一块要注意。
- 状态管理库。我用recoil,怎么用,原理,其他,redux,原理。
- ts,omit,原理。乱答:1.name?:改为可选 2.使用& | 进行去除。泛型是什么,应用场景。
- 手写useFetch
const { run, data = [], loading = false, error = '' } =useFetch(initParam,fn)
function useFetch(initParam,fn){
const [data,setData]=useState(null)
const [loading,setLoading]=useState<boolean>(true)
const [error,setError]=useState('')
const [param,setParam]=useState(initParam)
const [isRun,setRun]=useState()
useEffect(()=>{
async fucntion myRequset(){
if(isRun){
try{
let res=await fn(param)
if(res.status==200){
setData(res)
}
}catch(e){
setError(e)
}finally{
setLoading(false)
}
}
myRequset()
},[isRun,param,...])
return {
run:(param)=>{
setRun(true)
setParam(param)
},
loading,
error,
data
}
}
- 一个回文数字串,判断是否回文。不能转字符串做。
我这题直接用转字符串做了。
- 给出一个promise数组,写一个方法按顺序执行。有两个思路。自己用async/await实现了,没跑。reduce,没时间写。
async function timer(tim) {
const data = await new Promise((resolve, _) => {
setTimeout(() => {
resolve(tim);
}, tim);
});
return console.log(data);
}
function orderPromise2(parr) {
return parr.reduce((a, b) => {
return a.then(() => b());
}, Promise.resolve());
}
let arr = [
() => timer(5000),
() => timer(3500),
() => timer(2000),
() => timer(500),
];
orderPromise2(arr);
async function orderPromise(parr) {
for (p of parr) {
await p();
}
}
orderPromise(arr);
最后是舔狗环节,第一次舔,不知有没有用。下来多练练,嗯我指的是,舔。
#美团前端#