-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
笔试面试题 #4
Comments
简述XMLHttpRequest和JSONP应用场景、以及二者的错误检测?
|
请简述下浏览器渲染过程、以及重绘和重排?浏览器渲染过程因不同内核可能会有差异,现以webkit为例描述浏览器渲染原理,浏览器渲染过程主要分为三个阶段,先详述如下:
重绘:节点属性发生变化、内容需要变更、比如颜色,就是重新绘制。 重排属性:height、line-height、font-size、border 最小化重排和重绘 使用documentFragment进行dom操作 const list = document.querySelector('#list');
const fruits = ['Apple', 'Orange', 'Banana', 'Melon'];
const fragment = document.createDocumentFragment();
fruits.forEach(fruit => {
const li = document.createElement('li');
li.innerHTML = fruit;
fragment.appendChild(li);
});
list.appendChild(fragment); |
<script>和<script defer>以及<script async> 不同之处1、【普通加载+普通执行】普通的<script>,会阻塞html的解析,直到js处理完,恢复html的解析 |
关于BFC有了解吗?whatBlock Format Contex:块格式化上下文。通俗的来说是一个封闭的盒子,里面的元素不会影响到外部。 how满足以下特性,即是要给BFC块 why1、通常两个块之间会发生外边距塌陷,以及父和子元素的maring也会重叠,切换成BFC块之间则不会塌陷。
|
关于缓存的问题?按照缓存位置区分Service Worker缓存待补充 Memory Cache基于内存的缓存,这个更多的控制是交由了浏览器,短时间有相同的请求,启动内存缓存。 Disk Cache也即Http Cache这个则是我们经常见到的,通过设置头读取头来判定哪些资源的缓存是否命中 按照缓存策略区分强缓存what how
协商缓存协商缓存顾名思义,回去和服务端询问一下,我这个资源
最佳实践对于强缓存来说,即使设置了过期时间,但是如果在这个过期时间内服务端的资源发生变化,而仅仅通过强缓存命中的策略是不会发送请求,这样就客户端获取到的数据不是最新,甚至导致不可预期的错误。 而协商缓存来说是会进行http请求来,那不还是没有减少http请求。 所以综合解决策略是:html进行协商缓存,其它的js,css,img资源使用强缓存。同时通过webpack打包是配置其它资源的文件名使用hash变化。 |
词法作用域和动态的作用域的区别?作用域是定义一套标识符的查找规则,用于在某个区域查找标识符 词法作用域在js中的作用域是采用的词法作用域,也即静态作用域。作用域的形成是在定义期间完成的,也即定义完成编译器进行扫描,构建作用域。比如函数定义内容访问外部作用域变量。 动态作用域与之静态相对的是动态作用域,动态的作用域是在函数调用的时候决定的,比如在调用某个函数时,函数内部访问正在调用作用域变量。js中this查找在一定程度上类似于动态作用域的实现。 |
MVVM理解、以及Vue中MVVMMVVM首先MVVM是架构分为三层,视图层、模型层、视图模型层。视图层是负责视图渲染、模型层负责数据获取和存储。视图模型层负责连接视图层和模型层,将业务数据映射尾视图数据,从而驱动视图层的修改。数据流的走向是:视图层->视图模型层->模型层。整个阶段视图不会和模型打交道。视图层调用视图模型层进行数据行为变更。视图模型层通过数据变化,影响视图。即数据驱动视图,这是一个观察者模式实现完成双向绑定。即视图调用视图模型业务,视图模型数据变更驱动视图变更。 Vue中的MVVM首先template自然是我们的视图层,然后Vue的组件就是我们的ViewModel。模型层则是我我们Vue组件的data和prop的数据来源,简单情况下可以简单数据对象,或者自定义一个数据源对象和操作封装成模型,也可以封装到vuex中 |
两个tab页面如何通信1、websocket 2、监听localStorage 3、共享的webworker |
No description provided.
The text was updated successfully, but these errors were encountered: