前端面試題(三)

2022-04-29 13:39:09 字數 3825 閱讀 5104

px畫素,相對長度單位;

em相對長度單位,會繼承父元素的字型大小;

rem相對長度單位,會根據節點html定義,不會受父元素的影響。

盒子模型包含內容的大小,padding,border,margin

css盒子模型分為ie盒子模型和標準盒子模型;

ie盒子模型內容的寬高包含了padding和border。

class,id,標籤,萬用字元 * ,偽類,子代,後代,相鄰;

font-size,font-family,color,ul,li;

*                              0

標籤                        1

class                       10

id                            100

內聯樣式                  1000

!imported               無窮大

計算時根據它的權重和來計算;

last-of-type , last-child , first-of-type , first-child

push() 尾部插入;

pop() 尾部刪除;

shift() 頭部刪除;

unshift() 頭部插入;

網頁元素都有預設行為;

冒泡指事件由文件巢狀最深的元素接受,然後逐級向外傳播;

通過stoppropagation() 方法用event物件在事件函式中呼叫阻止事件冒泡;

通過preventdefault() 方法用event物件在事件函式中呼叫阻止預設行為;

動態建立

方案3:

$(document).ready()是jquery中是入口函式。它能適應與所有瀏覽器;

window.onload是頁面中的所有元素載入完成後才執行;

$(document).ready()是將頁面中的dom文件結構繪製完成就執行。

(1)建立新節點

createdocumentfragment()    //建立乙個dom片段

createelement()   //建立乙個具體的元素

createtextnode()   //建立乙個文字節點

(2)新增、移除、替換、插入

removechild()

replacechild()

insertbefore()

(3)查詢

getelementsbytagname()    //通過標籤名稱

getelementsbyname()    //通過元素的name屬性的值

getelementbyid()    //通過元素id,唯一性

css sprites  :  精靈圖/雪碧圖

能夠優化頁面效能,減少的位元組和http請求。

let 類似於 var, let無法重複定義,塊級作用域外無法讀取塊級作用域內的let宣告的變數,let沒有變數提公升,無法在宣告之前使用變數;

const是常量宣告,一旦宣告就不能更改,宣告的變數是陣列或者物件的時候,宣告的只是乙個引用位址並不是乙個值,所以陣列和物件中的值是可以改變的。

在函式中在巢狀乙個函式,裡面的函式能夠訪問外面函式中的變數,外部的變數是內部函式的一部分;

用外層函式包裹要保護的變數和內層函式,外層函式將內層函式返回到外部,呼叫外層函式,可以獲得內層函式的物件,儲存在外部變數中。

閉包能夠有效的防治變數被汙染;

由於瀏覽器的同源策略,凡是傳送請求 url 的協議,網域名稱,埠三者之間任意乙個與當前頁面位址不同即為跨域;

跨域請求資源方法:

proxy**,jsonp , cors

ajax工作原理是

相當於在使用者和伺服器之間加了—個中間層(ajax引擎),使使用者操作與伺服器響應非同步化。

對於使用者請求ajax引擎會做一些資料驗證和資料處理,不是所有請求都提交給伺服器,當需要從伺服器讀取新資料時由ajax引擎代為向伺服器提交請求。ajax最大優點就是不重新整理整個頁面的前提下與伺服器通訊維護資料。

過程的話

第一步:建立乙個ajax引擎物件,ie6的是new activexobject其他瀏覽器是new乙個xmlhttprequest物件

第二步 呼叫open方法啟動乙個請求以備傳送,open方法傳入三個引數 請求型別,請求url和乙個布林值

第三步 呼叫send方法傳送

第四部 處理**函式onreadystatechange,當readstate = 4 響應資料完成時 並且2status=200請求成功的時候處理響應資料

注意:**函式要寫在open()和send()之前

jsonp原理

動態建立乙個script標籤,利用script標籤src屬性訪問沒有限制,實現跨域。

web客戶端通過與呼叫指令碼一樣的方式來呼叫跨域伺服器上動態生成的js格式檔案(字尾.json),伺服器之所以要動態生成json檔案目的把客戶端需要的資料裝入進去。

允許使用者傳遞乙個callback引數給服務端,然後服務端返回資料時會將這個callback引數作為函式名來包裹住json資料 這樣客戶端就可以隨意定製自己的函式來自動處理返回資料

ajax 和 jsonp的區別

1.ajax和jsonp的呼叫方式很像,目的一樣,都是請求url,然後把伺服器返回的資料進行處理,因此jquery和ext等框架都把jsonp作為ajax的一種形式進行了封裝;

2.實質不同

ajax的核心是通過xmlhttprequest獲取非本頁內容

jsonp的核心是動態新增script標籤呼叫伺服器提供的js指令碼(字尾.json)

3.區別聯絡

不在於是否跨域

ajax通過服務端**一樣跨域

jsonp也不並不排斥同域的資料的獲取

4.jsonp是一種方式或者說非強制性的協議

ajax也不一定非要用json格式來傳遞資料 

5.jsonp只支援get請求,ajax支援get和post請求

post : 資料在請求體中;

在不同的網頁需要接受同乙個賬號名的時候用get;

在登入和註冊提交的時候用post;

總之獲取資料用 get,提交資料用post。

/*call()方法*/

function.call(thisobj[, arg1[, arg2[, [,...argn]]]]);

它們各自的定義:

call:呼叫乙個物件的乙個方法,用另乙個物件替換當前物件。例如:b.call(a, args1,args2);即a物件呼叫b物件的方法。

它們的共同之處:

都「可以用來代替另乙個物件呼叫乙個方法,將乙個函式的物件上下文從初始的上下文改變為由thisobj指定的新物件」。

它們的不同之處:利用事件冒泡,只指定乙個事件處理程式,就可以管理某一型別的所有事件。

js:var lis = document.getelementsbyclassname(『lis』);

lis.add

object.prototype.tostring.call()

在父級尾部新增乙個空的 div ,div 新增 clear : both

在父級設定  overflow : hidden

使用偽元素

使用雙偽元素 after 和 before;

promise是最早由社群提出和實現的一種解決非同步程式設計的方案,比其他傳統的解決方案(**函式和事件)更合理和更強大。

es6 將其寫進了語言標準,統一了用法,原生提供了promise物件。

es6 規定,promise物件是乙個建構函式,用來生成promise例項。

詳細參閱  35條 雅虎軍規!

前端面試題(三)

怎麼設定靜態資源快取時間 1.設定expires屬性 2.設定cache control max age 毫秒瀏覽器今天請求了靜態檔案,如果檔案設定乙個月快取,明天再訪問,會不會發起網路請求 1.主流瀏覽器會根據最近一次訪問時間,減去last modify,再除以十,來決定對這個檔案儲存多久。也即 ...

前端面試題集錦三

瀏覽器怎麼匹配某個選擇器?https的原理,加密方式?由於http是明文傳送資料,不具備加密的功能。通訊協議中通過ssl 安全套接層 或tsl的組合使用 來加密http的通訊內容。http 加密 認證 完整性保護 https。加密方式 對稱加密方式和非對稱加密。對稱加密即為加密和解密共用同乙個方式。...

前端面試題整理 三

函式是 jquery 函式的別稱。函式用於將任何物件包裹成 jquery 物件,接著你就被允許呼叫定義在 jquery 物件上的多個不同方法。你可以將乙個選擇器字串傳入 函式,它會返回乙個包含所有匹配的 dom 元素陣列的 jquery 物件。name selectname selected thi...