2018web前端最新面試題總結(jié)

2018web前端最新面試題總結(jié)

一半等、Html/Css基礎(chǔ)模塊

基礎(chǔ)部分

  1. 什么是HTML筒捺?

    答:

    ? HTML并不是真正的的程序語(yǔ)言缩滨,他是一種 標(biāo) 記 語(yǔ) 言 势就,用來(lái)結(jié)構(gòu)化和含義化你想要放
    在web 網(wǎng)站上的那些內(nèi)容。它由一系列的元素(elements)所組成脉漏,這些元素可以用來(lái)
    封裝你的內(nèi)容中擔(dān)任不同工作的各部分和各個(gè)角色苞冯。

  2. 什么是CSS?

    答:

    ? 就像 HTML侧巨,CSS 也不是真正的編程語(yǔ)言舅锄。它是樣式表語(yǔ)言,也就是說(shuō)司忱,它允許你有
    選擇性的為 HTML 文檔的元素添加樣式皇忿。

  3. 行內(nèi)元素和塊級(jí)元素的具體區(qū)別是什么畴蹭?行內(nèi)元素的padding和margin可設(shè)置嗎?

    答:

    塊級(jí)元素(block)特性:

    總是獨(dú)占一行鳍烁,表現(xiàn)為另起一行開始叨襟,而且其后的元素也必須另起一行顯示;

    寬度(width)、高度(height)老翘、內(nèi)邊距(padding)和外邊距(margin)都可控制;

    內(nèi)聯(lián)元素(inline)特性:

    和相鄰的內(nèi)聯(lián)元素在同一行;

    寬度(width)芹啥、高度(height)、內(nèi)邊距的top/bottom(padding-top/padding-bottom)和外邊距的top/bottom(margin-top/margin-bottom)都不可改變(也就是padding和margin的left和right是可以設(shè)置的)铺峭,就是里面文字或圖片的大小墓怀。

  4. 簡(jiǎn)述一下你對(duì)HTML語(yǔ)義化的理解嗤无?

    答:

    1. HTML語(yǔ)義化讓頁(yè)面的內(nèi)容結(jié)構(gòu)化妄呕,結(jié)構(gòu)更清晰,便于對(duì)瀏覽器布持、搜索引擎解析莉炉;
    2. 即使在沒有樣式CSS 的情況下也能以一種文檔格式顯示钓账,并且是容易閱讀的;
    3. 搜索引擎的爬蟲也依賴于HTML標(biāo)記來(lái)確定上下文和各個(gè)關(guān)鍵字的權(quán)重絮宁,有利于SEO梆暮;
    4. 使閱讀源代碼的人更容易將網(wǎng)站分塊,便于閱讀绍昂、維護(hù)和理解啦粹;
  5. rgba() 和 opacity 設(shè)置透明度的區(qū)別是什么?

    答:

    rgba()和opacity都能實(shí)現(xiàn)透明效果窘游,但最大的不同是opacity作用于元素唠椭,以及元素內(nèi)的所有內(nèi)容的透明度,而rgba()只作用于元素的顏色或其背景色忍饰。(設(shè)置rgba透明的元素的子元素不會(huì)繼承透明效果L吧)

  6. DOCTYPE的作用?

    答:

    1. <!DOCTYPE> 聲明位于文檔中的最前面艾蓝,處于 <html> 標(biāo)簽之前力崇。告知瀏覽器以

    何種模式來(lái)渲染文檔。

    1. 嚴(yán)格模式的排版和 JS 運(yùn)作模式是以該瀏覽器支持的最高標(biāo)準(zhǔn)運(yùn)行赢织。
    2. 在混雜模式中餐曹,頁(yè)面以寬松的向后兼容的方式顯示。模擬老式瀏覽器的行為以防止站

    點(diǎn)無(wú)法工作敌厘。

    1. DOCTYPE 不存在或格式不正確會(huì)導(dǎo)致文檔以混雜模式呈現(xiàn)台猴。
  7. 介紹一下你對(duì)瀏覽器內(nèi)核的理解?都有哪些常見的瀏覽器內(nèi)核?

    答:

    ? 要或者說(shuō)核心的部分是“Rendering Engine”饱狂,可大概譯為“渲染引擎”曹步,不過(guò)我們
    一般習(xí)慣將之稱為“瀏覽器內(nèi)核”。負(fù)責(zé)對(duì)網(wǎng)頁(yè)語(yǔ)法的解釋(如標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)
    應(yīng)用 HTML休讳、JavaScript)并渲染(顯示)網(wǎng)頁(yè)讲婚。 所以,通常所謂的瀏覽器內(nèi)核也就是瀏
    覽器所采用的渲染引擎俊柔,渲染引擎決定了瀏覽器如何顯示網(wǎng)頁(yè)的內(nèi)容以及頁(yè)面的格式信息筹麸。
    不同的瀏覽器內(nèi)核對(duì)網(wǎng)頁(yè)編寫語(yǔ)法的解釋也有不同,因此同一網(wǎng)頁(yè)在不同的內(nèi)核的瀏覽器里
    的渲染(顯示)效果也可能不同雏婶,這也是網(wǎng)頁(yè)編寫者需要在不同內(nèi)核的瀏覽器中測(cè)試網(wǎng)頁(yè)顯
    示效果的原因物赶。
    常見瀏覽器內(nèi)核:
    Trident 內(nèi)核:IE,MaxThon,TT,The World,360,搜狗瀏覽器等。[又稱 MSHTML]
    Gecko內(nèi)核:Netscape6 及以上版本留晚,F(xiàn)F,MozillaSuite/SeaMonkey 等酵紫。
    Presto 內(nèi)核:Opera7及以上。 [Opera內(nèi)核原為:Presto错维,現(xiàn)為奖地、Blink;]
    Webkit 內(nèi)核:Safari,Chrome 等。 [ Chrome 的:Blink(WebKit 的分支)]
    EdgeHTML內(nèi)核:Microsoft Edge赋焕。 [此內(nèi)核其實(shí)是從 MSHTML fork 而來(lái)参歹,刪掉了幾
    乎所有的 IE私有特性

  8. CSS選擇器權(quán)重如何計(jì)算?

    答:

    頁(yè)面顯示樣式的優(yōu)先級(jí)取決于其“特殊性”’隆判,特殊性越高犬庇,就顯示最高的,當(dāng)特殊性相等
    時(shí)蜜氨,顯示后者
    特殊性表述為 4個(gè)部分:0,0,0,0
    一個(gè)選擇器的特殊性如下:

    對(duì)于選擇器是#id的屬性值,特殊性值為:0,1,0,0
    對(duì)于屬性選擇器,class或偽類捎泻,特殊性值為:0,0,1,0
    對(duì)于標(biāo)簽選擇器或偽元素飒炎,特殊性值為:0,0,0,1
    通配符‘*’特殊性值為:0,0,0,0
    內(nèi)聯(lián)樣式特殊性值為:1,0,0,0

  9. 對(duì)WEB標(biāo)準(zhǔn)以及W3C的理解與認(rèn)識(shí)?

    答:

    1. 標(biāo)簽閉合笆豁、標(biāo)簽小寫郎汪、不亂嵌套、提高搜索機(jī)器人搜索幾率闯狱、使用外鏈 css 和 js 腳
      本煞赢、結(jié)構(gòu)行為表現(xiàn)的分離,
    2. 文件下載與頁(yè)面速度更快哄孤、內(nèi)容能被更多的用戶所訪問(wèn)照筑、內(nèi)容能被更廣泛的設(shè)備所
      訪問(wèn)、更少的代碼和組件,
    3. 容易維護(hù)凝危、改版方便波俄,不需要變動(dòng)頁(yè)面內(nèi)容、提供打印版本而不需要復(fù)制內(nèi)容蛾默、提
      高網(wǎng)站易用性懦铺。
  10. CSS中優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)有什么區(qū)別?

答:

? 優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)印象中是隨著css3 流出來(lái)的一個(gè)概念支鸡。由于低級(jí)瀏覽器不支持
css3冬念,但 css3 的效果又太優(yōu)秀不忍放棄,所以在高級(jí)瀏覽中使用 css3 而低級(jí)瀏覽器只保證
最基本的功能牧挣。咋一看兩個(gè)概念差不多急前,都是在關(guān)注不同瀏覽器下的不同體驗(yàn),關(guān)鍵的區(qū)別
是他們所側(cè)重的內(nèi)容浸踩,以及這種不同造成的工作流程的差異叔汁。

“優(yōu)雅降級(jí)”觀點(diǎn)認(rèn)為應(yīng)該針對(duì)那些最高級(jí)、最完善的瀏覽器來(lái)設(shè)計(jì)網(wǎng)站检碗。
“漸進(jìn)增強(qiáng)”觀點(diǎn)則認(rèn)為應(yīng)關(guān)注于內(nèi)容本身据块。

  1. 對(duì)BFC規(guī)范的理解有哪些?

    答:

    1. 定義:

    BFC(Block formatting context)直譯為"塊級(jí)格式化上下文"折剃。它是一個(gè)獨(dú)立的渲染區(qū)域另假,
    只有 Block-level box 參與,它規(guī)定了內(nèi)部的Block-level Box 如何布局怕犁,并且與這個(gè)區(qū)域
    外部毫不相干边篮。
    布局規(guī)則:

    ? A. 內(nèi)部的Box 會(huì)在垂直方向,一個(gè)接一個(gè)地放置奏甫。
    ? B. Box垂直方向的距離由 margin決定戈轿。屬于同一個(gè) BFC的兩個(gè)相鄰 Box的 margin 會(huì)發(fā)
    生重疊。
    ? C. 每個(gè)元素的 margin box 的左邊阵子,與包含塊border box 的左邊相接觸(對(duì)于從左往右的
    格式化思杯,否則相反)。即使存在浮動(dòng)也是如此挠进。
    ? D. BFC 的區(qū)域不會(huì)與 float box 重疊色乾。
    ? E. BFC 就是頁(yè)面上的一個(gè)隔離的獨(dú)立容器,容器里面的子元素不會(huì)影響到外面的元素领突。反
    之也如此暖璧。
    ? F. 計(jì)算 BFC 的高度時(shí),浮動(dòng)元素也參與計(jì)算君旦。

    1. 哪些元素會(huì)生成 BFC:

      A. 根元素
      B. float 屬性不為 none
      C. position為 absolute 或 fixed
      D. display為inline-block澎办, table-cell嘲碱, table-caption, flex浮驳, inline-flex
      F. overflow 不為 visible

  2. 有多少種清除浮動(dòng)的方法悍汛?

    答:

    1. 父級(jí)div定義 height

    原理:父級(jí) div手動(dòng)定義 height,就解決了父級(jí) div無(wú)法自動(dòng)獲取到高度的問(wèn)題至会。 簡(jiǎn)單离咐、
    代碼少、容易掌握 奉件,但只適合高度固定的布局.

    1. 結(jié)尾處加空 div標(biāo)簽 clear:both

    原理:在浮動(dòng)元素的后面添加一個(gè)空div兄弟元素宵蛀,利用 css 提高的clear:both清除浮動(dòng),
    讓父級(jí)div能自動(dòng)獲取到高度 县貌,如果頁(yè)面浮動(dòng)布局多术陶,就要增加很多空 div,讓人感覺很
    不好 .

    1. 父級(jí)div定義 偽類:after 和 zoom

    /清除浮動(dòng)代碼/
    .clearfix:after{
    content:""煤痕;
    display:block梧宫;
    visibility:hidden;
    height:0摆碉;
    line-height:0塘匣;
    clear:both;
    }
    .clearfix{zoom:1}
    原理:IE8以上和非 IE瀏覽器才支持:after巷帝,原理和方法 2有點(diǎn)類似忌卤,zoom(IE專有屬性)
    可解決ie6,ie7 浮動(dòng)問(wèn)題 楞泼,推薦使用驰徊,建議定義公共類,以減少CSS 代碼堕阔。

    1. 父級(jí)div定義 overflow:hidden

    超出盒子部分會(huì)被隱藏棍厂,不推薦使用.

    1. 雙偽元素法:
      .clearfix:before,.clearfix:after {
      content: ""超陆;
      display: block牺弹;
      clear:both;
      }
      .clearfix {
      zoom: 1侥猬;}

實(shí)際工作部分

  1. HTML常見兼容性問(wèn)題例驹?

    答:

    1. 雙邊距BUG float引起的 使用display
    1. 3像素問(wèn)題 使用float引起的 使用dislpay:inline -3px

    2. 超鏈接hover 點(diǎn)擊后失效 使用正確的書寫順序 link visited hover active

    3. Iez-index問(wèn)題 給父級(jí)添加position:relative

    4. Png透明 使用js代碼改

    5. Min-height最小高度 捐韩!Important解決’

    6. select在ie6下遮蓋使用iframe嵌套

    7. 為什么沒有辦法定義1px左右的寬度容器(IE6默認(rèn)的行高造成的退唠,使用over:hidden,zoom:0.08line-height:1px)

    8. IE5-8不支持opacity,解決辦法:

      .opacity{

      ? opacity: 0.4

      ? filter: alpha(opacity=60); /* for IE5-7 */

      ? -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; /* for IE 8*/

      }

    9. IE6不支持PNG透明背景荤胁,解決辦法: IE6下使用gif圖片

  2. 描述一個(gè)"reset"的CSS文件并如何使用它瞧预。知道**normalize.css**嗎?你了解他們的不同之處?

    答:

    ? 重置樣式非常多垢油,凡是一個(gè)前端開發(fā)人員肯定有一個(gè)常用的重置CSS文件并知道如何使用它們盆驹。他們是盲目的在做還是知道為什么這么做呢?原因是不同的瀏覽器對(duì)一些元素有不同的默認(rèn)樣式滩愁,如果你不處理躯喇,在不同的瀏覽器下會(huì)存在必要的風(fēng)險(xiǎn),或者更有戲劇性的性發(fā)生硝枉。

    你可能會(huì)用Normalize來(lái)代替你的重置樣式文件廉丽。它沒有重置所有的樣式風(fēng)格,但僅提供了一套合理的默認(rèn)樣式值妻味。既能讓眾多瀏覽器達(dá)到一致和合理正压,但又不擾亂其他的東西(如粗體的標(biāo)題)。

    在這一方面责球,無(wú)法做每一個(gè)復(fù)位重置焦履。它也確實(shí)有些超過(guò)一個(gè)重置,它處理了你永遠(yuǎn)都不用考慮的怪癖雏逾,像HTML的audio元素不一致或line-height不一致嘉裤。

  3. BFC是什么?

    答:

    BFC(塊級(jí)格式化上下文)校套,一個(gè)創(chuàng)建了新的BFC的盒子是獨(dú)立布局的价脾,盒子內(nèi)元素的布局不會(huì)影響盒子外面的元素。在同一個(gè)BFC中的兩個(gè)相鄰的盒子在垂直方向發(fā)生margin重疊的問(wèn)題

    BFC是指瀏覽器中創(chuàng)建了一個(gè)獨(dú)立的渲染區(qū)域笛匙,該區(qū)域內(nèi)所有元素的布局不會(huì)影響到區(qū)域外元素的布局侨把,這個(gè)渲染區(qū)域只對(duì)塊級(jí)元素起作用

  4. 怎樣實(shí)現(xiàn)三欄布局,兩邊寬度固定妹孙,中間自適應(yīng)秋柄?

    答:

    圣杯布局 雙飛翼布局

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }
    
            #left {
                width: 200px;
                height: 200px;
                float: left;
                background-color: red;
            }
    
            #right {
                width: 150px;
                height: 200px;
                float: right;
                background-color: mistyrose;
            }
    
            #middle {
                height: 200px;
                margin: 0 150px 0 200px;
                background-color: saddlebrown;
                word-break: break-word;
            }
        </style>
    </head>
    <body>
    <div id="content">
        <div id="left">我是左側(cè)內(nèi)容我是左側(cè)內(nèi)容我是左側(cè)內(nèi)容我是左側(cè)內(nèi)容我是左側(cè)內(nèi)容</div>
        <div id="right">我是右側(cè)內(nèi)容我是右側(cè)內(nèi)容我是右側(cè)內(nèi)容我是右側(cè)內(nèi)容我是右側(cè)內(nèi)容我是右側(cè)內(nèi)容</div>
        <div id="middle">我是中間內(nèi)容我是中間內(nèi)容我是中間內(nèi)容我是中間內(nèi)容我是中間內(nèi)容我是中間內(nèi)容我是中間內(nèi)容我是中間內(nèi)容我是中間內(nèi)容我是中間內(nèi)容</div>
    </div>
    </body>
    </html>
    
  5. 精靈圖(CSS Sprites)的優(yōu)點(diǎn)和缺點(diǎn)

    答:

    精靈圖是一種網(wǎng)頁(yè)圖片應(yīng)用處理方式。就是把網(wǎng)頁(yè)中很多小背景圖片整合到一張圖片文件中蠢正,再利用CSS的“background-image”骇笔,“background-repeat”,“background-position”的組合進(jìn)行背景圖顯示及定位嚣崭,達(dá)到顯示某一部分背景圖的效果笨触。

    精靈圖的優(yōu)點(diǎn):

    1. 減少圖片的體積,因?yàn)槊總€(gè)圖片都有一個(gè)頭部信息雹舀,把多個(gè)圖片放到一個(gè)圖片里芦劣,就會(huì)共用同一個(gè)頭部信息,從而減少了字節(jié)數(shù)说榆。
    2. 減少了網(wǎng)頁(yè)的http請(qǐng)求次數(shù)虚吟,從而加快了網(wǎng)頁(yè)加載速度寸认,提高用戶體驗(yàn)。
    3. 解決了網(wǎng)頁(yè)設(shè)計(jì)師在圖片命名上的困擾串慰,只需對(duì)一張集合的圖片上命名就可以了偏塞,不需要對(duì)每一個(gè)小元素進(jìn)行命名,從而提高了網(wǎng)頁(yè)的制作效率邦鲫。
    4. 更換風(fēng)格方便灸叼,只需要在一張或少?gòu)垐D片上修改圖片的顏色或樣式,整個(gè)網(wǎng)頁(yè)的風(fēng)格就可以改變庆捺。維護(hù)起來(lái)更加方便怜姿。

    精靈圖的缺點(diǎn):

    1. 在圖片合并的時(shí)候,你要把多張圖片有序的合理的合并成一張圖片疼燥,還要留好足夠的空間沧卢,防止板塊內(nèi)出現(xiàn)不必要的背景;這些還好醉者,最痛苦的是在寬屏但狭,高分辨率的屏幕下的自適應(yīng)頁(yè)面,你的圖片如果不夠?qū)捛思矗苋菀壮霈F(xiàn)背景斷裂立磁;
    2. 在開發(fā)的時(shí)候比較麻煩,你要通過(guò)photoshop或其他工具測(cè)量計(jì)算每一個(gè)背景單元的精確位置剥槐,這是針線活唱歧,沒什么難度,但是很繁瑣粒竖;
    3. 在維護(hù)的時(shí)候比較麻煩颅崩,如果頁(yè)面背景有少許改動(dòng),一般就要改這張合并的圖片蕊苗,無(wú)需改的地方最好不要?jiǎng)友睾螅@樣避免改動(dòng)更多的css,如果在原來(lái)的地方放不下朽砰,又只能(最好)往下加圖片尖滚,這樣圖片的字節(jié)就增加了,還要改動(dòng)css瞧柔。
    4. 精靈圖不能隨意改變大小和顏色漆弄。精靈圖改變大小會(huì)失真模糊,降低用戶體驗(yàn)造锅,css3新屬性可以改變精靈圖顏色撼唾,但是比較麻煩,并且新屬性有兼容問(wèn)題”刚溃現(xiàn)在一般都是用web字體(圖標(biāo)字體)來(lái)代替精靈圖券坞。

二、JavaScript基礎(chǔ)模塊

基礎(chǔ)部分

  1. JS中有哪些數(shù)據(jù)類型肺素?

    答:

    簡(jiǎn)單數(shù)據(jù)類型:Undefined恨锚、Null、Boolean倍靡、Number 和String猴伶。
    復(fù)雜數(shù)據(jù)類型:Object

  2. "==" 和 "===" 的區(qū)別?

    答:

    前者會(huì)自動(dòng)轉(zhuǎn)換類型,而后者不會(huì)塌西。

    前者比較的是值他挎,后者比較的是值和類型。

  3. JS中的常用內(nèi)置對(duì)象有哪些捡需?并列舉該對(duì)象的常用方法办桨?

    答:

    1. Arguments 函數(shù)參數(shù)集合

      arguments[ ] 函數(shù)參數(shù)的數(shù)組

      Arguments 一個(gè)函數(shù)的參數(shù)和其他屬性

      Arguments.callee 當(dāng)前正在運(yùn)行的函數(shù)

      Arguments.length 傳遞給函數(shù)的參數(shù)的個(gè)數(shù)

    2. Array 數(shù)組

      length屬性 動(dòng)態(tài)獲取數(shù)組長(zhǎng)度

      join() 將一個(gè)數(shù)組轉(zhuǎn)成字符串。返回一個(gè)字符串站辉。

      reverse() 將數(shù)組中各元素顛倒順序

      delete運(yùn)算符 只能刪除數(shù)組元素的值呢撞,而所占空間還在,總長(zhǎng)度沒變(arr.length)饰剥。

      shift() 刪除數(shù)組中第一個(gè)元素殊霞,返回刪除的那個(gè)值,并將長(zhǎng)度減 1汰蓉。

      pop() 刪除數(shù)組中最后一個(gè)元素绷蹲,返回刪除的那個(gè)值,并將長(zhǎng)度減1顾孽。

      unshift() 往數(shù)組前面添加一個(gè)或多個(gè)數(shù)組元素祝钢,長(zhǎng)度要改變劳坑。

      push() 往數(shù)組結(jié)尾添加一個(gè)或多個(gè)數(shù)組元素仅仆,長(zhǎng)度要改變。

      concat( ) 連接數(shù)組

      slice( ) 返回?cái)?shù)組的一部分

      sort( ) 對(duì)數(shù)組元素進(jìn)行排序

      splice( ) 插入癣诱、刪除或替換數(shù)組的元素

      toLocaleString( ) 把數(shù)組轉(zhuǎn)換成局部字符串

      toString( ) 將數(shù)組轉(zhuǎn)換成一個(gè)字符串

    3. Boolean 布爾對(duì)象

      Boolean.toString( ) 將布爾值轉(zhuǎn)換成字符串

      Boolean.valueOf( ) Boolean對(duì)象的布爾值

    4. Error 異常對(duì)象

      Error.message 可以讀取的錯(cuò)誤消息

      Error.name 錯(cuò)誤的類型

      Error.toString( ) 把Error 對(duì)象轉(zhuǎn)換成字符串

      EvalError 在不正確使用 eval()時(shí)拋出

      SyntaxError 拋出該錯(cuò)誤用來(lái)通知語(yǔ)法錯(cuò)誤

      RangeError 在數(shù)字超出合法范圍時(shí)拋出

      ReferenceError 在讀取不存在的變量時(shí)拋出

      TypeError 當(dāng)一個(gè)值的類型錯(cuò)誤時(shí)盹沈,拋出該異常

      URIError 由URl的編碼和解碼方法拋出

    5. Function 函數(shù)構(gòu)造器

      Function 函數(shù)構(gòu)造器

      Function.apply( ) 將函數(shù)作為一個(gè)對(duì)象的方法調(diào)用

      Function.arguments[] 傳遞給函數(shù)的參數(shù)

      Function.call( ) 將函數(shù)作為對(duì)象的方法調(diào)用

      Function.caller 調(diào)用當(dāng)前函數(shù)的函數(shù)

      Function.length 已聲明的參數(shù)的個(gè)數(shù)

      Function.prototype 對(duì)象類的原型

      Function.toString( ) 把函數(shù)轉(zhuǎn)換成字符串

    6. Math 數(shù)學(xué)對(duì)象

      Math對(duì)象是一個(gè)靜態(tài)對(duì)象

      Math.PI 圓周率龄章。

      Math.abs() 絕對(duì)值。

      Math.ceil() 向上取整(整數(shù)加 1乞封,小數(shù)去掉)做裙。

      Math.floor() 向下取整(直接去掉小數(shù))。

      Math.round() 四舍五入肃晚。

      Math.pow(x锚贱,y) 求 x的y次方。

      Math.sqrt() 求平方根关串。

    7. Number 數(shù)值對(duì)象

      Number.MAX_VALUE 最大數(shù)值

      Number.MIN_VALUE 最小數(shù)值

      Number.NaN 特殊的非數(shù)字值

      Number.NEGATIVE_INFINITY 負(fù)無(wú)窮大

      Number.POSITIVE_INFINITY 正無(wú)窮大

      Number.toExponential( ) 用指數(shù)計(jì)數(shù)法格式化數(shù)字

      Number.toFixed( ) 采用定點(diǎn)計(jì)數(shù)法格式化數(shù)字

      Number.toLocaleString( ) 把數(shù)字轉(zhuǎn)換成本地格式的字符串

      Number.toPrecision( ) 格式化數(shù)字的有效位

      Number.toString( ) 將—個(gè)數(shù)字轉(zhuǎn)換成字符串

      Number.valueOf( ) 返回原始數(shù)值

    8. Object 基礎(chǔ)對(duì)象

      Object 含有所有 JavaScript 對(duì)象的特性的超類

      Object.constructor 對(duì)象的構(gòu)造函數(shù)

      Object.hasOwnProperty( ) 檢查屬性是否被繼承

      Object.isPrototypeOf( ) 一個(gè)對(duì)象是否是另一個(gè)對(duì)象的原型

      Object.propertyIsEnumerable( ) 是否可以通過(guò) for/in循環(huán)看到屬性

      Object.toLocaleString( ) 返回對(duì)象的本地字符串表示

      Object.toString( ) 定義一個(gè)對(duì)象的字符串表示

      Object.valueOf( ) 指定對(duì)象的原始值

    9. RegExp 正則表達(dá)式對(duì)象

      RegExp.exec( ) 通用的匹配模式

      RegExp.global 正則表達(dá)式是否全局匹配

      RegExp.ignoreCase 正則表達(dá)式是否區(qū)分大小寫

      RegExp.lastIndex 下次匹配的起始位置

      RegExp.source 正則表達(dá)式的文本

      RegExp.test( ) 檢測(cè)一個(gè)字符串是否匹配某個(gè)模式

      RegExp.toString( ) 把正則表達(dá)式轉(zhuǎn)換成字符串

    10. String 字符串對(duì)象

    Length 獲取字符串的長(zhǎng)度拧廊。

    toLowerCase() 將字符串中的字母轉(zhuǎn)成全小寫监徘。

    toUpperCase() 將字符串中的字母轉(zhuǎn)成全大寫。

    charAt(index) 返回指定下標(biāo)位置的一個(gè)字符吧碾。如果沒有找到凰盔,則返回空字符串。

    substr() 在原始字符串倦春,返回一個(gè)子字符串

    substring() 在原始字符串户敬,返回一個(gè)子字符串。

    split() 將一個(gè)字符串轉(zhuǎn)成數(shù)組睁本。

    charCodeAt( ) 返回字符串中的第 n個(gè)字符的代碼

    concat( ) 連接字符串

    fromCharCode( ) 從字符編碼創(chuàng)建—個(gè)字符串

    indexOf( ) 返回一個(gè)子字符串在原始字符串中的索引值(查找順序從左往右查找)尿庐。如果沒 有找到,則返回-1呢堰。

    lastIndexOf( ) 從后向前檢索一個(gè)字符串

    localeCompare( ) 用本地特定的順序來(lái)比較兩個(gè)字符串

    match( ) 找到一個(gè)或多個(gè)正則表達(dá)式的匹配

    replace( ) 替換一個(gè)與正則表達(dá)式匹配的子串

    search( ) 檢索與正則表達(dá)式相匹配的子串

    slice( ) 抽取一個(gè)子串

    toLocaleLowerCase( ) 把字符串轉(zhuǎn)換小寫

    toLocaleUpperCase( ) 將字符串轉(zhuǎn)換成大寫

    toLowerCase( ) 將字符串轉(zhuǎn)換成小寫

    toString( ) 返回字符串

    toUpperCase( ) 將字符串轉(zhuǎn)換成大寫

    valueOf( ) 返回字符串

  4. 什么是閉包抄瑟?

    答:

    簡(jiǎn)單的說(shuō),作用域是針對(duì)變量的枉疼,比如我們創(chuàng)建一個(gè)函數(shù)a1锐借,函數(shù)里面又包了一 個(gè)子函數(shù) a2。此時(shí)就存在三個(gè)作用域: 全局作用域往衷、a1作用域钞翔、a2 作用域;即全局作用域包含了a1的作用域席舍,a2 的作用 域包含了 a1的作用域布轿。 當(dāng)a1 在查找變量的時(shí)候會(huì)先從自身的作用域區(qū)查找,找不到再到上一級(jí)a2 的作用域 查找来颤,如果還沒找到就到全局作用域區(qū)查找汰扭,這樣就形成了一個(gè)作用域鏈。 理解閉包首先要理解福铅,js 垃圾回收機(jī)制萝毛,也就是當(dāng)一個(gè)函數(shù)被執(zhí)行完后,其作用域會(huì)被 收回滑黔,如果形成了閉包笆包,執(zhí)行完后其作用域就不會(huì)被收回。 如果某個(gè)函數(shù)被他的父函數(shù)之外的一個(gè)變量引用略荡,就會(huì)形成閉包庵佣。 閉包的作用,就是保存自己私有的變量汛兜,通過(guò)提供的接口(方法)給外部使用巴粪,但外部 不能直接訪問(wèn)該變量。

  5. 什么是原型鏈?

    答:

    Javascript 是面向?qū)ο蟮母馗總€(gè)實(shí)例對(duì)象都有一個(gè)_proto屬性辫塌,該屬性指向它原 型對(duì)象,這個(gè)實(shí)例對(duì)象的構(gòu)造函數(shù)有一個(gè)原型屬性 prototype派哲,與實(shí)例的proto屬性指 向同一個(gè)對(duì)象臼氨。當(dāng)一個(gè)對(duì)象在查找一個(gè)屬性的時(shí),自身沒有就會(huì)根據(jù)proto 向它的原型 進(jìn)行查找狮辽,如果都沒有,則向它的原型的原型繼續(xù)查找巢寡,直到查到 Object.prototype.proto為null喉脖,這樣也就形成了原型鏈。

  6. 有哪些方式繼承抑月?

    答:

    1. 借用構(gòu)造函數(shù)树叽。也叫偽造對(duì)象或經(jīng)典繼承。 思路:在子類構(gòu)造函數(shù)的內(nèi)部調(diào)用超類型構(gòu)造函數(shù)谦絮√馑校可以通過(guò)使用 apply()和call()方法 在新創(chuàng)建的對(duì)象上執(zhí)行構(gòu)造函數(shù)。 缺點(diǎn):方法都在構(gòu)造函數(shù)中定義层皱,函數(shù)的復(fù)用就無(wú)從談起性锭。在超類型的原型中定義的方 法,對(duì)子類而言也是不可見的叫胖,結(jié)果所有的類型都只能使用構(gòu)造函數(shù)模式草冈。
    2. 組合繼承。也叫偽經(jīng)典繼承瓮增。指的是將原型鏈和借用構(gòu)造函數(shù)的技術(shù)組合到一起怎棱, 從而發(fā)揮二者之長(zhǎng)。 思路:使用原型鏈實(shí)現(xiàn)對(duì)原型屬性屬性和方法的繼承绷跑,通過(guò)借用構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)實(shí)例屬 性的繼承拳恋。 優(yōu)點(diǎn):既通過(guò)在原型上定義方法實(shí)現(xiàn)了函數(shù)復(fù)用,又能保證每一個(gè)實(shí)例都有它自己的數(shù) 組砸捏。 組合繼承避免了原型鏈和借用構(gòu)造函數(shù)的缺陷谬运,融合了他們的優(yōu)點(diǎn),成為 JavaScript 中常用的繼承模式垦藏。
    3. 原型鏈繼承吩谦。 思路:借助原型可以基于已有的對(duì)象創(chuàng)建對(duì)象,同時(shí)還不必因此創(chuàng)建自定義類型膝藕。 在object()函數(shù)內(nèi)部式廷,先創(chuàng)建一個(gè)臨時(shí)的構(gòu)造函數(shù),然后將傳入的對(duì)象作為這個(gè)構(gòu)造函 數(shù)的原型芭挽,最后返回了這個(gè)臨時(shí)類型的一個(gè)新實(shí)例滑废。
    4. 寄生式繼承蝗肪。 思路:創(chuàng)建一個(gè)僅用于封裝繼承過(guò)程的函數(shù),該函數(shù)在內(nèi)部以某種方式來(lái)增強(qiáng)對(duì)象蠕趁,最 后再像真的是它做了所有的工作一樣返回對(duì)象薛闪。缺點(diǎn):使用寄生式繼承來(lái)為對(duì)象添加函數(shù),會(huì)由于不能做到函數(shù)復(fù)用二降低效率俺陋,這一 點(diǎn)和構(gòu)造函數(shù)模式類似豁延。
    5. )寄生組合式繼承。是JavaScript 最常用的繼承模式腊状。 思路:通過(guò)借用構(gòu)造函數(shù)來(lái)繼承屬性诱咏,通過(guò)原型鏈的混成形式來(lái)繼承方法。 本質(zhì)上缴挖,就是使用寄生式繼承來(lái)繼承超類型的原型袋狞,然后再將結(jié)果指定給子類型的原型。 開發(fā)人員普遍認(rèn)為寄生組合式繼承時(shí)引用類型最理想的繼承范式映屋。 extend()方法才用了這樣的方式苟鸯。
  7. 字符創(chuàng)的常用方法有哪些?

    答:

    charCodeAt 方法返回一個(gè)整數(shù)棚点,代表指定位置字符的 Unicode 編碼早处;

    charAt方法返回指定索引位置處的字符。如果超出有效范圍的索引值返回空字符串瘫析;

    slice方法返回字符串的片段陕赃;

    substring方法返回位于String 對(duì)象中指定位置的子字符串。

    substr方法返回一個(gè)從指定位置開始的指定長(zhǎng)度的子字符串颁股。

    indexOf方法返回 String 對(duì)象內(nèi)第一次出現(xiàn)子字符串位置么库。如果沒有找到子字符串, 則返回-1甘有;

    lastIndexOf方法返回 String對(duì)象中字符串最后出現(xiàn)的位置诉儒。如果沒有匹配到子字符 串,則返回-1亏掀;

    search方法返回與正則表達(dá)式查找內(nèi)容匹配的第一個(gè)字符串的位置忱反。

    concat 方法返回字符串值,該值包含了兩個(gè)或多個(gè)提供的字符串的連接滤愕;

    split 將一個(gè)字符串分割為子字符串温算,然后將結(jié)果作為字符串?dāng)?shù)組返回;

  8. DOM節(jié)點(diǎn)的增刪改查间影?

    答:

    1. 創(chuàng)建節(jié)點(diǎn)注竿、追加節(jié)點(diǎn)

      createElement(標(biāo)簽名)創(chuàng)建一個(gè)元素節(jié)點(diǎn)(具體的一個(gè)元素)。

      createTextNode(節(jié)點(diǎn)文本內(nèi)容)創(chuàng)建一個(gè)文本節(jié)點(diǎn)。

      createDocumentFragment() //創(chuàng)建一個(gè) DOM 片段巩割。

      appendChild(節(jié)點(diǎn))追加一個(gè)節(jié)點(diǎn)裙顽。

    2. 插入節(jié)點(diǎn)

      appendChild(節(jié)點(diǎn))也是一種插入節(jié)點(diǎn)的方式,還可以添加已經(jīng)存在的元素宣谈,會(huì)將其
      元素從原來(lái)的位置移到新的位置愈犹。

      insertBefore(a,b)是參照節(jié)點(diǎn),意思是 a節(jié)點(diǎn)會(huì)插入 b節(jié)點(diǎn)的前面闻丑。

    3. 刪除漩怎、移除節(jié)點(diǎn)

      removeChild(節(jié)點(diǎn)) 刪除一個(gè)節(jié)點(diǎn),用于移除刪除一個(gè)參數(shù)(節(jié)點(diǎn))嗦嗡。其返回的被移除
      的節(jié)點(diǎn)勋锤,被移除的節(jié)點(diǎn)仍在文檔中,只是文檔中已沒有其位置了酸钦。

    4. 復(fù)制節(jié)點(diǎn)

      cloneNode() 方法怪得,用于復(fù)制節(jié)點(diǎn)咱枉, 接受一個(gè)布爾值參數(shù)卑硫, true 表示深復(fù)制(復(fù)制節(jié)點(diǎn)
      及其所有子節(jié)點(diǎn)), false 表示淺復(fù)制(復(fù)制節(jié)點(diǎn)本身蚕断,不復(fù)制子節(jié)點(diǎn))欢伏。

    5. 替換節(jié)點(diǎn)

      replaceChild(插入的節(jié)點(diǎn),被替換的節(jié)點(diǎn)) 亿乳,用于替換節(jié)點(diǎn)硝拧,接受兩個(gè)參數(shù),第一參數(shù)
      是要插入的節(jié)點(diǎn)葛假,第二個(gè)是要被替換的節(jié)點(diǎn)障陶。返回的是被替換的節(jié)點(diǎn)。

    6. 查找節(jié)點(diǎn)

      getElementsByTagName() //通過(guò)標(biāo)簽名稱
      getElementsByName() //通過(guò)元素的Name 屬性的值(IE容錯(cuò)能力較強(qiáng)聊训,會(huì)得到一
      個(gè)數(shù)組抱究,其中包括 id等于 name值的)
      getElementById() //通過(guò)元素 Id,唯一性

  9. 什么是預(yù)解析带斑?

    答:

    在代碼整體執(zhí)行之前鼓寺,先解析一部分。

    預(yù)解析之后勋磕,代碼才會(huì)從上往下依次整體執(zhí)行妈候,但是預(yù)解析執(zhí)行過(guò)的代碼不會(huì) 重復(fù)執(zhí)行。

    js預(yù)解析干了什么事:js 中預(yù)解析會(huì)把聲明部分的代碼預(yù)先執(zhí)行挂滓。

    聲明相關(guān)的代碼可以分為兩部分:

    1苦银、 變量聲明 通過(guò) var關(guān)鍵字定義的變量。

    2、函數(shù)聲明 通過(guò) function關(guān)鍵字聲明的函數(shù)

    預(yù)解析時(shí)如果遇到重復(fù)的變量聲明墓毒,那么忽略吓揪。

    預(yù)解析時(shí)如果遇到重復(fù)的函數(shù)聲明,保留后面的函數(shù)所计。

    預(yù)解析時(shí)如果遇到變量與函數(shù)重名的情況柠辞,保留函數(shù)。

  10. 什么是變量名提升主胧?

答:

使用 var關(guān)鍵字定義的變量叭首,被稱為變量聲明;

函數(shù)聲明提升的特點(diǎn)是踪栋,在函數(shù)聲明的前面焙格,可以調(diào)用這個(gè)函數(shù)。

  1. JS中的typeof關(guān)鍵字能返回哪些數(shù)據(jù)類型夷都?

    答:

    typeof一般判斷基本數(shù)據(jù)類型眷唉。是一個(gè)操作符而不是函數(shù),圓括號(hào)可有可無(wú)囤官。

    typeof 返回值有:string冬阳,number,boolean党饮,undefined肝陪,object ,function刑顺,

    基本數(shù)據(jù)類型:Boolean氯窍、Number、String蹲堂、Undefined狼讨、Null

    基本數(shù)據(jù)類型中數(shù)字,字符串柒竞,布爾類型返回其對(duì)類型 undefined返回 undefined

    九大內(nèi)置構(gòu)造函數(shù)及其他所有函數(shù)返回function政供;

    其他所有復(fù)雜類型對(duì)象和null返回 object

  2. 簡(jiǎn)述創(chuàng)建函數(shù)的幾種方式?

    答:

    1. 函數(shù)聲明

      function sum1(num1,num2){

      ? return num1+num2;

      }

    2. 函數(shù)表達(dá)式

      var sum2 = function(num1,num2){

      ? return num1+num2;

      }

    3. 函數(shù)對(duì)象方式

      var sum3 = new Function("num1","num2","return num1+num2");

  3. 代碼實(shí)現(xiàn)數(shù)組排序并去重

    答:

    function fn(arr){
      for(var i = 0; i < arr.length-1; i++){
        for(var j = 0; j < arr.length-1-i; j++){
          if(arr[j]<arr[j+1]){
            var temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
          }
        }
      }
      for(var k = 0; k < arr.length; k++){
        var c = arr[k];
        for(var l = k+1; l < arr.length; l++){
          if(arr[l] == c){
            arr.splice(l, 1);
            l--;
          }
        }
      }
      return arr
    }
    var arr = [1, 2, 5, 6, 8, 9, 10, 6, 5, 7, 4, 3, 5]
    console.log(fn(arr))
    

14.寫出下面代碼輸出的結(jié)果

A. console.log( undefined || 1 );      -->  1

? B. console.log( null || NaN ); --> NaN

? C. console.log( 0 && 1 ); --> 0

D. console.log( 0 && 1 || 0 );            -->   0
  1. 下列代碼將會(huì)輸出什么能犯?

    var foo = 1;
    function fn() {
      console.log( foo );   -->  undefined
      var foo = 2;
      console.log( foo );   -->  2
    }
    fn();
    

實(shí)際工作部分

  1. 什么是短路表達(dá)式鲫骗?

    答:

    短路表達(dá)式只是一種簡(jiǎn)寫形式,也就是用 && 和 || 來(lái)賦值或者執(zhí)行函數(shù)的形式

    例如:

    var foo = foo1 || foo2;

    意思是如果foo1是真的踩晶,那么就把foo1的值賦給foo执泰,否則把foo2的值賦給foo。

    foo && foo()

    當(dāng)foo存在的時(shí)候渡蜻,我們就執(zhí)行foo函數(shù)术吝,如果這個(gè)時(shí)候foo不是一個(gè)函數(shù)计济,就會(huì)報(bào)錯(cuò),所以這個(gè)只是一種簡(jiǎn)寫形式而已排苍。

  2. 控制臺(tái)中使用哪些部分調(diào)試沦寂?

    答:

    主要用console來(lái)進(jìn)行調(diào)試

    1. console.log 用于輸出普通信息
    2. console.info 用于輸出提示性信息
    3. console.error用于輸出錯(cuò)誤信息
    4. console.warn用于輸出警示信息
    5. console.debug用于輸出調(diào)試信息
  3. ?

三、Web API模塊

基礎(chǔ)部分

  1. 要你出一套適應(yīng)不同分辨率淘衙,不同終端的前端實(shí)現(xiàn)方案你有什么思路传藏?

    答:

    1. 流式布局:

    使用非固定像素來(lái)定義網(wǎng)頁(yè)內(nèi)容,也就是百分比布局彤守,通過(guò)盒子的寬度設(shè)置成百分比來(lái)
    根據(jù)屏幕的寬度來(lái)進(jìn)行伸縮毯侦,不受固定像素的限制,內(nèi)容向兩側(cè)填充具垫。這樣的布局方式侈离,就
    是移動(dòng)web 開發(fā)使用的常用布局方式。這樣的布局可以適配移動(dòng)端不同的分辨率設(shè)備筝蚕。

    1. 響應(yīng)式開發(fā):

    那么 EthanMarcotte 在2010 年 5月份提出的一個(gè)概念卦碾,簡(jiǎn)而言之,就是一個(gè)網(wǎng)站能
    夠兼容多個(gè)終端起宽。越來(lái)越多的設(shè)計(jì)師也采用了這種設(shè)計(jì)洲胖。
    CSS3中的 Media Query(媒介查詢),通過(guò)查詢 screen 的寬度來(lái)指定某個(gè)寬
    度區(qū)間的網(wǎng)頁(yè)布局燎含。
    超小屏幕(移動(dòng)設(shè)備) 768px以下
    小屏設(shè)備 768px-992px
    中等屏幕 992px-1200px
    寬屏設(shè)備 1200px 以上
    由于響應(yīng)式開發(fā)顯得繁瑣些宾濒,一般使用第三方響應(yīng)式框架來(lái)完成腿短,比如bootstrap 來(lái)
    完成一部分工作屏箍,當(dāng)然也可以自己寫響應(yīng)式。

  2. px em rem 取用選擇依據(jù)橘忱?

    答:

    1. px 像素(Pixel)赴魁。絕對(duì)單位。像素px是相對(duì)于顯示器屏幕分辨率而言的钝诚,是一

    個(gè)虛擬長(zhǎng)度單位颖御,是計(jì)算機(jī)系統(tǒng)的數(shù)字化圖像長(zhǎng)度單位,如果 px要換算成物理長(zhǎng)度凝颇,需要
    指定精度 DPI潘拱。

    1. em是相對(duì)長(zhǎng)度單位,相對(duì)于當(dāng)前對(duì)象內(nèi)文本的字體尺寸拧略。如當(dāng)前對(duì)行內(nèi)文本的字

    體尺寸未被人為設(shè)置芦岂,則相對(duì)于瀏覽器的默認(rèn)字體尺寸。它會(huì)繼承父級(jí)元素的字體大小垫蛆,因
    此并不是一個(gè)固定的值禽最。

    1. rem是 CSS3新增的一個(gè)相對(duì)單位(root em腺怯,根em),使用 rem 為元素設(shè)定字

    體大小時(shí)川无,仍然是相對(duì)大小呛占,但相對(duì)的只是HTML根元素。

    1. 區(qū)別:IE無(wú)法調(diào)整那些使用 px作為單位的字體大小懦趋,而em 和rem可以縮放晾虑,rem

    相對(duì)的只是HTML根元素。這個(gè)單位可謂集相對(duì)大小和絕對(duì)大小的優(yōu)點(diǎn)于一身仅叫,通過(guò)它既
    可以做到只修改根元素就成比例地調(diào)整所有字體大小走贪,又可以避免字體大小逐層復(fù)合的連鎖
    反應(yīng)。目前惑芭,除了 IE8及更早版本外坠狡,所有瀏覽器均已支持rem。

  3. Zepto和jQuery的區(qū)別遂跟?

    答:

    Zepto相對(duì)jQuery更加輕量逃沿,主要用在移動(dòng)端,jQuery也有對(duì)應(yīng)的jQuerymobile移動(dòng)端框架。

