最全前端面试集合

Posted bingerger

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最全前端面试集合相关的知识,希望对你有一定的参考价值。

一、页面从输入 URL 到页面加载显示完成

 

 下载资源:www.yinxiangit.com

简单解答:

1.浏览器根据请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求;

 

2.服务器交给后台处理完成后返回数据,浏览器接收文件(html、JS、CSS、图象等)

 

3.浏览器对加载到的资源(HTML、JS、CSS等)进行语法解析,建立相应的内部数据结构(如HTML的DOM);

 

4.载入解析到的资源文件,渲染页面,完成。

 

 

详细解答:

1. 浏览器会开启一个线程来处理这个请求,对 URL 分析判断如果是 http 协议就按照 Web 方式来处理;

 

2.调用浏览器内核中的对应方法,比如 WebView 中的 loadUrl 方法;

 

3.通过DNS解析获取网址的IP地址,设置 UA 等信息发出第二个GET请求;

进行HTTP协议会话,客户端发送报头(请求报头);

 

4.进入到web服务器上的 Web Server,如 Apache、Tomcat、Node.JS 等服务器;

 

5.进入部署好的后端应用,如 php、Java、javascript、Python 等,找到对应的请求处理;

 

6.处理结束回馈报头,此处如果浏览器访问过,缓存上有对应资源,会与服务器最后修改时间对比,一致则返回304;

 

7.浏览器开始下载html文档(响应报头,状态码200),同时使用缓存;

文档树建立,根据标记请求所需指定MIME类型的文件(比如css、js),同时设置了cookie;

 

8页面开始渲染DOM,JS根据DOM API操作DOM,执行事件绑定等,页面显示完成。

 

二、平时如何管理你的项目?

 

1.先期团队必须确定好全局样式(globe.css),编码模式(utf-8) 等;

2.编写习惯必须一致(例如都是采用继承式的写法,单样式都写成一行);

3.标注样式编写人,各模块都及时标注(标注关键样式调用的地方);

4.页面进行标注(例如 页面 模块 开始和结束);

5.CSS跟HTML 分文件夹并行存放,命名都得统一(例如style.css);

6.JS 分文件夹存放 命名以该JS功能为准的英文翻译。

 

三、页面重构怎么操作?

 

网站重构:在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为。
也就是说是在不改变UI的情况下,对网站进行优化,在扩展的同时保持一致的UI。

 

对于传统的网站来说重构通常是:
表格(table)布局改为DIV+CSS
使网站前端兼容于现代浏览器(针对于不合规范的CSS、如对IE6有效的)
对于移动平台的优化
针对于SEO进行优化
深层次的网站重构应该考虑的方面

 

减少代码间的耦合

让代码保持弹性
严格按规范编写代码
设计可扩展的API
代替旧有的框架、语言(如VB)
增强用户体验
通常来说对于速度的优化也包含在重构中

压缩JS、CSS、image等前端资源(通常是由服务器来解决)
程序的性能优化(如数据读写)
采用CDN来加速资源加载
对于JS DOM的优化
HTTP服务器的文件缓存

 

四、mvvm框架是什么?它和其它框架(jquery)的区别是什么?哪些场景适合?

 

答:一个model+view+viewModel框架,数据模型model,viewModel连接两个

 

区别:vue数据驱动,通过数据来显示视图层而不是节点操作。

场景:数据操作比较多的场景,更加便捷

 

五、React 和 Vue 有什么区别?

Set 和 Map 数据结构()

ES6 提供了新的数据结构 Set 它类似于数组,但是成员的值都是唯一的,没有重复的值。

ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。

六、WeakMap 和 Map 的区别?

WeakMap 结构与 Map 结构基本类似,唯一的区别是它只接受对象作为键名( null 除外),不接受其他类型的值作为键名,而且键名所指向的对象,不计入垃圾回收机制。

 

WeakMap 最大的好处是可以避免内存泄漏。一个仅被 WeakMap 作为 key 而引用的对象,会被垃圾回收器回收掉。

 

WeakMap 拥有和 Map 类似的 set(key, value) 、get(key)、has(key)、delete(key) 和 clear() 方法, 没有任何与迭代有关的属性和方法。

七、重排和重绘

部分渲染树(或者整个渲染树)需要重新分析并且节点尺寸需要重新计算。这被称为重排。注意这里至少会有一次重排-初始化页面布局。

由于节点的几何属性发生改变或者由于样式发生改变,例如改变元素背景色时,屏幕上的部分内容需要更新。这样的更新被称为重绘

 

八、什么叫优雅降级和渐进增强?

 

优雅降级:

Web站点在所有新式浏览器中都能正常工作、

如果用户使用的是老式浏览器、

则代码会检查以确认它们是否能正常工作、

由于IE独特的盒模型布局问题、

针对不同版本的IE的hack实践过优雅降级了、

为那些无法支持功能的浏览器增加候选方案、

使之在旧式浏览器上以某种形式降级体验却不至于完全失效。

 

渐进增强:

从被所有浏览器支持的基本功能开始、

逐步地添加那些只有新式浏览器才支持的功能、

向页面增加无害于基础浏览器的额外样式和功能的、

当浏览器支持时,它们会自动地呈现出来并发挥作用。

以上是关于最全前端面试集合的主要内容,如果未能解决你的问题,请参考以下文章

最全前端面试集合

最全前端面试集合

目前最全的前端开发面试题及答案

最全前端面试题

最全前端面试题

来自大厂 300+ 道前端面试题大全附答案(整理版)+前端常见算法面试题~~最全面详细