[关闭]
@gpzjyw 2016-08-19T01:44:50.000000Z 字数 4327 阅读 363

Front-End Comprehensive

Front-End Interview Solutions


顶层设计

模块化

JavaScript模块化

为什么要模块化

模块化的价值

前端模块化如何实现

如何整合一个模块

本质是使用一个全局变量将其代码封装在一个函数中,从而利用闭包作用域为自身创建一个私有的命名空间。

模块规范

对比

Commonjs

优点:

缺点:

AMD(Asynchronous Module Definition)

异步模块定义规范,制定了定义模块的规则,这样模块和模块的依赖可以被异步加载;

RequireJS

优点:

缺点:

CMD(Common Module Definition)

通用模块定义规范

Sea.js

AMD与CMD的区别

Require.js的实现原理

  1. 把传给define的函数用toString转成字符串
  2. 对函数字符串正则匹配require(xxx),发现依赖项
  3. 加载依赖项,并对加载下来的依赖从步骤1执行递归
  4. 所有依赖加载并执行完毕后,执行函数体。

描述一下前端开发的工作流程

如何优化网站资源存放

减少页面加载时间的方法

一个页面从输入 URL 到页面加载完的过程中都发生了什么事情

参考博客1

参考博客2

  1. 输入URL;
  2. 浏览器通过DNS查询域名对应的IP地址;
  3. 浏览器向服务器发送一个HTTP请求;
  4. 返回请求表示重定向,定位至新的URL;
  5. 服务器响应客户端请求;
  6. 服务器返回HTML文本;
  7. 浏览器引擎开始解析HTML文件;
  8. 浏览器根据HTML中的内容,发起同步请求和异步请求。

前端架构

参考博客

MVC:

View 接受指令

Controller 直接接受指令

backbone实现

MVP:

将 Controller 改名为 Presenter,改变通信方向。

MVP 结构

MVVM:

双向绑定(data-binding):View 的变动,自动反映在 ViewModel,反之亦然

此处输入图片的描述

MVVM框架对比

参考博客1
参考博客2

Angular

React

Vue

模板渲染

前端模板渲染:jst,异步

后端模板渲染:freemarker,同步

网络通信

HTTP状态码

两种HTTP请求

参考资料

GET-从指定的资源请求数据:

POST-向指定的资源提交要被处理的数据:

DNS解析方式

递归解析。

迭代解析。

如何设置浏览器缓存

参考自《Web缓存》

页面的缓存状态由HTTP头部决定,参数有四种,如下:

Web缓存:数据库缓存、代理服务器缓存、CDN缓存、浏览器缓存。

TCP、HTTP、WebSocket、Socket.IO

TCP:传输层通信协议;

HTTP:应用层通信协议,应用广泛;

WebSocket:在TCP基础上实现的通信协议,与HTTP同属应用层,提供了一种全双工的通信方式,适用于对实时性要求高的场合,实现了服务端向客户端推送的功能;

Socket.IO:一个面向实时Web应用的JavaScript库,可在服务端和客户端运行。支持WebSocket协议,也可回退到Adobe Flash Sockets,JSONP拉取,Ajax长轮询。

WebSocket如何兼容低浏览器

前端解决方案

单页Web应用如何SEO

搜索引擎无法识别JavaScript,通过Server生成一静态页面供搜索引擎抓取。

谈谈以前端角度出发做好SEO需要考虑什么

Ajax多任务同时调度解决方案

冷门知识点

浏览器对同一个域名的并发请求数量

一般是 6 个,可同时向一个域名发起 6 个请求。

浏览器一次最多能从一个给定域下载多少资源

页面的可用性和可访问性

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注