美团到家前端一面 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);
最后是舔狗环节,第一次舔,不知有没有用。下来多练练,嗯我指的是,舔。
#美团前端#