一html
1.1 盒模型 -> 標(biāo)準(zhǔn)盒、IE盒 -> 如何解決IE問題 -> DTD是什么 -> Html4中標(biāo)準(zhǔn)模式、兼容模式
1.2 布局( 相對、絕對、固定布局) -> flex,響應(yīng)式框架(bootstrap等)
1.3 float -> 清除浮動 -> BFC、IFC
1.5 語義化 -> H5元素(canvas、video、localstorage、sessionstorage)
1.6 瀏覽器的加載順序 ->(Dom tree,CSSOM, RenderTree,layout,painting) ->? 首屏?xí)r間、白屏?xí)r間 ->如何用chrome的performance做性能優(yōu)化
1.7 前端優(yōu)化 -> yahoo 35 條軍規(guī)
二? JavaScript
2.1 JS內(nèi)存模型 -> 值傳遞、引用傳遞 -> typeof
2.2 null、undefined? -> == && === (嚴(yán)格模式、隱式轉(zhuǎn)化)
2.3 對象 -> 為何需要對象、產(chǎn)生對象的幾種方式 -> new運算符-> 構(gòu)造函數(shù)、this -> 原型、原型鏈 ->繼承的五種方法 -> 源碼、組件應(yīng)用(underscore源碼、做過組件沒)
2.4 匿名函數(shù)和閉包 -> 閉包是用來做什么的 ->jQuery源碼-> 循環(huán)中的閉包 -> 異步調(diào)用中的閉包 ->ES6有什么新的解決方案 -> let的實現(xiàn)原理JavaScript匿名函數(shù)以及在循環(huán)中的匿名函數(shù) - 大雜燴 - SegmentFault
2.5 事件的冒泡機(jī)制 -> IE的冒泡機(jī)制區(qū)別
2.6 ajax-> 手寫原生ajax -> Http協(xié)議 ->? tcp/ip的網(wǎng)絡(luò)模型、三次握手、狀態(tài)碼 -> 請說出HTTP訪問的25個步驟(變態(tài)指數(shù)滿星)當(dāng)你在瀏覽器中輸入 baidu.com 并且按下回車后發(fā)生了什么?
2.7 跨域 Jsonp
2.8 cookie、session、nodejs session 原理及實戰(zhàn)
三 Nodejs
3.1 Nodejs是什么? -> 規(guī)范CMD, AMD ->模塊(import,export、file)Javascript的模塊管理 CMD AMD ES7等
3.2 單進(jìn)程 -> 何為進(jìn)程、線程、區(qū)別 -> 為何js是單進(jìn)程 -> eventloop->回掉-> 回掉地獄 -> promise ->手寫promise實現(xiàn) -> generator ->手寫generator實現(xiàn) ->aysnc -> 手寫 async源碼
3.3 測試-> 黑盒, 白盒 ->mocha
3.4 打包工具 -> webpack等
3.4 上線 -> linux,shell -> pm2
四 算法
4.1 二叉樹 -> 樹的各種操作:深度、廣度、翻轉(zhuǎn) -> B+樹、紅黑樹等 -> 數(shù)據(jù)庫索引
4.2 排序 -> 冒泡、快速、歸并排序、堆排序-> 冒泡排序的優(yōu)化、快速排序的四層優(yōu)化
4.3 搜索 -> 二分搜索
4.4 動態(tài)規(guī)劃 -> 背包問題、最長非遞增字符串、臺階問題
4.5 遞歸 -> N!、斐波那契級數(shù)、樹的各種遍歷
變量生命周期
全局變量和你的應(yīng)用程序,你的window,你的webpage同生,局部變量短命,當(dāng)函數(shù)調(diào)用時被造就,當(dāng)調(diào)用結(jié)束被刪除。
This關(guān)鍵字
在js中,被稱作this的東西,是一個“擁有”js代碼的對象。this的值,當(dāng)用在一個函數(shù)里,是一個”擁有“函數(shù)的對象;當(dāng)用在一個對象里,是對象本身。this關(guān)鍵字,在一個對象構(gòu)造器里邊沒本身有值,僅僅是新對象的替代品。當(dāng)構(gòu)造器被用于構(gòu)造對象時this的值會變成新對象。
注意:this不是一個變量,它是關(guān)鍵字,你不能改變this值。
js中的面向?qū)ο?/p>
面向?qū)ο笤趈s里有兩個層次的含義,第一種是會使用面向?qū)ο蠛瘮?shù);第二種是構(gòu)造面向?qū)ο蠛瘮?shù)。
js也是面向?qū)ο笾械囊环N寫法,不過相對于java,js是一種弱數(shù)據(jù)類型,并不是嚴(yán)格意義上的面向?qū)ο?。但是jq就是使用面向?qū)ο蟮膶懛▌?chuàng)作出來的js庫。
1. 抽象:抓住核心問題?
2. 封裝:即把能夠?qū)崿F(xiàn)功能的函數(shù)寫成封裝起來,在面向?qū)ο罄锝凶龇椒?。簡單來說就是把實現(xiàn)功能的函數(shù)寫成方法。?
3. 繼承:繼承的意思是,在實現(xiàn)同一種功能的前提下,新對象可以使用舊對象的屬性和方法。?
4. 多態(tài):一個變量在引用不同類型的情況下的不同狀態(tài)。多態(tài)開發(fā)在開發(fā)組件和模塊化開發(fā)的時候能節(jié)省很多資源。