亚洲喷奶水中文字幕电影,日本aⅴ高清一区二区三区,欧美亚洲日本国产,欧美日韩亚洲中文字幕

<legend id="flx4p"><abbr id="flx4p"><thead id="flx4p"></thead></abbr></legend>

<mark id="flx4p"><thead id="flx4p"></thead></mark>

      我要投稿 投訴建議

      前端開發(fā)面試題

      時(shí)間:2022-10-25 02:33:01 面試試題 我要投稿
      • 相關(guān)推薦

      前端開發(fā)面試題大全

        前言

      前端開發(fā)面試題大全

        本文由我收集總結(jié)了一些優(yōu)質(zhì)的前端面試題,初學(xué)者閱后也要用心鉆研其中的原理,重要知識(shí)需要系統(tǒng)學(xué)習(xí)、透徹學(xué)習(xí),形成自己的知識(shí)鏈。萬不可投機(jī)取巧,只求面試過關(guān)是錯(cuò)誤的!

        前端還是一個(gè)年輕的行業(yè),新的行業(yè)標(biāo)準(zhǔn), 框架, 庫都不斷在更新和新增,正如赫門在2015深JS大會(huì)上的《前端服務(wù)化之路》主題演講中說的一句話:“每18至24個(gè)月,前端都會(huì)難一倍”,這些變化使前端的能力更加豐富、創(chuàng)造的應(yīng)用也會(huì)更加完美。所以關(guān)注各種前端技術(shù), 跟上快速變化的節(jié)奏, 也是身為一個(gè)前端程序員必備的技能之一。

        最近也收到許多微博私信的鼓勵(lì)和更正題目信息,后面會(huì)經(jīng)常更新題目和答案到github博客,但其他舊版本的分支和其他網(wǎng)站出現(xiàn)的拷貝版本上面的錯(cuò)誤回答我也管不了嘞。希望更多的前端開發(fā)可以達(dá)到既能使用也會(huì)表達(dá),對(duì)理論知識(shí)有自己的理解,也可根據(jù)下面的知識(shí)點(diǎn)一個(gè)一個(gè)去進(jìn)階學(xué)習(xí),形成自己的職業(yè)技能鏈。

        面試有幾點(diǎn)需注意:(來源寒冬winter 老師,github:@wintercn)

        1、面試題目:根據(jù)你的等級(jí)和職位的變化,入門級(jí)到專家級(jí),廣度和深度都會(huì)有所增加。

        2、題目類型:理論知識(shí),算法,項(xiàng)目細(xì)節(jié)、技術(shù)視野、開放性題,工作案例。

        3、細(xì)節(jié)追問:可以確保問到你開始不懂或面試官開始不懂為止,這樣可以大大延展題目的區(qū)分度和深度,知道你的實(shí)際能力。因?yàn)檫@種知識(shí)關(guān)聯(lián)是長(zhǎng)時(shí)期的學(xué)習(xí),臨時(shí)抱佛腳絕對(duì)是記不住的。

        4、回答問題再棒,面試官(可能是你面試職位的直接領(lǐng)導(dǎo)),會(huì)考慮我要不要這個(gè)人做我的同事?所以態(tài)度很重要、除了能做事,還要會(huì)做人。(感覺更像是相親( •̣̣̣̣̣̥́௰•̣̣̣̣̣̥̀ ))

        5、資深的前端開發(fā)能把a(bǔ)bsolute和relative弄混,這樣的人不要也罷,因?yàn)閳F(tuán)隊(duì)需要的是:你這個(gè)人具有可以依靠的才能(靠譜)。

        前端開發(fā)面試知識(shí)點(diǎn)大綱:

        作為一名前端工程師,無論工作年頭長(zhǎng)短都應(yīng)該必須掌握的知識(shí)點(diǎn):

        此條由 王子墨 發(fā)表在 攻城師的實(shí)驗(yàn)室

        備注:

        更新時(shí)間: 2015-9-10

        HTML

        Doctype作用?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別?

        HTML5 為什么只需要寫 ?

        行內(nèi)元素有哪些?塊級(jí)元素有哪些? 空(void)元素有那些?

        首先:CSS規(guī)范規(guī)定,每個(gè)元素都有display屬性,確定該元素的類型,每個(gè)元素都有默認(rèn)的display值,如div的display默認(rèn)值為“block”,則為“塊級(jí)”元素;span默認(rèn)display屬性值為“inline”,是“行內(nèi)”元素。

        (1)行內(nèi)元素有:a b span img input select strong(強(qiáng)調(diào)的語氣)

        (2)塊級(jí)元素有:div ul ol li dl dt dd h1 h2 h3 h4…p

        (3)常見的空元素:

        


       

        鮮為人知的是:

        

       
       

        頁面導(dǎo)入樣式時(shí),使用link和@import有什么區(qū)別?

        (1)link屬于XHTML標(biāo)簽,除了加載CSS外,還能用于定義RSS, 定義rel連接屬性等作用;而@import是CSS提供的,只能用于加載CSS;

        (2)頁面被加載的時(shí),link會(huì)同時(shí)被加載,而@import引用的CSS會(huì)等到頁面被加載完再加載;

        (3)import是CSS2.1 提出的,只在IE5以上才能被識(shí)別,而link是XHTML標(biāo)簽,無兼容問題;

        介紹一下你對(duì)瀏覽器內(nèi)核的理解?

        主要分成兩部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎。

        渲染引擎:負(fù)責(zé)取得網(wǎng)頁的內(nèi)容(HTML、XML、圖像等等)、整理訊息(例如加入CSS等),以及計(jì)算網(wǎng)頁的顯示方式,然后會(huì)輸出至顯示器或打印機(jī)。瀏覽器的內(nèi)核的不同對(duì)于網(wǎng)頁的語法解釋會(huì)有不同,所以渲染的效果也不相同。所有網(wǎng)頁瀏覽器、電子郵件客戶端以及其它需要編輯、顯示網(wǎng)絡(luò)內(nèi)容的應(yīng)用程序都需要內(nèi)核。

        JS引擎則:解析和執(zhí)行javascript來實(shí)現(xiàn)網(wǎng)頁的動(dòng)態(tài)效果。

        最開始渲染引擎和JS引擎并沒有區(qū)分的很明確,后來JS引擎越來越獨(dú)立,內(nèi)核就傾向于只指渲染引擎。

        常見的瀏覽器內(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的分支)]

        詳細(xì)文章:瀏覽器內(nèi)核的解析和對(duì)比 - 依水間

        html5有哪些新特性、移除了那些元素?如何處理HTML5新標(biāo)簽的瀏覽器兼容問題?如何區(qū)分 HTML 和 HTML5?

        * HTML5 現(xiàn)在已經(jīng)不是 SGML 的子集,主要是關(guān)于圖像,位置,存儲(chǔ),多任務(wù)等功能的增加。

        繪畫 canvas;

        用于媒介回放的 video 和 audio 元素;

        本地離線存儲(chǔ) localStorage 長(zhǎng)期存儲(chǔ)數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失;

        sessionStorage 的數(shù)據(jù)在瀏覽器關(guān)閉后自動(dòng)刪除;

        語意化更好的內(nèi)容元素,比如 article、footer、header、nav、section;

        表單控件,calendar、date、time、email、url、search;

        新的技術(shù)webworker, websockt, Geolocation;

        移除的元素:

        純表現(xiàn)的元素:basefont,big,center,font, s,strike,tt,u;

        對(duì)可用性產(chǎn)生負(fù)面影響的元素:frame,frameset,noframes;

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

        IE8/IE7/IE6支持通過document.createElement方法產(chǎn)生的標(biāo)簽,

        可以利用這一特性讓這些瀏覽器支持HTML5新標(biāo)簽,

        瀏覽器支持新標(biāo)簽后,還需要添加標(biāo)簽?zāi)J(rèn)的樣式。

        當(dāng)然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架

        * 如何區(qū)分: DOCTYPE聲明\新增的結(jié)構(gòu)元素\功能元素

        簡(jiǎn)述一下你對(duì)HTML語義化的理解?

        用正確的標(biāo)簽做正確的事情。

        html語義化讓頁面的內(nèi)容結(jié)構(gòu)化,結(jié)構(gòu)更清晰,便于對(duì)瀏覽器、搜索引擎解析;

        及時(shí)在沒有樣式CCS情況下也以一種文檔格式顯示,并且是容易閱讀的;

        搜索引擎的爬蟲也依賴于HTML標(biāo)記來確定上下文和各個(gè)關(guān)鍵字的權(quán)重,利于SEO;

        使閱讀源代碼的人對(duì)網(wǎng)站更容易將網(wǎng)站分塊,便于閱讀維護(hù)理解。

        HTML5的離線儲(chǔ)存怎么使用,工作原理能不能解釋一下?

        在用戶沒有與因特網(wǎng)連接時(shí),可以正常訪問站點(diǎn)或應(yīng)用,在用戶與因特網(wǎng)連接時(shí),更新用戶機(jī)器上的緩存文件。

        原理:HTML5的離線存儲(chǔ)是基于一個(gè)新建的.appcache文件的緩存機(jī)制(不是存儲(chǔ)技術(shù)),通過這個(gè)文件上的解析清單離線存儲(chǔ)資源,這些資源就會(huì)像cookie一樣被存儲(chǔ)了下來。之后當(dāng)網(wǎng)絡(luò)在處于離線狀態(tài)下時(shí),瀏覽器會(huì)通過被離線存儲(chǔ)的數(shù)據(jù)進(jìn)行頁面展示。

        如何使用:

        1、頁面頭部像下面一樣加入一個(gè)manifest的屬性;

        2、在cache.manifest文件的編寫離線存儲(chǔ)的資源;

        CACHE MANIFEST

        #v0.11

        CACHE:

        js/app.js

        css/style.css

        NETWORK:

        resourse/logo.png

        FALLBACK:

        / /offline.html

        3、在離線狀態(tài)時(shí),操作window.applicationCache進(jìn)行需求實(shí)現(xiàn)。

        詳細(xì)的使用請(qǐng)參考:有趣的HTML5:離線存儲(chǔ)

        瀏覽器是怎么對(duì)HTML5的離線儲(chǔ)存資源進(jìn)行管理和加載的呢?

        在線的情況下,瀏覽器發(fā)現(xiàn)html頭部有manifest屬性,它會(huì)請(qǐng)求manifest文件,如果是第一次訪問app,那么瀏覽器就會(huì)根據(jù)manifest文件的內(nèi)容下載相應(yīng)的資源并且進(jìn)行離線存儲(chǔ)。如果已經(jīng)訪問過app并且資源已經(jīng)離線存儲(chǔ)了,那么瀏覽器就會(huì)使用離線的資源加載頁面,然后瀏覽器會(huì)對(duì)比新的manifest文件與舊的manifest文件,如果文件沒有發(fā)生改變,就不做任何操作,如果文件改變了,那么就會(huì)重新下載文件中的資源并進(jìn)行離線存儲(chǔ)。

        離線的情況下,瀏覽器就直接使用離線存儲(chǔ)的資源。

        詳細(xì)的使用請(qǐng)參考:有趣的HTML5:離線存儲(chǔ)

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

        localStorage 長(zhǎng)期存儲(chǔ)數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失;

        sessionStorage 數(shù)據(jù)在瀏覽器關(guān)閉后自動(dòng)刪除。

        iframe有那些缺點(diǎn)?

        *iframe會(huì)阻塞主頁面的Onload事件;

        *iframe和主頁面共享連接池,而瀏覽器對(duì)相同域的連接有限制,所以會(huì)影響頁面的并行加載。

        使用iframe之前需要考慮這兩個(gè)缺點(diǎn)。如果需要使用iframe,最好是通過javascript

        動(dòng)態(tài)給iframe添加src屬性值,這樣可以可以繞開以上兩個(gè)問題。

        Label的作用是什么?是怎么用的?

        label標(biāo)簽來定義表單控制間的關(guān)系,當(dāng)用戶選擇該標(biāo)簽時(shí),瀏覽器會(huì)自動(dòng)將焦點(diǎn)轉(zhuǎn)到和標(biāo)簽相關(guān)的表單控件上。

        

        

        HTML5的form如何關(guān)閉自動(dòng)完成功能?

        給不想要提示的 form 或下某個(gè)input 設(shè)置為autocomplete=off。

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

        cookie在瀏覽器和服務(wù)器間來回傳遞。 sessionStorage和localStorage不會(huì)

        sessionStorage和localStorage的存儲(chǔ)空間更大;

        sessionStorage和localStorage有更多豐富易用的接口;

        sessionStorage和localStorage各自獨(dú)立的存儲(chǔ)空間;

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

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

        webSocket如何兼容低瀏覽器?(阿里)

        Adobe Flash Socket 、 ActiveX HTMLFile (IE) 、 基于 multipart 編碼發(fā)送 XHR 、 基于長(zhǎng)輪詢的 XHR

        CSS

        介紹一下CSS的盒子模型?

        (1)有兩種, IE 盒子模型、標(biāo)準(zhǔn) W3C 盒子模型;IE的content部分包含了 border 和 pading;

        (2)盒模型: 內(nèi)容(content)、填充(padding)、邊界(margin)、 邊框(border).

        CSS 選擇符有哪些?哪些屬性可以繼承?優(yōu)先級(jí)算法如何計(jì)算? CSS3新增偽類有那些?

        * 1.id選擇器( # myid)

        2.類選擇器(.myclassname)

        3.標(biāo)簽選擇器(div, h1, p)

        4.相鄰選擇器(h1 + p)

        5.子選擇器(ul > li)

        6.后代選擇器(li a)

        7.通配符選擇器( * )

        8.屬性選擇器(a[rel = "external"])

        9.偽類選擇器(a: hover, li: nth - child)

        * 可繼承的樣式: font-size font-family color, UL LI DL DD DT;

        * 不可繼承的樣式:border padding margin width height ;

        * 優(yōu)先級(jí)就近原則,同權(quán)重情況下樣式定義最近者為準(zhǔn);

        * 載入樣式以最后載入的定位為準(zhǔn);

        優(yōu)先級(jí)為:

        !important > id > class > tag

        important 比 內(nèi)聯(lián)優(yōu)先級(jí)高

        CSS3新增偽類舉例:

        p:first-of-type 選擇屬于其父元素的首個(gè)

      元素的每個(gè)

      元素。

        p:last-of-type 選擇屬于其父元素的最后

      元素的每個(gè)

      元素。

        p:only-of-type 選擇屬于其父元素唯一的

      元素的每個(gè)

      元素。

        p:only-child 選擇屬于其父元素的唯一子元素的每個(gè)

      元素。

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

      元素。

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

        :checked 單選框或復(fù)選框被選中。

        如何居中div?如何居中一個(gè)浮動(dòng)元素?

        給div設(shè)置一個(gè)寬度,然后添加margin:0 auto屬性

        div{

        width:200px;

        margin:0 auto;

        }

        居中一個(gè)浮動(dòng)元素

        確定容器的寬高 寬500 高 300 的層

        設(shè)置層的外邊距

        .div {

        Width:500px ; height:300px;//高度可以不設(shè)

        Margin: -150px 0 0 -250px;

        position:relative;相對(duì)定位

        background-color:pink;//方便看效果

        left:50%;

        top:50%;

        }

        列出display的值,說明他們的作用。position的值, relative和absolute定位原點(diǎn)是?

        1、block 象塊類型元素一樣顯示。

        none 缺省值。象行內(nèi)元素類型一樣顯示。

        inline-block 象行內(nèi)元素一樣顯示,但其內(nèi)容象塊類型元素一樣顯示。list-item 象塊類型元素一樣顯示,并添加樣式列表標(biāo)記。

        2、*absolute

        生成絕對(duì)定位的元素,相對(duì)于 static 定位以外的第一個(gè)父元素進(jìn)行定位。

        *fixed (老IE不支持)

        生成絕對(duì)定位的元素,相對(duì)于瀏覽器窗口進(jìn)行定位。

        *relative

        生成相對(duì)定位的元素,相對(duì)于其正常位置進(jìn)行定位。

        * static 默認(rèn)值。沒有定位,元素出現(xiàn)在正常的流中

        *(忽略 top, bottom, left, right z-index 聲明)。

        * inherit 規(guī)定從父元素繼承 position 屬性的值。

        CSS3有哪些新特性?

        CSS3實(shí)現(xiàn)圓角(border-radius:8px),陰影(box-shadow:10px),

        對(duì)文字加特效(text-shadow、),線性漸變(gradient),旋轉(zhuǎn)(transform)

        transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);//旋轉(zhuǎn),縮放,定位,傾斜

        增加了更多的CSS選擇器 多背景 rgba

        一個(gè)滿屏 品 字布局 如何設(shè)計(jì)?

        常見兼容性問題?

        * png24位的圖片在iE6瀏覽器上出現(xiàn)背景,解決方案是做成PNG8.

        * 瀏覽器默認(rèn)的margin和padding不同。解決方案是加一個(gè)全局的*{margin:0;padding:0;}來統(tǒng)一。

        * IE6雙邊距bug:塊屬性標(biāo)簽float后,又有橫行的margin情況下,在ie6顯示margin比設(shè)置的大。

        浮動(dòng)ie產(chǎn)生的雙倍距離 #box{ float:left; width:10px; margin:0 0 0 100px;}

        這種情況之下IE會(huì)產(chǎn)生20px的距離,解決方案是在float的標(biāo)簽樣式控制中加入 ——_display:inline;將其轉(zhuǎn)化為行內(nèi)屬性。(_這個(gè)符號(hào)只有ie6會(huì)識(shí)別)

        漸進(jìn)識(shí)別的方式,從總體中逐漸排除局部。

        首先,巧妙的使用“\9”這一標(biāo)記,將IE游覽器從所有情況中分離出來。

        接著,再次使用“+”將IE8和IE7、IE6分離開來,這樣IE8已經(jīng)獨(dú)立識(shí)別。

        css

        .bb{

        background-color:#f1ee18;/*所有識(shí)別*/

        .background-color:#00deff\9; /*IE6、7、8識(shí)別*/

        +background-color:#a200ff;/*IE6、7識(shí)別*/

        _background-color:#1e0bd1;/*IE6識(shí)別*/

        }

        * IE下,可以使用獲取常規(guī)屬性的方法來獲取自定義屬性,

        也可以使用getAttribute()獲取自定義屬性;

        Firefox下,只能使用getAttribute()獲取自定義屬性.

        解決方法:統(tǒng)一通過getAttribute()獲取自定義屬性.

        * IE下,even對(duì)象有x,y屬性,但是沒有pageX,pageY屬性;

        Firefox下,event對(duì)象有pageX,pageY屬性,但是沒有x,y屬性.

        * 解決方法:(條件注釋)缺點(diǎn)是在IE瀏覽器下可能會(huì)增加額外的HTTP請(qǐng)求數(shù)。

        * Chrome 中文界面下默認(rèn)會(huì)將小于 12px 的文本強(qiáng)制按照 12px 顯示,

        可通過加入 CSS 屬性 -webkit-text-size-adjust: none; 解決.

        超鏈接訪問過后hover樣式就不出現(xiàn)了 被點(diǎn)擊訪問過的超鏈接樣式不在具有hover和active了解決方法是改變CSS屬性的排列順序:

        L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}

        為什么要初始化CSS樣式。

        - 因?yàn)闉g覽器的兼容問題,不同瀏覽器對(duì)有些標(biāo)簽的默認(rèn)值是不同的,如果沒對(duì)CSS初始化往往會(huì)出現(xiàn)瀏覽器之間的頁面顯示差異。

        - 當(dāng)然,初始化樣式會(huì)對(duì)SEO有一定的影響,但魚和熊掌不可兼得,但力求影響最小的情況下初始化。

        *最簡(jiǎn)單的初始化方法就是: * {padding: 0; margin: 0;} (不建議)

        淘寶的樣式初始化:

        body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }

        body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }

        h1, h2, h3, h4, h5, h6{ font-size:100%; }

        address, cite, dfn, em, var { font-style:normal; }

        code, kbd, pre, samp { font-family:couriernew, courier, monospace; }

        small{ font-size:12px; }

        ul, ol { list-style:none; }

        a { text-decoration:none; }

        a:hover { text-decoration:underline; }

        sup { vertical-align:text-top; }

        sub{ vertical-align:text-bottom; }

        legend { color:#000; }

        fieldset, img { border:0; }

        button, input, select, textarea { font-size:100%; }

        table { border-collapse:collapse; border-spacing:0; }

        absolute的containing block計(jì)算方式跟正常流有什么不同?

        position跟display、margin collapse、overflow、float這些特性相互疊加后會(huì)怎么樣?

        對(duì)BFC規(guī)范的理解?

        (W3C CSS 2.1 規(guī)范中的一個(gè)概念,它決定了元素如何對(duì)其內(nèi)容進(jìn)行定位,以及與其他元素的關(guān) 系和相互作用。)

        css定義的權(quán)重

        以下是權(quán)重的規(guī)則:標(biāo)簽的權(quán)重為1,class的權(quán)重為10,id的權(quán)重為100,以下例子是演示各種定義的權(quán)重值:

        /*權(quán)重為1*/

        div{

        }

        /*權(quán)重為10*/

        .class1{

        }

        /*權(quán)重為100*/

        #id1{

        }

        /*權(quán)重為100+1=101*/

        #id1 div{

        }

        /*權(quán)重為10+1=11*/

        .class1 div{

        }

        /*權(quán)重為10+10+1=21*/

        .class1 .class2 div{

        }

        如果權(quán)重相同,則最后定義的樣式會(huì)起作用,但是應(yīng)該避免這種情況出現(xiàn)

        解釋下浮動(dòng)和它的工作原理?清除浮動(dòng)的技巧

        用過媒體查詢,針對(duì)移動(dòng)端的布局嗎?

        使用 CSS 預(yù)處理器嗎?喜歡那個(gè)?

        SASS

        如果需要手動(dòng)寫動(dòng)畫,你認(rèn)為最小時(shí)間間隔是多久,為什么?(阿里)

        多數(shù)顯示器默認(rèn)頻率是60Hz,即1秒刷新60次,所以理論上最小間隔為1/60*1000ms = 16.7ms

        display:inline-block 什么時(shí)候會(huì)顯示間隙?(攜程)

        移除空格、使用margin負(fù)值、使用font-size:0、letter-spacing、word-spacing

        JavaScript

        JavaScript原型,原型鏈 ? 有什么特點(diǎn)?

        說幾條寫JavaScript的基本規(guī)范?

        1.不要在同一行聲明多個(gè)變量。

        2.請(qǐng)使用 ===/!==來比較true/false或者數(shù)值

        3.使用對(duì)象字面量替代new Array這種形式

        4.不要使用全局函數(shù)。

        5.Switch語句必須帶有default分支

        6.函數(shù)不應(yīng)該有時(shí)候有返回值,有時(shí)候沒有返回值。

        7.For循環(huán)必須使用大括號(hào)

        8.If語句必須使用大括號(hào)

        9.for-in循環(huán)中的變量 應(yīng)該使用var關(guān)鍵字明確限定作用域,從而避免作用域污染。

        eval是做什么的?

        它的功能是把對(duì)應(yīng)的字符串解析成JS代碼并運(yùn)行;

        應(yīng)該避免使用eval,不安全,非常耗性能(2次,一次解析成js語句,一次執(zhí)行)。

        null,undefined 的區(qū)別?

        寫一個(gè)通用的事件偵聽器函數(shù)。

        // event(事件)工具集,來源:github.com/markyun

        markyun.Event = {

        // 頁面加載完成后

        readyEvent : function(fn) {

        if (fn==null) {

        fn=document;

        }

        var oldonload = window.onload;

        if (typeof window.onload != 'function') {

        window.onload = fn;

        } else {

        window.onload = function() {

        oldonload();

        fn();

        };

        }

        },

        // 視能力分別使用dom0||dom2||IE方式 來綁定事件

        // 參數(shù): 操作的元素,事件名稱 ,事件處理程序

        addEvent : function(element, type, handler) {

        if (element.addEventListener) {

        //事件類型、需要執(zhí)行的函數(shù)、是否捕捉

        element.addEventListener(type, handler, false);

        } else if (element.attachEvent) {

        element.attachEvent('on' + type, function() {

        handler.call(element);

        });

        } else {

        element['on' + type] = handler;

        }

        },

        // 移除事件

        removeEvent : function(element, type, handler) {

        if (element.removeEventListener) {

        element.removeEventListener(type, handler, false);

        } else if (element.datachEvent) {

        element.detachEvent('on' + type, handler);

        } else {

        element['on' + type] = null;

        }

        },

        // 阻止事件 (主要是事件冒泡,因?yàn)镮E不支持事件捕獲)

        stopPropagation : function(ev) {

        if (ev.stopPropagation) {

        ev.stopPropagation();

        } else {

        ev.cancelBubble = true;

        }

        },

        // 取消事件的默認(rèn)行為

        preventDefault : function(event) {

        if (event.preventDefault) {

        event.preventDefault();

        } else {

        event.returnValue = false;

        }

        },

        // 獲取事件目標(biāo)

        getTarget : function(event) {

        return event.target || event.srcElement;

        },

        // 獲取event對(duì)象的引用,取到事件的所有信息,確保隨時(shí)能使用event;

        getEvent : function(e) {

        var ev = e || window.event;

        if (!ev) {

        var c = this.getEvent.caller;

        while (c) {

        ev = c.arguments[0];

        if (ev && Event == ev.constructor) {

        break;

        }

        c = c.caller;

        }

        }

        return ev;

        }

        };

        Node.js的適用場(chǎng)景?

        高并發(fā)、聊天、實(shí)時(shí)消息推送

        介紹js的基本數(shù)據(jù)類型。

        number,string,boolean,object,undefined

        Javascript如何實(shí)現(xiàn)繼承?

        通過原型和構(gòu)造器

        ["1", "2", "3"].map(parseInt) 答案是多少?

        [1, NaN, NaN] 因?yàn)?parseInt 需要兩個(gè)參數(shù) (val, radix),其中 radix 表示解析時(shí)用的基數(shù)。map 傳了 3 個(gè) (element, index, array),對(duì)應(yīng)的 radix 不合法導(dǎo)致解析失敗。

        如何創(chuàng)建一個(gè)對(duì)象? (畫出此對(duì)象的內(nèi)存圖)

        function Person(name, age) {

        this.name = name;

        this.age = age;

        this.sing = function() { alert(this.name) }

        }

        談?wù)凾his對(duì)象的理解。

        this是js的一個(gè)關(guān)鍵字,隨著函數(shù)使用場(chǎng)合不同,this的值會(huì)發(fā)生變化。

        但是有一個(gè)總原則,那就是this指的是調(diào)用函數(shù)的那個(gè)對(duì)象。

        this一般情況下:是全局對(duì)象Global。 作為方法調(diào)用,那么this就是指這個(gè)對(duì)象

        事件是?IE與火狐的事件機(jī)制有什么區(qū)別? 如何阻止冒泡?

        1.我們?cè)诰W(wǎng)頁中的某個(gè)操作(有的操作對(duì)應(yīng)多個(gè)事件)。例如:當(dāng)我們點(diǎn)擊一個(gè)按鈕就會(huì)產(chǎn)生一個(gè)事件。是可以被 JavaScript 偵測(cè)到的行為。

        2.事件處理機(jī)制:IE是事件冒泡、火狐是 事件捕獲;

        3.ev.stopPropagation();

        什么是閉包(closure),為什么要用它?

        執(zhí)行say667()后,say667()閉包內(nèi)部變量會(huì)存在,而閉包內(nèi)部函數(shù)的內(nèi)部變量不會(huì)存在.使得Javascript的垃圾回收機(jī)制GC不會(huì)收回say667()所占用的資源,因?yàn)閟ay667()的內(nèi)部函數(shù)的執(zhí)行需要依賴say667()中的變量。這是對(duì)閉包作用的非常直白的描述.

        function say667() {

        // Local variable that ends up within closure

        var num = 666;

        var sayAlert = function() { alert(num); }

        num++;

        return sayAlert;

        }

        var sayAlert = say667();

        sayAlert()//執(zhí)行結(jié)果應(yīng)該彈出的667

        "use strict";是什么意思 ? 使用它的好處和壞處分別是什么?

        如何判斷一個(gè)對(duì)象是否屬于某個(gè)類?

        使用instanceof (待完善)

        if(a instanceof Person){

        alert('yes');

        }

        new操作符具體干了什么呢?

        1、創(chuàng)建一個(gè)空對(duì)象,并且 this 變量引用該對(duì)象,同時(shí)還繼承了該函數(shù)的原型。

        2、屬性和方法被加入到 this 引用的對(duì)象中。

        3、新創(chuàng)建的對(duì)象由 this 所引用,并且最后隱式的返回 this 。

        var obj = {};

        obj.__proto__ = Base.prototype;

        Base.call(obj);

        Javascript中,有一個(gè)函數(shù),執(zhí)行時(shí)對(duì)象查找時(shí),永遠(yuǎn)不會(huì)去查找原型,這個(gè)函數(shù)是?

        hasOwnProperty

        JSON 的了解?

        JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。

        它是基于JavaScript的一個(gè)子集。數(shù)據(jù)格式簡(jiǎn)單, 易于讀寫, 占用帶寬小

        {"age":"12", "name":"back"}

        js延遲加載的方式有哪些?

        defer和async、動(dòng)態(tài)創(chuàng)建DOM方式(用得最多)、按需異步載入js

        ajax 是什么?

        同步和異步的區(qū)別?

        如何解決跨域問題?

        jsonp、 iframe、window.name、window.postMessage、服務(wù)器上設(shè)置代理頁面

        模塊化怎么做?

        立即執(zhí)行函數(shù),不暴露私有成員

        var module1 = (function(){

        var _count = 0;

        var m1 = function(){

        //...

        };

        var m2 = function(){

        //...

        };

        return {

        m1 : m1,

        m2 : m2

        };

        })();

        AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)規(guī)范區(qū)別?

        異步加載的方式有哪些?

        (1) defer,只支持IE

        (2) async:

        (3) 創(chuàng)建script,插入到DOM中,加載完畢后callBack

        documen.write和 innerHTML的區(qū)別

        document.write只能重繪整個(gè)頁面

        innerHTML可以重繪頁面的一部分

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

        例子中用 add 來替換 sub,add.call(sub,3,1) == add(3,1) ,所以運(yùn)行結(jié)果為:alert(4);

        注意:js 中的函數(shù)其實(shí)是對(duì)象,函數(shù)名是對(duì) Function 對(duì)象的引用。

        function add(a,b)

        {

        alert(a+b);

        }

        function sub(a,b)

        {

        alert(a-b);

        }

        add.call(sub,3,1);

        Jquery與jQuery UI 有啥區(qū)別?

        *jQuery是一個(gè)js庫,主要提供的功能是選擇器,屬性修改和事件綁定等等。

        *jQuery UI則是在jQuery的基礎(chǔ)上,利用jQuery的擴(kuò)展性,設(shè)計(jì)的插件。

        提供了一些常用的界面元素,諸如對(duì)話框、拖動(dòng)行為、改變大小行為等等

        JQuery的源碼看過嗎?能不能簡(jiǎn)單說一下它的實(shí)現(xiàn)原理?

        jquery 中如何將數(shù)組轉(zhuǎn)化為json字符串,然后再轉(zhuǎn)化回來?

        jQuery中沒有提供這個(gè)功能,所以你需要先編寫兩個(gè)jQuery的擴(kuò)展:

        $.fn.stringifyArray = function(array) {

        return JSON.stringify(array)

        }

        $.fn.parseArray = function(array) {

        return JSON.parse(array)

        }

        然后調(diào)用:

        $("").stringifyArray(array)

        針對(duì) jQuery 的優(yōu)化方法?

        *基于Class的選擇性的性能相對(duì)于Id選擇器開銷很大,因?yàn)樾璞闅v所有DOM元素。

        *頻繁操作的DOM,先緩存起來再操作。用Jquery的鏈?zhǔn)秸{(diào)用更好。

        比如:var str=$("a").attr("href");

        *for (var i = size; i < arr.length; i++) {}

        for 循環(huán)每一次循環(huán)都查找了數(shù)組 (arr) 的.length 屬性,在開始循環(huán)的時(shí)候設(shè)置一個(gè)變量來存儲(chǔ)這個(gè)數(shù)字,可以讓循環(huán)跑得更快:

        for (var i = size, length = arr.length; i < length; i++) {}

        JavaScript中的作用域與變量聲明提升?

        如何編寫高性能的Javascript?

        那些操作會(huì)造成內(nèi)存泄漏?

        內(nèi)存泄漏指任何對(duì)象在您不再擁有或需要它之后仍然存在。

        垃圾回收器定期掃描對(duì)象,并計(jì)算引用了每個(gè)對(duì)象的其他對(duì)象的數(shù)量。如果一個(gè)對(duì)象的引用數(shù)量為 0(沒有其他對(duì)象引用過該對(duì)象),或?qū)υ搶?duì)象的惟一引用是循環(huán)的,那么該對(duì)象的內(nèi)存即可回收。

        setTimeout 的第一個(gè)參數(shù)使用字符串而非函數(shù)的話,會(huì)引發(fā)內(nèi)存泄漏。

        閉包、控制臺(tái)日志、循環(huán)(在兩個(gè)對(duì)象彼此引用且彼此保留時(shí),就會(huì)產(chǎn)生一個(gè)循環(huán))

        JQuery一個(gè)對(duì)象可以同時(shí)綁定多個(gè)事件,這是如何實(shí)現(xiàn)的?如

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

        通過判斷Global對(duì)象是否為window,如果不為window,當(dāng)前腳本沒有運(yùn)行在瀏覽器中

        其他問題

        你遇到過比較難的技術(shù)問題是?你是如何解決的?

        常使用的庫有哪些?常用的前端開發(fā)工具?開發(fā)過什么應(yīng)用或組件?

        頁面重構(gòu)怎么操作?

        列舉IE 與其他瀏覽器不一樣的特性?

        99%的網(wǎng)站都需要被重構(gòu)是那本書上寫的?

        什么叫優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)?

        WEB應(yīng)用從服務(wù)器主動(dòng)推送Data到客戶端有那些方式?

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

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

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

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

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

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

        而且缺少足夠多的第三方庫支持?雌饋,就像是Ruby/Rails當(dāng)年的樣子。

        你有哪些性能優(yōu)化的方法?

        (看雅虎14條性能優(yōu)化原則)。

        (1) 減少http請(qǐng)求次數(shù):CSS Sprites, JS、CSS源碼壓縮、圖片大小控制合適;網(wǎng)頁Gzip,CDN托管,data緩存 ,圖片服務(wù)器。

        (2) 前端模板 JS+數(shù)據(jù),減少由于HTML標(biāo)簽導(dǎo)致的帶寬浪費(fèi),前端用變量保存AJAX請(qǐng)求結(jié)果,每次操作本地變量,不用請(qǐng)求,減少請(qǐng)求次數(shù)

        (3) 用innerHTML代替DOM操作,減少DOM操作次數(shù),優(yōu)化javascript性能。

        (4) 當(dāng)需要設(shè)置的樣式很多時(shí)設(shè)置className而不是直接操作style。

        (5) 少用全局變量、緩存DOM節(jié)點(diǎn)查找的結(jié)果。減少IO讀取操作。

        (6) 避免使用CSS Expression(css表達(dá)式)又稱Dynamic properties(動(dòng)態(tài)屬性)。

        (7) 圖片預(yù)加載,將樣式表放在頂部,將腳本放在底部 加上時(shí)間戳。

        (8) 避免在頁面的主體布局中使用table,table要等其中的內(nèi)容完全下載之后才會(huì)顯示出來,顯示比div+css布局慢。

        對(duì)普通的網(wǎng)站有一個(gè)統(tǒng)一的思路,就是盡量向前端優(yōu)化、減少數(shù)據(jù)庫操作、減少磁盤IO。向前端優(yōu)化指的是,在不影響功能和體驗(yàn)的情況下,能在瀏覽器執(zhí)行的不要在服務(wù)端執(zhí)行,能在緩存服務(wù)器上直接返回的不要到應(yīng)用服務(wù)器,程序能直接取得的結(jié)果不要到外部取得,本機(jī)內(nèi)能取得的數(shù)據(jù)不要到遠(yuǎn)程取,內(nèi)存能取到的不要到磁盤取,緩存中有的不要去數(shù)據(jù)庫查詢。減少數(shù)據(jù)庫操作指減少更新次數(shù)、緩存結(jié)果減少查詢次數(shù)、將數(shù)據(jù)庫執(zhí)行的操作盡可能的讓你的程序完成(例如join查詢),減少磁盤IO指盡量不使用文件系統(tǒng)作為緩存、減少讀寫文件次數(shù)等。程序優(yōu)化永遠(yuǎn)要優(yōu)化慢的部分,換語言是無法“優(yōu)化”的。

        http狀態(tài)碼有那些?分別代表是什么意思?

        100-199 用于指定客戶端應(yīng)相應(yīng)的某些動(dòng)作。

        200-299 用于表示請(qǐng)求成功。

        300-399 用于已經(jīng)移動(dòng)的文件并且常被包含在定位頭信息中指定新的地址信息。

        400-499 用于指出客戶端的錯(cuò)誤。400 1、語義有誤,當(dāng)前請(qǐng)求無法被服務(wù)器理解。401 當(dāng)前請(qǐng)求需要用戶驗(yàn)證 403 服務(wù)器已經(jīng)理解請(qǐng)求,但是拒絕執(zhí)行它。

        500-599 用于支持服務(wù)器錯(cuò)誤。 503 – 服務(wù)不可用

        一個(gè)頁面從輸入 URL 到頁面加載顯示完成,這個(gè)過程中都發(fā)生了什么?(流程說的越詳細(xì)越好)

        查找瀏覽器緩存

        DNS解析、查找該域名對(duì)應(yīng)的IP地址、重定向(301)、發(fā)出第二個(gè)GET請(qǐng)求

        進(jìn)行HTTP協(xié)議會(huì)話

        客戶端發(fā)送報(bào)頭(請(qǐng)求報(bào)頭)

        服務(wù)器回饋報(bào)頭(響應(yīng)報(bào)頭)

        html文檔開始下載

        文檔樹建立,根據(jù)標(biāo)記請(qǐng)求所需指定MIME類型的文件

        文件顯示

        [

        瀏覽器這邊做的工作大致分為以下幾步:

        加載:根據(jù)請(qǐng)求的URL進(jìn)行域名解析,向服務(wù)器發(fā)起請(qǐng)求,接收文件(HTML、JS、CSS、圖象等)。

        解析:對(duì)加載到的資源(HTML、JS、CSS等)進(jìn)行語法解析,建議相應(yīng)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(比如HTML的DOM樹,JS的(對(duì)象)屬性表,CSS的樣式規(guī)則等等)

        }

        除了前端以外還了解什么其它技術(shù)么?你最最厲害的技能是什么?

        你常用的開發(fā)工具是什么,為什么?

        對(duì)前端界面工程師這個(gè)職位是怎么樣理解的?它的前景會(huì)怎么樣?

        前端是最貼近用戶的程序員,比后端、數(shù)據(jù)庫、產(chǎn)品經(jīng)理、運(yùn)營、安全都近。

        1、實(shí)現(xiàn)界面交互

        2、提升用戶體驗(yàn)

        3、有了Node.js,前端可以實(shí)現(xiàn)服務(wù)端的一些事情

        前端是最貼近用戶的程序員,前端的能力就是能讓產(chǎn)品從 90分進(jìn)化到 100 分,甚至更好,

        參與項(xiàng)目,快速高質(zhì)量完成實(shí)現(xiàn)效果圖,精確到1px;

        與團(tuán)隊(duì)成員,UI設(shè)計(jì),產(chǎn)品經(jīng)理的溝通;

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

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

        針對(duì)服務(wù)器的優(yōu)化、擁抱最新前端技術(shù)。

        加班的看法?

        加班就像借錢,原則應(yīng)當(dāng)是------救急不救窮

        平時(shí)如何管理你的項(xiàng)目?

        先期團(tuán)隊(duì)必須確定好全局樣式(globe.css),編碼模式(utf-8) 等;

        編寫習(xí)慣必須一致(例如都是采用繼承式的寫法,單樣式都寫成一行);

        標(biāo)注樣式編寫人,各模塊都及時(shí)標(biāo)注(標(biāo)注關(guān)鍵樣式調(diào)用的地方);

        頁面進(jìn)行標(biāo)注(例如 頁面 模塊 開始和結(jié)束);

        CSS跟HTML 分文件夾并行存放,命名都得統(tǒng)一(例如style.css);

        JS 分文件夾存放 命名以該JS功能為準(zhǔn)的英文翻譯。

        圖片采用整合的 images.png png8 格式文件使用 盡量整合在一起使用方便將來的管理

        如何設(shè)計(jì)突發(fā)大規(guī)模并發(fā)架構(gòu)?

        說說最近最流行的一些東西吧?常去哪些網(wǎng)站?

        Node.js、Mongodb、npm、MVVM、MEAN、three.js

        移動(dòng)端(Android IOS)怎么做好用戶體驗(yàn)?

        清晰的視覺縱線、信息的分組、極致的減法、

        利用選擇代替輸入、標(biāo)簽及文字的排布方式、

        依靠明文確認(rèn)密碼、合理的鍵盤利用、

        你在現(xiàn)在的團(tuán)隊(duì)處于什么樣的角色,起到了什么明顯的作用?

        你認(rèn)為怎樣才是全端工程師(Full Stack developer)?

        介紹一個(gè)你最得意的作品吧?

        你的優(yōu)點(diǎn)是什么?缺點(diǎn)是什么?

        如何管理前端團(tuán)隊(duì)?

        最近在學(xué)什么?能談?wù)勀阄磥?,5年給自己的規(guī)劃嗎?

        想問公司的問題?

        問公司問題:

        目前關(guān)注哪些最新的Web前端技術(shù)(未來的發(fā)展方向)?

        前端團(tuán)隊(duì)如何工作的(實(shí)現(xiàn)一個(gè)產(chǎn)品的流程)?

        公司的薪資結(jié)構(gòu)是什么樣子的?

        前端學(xué)習(xí)網(wǎng)站推薦

        1.極客標(biāo)簽: http://www.gbtags.com/

        2.碼農(nóng)周刊: http://weekly.manong.io/issues/

        3.前端周刊: http://www.feweekly.com/issues

        4.慕課網(wǎng): http://www.imooc.com/

        5.div.io: http://div.io

        6.Hacker News: https://news.ycombinator.com/news

        7.InfoQ: http://www.infoq.com/

        8.w3cplus: http://www.w3cplus.com/

        9.Stack Overflow: http://stackoverflow.com/

        10.w3school: http://www.w3school.com.cn/

        11.mozilla: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript

        文檔推薦

        1、jQuery 基本原理

        2、JavaScript 秘密花園

        3、CSS參考手冊(cè)

      【前端開發(fā)面試題】相關(guān)文章:

      前端開發(fā)實(shí)習(xí)報(bào)告08-01

      web前端面試題02-22

      web前端開發(fā)求職簡(jiǎn)歷01-18

      前端程序員JavaScript面試題02-19

      前端面試題庫及答案09-25

      Web前端面試題目及答案09-26

      web前端開發(fā)求職簡(jiǎn)歷4篇01-18

      前端開發(fā)常見面試試題02-14

      web前端開發(fā)的自我評(píng)價(jià)簡(jiǎn)歷模板07-18

      阿里前端大神寒冬談?wù)劽嬖嚺c面試題02-13