add file:变量提升
This commit is contained in:
61
04-前端基本功:CSS和DOM练习/others/11-00.JavaScript高级面试:前言.md
Normal file
61
04-前端基本功:CSS和DOM练习/others/11-00.JavaScript高级面试:前言.md
Normal file
@@ -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其他常用功能
|
||||
|
||||
## 异步
|
||||
|
||||
|
||||
- 什么是单线程,和异步有什么关系
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
86
04-前端基本功:CSS和DOM练习/others/11-01.ES6:模块化的使用和编译环境.md
Normal file
86
04-前端基本功:CSS和DOM练习/others/11-01.ES6:模块化的使用和编译环境.md
Normal file
@@ -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:
|
||||
|
||||
39
04-前端基本功:CSS和DOM练习/others/11-02.ES6.md
Normal file
39
04-前端基本功:CSS和DOM练习/others/11-02.ES6.md
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
|
||||
## Class和普通构造函数有何区别
|
||||
|
||||
> 我们经常会用ES6中的Class来代替JS中的构造函数做开发。
|
||||
|
||||
|
||||
- Class 在语法上更加贴合面向对象的写法
|
||||
|
||||
- Class 实现继承更加易读、易理解
|
||||
|
||||
|
||||
|
||||
- 更易于写 java 等后端语言的使用
|
||||
|
||||
|
||||
- 本质还是语法糖,使用 prototype
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
56
04-前端基本功:CSS和DOM练习/others/15-虚拟DOM.md
Normal file
56
04-前端基本功:CSS和DOM练习/others/15-虚拟DOM.md
Normal file
@@ -0,0 +1,56 @@
|
||||
|
||||
|
||||
## 前言
|
||||
|
||||
|
||||
|
||||
vdom 是 vue 和 React 的**核心**,先讲哪个都绕不开它。
|
||||
|
||||
vdom 比较独立,使用也比较简单。
|
||||
|
||||
如果面试问到 vue 和 React 和实现,免不了问 vdom:
|
||||
|
||||
- vdom 是什么?为何会存在 vdom?
|
||||
|
||||
- vdom 的如何应用,核心 API 是什么
|
||||
|
||||
- 介绍一下 diff 算法
|
||||
|
||||
|
||||
## 什么是 vdom
|
||||
|
||||
|
||||
### 什么是 vdom
|
||||
|
||||
DOM操作是昂贵的。
|
||||
|
||||
步骤一:用JS对象模拟DOM树
|
||||
|
||||
步骤二:比较两棵虚拟DOM树的差异
|
||||
|
||||
步骤三:把差异应用到真正的DOM树上
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
94
04-前端基本功:CSS和DOM练习/others/16-01.MVVM.md
Normal file
94
04-前端基本功:CSS和DOM练习/others/16-01.MVVM.md
Normal file
@@ -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:体验无要求、不常用(比举报、反馈等)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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?使用过哪些?
|
||||
|
||||
新元素:
|
||||
|
||||
- `<section>`、`<footer>` 和 `<header>`等
|
||||
|
||||
|
||||
新的api:
|
||||
|
||||
- 网络存储: sessionStorage 和 localStorage
|
||||
|
||||
|
||||
|
||||
参考链接:
|
||||
|
||||
- [笔记:阿里、网易、滴滴共十次前端面试碰到的问题](https://zhoukekestar.github.io/notes/2017/06/07/interview-answers.html)
|
||||
|
||||
|
||||
## CSS
|
||||
|
||||
### 如何让一个div元素隐藏?你能想到的方式有几种?
|
||||
|
||||
-
|
||||
|
||||
|
||||
|
||||
@@ -47,6 +71,43 @@ cookie用于存储时的缺点:
|
||||
|
||||
|
||||
|
||||
## 网络相关
|
||||
|
||||
### 浏览器输入url到显示内容,有哪些过程
|
||||
|
||||
|
||||
(1)浏览器解析url。包括:协议、域名、端口号、资源路径、参数查询
|
||||
|
||||
(2)DNS解析
|
||||
|
||||
(3)TCP握手
|
||||
|
||||
(4)HTTP请求
|
||||
|
||||
(5)服务器处理请求
|
||||
|
||||
(6)浏览器渲染:DOM tree、CSS rule tree、render tree。
|
||||
|
||||
(7)display
|
||||
|
||||
|
||||
参考链接:
|
||||
|
||||
|
||||
- [笔记:阿里、网易、滴滴共十次前端面试碰到的问题](https://zhoukekestar.github.io/notes/2017/06/07/interview-answers.html)
|
||||
|
||||
- [what-happens-when-zh_CN](https://github.com/skyline75489/what-happens-when-zh_CN#dns)
|
||||
|
||||
|
||||
- [码农翻身 | 小白科普:从输入网址到最后浏览器呈现页面内容,中间发生了什么?](https://mp.weixin.qq.com/s/3_DZKSP492uq9RfQ3eW4_A)
|
||||
|
||||
- 从输入URL到页面加载发生了什么:<https://segmentfault.com/a/1190000006879700>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## GitHub
|
||||
@@ -67,11 +128,6 @@ cookie用于存储时的缺点:
|
||||
|
||||
|
||||
|
||||
## 浏览器输入hrl,有哪些过程
|
||||
|
||||
- [码农翻身 | 小白科普:从输入网址到最后浏览器呈现页面内容,中间发生了什么?](https://mp.weixin.qq.com/s/3_DZKSP492uq9RfQ3eW4_A)
|
||||
|
||||
- 从输入URL到页面加载发生了什么:<https://segmentfault.com/a/1190000006879700>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -28,4 +28,15 @@
|
||||
|
||||
- [2017年BAT面试题大全集](http://www.bijishequ.com/detail/421600?p=)
|
||||
|
||||
- [bat前端面试内容记录](https://www.jianshu.com/p/d94d5290328c)
|
||||
- [bat前端面试内容记录](https://www.jianshu.com/p/d94d5290328c)
|
||||
|
||||
|
||||
|
||||
### 2018-03-18
|
||||
|
||||
- [笔记:阿里、网易、滴滴共十次前端面试碰到的问题](https://zhoukekestar.github.io/notes/2017/06/07/interview-answers.html)
|
||||
|
||||
- [笔记补充:阿里、网易、滴滴共十次前端面试碰到的问题](https://zhoukekestar.github.io/notes/2017/07/06/interview-answers.html)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user