From 575b853d3187c458270671cd6bea741b13227102 Mon Sep 17 00:00:00 2001 From: qianguyihao Date: Wed, 21 Mar 2018 21:45:10 +0800 Subject: [PATCH] =?UTF-8?q?add=20file:=E5=8F=98=E9=87=8F=E6=8F=90=E5=8D=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03-JavaScript(二)/06-作用域和闭包.md | 6 +- ...5-创建对象和原型链.md => 05-01.创建对象和原型链.md} | 0 ...的几种方式.md => 05-02.面向对象:类的定义和继承的几种方式.md} | 0 .../others/{08-跨域通信类.md => 06-跨域通信类.md} | 0 ...全问题:CSRF和XSS.md => 07-安全问题:CSRF和XSS.md} | 0 .../others/{10-算法问题.md => 08-算法问题.md} | 0 .../{12-浏览器渲染机制.md => 09-01.浏览器渲染机制.md} | 0 ...:异步和单线程.md => 09-02.js运行机制:异步和单线程.md} | 0 .../{14-页面性能优化.md => 10-01.页面性能优化.md} | 0 .../{15-前端错误监控.md => 10-02.前端错误监控.md} | 0 .../others/11-00.JavaScript高级面试:前言.md | 61 +++ .../others/11-01.ES6:模块化的使用和编译环境.md | 86 +++++ .../others/11-02.ES6.md | 39 ++ .../others/15-虚拟DOM.md | 56 +++ .../others/16-01.MVVM.md | 94 +++++ .../others/21-面试题整理 by smyhvae.md | 70 +++- .../others/22-网友面经.md | 13 +- 09-Node.js/01-Node.js入门.md | 2 +- 10-ES6/01-ES6的介绍和常用语法.md | 10 + 10-ES6/02-ES6的常用语法.md | 67 +++- {12-前端 => 17-前端进阶}/01-前端的几道题目.md | 2 +- {12-前端 => 17-前端进阶}/04-前端监控技术.md | 0 .../09-lazyload&防抖动和节流阀.md | 0 20-题目/01-变量提升.md | 360 ++++++++++++++++++ {13-前端 => 20-题目}/清单.md | 0 .../20180116-博客园:一年经验初探阿里巴巴前端社招.md | 0 {13-前端 => 20-题目}/网友面经/面经链接推荐.md | 0 {13-前端 => 20-题目}/链接推荐.md | 12 +- ...e基础语法.md => 01-Vue基础语法:系统指令.md} | 73 +++- 21-Vue基础/02-Vue.md | 8 + 22-Vue框架-组件化思维/01-项目介绍.md | 2 +- 推荐链接.md | 6 + 32 files changed, 930 insertions(+), 37 deletions(-) rename 04-前端基本功:CSS和DOM练习/others/{05-创建对象和原型链.md => 05-01.创建对象和原型链.md} (100%) rename 04-前端基本功:CSS和DOM练习/others/{07-面向对象:类的定义和继承的几种方式.md => 05-02.面向对象:类的定义和继承的几种方式.md} (100%) rename 04-前端基本功:CSS和DOM练习/others/{08-跨域通信类.md => 06-跨域通信类.md} (100%) rename 04-前端基本功:CSS和DOM练习/others/{09-安全问题:CSRF和XSS.md => 07-安全问题:CSRF和XSS.md} (100%) rename 04-前端基本功:CSS和DOM练习/others/{10-算法问题.md => 08-算法问题.md} (100%) rename 04-前端基本功:CSS和DOM练习/others/{12-浏览器渲染机制.md => 09-01.浏览器渲染机制.md} (100%) rename 04-前端基本功:CSS和DOM练习/others/{13-js运行机制:异步和单线程.md => 09-02.js运行机制:异步和单线程.md} (100%) rename 04-前端基本功:CSS和DOM练习/others/{14-页面性能优化.md => 10-01.页面性能优化.md} (100%) rename 04-前端基本功:CSS和DOM练习/others/{15-前端错误监控.md => 10-02.前端错误监控.md} (100%) create mode 100644 04-前端基本功:CSS和DOM练习/others/11-00.JavaScript高级面试:前言.md create mode 100644 04-前端基本功:CSS和DOM练习/others/11-01.ES6:模块化的使用和编译环境.md create mode 100644 04-前端基本功:CSS和DOM练习/others/11-02.ES6.md create mode 100644 04-前端基本功:CSS和DOM练习/others/15-虚拟DOM.md create mode 100644 04-前端基本功:CSS和DOM练习/others/16-01.MVVM.md rename {12-前端 => 17-前端进阶}/01-前端的几道题目.md (99%) rename {12-前端 => 17-前端进阶}/04-前端监控技术.md (100%) rename {12-前端 => 17-前端进阶}/09-lazyload&防抖动和节流阀.md (100%) create mode 100644 20-题目/01-变量提升.md rename {13-前端 => 20-题目}/清单.md (100%) rename {13-前端 => 20-题目}/网友面经/20180116-博客园:一年经验初探阿里巴巴前端社招.md (100%) rename {13-前端 => 20-题目}/网友面经/面经链接推荐.md (100%) rename {13-前端 => 20-题目}/链接推荐.md (62%) rename 21-Vue基础/{01-Vue基础语法.md => 01-Vue基础语法:系统指令.md} (77%) create mode 100644 21-Vue基础/02-Vue.md diff --git a/03-JavaScript(二)/06-作用域和闭包.md b/03-JavaScript(二)/06-作用域和闭包.md index bbec783..7797237 100644 --- a/03-JavaScript(二)/06-作用域和闭包.md +++ b/03-JavaScript(二)/06-作用域和闭包.md @@ -206,7 +206,7 @@ console.log(name); 全局作用域中的变量都是全局变量,在页面的任意的部分都可以访问到。 -**变量的声明提前:** +**变量的声明提前:**(变量提升) 使用var关键字声明的变量( 比如 `var a = 1`),**会在所有的代码执行之前被声明**(但是不会赋值),但是如果声明变量时不是用var关键字(比如直接写`a = 1`),则变量不会被声明提前。 @@ -247,8 +247,6 @@ console.log(name); 所以说,下面的例子,会报错: - - ![](http://img.smyhvae.com/20180314_2145.png) ### 函数作用域 @@ -266,7 +264,7 @@ console.log(name); 在函数作用域也有声明提前的特性: -- 使用var关键字声明的变量,会在函数中所有的代码执行之前被声明 +- 使用var关键字声明的变量,是在函数作用域内有效,而且会在函数中所有的代码执行之前被声明 - 函数声明也会在函数中所有的代码执行之前执行 diff --git a/04-前端基本功:CSS和DOM练习/others/05-创建对象和原型链.md b/04-前端基本功:CSS和DOM练习/others/05-01.创建对象和原型链.md similarity index 100% rename from 04-前端基本功:CSS和DOM练习/others/05-创建对象和原型链.md rename to 04-前端基本功:CSS和DOM练习/others/05-01.创建对象和原型链.md diff --git a/04-前端基本功:CSS和DOM练习/others/07-面向对象:类的定义和继承的几种方式.md b/04-前端基本功:CSS和DOM练习/others/05-02.面向对象:类的定义和继承的几种方式.md similarity index 100% rename from 04-前端基本功:CSS和DOM练习/others/07-面向对象:类的定义和继承的几种方式.md rename to 04-前端基本功:CSS和DOM练习/others/05-02.面向对象:类的定义和继承的几种方式.md diff --git a/04-前端基本功:CSS和DOM练习/others/08-跨域通信类.md b/04-前端基本功:CSS和DOM练习/others/06-跨域通信类.md similarity index 100% rename from 04-前端基本功:CSS和DOM练习/others/08-跨域通信类.md rename to 04-前端基本功:CSS和DOM练习/others/06-跨域通信类.md diff --git a/04-前端基本功:CSS和DOM练习/others/09-安全问题:CSRF和XSS.md b/04-前端基本功:CSS和DOM练习/others/07-安全问题:CSRF和XSS.md similarity index 100% rename from 04-前端基本功:CSS和DOM练习/others/09-安全问题:CSRF和XSS.md rename to 04-前端基本功:CSS和DOM练习/others/07-安全问题:CSRF和XSS.md diff --git a/04-前端基本功:CSS和DOM练习/others/10-算法问题.md b/04-前端基本功:CSS和DOM练习/others/08-算法问题.md similarity index 100% rename from 04-前端基本功:CSS和DOM练习/others/10-算法问题.md rename to 04-前端基本功:CSS和DOM练习/others/08-算法问题.md diff --git a/04-前端基本功:CSS和DOM练习/others/12-浏览器渲染机制.md b/04-前端基本功:CSS和DOM练习/others/09-01.浏览器渲染机制.md similarity index 100% rename from 04-前端基本功:CSS和DOM练习/others/12-浏览器渲染机制.md rename to 04-前端基本功:CSS和DOM练习/others/09-01.浏览器渲染机制.md diff --git a/04-前端基本功:CSS和DOM练习/others/13-js运行机制:异步和单线程.md b/04-前端基本功:CSS和DOM练习/others/09-02.js运行机制:异步和单线程.md similarity index 100% rename from 04-前端基本功:CSS和DOM练习/others/13-js运行机制:异步和单线程.md rename to 04-前端基本功:CSS和DOM练习/others/09-02.js运行机制:异步和单线程.md diff --git a/04-前端基本功:CSS和DOM练习/others/14-页面性能优化.md b/04-前端基本功:CSS和DOM练习/others/10-01.页面性能优化.md similarity index 100% rename from 04-前端基本功:CSS和DOM练习/others/14-页面性能优化.md rename to 04-前端基本功:CSS和DOM练习/others/10-01.页面性能优化.md diff --git a/04-前端基本功:CSS和DOM练习/others/15-前端错误监控.md b/04-前端基本功:CSS和DOM练习/others/10-02.前端错误监控.md similarity index 100% rename from 04-前端基本功:CSS和DOM练习/others/15-前端错误监控.md rename to 04-前端基本功:CSS和DOM练习/others/10-02.前端错误监控.md diff --git a/04-前端基本功:CSS和DOM练习/others/11-00.JavaScript高级面试:前言.md b/04-前端基本功:CSS和DOM练习/others/11-00.JavaScript高级面试:前言.md new file mode 100644 index 0000000..f32c4fe --- /dev/null +++ b/04-前端基本功:CSS和DOM练习/others/11-00.JavaScript高级面试:前言.md @@ -0,0 +1,61 @@ + + +## 前言 + + +一、基础知识: + +- ES 6常用语法:class 、module、Promise等 + +- 原型高级应用:结合 jQuery 和 zepto 源码 + +- 异步全面讲解:从原理到 jQuery 再到 Promise + +二、框架原理: + +- 虚拟DOM:存在价值、如何使用、diff算法 + +- MVVM vue:MVVM、vue响应式、模板解析、渲染 + +- 组件化 React:组件化、JSX、vdom、setState + +三、混合开发: + +- hybrid + +- H5 + +- 前端客户端通讯 + + +内容优势 + +- 面试官爱问“源码”、“实现”。 + +- 介绍常用框架实现原理 + +- 介绍hybrid原理和应用 + + + + +## ES6 + + +- 模块化的使用和编译环境 + +- Class与JS构造函数的区别 + +- Promise的用法 + +- ES6其他常用功能 + +## 异步 + + +- 什么是单线程,和异步有什么关系 + + + + + diff --git a/04-前端基本功:CSS和DOM练习/others/11-01.ES6:模块化的使用和编译环境.md b/04-前端基本功:CSS和DOM练习/others/11-01.ES6:模块化的使用和编译环境.md new file mode 100644 index 0000000..46e6125 --- /dev/null +++ b/04-前端基本功:CSS和DOM练习/others/11-01.ES6:模块化的使用和编译环境.md @@ -0,0 +1,86 @@ + + +## 前言 + + +### ES6的主要内容 + +- 模块化的使用和编译环境 + +- Class与JS构造函数的区别 + +- Promise的用法 + +- ES6其他常用功能 + +本文来讲“模块化的使用和编译环境”。 + +### 面试常见问题 + +- ES6 模块化如何使用,开发环境如何打包 + +- Class 和普通构造函数有何区别 + +- Promise 的基本使用和原理 + +- 总结一下 ES6 其他常用功能 + + +### ES6的现状 + +- 开发环境已经普及使用 + +- 浏览器环境却支持不好(需要开发环境编译) + +- 内容很多,重点了解常用语法 + +- 面试:开发环境的使用 + 重点语法的掌握 + + +## 模块化的基本语法 + + +(1)util1.js: + +```javascript +export default var a = 100; + +export function foo { + console.log('util1-foo'); +} +``` + +`export default`命令用于指定模块的默认输出。显然,一个模块只能有一个默认输出。 + +有了默认输出之后,其他模块加载该模块时,import命令可以为该匿名变量/函数,起**任意的名字**。 + +上面的代码中,默认输出是一个变量。当然,我们也可以换成**默认输出一个匿名函数**: + +```javascript +export default function() { + console.log('util1-function'); +} +``` + + +(2)util2.js: + +```javascript + +export var myUtil2 = 'this is util2'; + +export function fn1() { + console.log('util2-fn1'); +} + +export function fn2() { + console.log('util2-fn2'); +} +``` + + +上方代码中,我把一个变量和两个函数作为了导出。 + + +(3)index.js: + diff --git a/04-前端基本功:CSS和DOM练习/others/11-02.ES6.md b/04-前端基本功:CSS和DOM练习/others/11-02.ES6.md new file mode 100644 index 0000000..a4b4c28 --- /dev/null +++ b/04-前端基本功:CSS和DOM练习/others/11-02.ES6.md @@ -0,0 +1,39 @@ + + +## Class和普通构造函数有何区别 + +> 我们经常会用ES6中的Class来代替JS中的构造函数做开发。 + + +- Class 在语法上更加贴合面向对象的写法 + +- Class 实现继承更加易读、易理解 + + + +- 更易于写 java 等后端语言的使用 + + +- 本质还是语法糖,使用 prototype + + + + + + + + + + + + + + + + + + + + + + diff --git a/04-前端基本功:CSS和DOM练习/others/15-虚拟DOM.md b/04-前端基本功:CSS和DOM练习/others/15-虚拟DOM.md new file mode 100644 index 0000000..a169809 --- /dev/null +++ b/04-前端基本功:CSS和DOM练习/others/15-虚拟DOM.md @@ -0,0 +1,56 @@ + + +## 前言 + + + +vdom 是 vue 和 React 的**核心**,先讲哪个都绕不开它。 + +vdom 比较独立,使用也比较简单。 + +如果面试问到 vue 和 React 和实现,免不了问 vdom: + +- vdom 是什么?为何会存在 vdom? + +- vdom 的如何应用,核心 API 是什么 + +- 介绍一下 diff 算法 + + +## 什么是 vdom + + +### 什么是 vdom + +DOM操作是昂贵的。 + +步骤一:用JS对象模拟DOM树 + +步骤二:比较两棵虚拟DOM树的差异 + +步骤三:把差异应用到真正的DOM树上 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/04-前端基本功:CSS和DOM练习/others/16-01.MVVM.md b/04-前端基本功:CSS和DOM练习/others/16-01.MVVM.md new file mode 100644 index 0000000..d3df9d8 --- /dev/null +++ b/04-前端基本功:CSS和DOM练习/others/16-01.MVVM.md @@ -0,0 +1,94 @@ + + +## 前言 + +MVVM的常见问题: + +- 如何理解MVVM + +- 如何实现MVVM + +- 是否解读过Vue的源码 + + +题目: + +- 说一下使用 jQuery 和使用框架的区别 + + +- 说一下对 MVVM 的理解 + + +- vue 中如何实现响应式 + + +- vue 中如何解析模板 + +- vue 的整个实现流程 + + + +## 说一下使用 jQuery 和使用框架的区别 + + + + +## MVVM / Vue + + +## MVVM模式 + +- Model:负责数据存储 + +- View:负责页面展示 + +- View Model:负责业务逻辑处理(比如Ajax请求等),对数据进行加工后交给视图展示 + +数据驱动视图,只关心数据变化,DOM操作被封装。 + +### MVVM / Vue的三要素 + +- **响应式**:vue 如何监听到 data 的每个属性变化? + +- **模板引擎**:vue 的模板如何被解析,指令如何处理? + + +- **渲染**:vue 的模板如何被渲染成 html ?以及渲染过程 + + + +### 什么是虚拟 DOM + +传统的web开发,是利用 jQuery操作DOM,这是非常耗资源的。 + +我们可以在 JS 的内存里构建类似于DOM的对象,去拼装数据,拼装完整后,把数据整体解析,一次性插入到html里去。这就形成了虚拟 DOM。 + + +Vue1.0没有虚拟DOM,Vue2.0改成了基于虚拟DOM。 + + +### 如何理解MVC + +C指的是Controller。控制器能够控制视图的变化,也能控制数据的变化。 + +单项通信。一般情况下是:view 发出命令给控制器,控制器处理业务逻辑后控制 Model,Model再去改 view。 + + +## hybrid + +### 使用场景 + +不是所有的场景都适合用 hybrid: + +- 使用原生应用:体验要求极致,变化不频繁(如头条的首页) + +- 使用 hybrid:体验要求高,变化频繁(如新闻详情页) + +- 使用H5:体验无要求、不常用(比举报、反馈等) + + + + + + + diff --git a/04-前端基本功:CSS和DOM练习/others/21-面试题整理 by smyhvae.md b/04-前端基本功:CSS和DOM练习/others/21-面试题整理 by smyhvae.md index e70377d..5f16ac7 100644 --- a/04-前端基本功:CSS和DOM练习/others/21-面试题整理 by smyhvae.md +++ b/04-前端基本功:CSS和DOM练习/others/21-面试题整理 by smyhvae.md @@ -2,12 +2,14 @@ + + ## JavaScript -### 存储相关:请描述以下cookie、localStorage、sessionStorage的区别。 +### 存储相关:请描述以下cookie、localStorage、sessionStorage的区别 -在H5之前,cookie一直都是本地存储的一个重要的方法。直到后面的两个出现了, 就开始用后面的两个做本地存储。 +> 在H5之前,cookie一直都是本地存储的一个重要的方法。直到后面的两个出现了, 就开始用后面的两个做本地存储。 **1、cookie**: @@ -29,9 +31,31 @@ cookie用于存储时的缺点: +## HTML5 + +### HTML5新增了哪些内容或API?使用过哪些? + +新元素: + +- `
`、`