最近在面试的时候经常会问:如何理解重排和重绘?
我发现很多候选人都没有答道关键点上,感觉是在哪里看到过相关的文章,听起来零零散散,毫无逻辑。
错误示范
一般的面试过程就是这样的:
面试官:如何理解重排和重绘?
候选人:重排就是当页面的结构发生变化了,就会重排,比如改变变字体的大小,增删元素这样的。重绘就是页面结构没有变化,只是外观变了,比如改了一下字体颜色、背景颜色这样的。就只会发生重绘。
当然他说的也没错,我也不能直接说他错,就继续引导
面试官:那重排和重绘有什么关系吗?
候选人:重排一定会导致重绘,重绘不一定会导致重排。
面试官:为什么呢?
候选人:因为重排结构发生变化了嘛,肯定会导致重绘。
我这时候表情就是这样:
如果你觉得上面的回答很真实,那下面的你确定得好好看看。
接下来一般我不会直接跳过,我会再问一下浏览器关键渲染路径引导一下。
如果不知道的话,我会再引导一下(这个时候其实基本已经放弃了)。
问一下你知道当浏览器加载到一个 HTML 会发生什么事情吗?
如果还是不知道的话,这下一题了。
如果知道关键渲染路径的,基本引导一下还是可以搞明白,如果不清楚的,肯定是理解不了重排和重绘的。