更新時間:2023-01-29 14:13:28 來源:動力節(jié)點 瀏覽1320次
正在發(fā)愁如何成為一名開發(fā)工程師的同學(xué),你們現(xiàn)在最需要做的就是除了看一些相關(guān)的面試題,還需要知道面試的一些技巧,在面試之前就了解好你即將要面試的企業(yè),了解他們的文化,這樣都可以讓你的面試成功率大大的提高,今天針對一些web前端面試題,小編做出了一些整理,希望可以幫助到大家。
1、position包含幾種屬性?absolute和relative的區(qū)別?
static:默認(rèn)狀態(tài)、沒有定位、正常流
inherit:從父元素集成position屬性的值
fixed:生成絕對定位的元素(相對于瀏覽器窗口進行定位)
absolute:生成絕對定位的元素(相位與static定位以外的第一個父元素定位)
relative:生成相對定位的元素(相對于其正常位置定位)
absolute和relative區(qū)別:父元素的padding對relative的子元素布局有影響,absolute的子元素不受影響
2、前端性能優(yōu)化
減少HTTP請求、使用內(nèi)容發(fā)布網(wǎng)絡(luò)、壓縮組件、使用Expire頭、JS放底部、CSS放頂部、避免CSS表達式等。
3、JSONP是什么?它是如何實現(xiàn)跨域的?為什么它可以實現(xiàn)跨域?
JSONP(JSON with Padding)是一個非官方的協(xié)議,它允許在服務(wù)器端集成Script tags返回至客戶端,通過javascript callback的形式實現(xiàn)跨域訪問。
由于同源策略的限制,XmlHttpRequest只允許請求當(dāng)前源(域名、協(xié)議、端口)的資源,為了實現(xiàn)跨域請求,可以通過script標(biāo)簽實現(xiàn)跨域請求(因為同源策略不阻止動態(tài)腳本插入,并且將腳本看作是從提供 Web 頁面的域上加載的),然后在服務(wù)端輸出JSON數(shù)據(jù)并執(zhí)行回調(diào)函數(shù),從而解決了跨域的數(shù)據(jù)請求。
跨域的4種方式:
①通過動態(tài)添加script標(biāo)簽,然后指定callback函數(shù),可以獲取到傳過來的json數(shù)據(jù),這時候要自己寫一個callback函數(shù)來處理數(shù)據(jù);
②使用jquery封裝好的getJson方法,傳入不同域的url?callback=?,好處是不需要手動的插入script標(biāo)簽以及定義回掉函數(shù)。jquery會自動生成一個全局函數(shù)來替換callback=?中的問號,之后獲取到數(shù)據(jù)后又會自動銷毀,實際上就是起一個臨時代理函數(shù)的作用。$.getJSON方法會自動判斷是否跨域,不跨域的話,就調(diào)用普通的ajax方法;跨域的話,則會以異步加載js文件的形式來調(diào)用jsonp的回調(diào)函數(shù)。
③通過設(shè)置window.domain來處理跨域,但是只適用于不同子域的框架間的交互。所以使用的時候可以用一個隱藏的iframe來做一個代理,讓這個iframe載入一個與你想要通過ajax獲取數(shù)據(jù)的目標(biāo)頁面處在相同的域的頁面。
④window.name是可以跨域的。window.name的值只能是字符串的形式,這個字符串的大小最大能允許2M左右甚至更大的一個容量,具體取決于不同的瀏覽器,但一般是夠用了。所以可以轉(zhuǎn)化成字符串的數(shù)據(jù)都可以使用window.name來傳遞,比如json數(shù)據(jù)。
4、瀏覽器兼容問題
css兼容性問題:①不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補丁和內(nèi)補丁不同,解決方案:用通配符*來設(shè)置各個標(biāo)簽的內(nèi)外補丁是0(即設(shè)置margin和padding為0);②div的垂直居中問題 vertical-align:middle;文字居中:將行距增加到和整個div一樣,高line-height=行高;③margin加倍問題:設(shè)置為float的div在ie下的margin會加倍。解決方案:為這個div設(shè)置樣式:display:inline;
js兼容性問題:①在標(biāo)準(zhǔn)的事件綁定中綁定事件的方法函數(shù)為addEventListener,而IE使用的是attachEvent;②事件處理中event屬性的獲取不同。標(biāo)準(zhǔn)瀏覽器是作為參數(shù)帶入,然后通過e.target獲取目標(biāo)元素;而IE是通過window.event方式獲得,通過e.srcElement獲取目標(biāo)元素;
5、閉包問題
閉包:函數(shù)能被外部調(diào)用到,則該作用連上的所有變量都會被保存下來。
作用:①可以讀取函數(shù)內(nèi)部的變量;②相當(dāng)于劃出了一塊私有作用域,避免數(shù)據(jù)污染;③讓變量始終保存在內(nèi)存中
使用全局變量被認(rèn)為是不好的習(xí)慣,而且容易造成錯誤并且維護成本較高,所以js可以采用閉包的方式讀取函數(shù)的內(nèi)部變量。但是如果大量使用閉包就會造成過多的變量始終保存在內(nèi)存中,會造成內(nèi)存泄漏。
一個簡單的閉包例子:
function f1(){
var n=999;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
以上就是“web前端開發(fā)面試題,都是整理出的精華”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動力節(jié)點Java官網(wǎng)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743