實(shí)際工作部分

  1. 移動(dòng)端touch事件判斷滑屏手勢(shì)的方向?

    答:

    當(dāng)開始一個(gè)touchstart事件的時(shí)候罗捎,獲取此刻手指的橫坐標(biāo)startX和縱坐標(biāo)startY歼狼;
    當(dāng)觸發(fā)touchmove事件時(shí),在獲取此時(shí)手指的橫坐標(biāo)moveEndX和縱坐標(biāo)moveEndY;最后怠堪,通過(guò)這兩次獲取的坐標(biāo)差值來(lái)判斷手指在手機(jī)屏幕上的滑動(dòng)方向。
    思路:用touchmove的最后坐標(biāo)減去touchstart的起始坐標(biāo),X的結(jié)果如果正數(shù)富拗,則說(shuō)明手指是從左往右劃動(dòng);X的結(jié)果如果負(fù)數(shù)鸣戴,則說(shuō)明手指是從右往左劃動(dòng)啃沪;Y的結(jié)果如果正數(shù),則說(shuō)明手指是從上往下劃動(dòng)窄锅;Y的結(jié)果如果負(fù)數(shù)创千,則說(shuō)明手指是從下往上劃動(dòng)。

    具體代碼如下:

    var mybody = document.getElementsByTagName('body')[0];
    
    //滑動(dòng)處理
    var startX, startY, moveEndX, moveEndY, X, Y;
    mybody.addEventListener('touchstart', function(e) {
        e.preventDefault();
        startX = e.touches[0].pageX;
        startY = e.touches[0].pageY;
    });
    mybody.addEventListener('touchmove', function(e) {
        e.preventDefault();
        moveEndX = e.changedTouches[0].pageX;
        moveEndY = e.changedTouches[0].pageY;
        X = moveEndX - startX;
        Y = moveEndY - startY;
        if ( X > 0 ) {alert(‘向右’);}
        else if ( X < 0 ) {alert(‘向左’);}
        else if ( Y > 0) {alert(‘向下’);}
        else if ( Y < 0 ) { alert(‘向上’);}
        else{alert(‘沒滑動(dòng)’); }
    });
    
  2. 移動(dòng)端對(duì)圖片優(yōu)化有哪些方式入偷,怎么實(shí)現(xiàn)追驴?

    答:

    懶加載,使用CSS Sprites合并為一張大圖疏之,首先從圖片格式方面著手殿雪,webp(google官方網(wǎng)址)是谷歌推出的一種圖片格式,優(yōu)點(diǎn)在于同等畫面質(zhì)量下体捏,體積比jpg冠摄、png少了25%以上糯崎,去掉無(wú)意義的修飾,使用矢量圖替代位圖河泳。
    按照HTTP協(xié)議設(shè)置合理的緩存沃呢。
    詳見鏈接 http://web.jobbole.com/81766/

  3. rem布局中的尺寸是怎樣計(jì)算的,實(shí)際舉例說(shuō)明一下拆挥?

    答:

    其實(shí)rem布局的本質(zhì)是等比縮放薄霜,一般是基于寬度,試想一下如果UE圖能夠等比縮放纸兔,假設(shè)我們將屏幕寬度平均分成100份惰瓜,每一份的寬度用x表示,x = 屏幕寬度 / 100汉矿,如果將x作為單位崎坊,x前面的數(shù)值就代表屏幕寬度的百分比。

  4. ?

四洲拇、JavaScript高級(jí)模塊

基礎(chǔ)部分

  1. 說(shuō)說(shuō)你對(duì)this關(guān)鍵字的理解奈揍?

    答:

    this 是一個(gè)關(guān)鍵字,它代表函數(shù)運(yùn)行時(shí)赋续,自動(dòng)生成的一個(gè)內(nèi)部對(duì)象男翰,只能在函數(shù)內(nèi) 部使用。

    1.作為純粹的函數(shù)調(diào)用 this 指向全局對(duì)象

    2.作為對(duì)象的方法調(diào)用 this 指向調(diào)用對(duì)象

    3.作為構(gòu)造函數(shù)被調(diào)用 this 指向新的對(duì)象(new會(huì)改變 this 的指向)

    4.apply 調(diào)用 this 指向 apply方法的第一個(gè)參數(shù)

  2. 表單驗(yàn)證傳輸?shù)氖裁磾?shù)據(jù)纽乱?明文還是暗文==加密蛾绎?如何加密?是每一次傳
    輸數(shù)據(jù)鸦列,都是加密之后才傳輸嗎租冠?

    答:

    1. 概述: GET是從服務(wù)器上請(qǐng)求數(shù)據(jù),POST 是發(fā)送數(shù)據(jù)到服務(wù)器敛熬。事實(shí)上肺稀,GET方法是把數(shù) 據(jù)參數(shù)隊(duì)列(query string)加到一個(gè)URL上第股,值和表單是一一對(duì)應(yīng)的应民。比如說(shuō), name=John夕吻。在隊(duì)列里诲锹,值和表單用一個(gè)&符號(hào)分開,空格用+號(hào)替換涉馅,特殊的符號(hào)轉(zhuǎn)換 成十六進(jìn)制的代碼归园。因?yàn)檫@一隊(duì)列在 URL里邊,這樣隊(duì)列的參數(shù)就能看得到稚矿,可以被記錄 下來(lái)庸诱,或更改捻浦。通常GET 方法還限制字符的大小(大概是 256 字節(jié) )桥爽。事實(shí)上POST 方法可以沒有時(shí)間限制的傳遞數(shù)據(jù)到服務(wù)器朱灿,用戶在瀏覽器端是看不到 這一過(guò)程的,所以 POST方法比較適合用于發(fā)送一個(gè)保密的(比如信用 卡號(hào))或者比較大 量的數(shù)據(jù)到服務(wù)器钠四。

    2. 區(qū)別: Post 是允許傳輸大量數(shù)據(jù)的方法盗扒,而 Get 方法會(huì)將所要傳輸?shù)臄?shù)據(jù)附在網(wǎng)址后面,然 后一起送達(dá)服務(wù)器缀去,因此傳送的數(shù)據(jù)量就會(huì)受到限制侣灶,但是執(zhí)行效率卻比 Post 方法好。

    3. 總結(jié):

      1缕碎、get 方式的安全性較Post 方式要差些褥影,包含機(jī)密信息的話,建議用 Post 數(shù)據(jù)提交 方式咏雌;

      2伪阶、在做數(shù)據(jù)查詢時(shí),建議用 Get 方式处嫌;而在做數(shù)據(jù)添加栅贴、修改或刪除時(shí),建議用Post 方式熏迹;

    4. 所以: 表達(dá)如果是向服務(wù)器傳輸數(shù)據(jù)(如帳號(hào)密碼等)都是加密數(shù)據(jù)(post)檐薯,如果只是單單想要 從服務(wù)器獲得數(shù)據(jù)或者傳輸?shù)臄?shù)據(jù)并不重要, 可以直接使用明文方式傳輸( get )

  3. 如何實(shí)現(xiàn)跨域注暗?

    答:

    JSONP(JSON with Padding 填充式JSON 或參數(shù)式 JSON)

    在js 中坛缕,我們雖然不能直接用XMLHttpRequest 請(qǐng)求不同域上的數(shù)據(jù),但是在頁(yè)面上引入不同域上的js 腳本文件卻是可以的捆昏,jsonp正是利用這個(gè)特性來(lái)實(shí)現(xiàn)的赚楚。

    JSONP 由兩部分組成:回調(diào)函數(shù)和數(shù)據(jù)∑罚回調(diào)函數(shù)是當(dāng)響應(yīng)到來(lái)時(shí)應(yīng)該在頁(yè)面中調(diào)用的函數(shù)宠页,而數(shù)據(jù)就是傳入回調(diào)函數(shù)中的JSON 數(shù)據(jù)。

    優(yōu)點(diǎn): 它的兼容性更好寇仓,在更加古老的瀏覽器中都可以運(yùn)行举户,不需要XMLHttpRequest 或 ActiveX 的支持; 能夠直接訪問(wèn)響應(yīng)文本遍烦,支持在瀏覽器與服務(wù)器之間雙向通信

    缺點(diǎn): JSONP 是從其他域中加載代碼執(zhí)行俭嘁。如果其他域不安全,很可能會(huì)在響應(yīng)中夾帶一些 惡意代碼服猪,而此時(shí)除了完全放棄 JSONP 調(diào)用之外供填,沒有辦法追究拐云。因此在使用不是你自己 運(yùn)維的Web 服務(wù)時(shí),一定得保證它安全可靠近她。 它只支持 GET請(qǐng)求而不支持 POST等其它類型的 HTTP 請(qǐng)求慨丐;它只支持跨域 HTTP 請(qǐng) 求這種情況,不能解決不同域的兩個(gè)頁(yè)面之間如何進(jìn)行 JavaScript調(diào)用的問(wèn)題

  4. 說(shuō)說(shuō)事件委托機(jī)制泄私?這樣做有什么好處房揭?

    答:

    事件委托,就是某個(gè)事件本來(lái)該自己干的晌端,但是自己不干捅暴,交給別人來(lái)干。就叫事件委 托咧纠。打個(gè)比方:一個(gè)button 對(duì)象蓬痒,本來(lái)自己需要監(jiān)控自身的點(diǎn)擊事件,但是自己不來(lái)監(jiān)控這個(gè)點(diǎn)擊事件漆羔,讓自己的父節(jié)點(diǎn)來(lái)監(jiān)控自己的點(diǎn)擊事件梧奢。

    優(yōu)點(diǎn):

    提高性能:列如,當(dāng)有很多 li同時(shí)需要注冊(cè)事件的時(shí)候演痒,如果使用傳統(tǒng)方法來(lái)注冊(cè) 事件的話亲轨,需要給每一個(gè) li 注冊(cè)事件。然而如果使用委托事件的話鸟顺,就只需要將事件委托給 該一個(gè)元素即可惦蚊。這樣就能提高性能。

    ? 新添加的元素還會(huì)有之前的事件讯嫂;

  5. call和apply的區(qū)別蹦锋?

    答:

    它們的共同之處:都“可以用來(lái)代替另一個(gè)對(duì)象調(diào)用一個(gè)方法,將一個(gè)函數(shù)的對(duì)象上 下文從初始的上下文改變?yōu)橛?thisObj 指定的新對(duì)象欧芽±虻啵”

    它們的不同之處:

    ? Apply:最多只能有兩個(gè)參數(shù)——新this 對(duì)象和一個(gè)數(shù)組 argArray。如果給該方法傳遞多 個(gè)參數(shù)千扔,則把參數(shù)都寫進(jìn)這個(gè)數(shù)組里面憎妙,當(dāng)然,即使只有一個(gè)參數(shù)昏鹃,也要寫進(jìn)數(shù)組里面尚氛。如 果 argArray 不是一個(gè)有效的數(shù)組或者不是 arguments 對(duì)象,那么將導(dǎo)致一個(gè) TypeError洞渤。如果沒有提供 argArray 和 thisObj 任何一個(gè)參數(shù),那么 Global 對(duì)象將被 用作 thisObj属瓣, 并且無(wú)法被傳遞任何參數(shù)

    ? Call:則是直接的參數(shù)列表载迄,主要用在js 對(duì)象各方法互相調(diào)用的時(shí)候讯柔,使當(dāng)前 this 實(shí)例指 針保持一致,或在特殊情況下需要改變this指針护昧。如果沒有提供 thisObj 參數(shù)魂迄,那么 Global 對(duì)象被用作 thisObj。

  6. 在JS的計(jì)時(shí)器運(yùn)行原理是怎樣的惋耙,為什么可以觸發(fā)計(jì)時(shí)效果? 計(jì)時(shí)器是多線程嗎?

    答:

    1. javascript引擎只有一個(gè)線程捣炬,強(qiáng)迫異步事件排隊(duì)等待被執(zhí)行。
    2. setTimeout 和setInterval 本質(zhì)上不同的地方是他們?nèi)绾螆?zhí)行異步代碼的绽榛。
    3. 如果一個(gè)定時(shí)器正在執(zhí)行的時(shí)候被阻塞了湿酸,那么它將會(huì)被推遲到下一個(gè)可能的執(zhí)行點(diǎn),這既是使得延遲時(shí)間有可能會(huì)超過(guò)聲明定時(shí)器時(shí)設(shè)置的值灭美。
    4. Interval 如果有足夠的時(shí)間來(lái)執(zhí)行(大于制定的延遲)推溃,那么它將會(huì)無(wú)延遲的一個(gè)緊 接著一個(gè)執(zhí)行。
    5. 原理: 計(jì)時(shí)器通過(guò)設(shè)定一定的時(shí)間段(毫秒)來(lái)異步的執(zhí)行一段代碼届腐。因?yàn)?Javascript 是一 個(gè)單線程語(yǔ)言铁坎,計(jì)時(shí)器提供了一種繞過(guò)這種語(yǔ)言限制來(lái)執(zhí)行代碼的能力。
    6. 總結(jié): 計(jì)時(shí)器是單線程的犁苏, 需要等待上一個(gè)執(zhí)行完硬萍, 如果上一個(gè)沒有執(zhí)行完, 下一個(gè)需要 延遲執(zhí)行围详, 直到上一個(gè)執(zhí)行完襟铭。
  7. 什么是事件的冒泡和捕獲?

    答:

    事件冒泡:子元素事件的觸發(fā)會(huì)影響父元素事件短曾;

    開關(guān)事件冒泡:

    ? A寒砖,開啟事件冒泡:element.addEventListener(eventName,handler嫉拐,false)哩都;

    ? B,關(guān)閉事件冒泡:假設(shè)傳統(tǒng)方式事件的返回值為 e婉徘,就可以通過(guò) e.stopPropagation()來(lái)關(guān)閉事件冒泡漠嵌;

    事件捕獲:父元素的事件會(huì)影響子元素的事件;

    開啟事件捕獲:element.addEventListener(eventName盖呼,handler儒鹿,true)

  8. 面向?qū)ο蠛皖惖膮^(qū)別?

    答:

    簡(jiǎn)單的說(shuō)類是對(duì)象的模版几晤。
    ? 在 js 中沒有類约炎, 所以在js 中所謂的 類 就是構(gòu)造函數(shù), 對(duì)象就是由構(gòu)造函數(shù)創(chuàng)建
    ? 出來(lái)的實(shí)例對(duì)象。面向?qū)ο缶褪鞘褂妹嫦驅(qū)ο蟮姆绞教幚韱?wèn)題圾浅, 面向?qū)ο笫菍?duì)面向過(guò)程進(jìn)
    ? 行封裝掠手。
    面向?qū)ο笥腥筇匦?br> ? 抽象性, 需要通過(guò)核心數(shù)據(jù)和特定環(huán)境才能描述對(duì)象的具體意義

    ? 封裝性狸捕, 封裝就是將數(shù)據(jù)和功能組合到一起喷鸽, 在js 中對(duì)象就是鍵值對(duì)的集合, 對(duì)象
    ? 將屬性和方法封裝起來(lái)灸拍, 方法將過(guò)程封裝起來(lái)

    ? 繼承性做祝,將別人的屬性和方法成為自己的,傳統(tǒng)繼承基于模板(類)鸡岗,js 中繼承基于 構(gòu)
    ? 造函數(shù)

實(shí)際工作部分

  1. JavaScript 中的垃圾回收機(jī)制?

    答:

    在Javascript 中混槐,如果一個(gè)對(duì)象不再被引用,那么這個(gè)對(duì)象就會(huì)被GC 回收纤房。如 果兩個(gè)對(duì)象互相引用纵隔,而不再被第3者所引用,那么這兩個(gè)互相引用的對(duì)象也會(huì)被回收炮姨。 因?yàn)楹瘮?shù) a被b引用捌刮,b又被 a外的 c引用,這就是為什么 函數(shù) a 執(zhí)行后不會(huì)被回收的原 因舒岸。

  2. 列出3條以上 FF 和 IE 的腳本兼容問(wèn)題

    答:

    1. window.event:

      表示當(dāng)前的事件對(duì)象绅作,IE有這個(gè)對(duì)象,F(xiàn)F沒有蛾派,F(xiàn)F通過(guò)給事件處理函數(shù)傳遞事件對(duì)象

    2. 獲取事件源

      IE用srcElement獲取事件源俄认,而FF用target獲取事件源

    3. 添加,去除事件

      IE:element.attachEvent(“onclick”,function) element.detachEvent(“onclick”, function)

      FF:element.addEventListener(“click”,function, true) element.removeEventListener(“click”, function, true)

    4. 獲取標(biāo)簽的自定義屬性

      IE:div1.value或div1[“value”]

      FF:可用div1.getAttribute(“value”)

  3. 用正則表達(dá)式洪乍,寫出由字母開頭眯杏,其余由數(shù)字、字母壳澳、下劃線組成的6~30的字符串岂贩?

    答:

    /^[a-zA-Z]{1}[\w]{5,29}$/

  4. 下列JavaScript代碼執(zhí)行后,iNum的值是多少巷波?

    var iNum = 0;

    for(var i = 1; i < 10; i++){

    ? if(i% 5 == 0){

    ? continue;

    ? }

    ? iNum++;

    }

    答:8

  5. 程序中捕獲異常的方法萎津?

    答:

    window.error

    try{}catch(error){}finally{}

  6. 正則匹配郵箱?

    答:

    /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;

  7. Javascript中callee和caller的作用抹镊?

    答:

    caller是返回一個(gè)對(duì)函數(shù)的引用锉屈,該函數(shù)調(diào)用了當(dāng)前函數(shù);

    callee是返回正在被執(zhí)行的function函數(shù)垮耳,也就是所指定的function對(duì)象的正文颈渊。

  8. 下列代碼的輸出結(jié)果?

    function f1(){
      var tmp = 1;
      this.x = 3;
      console.log( tmp );
      console.log( this.x );
    }
    var obj = new f1();
    console.log( obj.x );
    console.log( f1() );
    

    答:

    首先看代碼(1),這里實(shí)例話化了f1這個(gè)類儡炼。相當(dāng)于執(zhí)行了 f1函數(shù)妓湘。所以這個(gè)時(shí)候 A 會(huì)輸出 1查蓉, 而 B 這個(gè)時(shí)候的 this 代表的是實(shí)例化的當(dāng)前對(duì)象 obj ,B 輸出 3乌询。

    代碼(2)毋庸置疑會(huì)輸出 3

    重點(diǎn) 代碼(3)首先這里將不再是一個(gè)類豌研,它只是一個(gè)函數(shù)妹田。那么 A輸出 1, B呢鹃共?這里的this 代表的其實(shí)就是window對(duì)象鬼佣,那么this.x 就是一個(gè)全局變量 相當(dāng)于在外部 的一個(gè)全局變量。所以B 輸出 3霜浴。最后代碼由于f沒有返回值那么一個(gè)函數(shù)如果沒返回值的話晶衷,將會(huì)**返回 underfined **,所以答案就是 : 1阴孟, 3晌纫, 3, 1永丝, 3锹漱, underfined 。

  9. 下面代碼輸出結(jié)果慕嚷?

    function changeObjectProperty(o){
      o.siteUrl = "http://www.csser.com/";
      o = new Object();
      o.siteUrl = "http://www.popcg.com/";
    }
    var CSSer = new Object();
    changeObjectProperty( CSSer );
    console.log( CSSer.siteUrl );
    

    答:

    "http://www.popcg.com/"

  10. ?

五哥牍、jQuery模塊

基礎(chǔ)部分

  1. 談?wù)勀銓?duì)jQuery的理解?

    答:

    JQuery 是繼 prototype 之后又一個(gè)優(yōu)秀的 Javascript 庫(kù)喝检。它是輕量級(jí)的js 庫(kù) 嗅辣,它
    兼容 CSS3,還兼容各種瀏覽器(IE 6.0+挠说,F(xiàn)F1.5+澡谭,Safari 2.0+,Opera 9.0+)纺涤,jQuery2.0
    及后續(xù)版本將不再支持 IE6/7/8 瀏覽器译暂。jQuery 使用戶能更方便地處理 HTML(標(biāo)準(zhǔn)通用
    標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)、events撩炊、實(shí)現(xiàn)動(dòng)畫效果外永,并且方便地為網(wǎng)站提供 AJAX 交互。
    jQuery還有一個(gè)比較大的優(yōu)勢(shì)是拧咳,它的文檔說(shuō)明很全伯顶,而且各種應(yīng)用也說(shuō)得很詳細(xì),
    同時(shí)還有許多成熟的插件可供選擇。jQuery 能夠使用戶的 html頁(yè)面保持代碼和 html 內(nèi)容
    分離祭衩,也就是說(shuō)灶体,不用再在 html里面插入一堆 js 來(lái)調(diào)用命令了,只需要定義 id即可掐暮。
    jQuery 是一個(gè)兼容多瀏覽器的 javascript 庫(kù)蝎抽,核心理念是write less,do more(寫
    得更少路克,做得更多)樟结。 jQuery是免費(fèi)、開源的精算,使用 MIT 許可協(xié)議瓢宦。jQuery 的語(yǔ)法設(shè)
    計(jì)可以使開發(fā)更加便捷,例如操作文檔對(duì)象灰羽、選擇 DOM 元素驮履、制作動(dòng)畫效果、事件處理廉嚼、
    使用 Ajax 以及其他功能玫镐。除此以外,jQuery 提供 API讓開發(fā)者編寫插件前鹅。其模塊化的使
    用方式使開發(fā)者可以很輕松的開發(fā)出功能強(qiáng)大的靜態(tài)或動(dòng)態(tài)網(wǎng)頁(yè)摘悴。

  2. 、原生JS的window.onload與Jquery的(document).ready(function () {})舰绘,(function () {})有什么不同蹂喻?

    答:

    1.執(zhí)行時(shí)間 window.onload必須等到頁(yè)面內(nèi)包括圖片的所有元素加載完畢后才能執(zhí)行。 $(document).ready()是 DOM 結(jié)構(gòu)繪制完畢后就執(zhí)行捂寿,不必等到加載完畢口四。

    2.編寫個(gè)數(shù)不同 window.onload不能同時(shí)編寫多個(gè),如果有多個(gè) window.onload 方法秦陋,只會(huì)執(zhí) 行一個(gè) $(document).ready()可以同時(shí)編寫多個(gè)飞袋,并且都可以得到執(zhí)行

    3.簡(jiǎn)化寫法 window.onload沒有簡(jiǎn)化寫法

    ? $(document).ready(function (){})

    ? 可以簡(jiǎn)寫成$(function(){})妇垢;

  3. jQuery一個(gè)對(duì)象可以同時(shí)綁定多個(gè)事件砌们,是如何實(shí)現(xiàn)的旅薄?

    答:

    jQuery可以給一個(gè)對(duì)象同時(shí)綁定多個(gè)事件,低層實(shí)現(xiàn)方式是使用addEventListner或attachEvent兼容不同的瀏覽器實(shí)現(xiàn)事件的綁定顺又,這樣可以給同一個(gè)對(duì)象注冊(cè)多個(gè)事件更卒。

  4. jQuery.fn的init方法返回的this指的是什么對(duì)象?為什么要返回this稚照?

    答:

    this執(zhí)行init構(gòu)造函數(shù)自身蹂空,其實(shí)就是jQuery實(shí)例對(duì)象俯萌,返回this是為了實(shí)現(xiàn)jQuery的鏈?zhǔn)讲僮?/p>

  5. jQuery.extend和jQuery.fn.extend有什么區(qū)別?

    答:

    Jquery.extend用來(lái)擴(kuò)展jQuery對(duì)象本身上枕;jquery.fn.extend用來(lái)擴(kuò)展jQuery實(shí)例

實(shí)際工作部分

  1. jQuery框架中$.ajax()的常用參數(shù)有哪些咐熙?寫一個(gè)post請(qǐng)求并帶有發(fā)送數(shù)據(jù)和返回?cái)?shù)據(jù)的樣例?

    答:

    async是否異步

    url請(qǐng)求地址

    contentType發(fā)送信息至服務(wù)器時(shí)內(nèi)容編碼類型

    data發(fā)送到服務(wù)器的數(shù)據(jù)

    dataType預(yù)期服務(wù)器返回的數(shù)據(jù)類型

    type請(qǐng)求類型

    success請(qǐng)求成功回調(diào)函數(shù)

    error請(qǐng)求失敗回調(diào)函數(shù)

    $.ajax({

    ? url: "/jquery/test1.txt",

    ? type: 'post',

    ? data: { id: 1 },

    ? success: function ( data ) { alert(data); }

    ? })

  2. 舉一下jquery中的函數(shù)辨萍,這些函數(shù)實(shí)現(xiàn)鏈?zhǔn)骄幊痰脑恚?/p>

    答:

    toggle(fn, fn)
    
    $(“td”).toggle(
    function(){
    $(this).addClass(“selected”);
    }棋恼,
    function(){
    $(this).removeClass(“selected”);
    )
    實(shí)現(xiàn)函數(shù)鏈?zhǔn)骄幊痰脑恚悍祷刈陨恚渌^(guò)程在函數(shù)內(nèi)部實(shí)現(xiàn)分瘦,其好處是:節(jié)約js代碼蘸泻,返回的是同一個(gè)對(duì)象琉苇,提高代碼的效率嘲玫。
    
    
  3. ?

六、PHP后臺(tái)開發(fā)模塊

基礎(chǔ)部分

  1. php inset 和 empty 的區(qū)別并扇?

    答:

    1去团、empty函數(shù)

    用途:檢測(cè)變量是否為空

    判斷:如果 var 是非空或非零的值,則 empty() 返回 FALSE穷蛹。換句話說(shuō)土陪,""、0肴熏、"0"鬼雀、NULL、FALSE蛙吏、array()源哩、var $var; 以及沒有任何屬性的對(duì)象都將被認(rèn)為是空的,如果 var 為空鸦做,則返回 TRUE励烦。注意:empty() 只檢測(cè)變量,檢測(cè)任何非變量的東西都將導(dǎo)致解析錯(cuò)誤泼诱。換句話說(shuō)坛掠,后邊的語(yǔ)句將不會(huì)起作用;

    2、isset函數(shù)

    用途:檢測(cè)變量是否設(shè)置

    判斷:檢測(cè)變量是否設(shè)置治筒,并且不是 NULL屉栓。如果已經(jīng)使用 unset() 釋放了一個(gè)變量之后,它將不再是 isset()耸袜。若使用 isset() 測(cè)試一個(gè)被設(shè)置成 NULL 的變量友多,將返回 FALSE。同時(shí)要注意的是一個(gè)NULL 字節(jié)("\0")并不等同于 PHP 的 NULL 常數(shù)句灌。

  2. php 中$_SERVER變量中是如何得到當(dāng)前執(zhí)行腳本路徑的夷陋?

    [圖片上傳失敗...(image-4b1d77-1536131017848)]

七欠拾、Ajax模塊

基礎(chǔ)部分

  1. ajax是什么?

    答:

    Ajax并不算是一種新的技術(shù)骗绕,全稱是asychronous javascript and xml藐窄,可以說(shuō)是已有技術(shù)的組合,主要用來(lái)實(shí)現(xiàn)客戶端與服務(wù)器端的異步通信效果酬土,實(shí)現(xiàn)頁(yè)面的局部刷新荆忍,早期的瀏覽器并不能原生支持ajax,可以使用隱藏幀(iframe)方式變相實(shí)現(xiàn)異步效果撤缴,后來(lái)的瀏覽器提供了對(duì)ajax的原生支持

    使用ajax原生方式發(fā)送請(qǐng)求主要通過(guò)XMLHttpRequest(標(biāo)準(zhǔn)瀏覽器)刹枉、ActiveXObject(IE瀏覽器)對(duì)象實(shí)現(xiàn)異步通信效果

  2. 同步和異步執(zhí)行代碼的區(qū)別?

    答:

    同步:阻塞的

    =張三叫李四去吃飯屈呕,李四一直忙得不停微宝,張三一直等著,直到李四忙完兩個(gè)人一塊去吃飯

    =瀏覽器向服務(wù)器請(qǐng)求數(shù)據(jù)虎眨,服務(wù)器比較忙蟋软,瀏覽器一直等著(頁(yè)面白屏),直到服務(wù)器返回?cái)?shù)據(jù)嗽桩,瀏覽器才能顯示頁(yè)面

    異步:非阻塞的

    =張三叫李四去吃飯岳守,李四在忙,張三說(shuō)了一聲然后自己就去吃飯了碌冶,李四忙完后自己去吃

    =瀏覽器向服務(wù)器請(qǐng)求數(shù)據(jù)湿痢,服務(wù)器比較忙,瀏覽器可以自如的干原來(lái)的事情(顯示頁(yè)面)扑庞,服務(wù)器返回?cái)?shù)據(jù)的時(shí)候通知瀏覽器一聲譬重,瀏覽器把返回的數(shù)據(jù)再渲染到頁(yè)面,局部更新

  3. 頁(yè)面編碼和被請(qǐng)求的資源編碼不一樣如何處理嫩挤?

    答:

    對(duì)于ajax請(qǐng)求傳遞的參數(shù)害幅,如果是get請(qǐng)求方式,參數(shù)如果傳遞中文岂昭,在有些瀏覽器會(huì)亂碼以现,不同的瀏覽器對(duì)參數(shù)編碼的處理方式不同,所以對(duì)于get請(qǐng)求的參數(shù)需要使用 encodeURIComponent函數(shù)對(duì)參數(shù)進(jìn)行編碼處理约啊,后臺(tái)開發(fā)語(yǔ)言都有相應(yīng)的解碼api邑遏。對(duì)于post請(qǐng)求不需要進(jìn)行編碼

  4. 簡(jiǎn)述ajax的過(guò)程?

    答:

    1. 創(chuàng)建XMLHttpRequest對(duì)象,也就是創(chuàng)建一個(gè)異步調(diào)用對(duì)象
    2. 創(chuàng)建一個(gè)新的HTTP請(qǐng)求,并指定該HTTP請(qǐng)求的方法恰矩、URL及驗(yàn)證信息
    3. 設(shè)置響應(yīng)HTTP請(qǐng)求狀態(tài)變化的函數(shù)
    4. 發(fā)送HTTP請(qǐng)求
    5. 獲取異步調(diào)用返回的數(shù)據(jù)
    6. 使用JavaScript和DOM實(shí)現(xiàn)局部刷新
  5. 請(qǐng)解釋一下JavaScript的同源策略记盒?

    答:

    同源策略在什么情況下會(huì)起作用呢? 當(dāng)web 頁(yè)面使用多個(gè)<iframe>元素或者打開其他瀏覽器窗口的時(shí)候外傅,這一策略就 會(huì)起作用纪吮。
    同源策略的含義: 腳本只能讀取和所屬文檔來(lái)源相同的窗口和文檔的屬性俩檬。 這里就涉及到了一個(gè)瀏覽器如何判斷兩者是否同源以及如何判斷腳本來(lái)源的問(wèn)題。
    注意一點(diǎn):腳本本身的來(lái)源并不作為判斷是否同源的依據(jù)碾盟,而是將腳本所屬文檔的來(lái)源 作為判斷依據(jù)棚辽。

    1. 判斷腳本來(lái)源 例如:文檔 A中通過(guò) script 的 src引用了一個(gè)外部腳本,這個(gè)腳本是 google 提供的冰肴,也是從google 的主機(jī)上加載到文檔 A中的屈藐,那么這個(gè)腳本的所屬文檔是誰(shuí)呢, 答案是文檔A熙尉。
    2. 判斷是否同源 理解了腳本來(lái)源联逻,接著理解怎么判斷是否同源:如果兩個(gè)文檔在協(xié)議、主機(jī)以 及載入文檔的 URL端口這三點(diǎn)中有一點(diǎn)不同检痰,就認(rèn)為他們不同源包归。
  6. get和post的區(qū)別?

    答:

    GET:一般用于信息獲取攀细,使用URL傳遞參數(shù)箫踩,對(duì)所發(fā)送信息的數(shù)量也有限制,一般在2000個(gè)字符谭贪,有的瀏覽器是8000個(gè)字符

    POST:一般用于修改服務(wù)器上的資源,對(duì)所發(fā)送的信息沒有限制

    在以下情況中锦担,請(qǐng)使用 POST 請(qǐng)求:

    1. 無(wú)法使用緩存文件(更新服務(wù)器上的文件或數(shù)據(jù)庫(kù))
    2. 向服務(wù)器發(fā)送大量數(shù)據(jù)(POST 沒有數(shù)據(jù)量限制)
    3. 發(fā)送包含未知字符的用戶輸入時(shí)俭识,POST 比GET 更穩(wěn)定也更可靠
  7. 解釋jsonp的原理?

    答:

    Jsonp并不是一種數(shù)據(jù)格式洞渔,而json是一種數(shù)據(jù)格式套媚,jsonp是用來(lái)解決跨域獲取數(shù)據(jù)的一種解決方案,具體是通過(guò)動(dòng)態(tài)創(chuàng)建script標(biāo)簽磁椒,然后通過(guò)標(biāo)簽的src屬性獲取js文件中的js腳本堤瘤,該腳本的內(nèi)容是一個(gè)函數(shù)調(diào)用,參數(shù)就是服務(wù)器返回的數(shù)據(jù)浆熔,為了處理這些返回的數(shù)據(jù)本辐,需要事先在頁(yè)面定義好回調(diào)函數(shù),本質(zhì)上使用的并不是ajax技術(shù)

  8. ajax請(qǐng)求時(shí)如何解釋json數(shù)據(jù)医增?

    答:

    使用eval() 或者JSON.parse() 鑒于安全性考慮慎皱,推薦使用JSON.parse()更靠譜,對(duì)數(shù)據(jù)的安全性更好叶骨。

  9. HTTP狀態(tài)碼都有哪些茫多?

    答:

    100 => 正在初始化(一般是看不到的)

    101 => 正在切換協(xié)議(websocket瀏覽器提供的)

    200或者以2開頭的兩位數(shù) => 都是代表響應(yīng)主體的內(nèi)容已經(jīng)成功返回了

    202 => 表示接受

    301 => 永久重定向/永久轉(zhuǎn)移

    302 => 臨時(shí)重定向/臨時(shí)轉(zhuǎn)移(一般用來(lái)做服務(wù)器負(fù)載均衡)

    304 => 本次獲取的內(nèi)容是讀取緩存中的數(shù)據(jù),會(huì)每次去服務(wù)器校驗(yàn)

    400 => 參數(shù)出現(xiàn)錯(cuò)誤(客戶端傳遞給服務(wù)器端的參數(shù)出現(xiàn)錯(cuò)誤)

    401 => 未認(rèn)證忽刽,沒有登錄網(wǎng)站

    403 => 禁止訪問(wèn)天揖,沒有權(quán)限

    404 => 客戶端訪問(wèn)的地址不存在

    500 => 未知的服務(wù)器錯(cuò)誤

    503 => 服務(wù)器超負(fù)荷(假設(shè)一臺(tái)服務(wù)器只能承受10000人夺欲,當(dāng)?shù)?0001人訪問(wèn)的時(shí)候,如果服務(wù)器沒有做負(fù)載均衡今膊,那么這個(gè)人的網(wǎng)絡(luò)狀態(tài)碼就是503)

