2018-03-20 百度实习一面

1、页面渲染的步骤是什么?

具体分为5步:(1)HTML解析出DOM树(2)CSS解析出style样式表(3)将两者关联生成渲染树(4)相关布局根据渲染树计算每个结点的信息(5)根据计算好的信息绘制整个页面。

webkit浏览器和Gecko在名词上有些微不同,步骤一样。

 浏览器会在下载完成全部CSS之后才对整个页面进行渲染,因此最好的做法是将CSS放在页面最上面,让浏览器尽快下载CSS(这是一个异步过程)。如果将 CSS放在其他地方比如 BODY中,则浏览器有可能还未下载和解析到 CSS就已经开始渲染页面了,这就导致页面由无 CSS状态跳转到 CSS状态(页面回闪),用户体验比较糟糕,所以可以考虑将CSS放在HEAD中。

Javascript则相反,浏览器在加载javascript后立即执行,有可能会阻塞整个页面,造成页面显示缓慢,因此javascript最好放在页面最下面。但如果页面解析时就需要用到javascript,这时放到底部就不合适了。

2、页面重绘和页面重排的区别,分别在什么时候发生?

重绘:屏幕的一部分重画,元素几何尺寸不变

重排:元素几何尺寸改变,要重新验证并计算渲染树

重排成本远高于重绘。

3、css实现三角形

利用border属性,元素不定宽高,某一边的border为0;

4、scss比css的优势

5、opacity和rgba表示透明度的区别

opacity:可继承;rgba不会

6、cdn内容分发网络的原理

内容就近分发,利用网关进行缓存,源服务器将内容备份存储在各个中间服务器上,浏览器发送请求是,通过DNS域名解析,找到离自己最近的中间服务器,获取到备份的信息。因为就近,加快了处理请求的速度。(缓存机制的一种)

7、口述js原型链

让对象a的原型等于对象b的实例,这时a对象实例的proto属性指向a的原型对象-》b的原型对象;若b的原型等于c的实例,则又会指向c,一次向上,直至指向object,形成一条继承链。真正实现原型链的是proto属性而不是原型对象。

8、webpack打包及原理

9、commenJS、AMD、CMD的区别

异步模块加载机制;commenJS主要用于服务端,比如nodejs;AMD依赖前置,预执行;CMD依赖就近,懒执行。

10、npm install --save什么意思,npm install和 npm run dev从哪里开始执行?

11、深复制、浅复制的区别于实现

浅复制:复制的是引用

深复制:会再生成一个新对象,与原对象没有关系。

逐个递归实现深复制(具体代码)

12、DOM节点的操作有哪些

13、缓存的原理

cache-control  Etag  ....

缓存过程

14、基本类型与引用类型的存储区别

基本类型存储在栈中,直接存值;引用类型存储在堆中,是利用引用(指针)进行赋值、调用

15、<style>为什么放在<head>里,<script>为什么放在<body>里

<body>中存放的是dom树的信息,为了使html与css分离,将<style>放在<head>中(内嵌式),否则就是内联式。

<script>是立即下载并执行的,js文件是阻塞的,放在body尾部,是为了使dom节点都加载完毕后再对其进行操作,否则,会引发页面回流重计算以及获取不到DOM节点的问题。

16、同源策略

同域名、同协议、同端口

17、浏览器数据存储的方法

web缓存  本地缓存

18、HTML5中解决跨域新增的方法

postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递。postMessage(data,origin)方法接受两个参数,其中data是要传递的数据,origin是目标窗口的源。通过在另一个窗口上监听window的message事件就可以接收到任何窗口传来的数据。

19、VUE双向数据绑定实现的原理

发布订阅者模式+数据劫持

20、会用grid布局吗?

21、git工作区、暂存区、版本库的区别

git工作区:电脑里能看到的目录,里面存放的是从远程拉取到的某个版本,我们的修改就是基于工作区的基础上,文件的当前状态;

暂存区:当我们做出了修改,利用git-add指令加入修改时,做出的修改是存放到暂存区的;

版本库:git-commit将暂存区中的修改提交到版本库,作为本地电脑的一个新版本,可以撤回commit;

git-push是将本地的新版本发布到远程,则整个团队都可以拉取到。

git的一个重要的特性是支持分支。当我们正在进行一个主分支,临时有另外一个需求要解决,可以把它放到一个分支中,当对这个小分支编程并测试成功后,并入主分支中。这样就不会对其他人的工作产生干扰。

git merge 合并分支

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    前端进阶之旅阅读 114,839评论 24 450
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,814评论 1 92
  • 前端开发面试题 <a name='preface'>前言</a> 只看问题点这里 看全部问题和答案点这里 本文由我...
    自you是敏感词阅读 786评论 0 3
  • 妈咪读呀 父亲节原创 你是一位伟大的妈妈,但经过一段时间的观察,你发现孩子的爸爸已经变成了小三。你十分享受和孩子的...
    妈咪读呀阅读 708评论 0 1
  • 不止一次的相望,透过黎明的黑暗。 你在,我是如此的漫长,走向花开的彼岸。 ——题记 如果,把一首歌,让放飞的小鸟去...
    凯罗阅读 130评论 0 0