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