實(shí)際工作部分

  1. 瀏覽器渲染頁(yè)面的過(guò)程

    答:

    瀏覽器會(huì)把HTML洁闰、SVG、XHTML三種格式的文件會(huì)產(chǎn)生一個(gè)DOM樹万细;

    Css扑眉,解析css會(huì)產(chǎn)生css規(guī)則樹JavaScript會(huì)通過(guò)DOM apI 來(lái)操作DOM樹 和 css規(guī)則樹

  2. 簡(jiǎn)單描述下同步和異步的區(qū)別,并舉例實(shí)際應(yīng)用中哪些是同步赖钞,哪些是異步腰素?

    答:

    同步是阻塞的,瀏覽器向服務(wù)器發(fā)送請(qǐng)求雪营,服務(wù)器比較忙弓千,瀏覽器一直等著(頁(yè)面白屏),直到服務(wù)器返回?cái)?shù)據(jù)献起,頁(yè)面才可以正常顯示洋访;

    異步是非阻塞的,瀏覽器向服務(wù)器請(qǐng)求數(shù)據(jù)谴餐,服務(wù)器比較忙姻政,瀏覽器可以干自己原來(lái)的事情(顯示頁(yè)面),服務(wù)器返回?cái)?shù)據(jù)的時(shí)候通知瀏覽器一聲岂嗓,瀏覽器把返回的數(shù)據(jù)再渲染到頁(yè)面汁展,局部更新。

  3. 簡(jiǎn)述AJAX的工作原理

    答:

    Ajax的原理簡(jiǎn)單來(lái)說(shuō)通過(guò)XmlHttpRequest對(duì)象來(lái)向服務(wù)器發(fā)異步請(qǐng)求厌殉,從服務(wù)器獲得數(shù)據(jù)食绿,然后用javascript來(lái)操作DOM而更新頁(yè)面。這其中最關(guān)鍵的一步就是從服務(wù)器獲得請(qǐng)求數(shù)據(jù)公罕。

    XMLHttpRequest是ajax的核心機(jī)制器紧,它是在IE5中首先引入的,是一種支持異步請(qǐng)求的技術(shù)楼眷。簡(jiǎn)單的說(shuō)铲汪,也就是javascript可以及時(shí)向服務(wù)器提出請(qǐng)求和處理響應(yīng),而不阻塞用戶摩桶。達(dá)到無(wú)刷新的效果桥状。

  4. jsonp是如何實(shí)現(xiàn)前后數(shù)據(jù)交互?

    答:

    ajax請(qǐng)求受同源策略的影響硝清,不允許進(jìn)行跨域請(qǐng)求辅斟,而script標(biāo)簽的src屬性中的鏈接卻可以訪問(wèn)跨域的js腳本,利用這個(gè)特性芦拿,服務(wù)端不在返回json格式的數(shù)據(jù)士飒,而是返回調(diào)用某個(gè)函數(shù)的js代碼查邢,在src中進(jìn)行了調(diào)用,這樣就實(shí)現(xiàn)了跨域酵幕,其原理就是動(dòng)態(tài)創(chuàng)建script標(biāo)簽扰藕,通過(guò)script標(biāo)簽的src屬性進(jìn)行調(diào)用

  5. 你知道的HTTP 請(qǐng)求方式有幾種?

    答:

    HTTPRequestMethod共計(jì)17種

    1. GET 請(qǐng)求指定的頁(yè)面信息芳撒,并返回實(shí)體主體邓深。
    2. HEAD 類似于get請(qǐng)求,只不過(guò)返回的響應(yīng)中沒有具體的內(nèi)容笔刹,用于獲取報(bào)頭
    3. POST 向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)芥备。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改舌菜。
    4. PUT 從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容萌壳。
    5. DELETE 請(qǐng)求服務(wù)器刪除指定的頁(yè)面。
    6. CONNECT HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器日月。
    7. OPTIONS 允許客戶端查看服務(wù)器的性能袱瓮。
    8. TRACE 回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷爱咬。
    9. PATCH 實(shí)體中包含一個(gè)表尺借,表中說(shuō)明與該URI所表示的原內(nèi)容的區(qū)別。
    10. MOVE 請(qǐng)求服務(wù)器將指定的頁(yè)面移至另一個(gè)網(wǎng)絡(luò)地址台颠。
    11. COPY 請(qǐng)求服務(wù)器將指定的頁(yè)面拷貝至另一個(gè)網(wǎng)絡(luò)地址褐望。
    12. LINK 請(qǐng)求服務(wù)器建立鏈接關(guān)系。
    13. UNLINK 斷開鏈接關(guān)系串前。
    14. WRAPPED 允許客戶端發(fā)送經(jīng)過(guò)封裝的請(qǐng)求。
    15. LOCK 允許用戶鎖定資源实蔽,比如可以再編輯某個(gè)資源時(shí)將其鎖定荡碾,以防別人同時(shí)對(duì)其進(jìn)行編輯。
    16. MKCOL 允許用戶創(chuàng)建資源
    17. Extension-mothed 在不改動(dòng)協(xié)議的前提下局装,可增加另外的方法坛吁。
  6. ?

八、H5C3模塊

基礎(chǔ)部分

  1. CSS3有哪些新特性铐尚?

    答:

    1. CSS3實(shí)現(xiàn)圓角(border-radius)拨脉,陰影(box-shadow),
    2. 對(duì)文字加特效(text-shadow宣增、)玫膀,線性漸變(gradient),旋轉(zhuǎn)(transform)
    3. transform:rotate(9deg)scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);// 旋轉(zhuǎn),縮 放,定位,傾斜
    4. 增加了更多的CSS選擇器 多背景rgba
    5. 在CSS3中唯一引入的偽元素是 ::selection.
    6. 媒體查詢爹脾,多欄布局
    7. border-image
  2. Html5有哪些新特性帖旨、移除了那些元素箕昭?如何處理HTML5新標(biāo)簽的瀏覽器兼容問(wèn)題?如何區(qū)分 HTML和HTML5解阅?

    答:

    新特性:

    1. 拖拽釋放(Drag and drop) API
    2. 語(yǔ)義化更好的內(nèi)容標(biāo)簽(header,nav,footer,aside,article,section)
    3. 音頻落竹、視頻API(audio,video)
    4. 畫布(Canvas) API
    5. 地理(Geolocation) API
    6. 本地離線存儲(chǔ) localStorage 長(zhǎng)期存儲(chǔ)數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失货抄;
    7. sessionStorage 的數(shù)據(jù)在瀏覽器關(guān)閉后自動(dòng)刪除
    8. 表單控件述召,calendar、date蟹地、time积暖、email、url锈津、search
    9. 新的技術(shù)webworker, websocket,Geolocation

    移除的元素:

    1. 純表現(xiàn)的元素:basefont呀酸,big,center琼梆,font, s性誉,strike,tt茎杂,u错览;
    2. 對(duì)可用性產(chǎn)生負(fù)面影響的元素:frame,frameset煌往,noframes倾哺;

    支持HTML5新標(biāo)簽:

    1. IE8/IE7/IE6支持通過(guò) document.createElement 方法產(chǎn)生的標(biāo)簽,可以利用這一特性讓這些瀏覽器支持 HTML5 新標(biāo)簽刽脖,瀏覽器支持新標(biāo)簽后羞海,還需要添加標(biāo)簽?zāi)J(rèn)的樣式(當(dāng)然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架):

  3. 本地存儲(chǔ)(Local Storage)和cookies(儲(chǔ)存在用戶本地終端上的數(shù)據(jù))之間的區(qū)別是什么曲管?

    答:

    Cookies:服務(wù)器和客戶端都可以訪問(wèn)却邓;大小只有4KB左右;有有效期院水,過(guò)期后將會(huì)刪除腊徙;

    本地存儲(chǔ):只有本地瀏覽器端可訪問(wèn)數(shù)據(jù),服務(wù)器不能訪問(wèn)本地存儲(chǔ)直到故意通過(guò)POST或者GET的通道發(fā)送到服務(wù)器檬某;每個(gè)域5MB撬腾;沒有過(guò)期數(shù)據(jù),它將保留知道用戶從瀏覽器清除或者使用Javascript代碼移除

  4. 如何實(shí)現(xiàn)瀏覽器內(nèi)多個(gè)標(biāo)簽頁(yè)之間的通信?

    答:

    調(diào)用 localstorge恢恼、cookies 等本地存儲(chǔ)方式

  5. 你如何對(duì)網(wǎng)站的文件和資源進(jìn)行優(yōu)化民傻?

    答:

    文件合并

    文件最小化/文件壓縮

    使用CDN托管

    緩存的使用

  6. 什么是響應(yīng)式設(shè)計(jì)?

    答:

    它是關(guān)于網(wǎng)頁(yè)制作的過(guò)程中讓不同的設(shè)備有不同的尺寸和不同的功能。響應(yīng)式設(shè)計(jì)是讓所有的人能在這些設(shè)備上讓網(wǎng)站運(yùn)行正常

  7. 新的 HTML5文檔類型和字符集是

    答:

    HTML5文檔類型:<!doctype html>

    HTML5使用的編碼<meta charset=”UTF-8”>

  8. HTML5 Canvas元素有什么用饰潜?

    答:

    Canvas 元素用于在網(wǎng)頁(yè)上繪制圖形初坠,該元素標(biāo)簽強(qiáng)大之處在于可以直接在HTML 上進(jìn)行圖形操作。

  9. HTML5 存儲(chǔ)類型有什么區(qū)別彭雾?

    答:

    Media API碟刺、Text Track API、Application Cache API薯酝、User Interaction半沽、Data Transfer API、Command API吴菠、Constraint Validation API者填、History API

  10. CSS3新增偽類有那些?

答:

? p:first-of-type 選擇屬于其父元素的首個(gè) <p> 元素的每個(gè) <p> 元素做葵。

? p:last-of-type 選擇屬于其父元素的最后 <p> 元素的每個(gè) <p> 元素占哟。

? p:only-of-type 選擇屬于其父元素唯一的 <p> 元素的每個(gè) <p> 元素。

? p:only-child 選擇屬于其父元素的唯一子元素的每個(gè) <p> 元素酿矢。

? p:nth-child(2) 選擇屬于其父元素的第二個(gè)子元素的每個(gè) <p> 元素榨乎。

? :enabled、:disabled 控制表單控件的禁用狀態(tài)瘫筐。

? :checked蜜暑,單選框或復(fù)選框被選中。

  1. 你怎么來(lái)實(shí)現(xiàn)頁(yè)面設(shè)計(jì)圖策肝,你認(rèn)為前端應(yīng)該如何高質(zhì)量完成工作?一個(gè)滿屏品 字布局 如何設(shè)計(jì)?

    答:

    首先劃分成頭部肛捍、body、腳部之众;拙毫。。棺禾。恬偷。。

    實(shí)現(xiàn)效果圖是最基本的工作帘睦,精確到2px;

    與設(shè)計(jì)師坦康,產(chǎn)品經(jīng)理的溝通和項(xiàng)目的參與

    做好的頁(yè)面結(jié)構(gòu)竣付,頁(yè)面重構(gòu)和用戶體驗(yàn)

    處理hack,兼容滞欠、寫出優(yōu)美的代碼格式

    針對(duì)服務(wù)器的優(yōu)化古胆、擁抱 HTML5。

  2. 為什么利用多個(gè)域名來(lái)存儲(chǔ)網(wǎng)站資源會(huì)更有效?

    答:

    CDN緩存更方便

    突破瀏覽器并發(fā)限制

    節(jié)約cookie帶寬

    節(jié)約主域名的連接數(shù)逸绎,優(yōu)化頁(yè)面響應(yīng)速度

    防止不必要的安全問(wèn)題

  3. 請(qǐng)談一下你對(duì)網(wǎng)頁(yè)標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu)重要性的理解惹恃。

    答:

    (無(wú)標(biāo)準(zhǔn)答案)網(wǎng)頁(yè)標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu)都是為了能讓web發(fā)展的更‘健康’,開發(fā)者遵循統(tǒng)一的標(biāo)準(zhǔn)棺牧,降低開發(fā)難度巫糙,開發(fā)成本,SEO也會(huì)更好做颊乘,也不會(huì)因?yàn)闉E用代碼導(dǎo)致各種BUG参淹、安全問(wèn)題,最終提高網(wǎng)站易用性乏悄。

  4. ?

實(shí)際工作部分

  1. 請(qǐng)描述一下cookies]()浙值,sessionStorage和localStorage的區(qū)別?

    答:

    sessionStorage用于本地存儲(chǔ)一個(gè)會(huì)話(session)中的數(shù)據(jù)檩小,這些數(shù)據(jù)只有在同一個(gè)會(huì)話中的頁(yè)面才能訪問(wèn)并且當(dāng)會(huì)話結(jié)束后數(shù)據(jù)也隨之銷毀开呐。因此sessionStorage不是一種持久化的本地存儲(chǔ),僅僅是會(huì)話級(jí)別的存儲(chǔ)规求。而localStorage用于持久化的本地存儲(chǔ)筐付,除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過(guò)期的颓哮。

    Web Storage的概念和cookie相似家妆,區(qū)別是它是為了更大容量存儲(chǔ)設(shè)計(jì)的。Cookie的大小是受限的冕茅,并且每次你請(qǐng)求一個(gè)新的頁(yè)面的時(shí)候Cookie都會(huì)被發(fā)送過(guò)去伤极,這樣無(wú)形中浪費(fèi)了帶寬,另外cookie還需要指定作用域姨伤,不可以跨域調(diào)用哨坪。

    除此之外浊洞,Web Storage擁有setItem,getItem,removeItem,clear等方法琴锭,不像cookie需要前端開發(fā)者自己封裝setCookie筐眷,getCookie劲腿。但是Cookie也是不可以或缺的:Cookie的作用是與服務(wù)器進(jìn)行交互亚皂,作為HTTP規(guī)范的一部分而存在 就珠,而Web Storage僅僅是為了在本地“存儲(chǔ)”數(shù)據(jù)而生蛉威。

  2. 如何在 HTML5頁(yè)面中嵌入視頻仿荆?

    答:

    HTML5 定義了嵌入視頻的標(biāo)準(zhǔn)方法臊泌,支持的格式包括:MP4鲤桥、WebM 和 Ogg;

    <video>

    <source src="jamshed.mp4" type="video/mp4">

    Your browser does'nt support video embedding feature.

    </video>

  3. HTML5引入什么新的表單屬性?

    答:

    Datalist datetime output keygen date month week time number range emailurl

  4. ?

