百度提前批一面 面经
css篇
- 讲一下盒子模型(box-sizing)
border-box:content + padding + border
content-box: content + padding - 两列等高
flex布局,设置子节点flex都为1
设置float:left + padding补偿法,父容器设置overflow:hidden,两个子容器都设置padding-bottom:2000px; margin-bottom:-2000px - flex布局,交叉轴对齐设置属性
align-items
JS篇
- js的数据类型
number,string,boolean,null,undefined,bigInt,Symbol,Object - 描述一下原型链
每个函数创建时就会同时创建一个原型对象,函数的prototype属性指向该对象,作为构造函数new出来的对象的proto会指向这个原型对象,因为每个对象都有proto属性,因此可以继续向上链接,直到Object.prototype指向null。在调用方法的时候会从自身出发沿着原型链递归向上找。 - 描述一下闭包的应用场景
回调函数 - 讲一下浏览器拿到页面返回后渲染的过程?如果在解析的时候要请求js,那么dom渲染会并行吗?如果返回的网页中有音视频,那么dom渲染会并行吗?
dom树+CSSOM树 => Render树 => 计算布局Layout => 绘制plainting
不会 js引擎线程和GUI绘制线程互斥
应该会并行,不阻塞dom渲染,图片的加载也是异步的,浏览器会开一个异步http请求线程请求资源。
React篇
- react组件render的时候发生了什么?
- useEffect()的第二个参数,怎么消除副作用?第二个参数为空数组的时候等价于componentWillMount吗?
依赖项,内部return的时候,useEffect是异步执行的,等待浏览器渲染之后执行。不等价,componentWillMount是组件渲染之前执行,useEffect是组件渲染后执行。 - useEffect和useLayoutEffect的区别
useLayoutEffect是同步执行的,在浏览器把内容真正渲染到页面之前。将DOM操作放进useLayoutEffect可以避免闪烁现象。 - 写react组件的时候性能优化的方法有哪些?
React.useMemo, useCallback(),useMemo() - 说一下父组件怎么获取子组件的状态?引申出 forwardRef 方法
- 说一下如何设计一个可扩展的表单组件
算法题
1.字符串相加
2.快排算法