一html
1.1 盒模型 -> 标准盒、IE盒 -> 如何解决IE问题 -> DTD是什么 -> Html4中标准模式、兼容模式
1.2 布局( 相对、绝对、固定布局) -> flex,响应式框架(bootstrap等)
1.3 float -> 清除浮动 -> BFC、IFC
1.5 语义化 -> H5元素(canvas、video、localstorage、sessionstorage)
1.6 浏览器的加载顺序 ->(Dom tree,CSSOM, RenderTree,layout,painting) -> 首屏时间、白屏时间 ->如何用chrome的performance做性能优化
1.7 前端优化 -> yahoo 35 条军规
二 JavaScript
2.1 JS内存模型 -> 值传递、引用传递 -> typeof
2.2 null、undefined -> == && === (严格模式、隐式转化)
2.3 对象 -> 为何需要对象、产生对象的几种方式 -> new运算符-> 构造函数、this -> 原型、原型链 ->继承的五种方法 -> 源码、组件应用(underscore源码、做过组件没)
2.4 匿名函数和闭包 -> 闭包是用来做什么的 ->jQuery源码-> 循环中的闭包 -> 异步调用中的闭包 ->ES6有什么新的解决方案 -> let的实现原理JavaScript匿名函数以及在循环中的匿名函数 - 大杂烩 - SegmentFault
2.5 事件的冒泡机制 -> IE的冒泡机制区别
2.6 ajax-> 手写原生ajax -> Http协议 -> tcp/ip的网络模型、三次握手、状态码 -> 请说出HTTP访问的25个步骤(变态指数满星)当你在浏览器中输入 baidu.com 并且按下回车后发生了什么?
2.7 跨域 Jsonp
2.8 cookie、session、nodejs session 原理及实战
三 Nodejs
3.1 Nodejs是什么? -> 规范CMD, AMD ->模块(import,export、file)Javascript的模块管理 CMD AMD ES7等
3.2 单进程 -> 何为进程、线程、区别 -> 为何js是单进程 -> eventloop->回掉-> 回掉地狱 -> promise ->手写promise实现 -> generator ->手写generator实现 ->aysnc -> 手写 async源码
3.3 测试-> 黑盒, 白盒 ->mocha
3.4 打包工具 -> webpack等
3.4 上线 -> linux,shell -> pm2
四 算法
4.1 二叉树 -> 树的各种操作:深度、广度、翻转 -> B+树、红黑树等 -> 数据库索引
4.2 排序 -> 冒泡、快速、归并排序、堆排序-> 冒泡排序的优化、快速排序的四层优化
4.3 搜索 -> 二分搜索
4.4 动态规划 -> 背包问题、最长非递增字符串、台阶问题
4.5 递归 -> N!、斐波那契级数、树的各种遍历
变量生命周期
全局变量和你的应用程序,你的window,你的webpage同生,局部变量短命,当函数调用时被造就,当调用结束被删除。
This关键字
在js中,被称作this的东西,是一个“拥有”js代码的对象。this的值,当用在一个函数里,是一个”拥有“函数的对象;当用在一个对象里,是对象本身。this关键字,在一个对象构造器里边没本身有值,仅仅是新对象的替代品。当构造器被用于构造对象时this的值会变成新对象。
注意:this不是一个变量,它是关键字,你不能改变this值。
js中的面向对象
面向对象在js里有两个层次的含义,第一种是会使用面向对象函数;第二种是构造面向对象函数。
js也是面向对象中的一种写法,不过相对于java,js是一种弱数据类型,并不是严格意义上的面向对象。但是jq就是使用面向对象的写法创作出来的js库。
1. 抽象:抓住核心问题
2. 封装:即把能够实现功能的函数写成封装起来,在面向对象里叫做方法。简单来说就是把实现功能的函数写成方法。
3. 继承:继承的意思是,在实现同一种功能的前提下,新对象可以使用旧对象的属性和方法。
4. 多态:一个变量在引用不同类型的情况下的不同状态。多态开发在开发组件和模块化开发的时候能节省很多资源。