九渠概、Node模塊

基礎(chǔ)部分

  1. 對(duì)Node的優(yōu)點(diǎn)和缺點(diǎn)提出了自己的看法

    答:

    (優(yōu)點(diǎn))因?yàn)镹ode是基于事件驅(qū)動(dòng)和無(wú)阻塞的茶凳,所以非常適合處理并發(fā)請(qǐng)求嫂拴,

    因此構(gòu)建在Node上的代理服務(wù)器相比其他技術(shù)實(shí)現(xiàn)(如Ruby)的服務(wù)器表現(xiàn)要好得多。

    此外贮喧,與Node代理服務(wù)器交互的客戶端代碼是由javascript語(yǔ)言編寫的筒狠,

    因此客戶端和服務(wù)器端都用同一種語(yǔ)言編寫,這是非常美妙的事情箱沦。

    (缺點(diǎn))Node是一個(gè)相對(duì)新的開源項(xiàng)目辩恼,所以不太穩(wěn)定,它總是一直在變饱普,

    而且缺少足夠多的第三方庫(kù)支持运挫。看起來(lái)套耕,就像是Ruby/Rails當(dāng)年的樣子

  2. node.js 的應(yīng)用場(chǎng)景

    答:

    1. 實(shí)時(shí)應(yīng)用:如在線聊天谁帕,實(shí)時(shí)通知推送等等(如socket.io)
    2. 分布式應(yīng)用:通過(guò)高效的并行I/O使用已有的數(shù)據(jù)
    3. 工具類應(yīng)用:海量的工具,小到前端壓縮部署(如grunt)冯袍,大到桌面圖形界面應(yīng)用程序
    4. 游戲類應(yīng)用:游戲領(lǐng)域?qū)?shí)時(shí)和并發(fā)有很高的要求(如網(wǎng)易的pomelo框架)
    5. 利用穩(wěn)定接口提升Web渲染能力
    6. 前后端編程語(yǔ)言環(huán)境統(tǒng)一:前端開發(fā)人員可以非承偻冢快速地切入到服務(wù)器端的開發(fā)(如著名的純Javascript全棧式MEAN架構(gòu))
  3. NodeJS非阻塞I/O模型執(zhí)行流程

    答:

    主線程:

    1. 執(zhí)行 node 的代碼,把代碼放入隊(duì)列

    2. 事件循環(huán)程序(主線程)把隊(duì)列里面的同步代碼都先執(zhí)行了康愤,

    3. 同步代碼執(zhí)行完成儡循,執(zhí)行異步代碼

    4. 異步代碼分 2種狀況,

      (1)征冷、異步非 io setTimeout() setInterval()

      判斷是否可執(zhí)行择膝,如果可以執(zhí)行就執(zhí)行,不可以跳過(guò)检激。

      (2)肴捉、異步io 文件操作

      會(huì)從線程池當(dāng)中去取一條線程,幫助主線程去執(zhí)行叔收。

    5. 主線程會(huì)一直輪訓(xùn)齿穗,隊(duì)列中沒有代碼了,主線程就會(huì)退出饺律。

    子線程:被放在線程池里面的線程窃页,用來(lái)執(zhí)行異步 io操作

    1. 在線程池里休息

    2. 異步 io 的操作來(lái)了,執(zhí)行異步 io操作复濒。

    3. 子線程會(huì)把異步 io操作的 callback 函數(shù)脖卖,扔回給隊(duì)列

    4. 子線程會(huì)回到線程池了去休息。

      callback巧颈,在異步 io 代碼執(zhí)行完成的時(shí)候被扔回主線程胚嘲。

  4. nodejs中流(stream)的理解

    答:

    1. 什么是Stream?
      答案:stream是基于事件EventEmitter的數(shù)據(jù)管理模式.由各種不同的抽象接口組成,
      主要包括可寫洛二,可讀,可讀寫,可轉(zhuǎn)換等幾種類型.
    2. Stream有什么好處?
      答案: 非阻塞式數(shù)據(jù)處理提升效率晾嘶,片斷處理節(jié)省內(nèi)存妓雾,管道處理方便可擴(kuò)展等.
    3. Stream有哪些典型應(yīng)用?
      答案: 文件,網(wǎng)絡(luò)垒迂,數(shù)據(jù)轉(zhuǎn)換械姻,音頻視頻等.
      1. 怎么捕獲 Stream的錯(cuò)誤事件?
        答案: 監(jiān)聽 error 事件,方法同 EventEmitter.
      2. 有哪些常用Stream,分別什么時(shí)候使用?
        答案:Readable 為可被讀流机断,在作為輸入數(shù)據(jù)源時(shí)使用楷拳;Writable 為可被寫流,在作為
        輸出源時(shí)使用;Duplex 為可讀寫流,它作為輸出源接受被寫入吏奸,同時(shí)又作為輸入源被后面的
        流讀出.Transform 機(jī)制和Duplex一樣欢揖,都是雙向流,區(qū)別時(shí) Transfrom 只需要實(shí)現(xiàn)一
        個(gè)函數(shù)_transfrom(chunk, encoding, callback);而 Duplex 需要分別實(shí)現(xiàn)_read(size)函數(shù)
        和_write(chunk, encoding, callback)函數(shù).
      3. 實(shí)現(xiàn)一個(gè) Writable Stream?
        答案: 三步走:1)構(gòu)造函數(shù)call Writable 2) 繼承 Writable 3) 實(shí)現(xiàn)_write(chunk,
        encoding, callback)函數(shù)
  5. ES6有哪些新特性?

    答:

    類的支持奋蔚,模塊化她混,箭頭操作符,let/const塊作用域泊碑,字符串模板坤按,解構(gòu),參數(shù)默認(rèn)值/不定參數(shù)/拓展參數(shù), for-of遍歷, generator, Map/Set, Promise

  6. 你對(duì)ES6的個(gè)人看法

    答:

    從軟件工程角度來(lái)看馒过,以前真的很弱臭脓,不適合做大型應(yīng)用,很容易導(dǎo)致爛尾工程腹忽。ES6就相當(dāng)于當(dāng)年的Java5,是歷史性的發(fā)展来累,從此我們可以用js做大型項(xiàng)目了。事實(shí)上留凭,各大主流瀏覽器現(xiàn)在已經(jīng)支持大部分新特性了佃扼,后端的Node.js更是可以直接使用ES6的絕大多數(shù)語(yǔ)法。

  7. node中的Buffer如何應(yīng)用?

    答:

    Buffer是用來(lái)處理二進(jìn)制數(shù)據(jù)的蔼夜,比如圖片兼耀,mp3,數(shù)據(jù)庫(kù)文件等.Buffer支持各種編碼解碼,二進(jìn)制字符串互轉(zhuǎn).

  8. 什么是“前端路由”?什么時(shí)候適合使用“前端路由”? “前端路由”有哪些優(yōu)點(diǎn)和缺點(diǎn)?

    答:

    1. 什么是前端路由

      路由是根據(jù)不同的url地址展示不同的內(nèi)容或頁(yè)面求冷。前端路由就是把不同路由對(duì)應(yīng)不同的內(nèi)容或頁(yè)面的任務(wù)交給前端來(lái)做瘤运,之前通過(guò)服務(wù)端根據(jù)url的不同返回不同的頁(yè)面實(shí)現(xiàn)的

    2. 什么時(shí)候使用前端路由

      在單頁(yè)面應(yīng)用,大部分頁(yè)面結(jié)構(gòu)不變匠题,只改變部分內(nèi)容的使用

    3. 前端路由有什么優(yōu)缺點(diǎn)

      優(yōu)點(diǎn):

      ? 用戶體驗(yàn)好拯坟,不需要每次都從服務(wù)器全部獲取,快速展現(xiàn)給用戶

      缺點(diǎn):

      ? 使用瀏覽器的前進(jìn)韭山,后退鍵的時(shí)候會(huì)重新發(fā)送請(qǐng)求郁季,沒有合理利用緩存

      ? 單頁(yè)面無(wú)法記住之前滾動(dòng)的位置冷溃,無(wú)法再前進(jìn),后退的時(shí)候記住滾動(dòng)的

  9. 如何判斷當(dāng)前腳本運(yùn)行在瀏覽器還是node環(huán)境中梦裂?

    答:

    exports = typeof window === 'undefined' ? global : window ;

    獲取全局對(duì)象的方式

    同理可得似枕,typeof window可以用來(lái)判斷是不是在瀏覽器環(huán)境中

實(shí)際工作部分

  1. node中的異步和同步怎么理解?

    答:

    node是單線程的,異步是通過(guò)一次次的循環(huán)事件隊(duì)列來(lái)實(shí)現(xiàn)的.同步則是說(shuō)阻塞式的IO,這在高并發(fā)環(huán)境會(huì)是一個(gè)很大的性能問(wèn)題年柠,所以同步一般只在基礎(chǔ)框架的啟動(dòng)時(shí)使用凿歼,用來(lái)加載配置文件,初始化程序什么的.

  2. 有哪些方法可以進(jìn)行異步流程的控制?

    答:

    1. 多層嵌套回調(diào)
    2. 為每一個(gè)回調(diào)寫單獨(dú)的函數(shù)冗恨,函數(shù)里邊再回調(diào)
    3. 用第三方框架比方async, q, promise等
  3. npm有哪些常用的命令答憔,請(qǐng)列舉并說(shuō)明作用

    答:

    $npm init 項(xiàng)目初始化

    $npminstall -g <name> 安裝并更新package.json中的版本配置

    $npm run<name> 執(zhí)行一段腳本

    $npm update -n <name> 更新模塊

  4. ?

十、VUE模塊

基礎(chǔ)部分

  1. Vue組件間傳值

    答:

    1. 父子之間的傳值

      父組件向子組件傳值通過(guò)prop子組件在props中創(chuàng)建一個(gè)屬性掀抹,用以接收父組件傳過(guò)來(lái)的值

      子組件向父組件傳值在響應(yīng)該點(diǎn)擊事件的函數(shù)中使用$emit來(lái)觸發(fā)一個(gè)自定義事件在父組件中注冊(cè)子組件并在子組件標(biāo)簽上綁定對(duì)自定義事件的監(jiān)聽

    2. 非父子之間的通訊

      可以通過(guò)eventBus來(lái)實(shí)現(xiàn)通信.

      所謂eventBus就是創(chuàng)建一個(gè)事件中心虐拓,相當(dāng)于中轉(zhuǎn)站,可以用它來(lái)傳遞事件和接收事件

      eventBus = new Vue();

      組件1觸發(fā):

      <div @click="eve"></div>
      methods: {
          eve() {
              eventBus.$emit('change','hehe'); //Hub觸發(fā)事件
          }
      }123456
      

      組件2接收:

      <div></div>
      created() {
          eventBus.$on('change', () => { //Hub接收事件
              this.msg = 'hehe';
          });
      }123456
      

      這樣就實(shí)現(xiàn)了非父子組件之間的通信了.原理就是把eventBus當(dāng)作一個(gè)中轉(zhuǎn)站渴丸!

  2. VUE是什么?

    答:

    vue.js(讀音 /vju?/侯嘀,類似于 view) 是一套構(gòu)建用戶界面的漸進(jìn)式框架
    與其他重量級(jí)框架不同的是,Vue 采用自底向上增量開發(fā)的設(shè)計(jì)谱轨。Vue 的核心庫(kù)只關(guān)注視
    圖層戒幔,它不僅易于上手,還便于與第三方庫(kù)或既有項(xiàng)目整合土童。另一方面诗茎,當(dāng)與單文件組件
    和 Vue 生態(tài)系統(tǒng)支持的庫(kù)結(jié)合使用時(shí),Vue 也完全能夠?yàn)閺?fù)雜的單頁(yè)應(yīng)用程序提供驅(qū)動(dòng)献汗。

  3. React 和 Vue 的區(qū)別React 和 Vue 的相似之處:

    答:

    1. 使用 Virtual DOM
    2. 提供了響應(yīng)式(Reactive)和組件化(Composable)的視圖組件敢订。
    3. 將注意力集中保持在核心庫(kù),而將其他功能如路由和全局狀態(tài)管理交給相關(guān)的庫(kù)罢吃。

    Vue與Angular楚午、React的對(duì)比:

    1. vue.js 更輕量,gzip后只有20K+尿招,angular:56K ,react:44K
    2. vue.js 更易上手矾柜,學(xué)習(xí)曲線平穩(wěn)
    3. 吸收兩家之長(zhǎng),有angular 的指令和 react組件化思想

    優(yōu)缺點(diǎn):

    優(yōu)點(diǎn):體積小就谜。接口靈活怪蔑。侵入性好,可用于頁(yè)面的一部分丧荐,而不是整個(gè)頁(yè)面缆瓣。擴(kuò)展性好。源碼規(guī)范簡(jiǎn)潔虹统。代碼較為活躍弓坞,作者是中國(guó)人隧甚,可在官方論壇中文提問(wèn)。github9000+昼丑∩肽妫基于組件化的開發(fā)。它是一個(gè)輕量級(jí) mvvm框架菩帝、數(shù)據(jù)驅(qū)動(dòng)+組件化的前端開發(fā)、社區(qū)完善

    缺點(diǎn):社區(qū)不大茬腿,如果有問(wèn)題可以讀源碼呼奢。功能僅限于view 層,Ajax等功能需要額外的庫(kù)切平。對(duì)開發(fā)人員要求較高握础。開發(fā)的話,需要 webpack悴品,不然很難用禀综,最好配合es6。

  4. v-show 和 v-if的選擇

    答:

    v-if 也是惰性的:如果在初始渲染時(shí)條件為假苔严,則什么也不做——在條件第一次變?yōu)檎鏁r(shí)才開始局部編譯(編譯會(huì)被緩存起來(lái))定枷。

    相比之下,v-show 簡(jiǎn)單得多——元素始終被編譯并保留届氢,只是簡(jiǎn)單地基于 CSS 切換欠窒。

  5. Vue.js核心思想

    答:

    Vue.js是一個(gè)提供MVVM數(shù)據(jù)雙向綁定的庫(kù),專注于UI層面退子,核心思想是:數(shù)據(jù)驅(qū)動(dòng)岖妄、組件系統(tǒng)。

    數(shù)據(jù)驅(qū)動(dòng):

    Vue.js數(shù)據(jù)觀測(cè)原理在技術(shù)實(shí)現(xiàn)上寂祥,利用的是ES5Object.defineProperty和存儲(chǔ)器屬性: getter和setter(所以只兼容IE9及以上版本)荐虐,可稱為基于依賴收集的觀測(cè)機(jī)制。核心是VM丸凭,即ViewModel福扬,保證數(shù)據(jù)和視圖的一致性。

    組件式編程

  6. template參數(shù)選項(xiàng)的有無(wú)對(duì)生命周期的影響

    答:

    1. 如果Vue實(shí)例對(duì)象中有template參數(shù)選項(xiàng)贮乳,則將其作為模板編譯成render函數(shù)
    2. 如果沒有template參數(shù)選項(xiàng)忧换,則將外部的HTML作為模板編譯(template),也就是說(shuō)向拆,template參數(shù)選項(xiàng)的優(yōu)先級(jí)要比外部的HTML高
    3. 如果1,2條件都不具備亚茬,則報(bào)錯(cuò)

實(shí)際工作部分

  1. 怎么定義vue-router的動(dòng)態(tài)路由?怎么獲取傳過(guò)來(lái)的動(dòng)態(tài)參數(shù)浓恳?

    答:

    對(duì)path屬性加上/:id刹缝。 使用router對(duì)象的params.id

  2. vue-router有哪幾種導(dǎo)航鉤子

    答:

    1. vue-router 提供的導(dǎo)航鉤子主要用來(lái)攔截導(dǎo)航碗暗,讓它完成跳轉(zhuǎn)或取消

      三種:

    第一種是全局導(dǎo)航鉤子:router.beforeEach(to,from,next),作用:跳轉(zhuǎn)前進(jìn)行判斷攔截梢夯。

    第二種:組件內(nèi)的鉤子言疗;

    第三種:?jiǎn)为?dú)路由獨(dú)享組件

  3. 說(shuō)出至少4種vue當(dāng)中的指令和它的用法?

    答:

    v-if:判斷是否隱藏颂砸;

    v-for:數(shù)據(jù)循環(huán)出來(lái)噪奄;

    v-bind:class:綁定一個(gè)屬性;

    v-model:實(shí)現(xiàn)雙向綁定

  4. 8人乓、簡(jiǎn)述一些vue項(xiàng)目中文件構(gòu)成勤篮?

    答:

    build文件夾:主要就是webpack的配置;

    Config文件夾:主要的就是index.js 這個(gè)文件進(jìn)行配置代理服務(wù)器

    Src文件夾:

    “assets”共用的樣式和圖片

    “components”業(yè)務(wù)代碼存放

    “router”路由

    “APP.vue”vue 文件入口界面

    “main.js”對(duì)應(yīng)App.vue創(chuàng)建的實(shí)例色罚,也是入口文件碰缔,對(duì)應(yīng) webpack.base.config.js里的入口配置
    Static文件夾:靜態(tài)資源
    Pack.json:scripts 里面設(shè)置命令,例如設(shè)置了dev用于調(diào)試則我們開發(fā)時(shí)輸入的是npm run dev 戳护;例如設(shè)置了build 則是輸入 npm run build 用于打包;另一部分是這里可以看到我們需要的依賴包,在dependencies和devDependencies中金抡,分別對(duì)應(yīng)全局下載和局部下載的依賴包

十一、Angular和React模塊

基礎(chǔ)部分

  1. angularJS是什么?

    答:

    AngularJS 是一個(gè) JavaScript 框架腌且。它可通過(guò) <script> 標(biāo)簽添加到 HTML 頁(yè)面梗肝。

    AngularJS 通過(guò) 指令 擴(kuò)展了 HTML,且通過(guò) 表達(dá)式 綁定數(shù)據(jù)到 HTML

  2. angularJS中的MVVM模式

    答:

    采用這種方式為合理組織代碼提供了方便切蟋,降低了代碼間的耦合度统捶,功能結(jié)構(gòu)清晰可見。
    Model:一般用來(lái)處理數(shù)據(jù)柄粹,包括讀取和設(shè)置數(shù)據(jù)喘鸟,一般指的是操作數(shù)據(jù)庫(kù)。
    View:一般用來(lái)展示數(shù)據(jù)驻右,就是放數(shù)據(jù)什黑,比如通過(guò) HTML來(lái)展示。
    Controller:因?yàn)橐粋€(gè)模塊里面可能有多個(gè)視圖和模型堪夭,控制器就起到了連接模型和視圖的
    作用愕把。
    VM--> ViewModel(視圖模型) 也就是$scope。
    MVC 模式在AngularJS 中的體現(xiàn):
    一森爽、首先定義應(yīng)用恨豁,采用ng-app屬性指定一個(gè)應(yīng)用,表示此標(biāo)簽內(nèi)所包裹的內(nèi)容都屬于
    APP的一部分爬迟。
    <html ng-app="App" lang="en">

  3. 模塊化與依賴注入

    答:

    AngularJS 模塊:
    AngularJS模塊是一種容器橘蜜,把代碼隔離并組織成簡(jiǎn)潔,整齊,可復(fù)用的塊计福。
    模塊本身不提供直接的功能:包含其他提供功能的對(duì)象的實(shí)例:控制器跌捆,過(guò)濾器,服務(wù)象颖,動(dòng)
    畫佩厚。可通過(guò)定義其提供的對(duì)象構(gòu)建模塊说订。通過(guò)依賴注入將模塊連接在一起抄瓦,構(gòu)建一個(gè)完整的
    應(yīng)用程序。
    AngularJS建立在模塊原理上陶冷。大部分 AngularJS 提供的功能都內(nèi)置到ng-*模塊中闺鲸。

    創(chuàng)建模塊:
    你可以通過(guò) AngularJS 的 angular.module 函數(shù)來(lái)創(chuàng)建模塊:
    <div ng-app="myApp">...</div>
    <script>
    var app = angular.module("myApp", []);

    </script>
    依賴注入:(Dependency Injection,簡(jiǎn)稱 DI)是一種軟件設(shè)計(jì)模式埃叭,在這種模式下,一
    個(gè)或更多的依賴(或服務(wù))被注入(或者通過(guò)引用傳遞)到一個(gè)獨(dú)立的對(duì)象(或客戶端)中悉罕,
    然后成為了該客戶端狀態(tài)的一部分。
    該模式分離了客戶端依賴本身行為的創(chuàng)建壁袄,這使得程序設(shè)計(jì)變得松耦合类早,并遵循了依賴反轉(zhuǎn)
    和單一職責(zé)原則。與服務(wù)定位器模式形成直接對(duì)比的是嗜逻,它允許客戶端了解客戶端如何使用
    該系統(tǒng)找到依賴
    一句話 涩僻,沒事你不要來(lái)找我,有事我會(huì)去找你栈顷。
    AngularJS 提供很好的依賴注入機(jī)制逆日。以下 5個(gè)核心組件用來(lái)作為依賴注入:value、
    factory萄凤、service室抽、provider、constant

  4. ReactJS的適用場(chǎng)景

    答:

    一些后臺(tái)界面靡努,或者是和后臺(tái)數(shù)據(jù)比較多坪圾,又或者和用戶交互比較多,dom 操作頻繁的
    都可以用 react惑朦。因?yàn)?react 的大特點(diǎn)就是虛擬DOM 技術(shù)兽泄,這樣可以提高渲染的性能。個(gè)
    人的體驗(yàn)就是漾月,用 react可以讓整個(gè)頁(yè)面的速度提高很多病梢。
    另外這樣做的話,和后臺(tái)的數(shù)據(jù)通過(guò)接口來(lái)進(jìn)行前后端分離栅屏,也挺好挺方便的

  5. ReactJS是什么

    答:

    React 是一個(gè)用于構(gòu)建用戶界面的 JAVASCRIPT 庫(kù)飘千。
    React主要用于構(gòu)建 UI堂鲜,很多人認(rèn)為 React 是 MVC 中的 V(視圖)。
    React 起源于 Facebook 的內(nèi)部項(xiàng)目护奈,用來(lái)架設(shè) Instagram 的網(wǎng)站缔莲,并于 2013 年 5 月
    開源。
    React 擁有較高的性能霉旗,代碼邏輯非常簡(jiǎn)單痴奏,越來(lái)越多的人已開始關(guān)注和使用它。

  6. ReactJs 的特點(diǎn)

    答:

    1. 聲明式設(shè)計(jì) ?React 采用聲明范式厌秒,可以輕松描述應(yīng)用读拆。
    2. 高效 ?React通過(guò)對(duì) DOM 的模擬,最大限度地減少與 DOM 的交互鸵闪。
    3. 靈活 ?React可以與已知的庫(kù)或框架很好地配合檐晕。
    4. JSX ? JSX 是 JavaScript 語(yǔ)法的擴(kuò)展。React 開發(fā)不一定使用 JSX 蚌讼,但我們建議使用它辟灰。
    1. 組件 ? 通過(guò) React 構(gòu)建組件,使得代碼更加容易得到復(fù)用篡石,能夠很好的應(yīng)用在大項(xiàng)目的開發(fā)中芥喇。
    1. 單向響應(yīng)的數(shù)據(jù)流 ? React 實(shí)現(xiàn)了單向響應(yīng)的數(shù)據(jù)流,從而減少了重復(fù)代碼凰萨,這也是它為什么比傳統(tǒng)數(shù)據(jù)綁定更簡(jiǎn)單继控。
  7. react Native比起標(biāo)準(zhǔn)Web開發(fā)或原生開發(fā)能夠帶來(lái)的三大好處

    答:

    1. 手勢(shì)識(shí)別:基于Web 技術(shù)(HTML5/JavaScript)構(gòu)建的移動(dòng)應(yīng)用經(jīng)常被抱怨缺乏及時(shí)響應(yīng)。而基于原生 UI的React Native能避免這些問(wèn)題從而實(shí)現(xiàn)實(shí)時(shí)響應(yīng)胖眷。
    1. 原生組件:使用 HTML5/JavaScript 實(shí)現(xiàn)的組件比起原生組件總是讓人感覺差一截武通,而React Native 由于采用了原生UI組件自然沒有此問(wèn)題。
    1. 樣式和布局:iOS瘦材、Android 和基于Web 的應(yīng)用各自有不同的樣式和布局機(jī)制厅须。React Native 通過(guò)一個(gè)基于 FlexBox的布局引擎在所有移動(dòng)平臺(tái)上實(shí)現(xiàn)了一致的跨平臺(tái)樣式和布局方案。
  8. ?

實(shí)際工作部分

  1. 看過(guò)Angular的源碼嗎食棕,它是怎么實(shí)現(xiàn)雙向數(shù)據(jù)綁定的?

    答:

    angular對(duì)常用的dom事件朗和, xhr事件等做了封裝,在里面觸發(fā)進(jìn)入angular的digest 流程簿晓。 在digest 流程里面眶拉, 會(huì)從 rootscope 開始遍歷, 檢查所有的watcher

  2. 為什么angular不推薦使用dom操作憔儿?

    答:

    Angular 倡導(dǎo)以測(cè)試驅(qū)動(dòng)開發(fā)忆植,在的 service 或者 controller 中出現(xiàn)了DOM 操作,那 么也就意味著的測(cè)試是無(wú)法通過(guò)的 使用 Angular 的其中一個(gè)好處是啥,那就是雙向數(shù)據(jù)綁定朝刊,這樣就能專注于處理業(yè)務(wù)邏輯耀里, 無(wú)需關(guān)系一堆堆的 DOM 操作。如果在 Angular 的代碼中還到處充斥著各種 DOM 操作拾氓, 那為什么不直接使用jquery 去開發(fā)呢冯挎。

  3. MVC模式的意思是,軟件可以分成三個(gè)部分咙鞍?

    答:

    視圖(View):用戶界面房官。
    控制器(Controller):業(yè)務(wù)邏輯
    模型(Model):數(shù)據(jù)保存

  4. 各部分之間的通信方式是什么?

    答:

    View 傳送指令到 Controller
    Controller 完成業(yè)務(wù)邏輯后续滋,要求 Model 改變狀態(tài)
    Model 將新的數(shù)據(jù)發(fā)送到 View翰守,用戶得到反饋

  5. ?

十二、其他

基礎(chǔ)部分

  1. ?

實(shí)際工作部分

  1. webpack是怎樣配置的疲酌,簡(jiǎn)要描述一下過(guò)程

    答:

    第一在項(xiàng)目文件創(chuàng)建一個(gè)webpack.config.js文件蜡峰,配置文件創(chuàng)建好了,第二開始正式配置webpack了朗恳,首先下載好node.js事示,因?yàn)閣ebpack基于node.js,裝好node.js后,通過(guò)命令行窗口找到項(xiàng)目文件僻肖,在項(xiàng)目文件webpack.config.js文件所在的目錄下輸入 npm install webpack -save dev 下載webpack依賴文件到本地項(xiàng)目中,下載好后會(huì)在webpack.config.js文件下自動(dòng)創(chuàng)建node_modules文件夾卢鹦,文件夾里就是所有項(xiàng)目中用到的依賴插件臀脏,現(xiàn)在只有一個(gè)webpack,項(xiàng)目中用到在下載冀自!

  2. git的作用是什么揉稚,有哪些命令,這些命令的作用是什么熬粗?在pull時(shí)搀玖,如果只想要文件的一部分而不是工程文件的整個(gè),使用什么命令驻呐?git的沖突如何解決灌诅?

    答:

    git是一個(gè)開源的分布式版本控制系統(tǒng),用以有效含末、高速處理很小到非常大的項(xiàng)目版本管理猜拾。

    常用的命令:
    git init 初始化倉(cāng)庫(kù)

    git config --globaluser.name 配置用戶名

    git config --globaluser.email 配置郵箱

    git add 文件添加到暫存區(qū)

    git commit 文件添加到倉(cāng)庫(kù)

    git branch 列出所有的分支

    git status 顯示有變更的文件

    git log 查看當(dāng)前分支的版本歷史

    git push 提交本地代碼到遠(yuǎn)程

    git pull 從遠(yuǎn)程倉(cāng)庫(kù)下載到本地

    git checkout 創(chuàng)建切換分支

    解決git分支沖突: 將本地dev刪除,在重新checkout一個(gè)dev分支(保證了此時(shí)我們的本地dev分支是最新的),在進(jìn)行pull服務(wù)器分支,就這樣解決了.

  3. 怎么防止內(nèi)存泄露?

    答:

    1. 減少不必要的全局變量佣盒,或者生命周期較長(zhǎng)的對(duì)象挎袜,及時(shí)對(duì)無(wú)用的數(shù)據(jù)進(jìn)行垃圾回收
    2. 注意程序邏輯,避免“死循環(huán)”之類的
    3. 避免創(chuàng)建過(guò)多的對(duì)象 。
  4. 網(wǎng)站優(yōu)化時(shí)怎么做數(shù)據(jù)分析盯仪?

    答:

網(wǎng)站優(yōu)化時(shí)紊搪,我們需要每天在百度統(tǒng)計(jì)中查看我們網(wǎng)站的每日流量,還有在各大站長(zhǎng)平臺(tái)中查看網(wǎng)站的收錄量全景,網(wǎng)站關(guān)鍵詞流量耀石,還有就是每天要用站長(zhǎng)工具查看網(wǎng)站的基本情況。這些數(shù)據(jù)都是最基礎(chǔ)的蚪燕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娶牌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子馆纳,更是在濱河造成了極大的恐慌诗良,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鲁驶,死亡現(xiàn)場(chǎng)離奇詭異鉴裹,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)钥弯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門径荔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人脆霎,你說(shuō)我怎么就攤上這事总处。” “怎么了睛蛛?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵鹦马,是天一觀的道長(zhǎng)佳魔。 經(jīng)常有香客問(wèn)我藐守,道長(zhǎng),這世上最難降的妖魔是什么疚宇? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任客冈,我火速辦了婚禮旭从,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘场仲。我一直安慰自己和悦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布渠缕。 她就那樣靜靜地躺著摹闽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪褐健。 梳的紋絲不亂的頭發(fā)上付鹿,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天澜汤,我揣著相機(jī)與錄音,去河邊找鬼舵匾。 笑死俊抵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坐梯。 我是一名探鬼主播徽诲,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吵血!你這毒婦竟也來(lái)了谎替?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蹋辅,失蹤者是張志新(化名)和其女友劉穎钱贯,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侦另,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秩命,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了褒傅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弃锐。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖殿托,靈堂內(nèi)的尸體忽然破棺而出霹菊,到底是詐尸還是另有隱情,我是刑警寧澤支竹,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布浇辜,位于F島的核電站,受9級(jí)特大地震影響唾戚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜待诅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一叹坦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卑雁,春花似錦募书、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扣甲,卻和暖如春篮赢,著一層夾襖步出監(jiān)牢的瞬間齿椅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工启泣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涣脚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓寥茫,卻偏偏與公主長(zhǎng)得像遣蚀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纱耻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345