前端面試題(一)

2021-10-09 16:52:34 字數 3739 閱讀 9800

部落格說明

1、請你講一下js監聽物件屬性的改變具體是怎麼實現的,它們各自有什麼特點?

object.defineproperty(user,'name', })
缺點:如果id不在user物件中,則不能監聽id的變化

var  user = new proxy({}, })
這樣即使有屬性在user中不存在,通過user.id來定義也同樣可以這樣監聽這個屬性的變化

2、如果要畫一條0.5px的線,你會怎麼去實現呢?講講你的方法

3、**css3中的content-box和border-box的區別

他們二者有什麼區別呢?

content-box是先根據設定的樣式確定元素content的寬高,有border和padding的情況下再額外增加盒子的寬高,內容寬高不受影響,設定多少就是多少。

border-box是先根據設定的樣式固定盒子的寬高,如果有border和padding的情況下,再根據盒子的寬高減去border或者padding,內容的寬高會受到影響,會被減去border或者padding。

4、display:none;visibility:hidden;和opacity:0;的區別

它們都可以讓元素隱藏掉,但是它們之間還是有區別的

5、狀態碼301,302,304不同

301表示永久重定向(301 moved permanently),表示請求的資源分配了新url,以後應使用新url

302表示臨時性重定向(302 found),請求的資源臨時分配了新url,本次請求暫且使用新url。302與301的區別是,302表示臨時性重定向,重定向的url還有可能還會改變。

303 表示請求的資源路徑發生改變,使用get方法請求新url。她與302的功能一樣,但是明確指出使用get方法請求新url

304 not modified

客戶端傳送附帶條件的請求時(if-matched,if-modified-since,if-none-match,if-range,if-unmodified-since任乙個)伺服器端允許請求訪問資源,但因發生請求未滿足條件的情況後,直接返回304modified(伺服器端資源未改變,可直接使用客戶端未過期的快取)。

304狀態碼返回時,不包含任何響應的主體部分。304雖然被劃分在3xx類別中,但是和重定向沒有關係。

6、vue的v-model的原理,vue例項是怎麼拿到data屬性的

在vue中v-model這個語法糖能夠很方便的實現表單和資料之間的繫結,v-model實現的原理封裝了一些邏輯例如:在input上繫結message,並通過input事件獲取當前事件的target.value,並賦值給message。 使用v-model的元件會自動監聽input事件,並把這個input事件所攜帶的值,傳遞給v-model所繫結的屬性。這樣元件內部的值就給到了父元件中

7、css動畫,transition和animation,哪乙個效能更好

其主要區別在於:transition需要觸發乙個事件才會隨著時間改變其css屬性;animation在不需要觸發任何事件的情況下,也可以顯式的隨時間變化來改變元素css屬性,達到一種動畫的效果

transition是使乙個或多個屬性值產生過渡效果,animation則作用於元素本身,強調流程與控制,是關鍵幀動畫的範疇。簡單的效果可以用animation,複雜的或想要更自由地掌控應該選擇transition。我認為transition會更佔資源一些。

8、vue-router 中hash模式和history模式的區別

hash原理

比如在用超連結製作錨點跳轉的時候,就會發現,url後面跟了"#id",hash值就是url中從"#"號開始到結束的部分。hash值變化瀏覽器不會重新發起請求,但是會觸發window.hashchange事件,假如我們在hashchange事件中獲取當前的hash值,並根據hash值來修改頁面內容,則達到了前端路由的目的。

history原理

history模式原理可以這樣理解,首先我們要改造我們的超連結,給每個超連結增加onclick方法,阻止預設的超連結跳轉,改用history.pushstatehistory.replacestate來更改瀏覽器中的url,並修改頁面內容。由於通過history的api調整,並不會向後端發起請求,所以也就達到了前端路由的目的

koa和express的區別,以及koa中間鍵的原理

9、用js實現乙個sleep函式

//方法一

function sleep1(ms,callback)

sleep1(1000,()=>)

//方法二

function sleep2(ms))

}sleep2(2000).then(()=>)

//方法三

function sleep3(ms))

}async function init(

await sleep3(3000)

)init().then(()=>)

10、bootstrap實現響應式布局原理

bootstrap的官方解釋:bootstrap提供了一套響應式、移動裝置優先的流式柵格系統,隨著螢幕或視口(viewport)尺寸的增加,系統會自動分為做12列。

11、瀏覽器的重排和重繪是什麼意思?重繪的觸發條件?如何避免重繪重排?

當 dom 元素的屬性發生變化 (如 color) 時, 瀏覽器會通知 render 重新描繪相應的元素, 此過程稱為 repaint。

如果該次變化涉及元素布局 (如 width), 瀏覽器則拋棄原有屬性, 重新計算並把結果傳遞給 render 以重新描繪頁面元素, 此過程稱為 reflow

減少重繪重排

1.分離讀寫操作

2.樣式集中改變

可以新增乙個類,樣式都在類中改變

3.可以使用absolute脫離文件流。

4.使用 display:none ,不使用 visibility,也不要改變 它的 z-index

5.能用css3實現的就用css3實現。

跨域問題

jsonp

hash

postmessage(html5)

websocket

cors(支援跨域通訊的ajax)

cors背後的思想,就是使用自定義的http頭部讓瀏覽器與伺服器進行溝通,從而決定請求或響應是應該成功,還是應該失敗。

同源策略

url說明

是否允許通訊

同一網域名稱下

允許同一網域名稱下不同資料夾

允許同一網域名稱,不同埠

不允許同一網域名稱,不同協議

不允許網域名稱和網域名稱對應ip

不允許主域相同,子域不同

不允許同一網域名稱,不同二級網域名稱(同上)

不允許(cookie這種情況下也不允許訪問)

不同網域名稱

不允許

如何產生閉包

當乙個巢狀的內部(子)函式引用了巢狀的外部(父)函式的變數(函式)時,產生閉包

http 2.0 給我們帶了很多新的特性,簡單總結一下:

感謝

淺述函式防抖和函式節流

以及勤勞的自己,個人部落格,github

前端面試題 (一)

此處省略一萬個字表達我的心情.通常當滑鼠滑動到元素上的時候顯示 alt是 get方法 傳送乙個請求來取得伺服器上的某一資源 post方法 向url指定的資源提交資料或附加新的資料 put方法 跟post方法很像,也是想伺服器提交資料。但是,它們之間有不同。put指定了資源在伺服器上的位置,而post...

前端面試題

sprites是什麼和為什麼要使用他們?css 精靈 把一堆小的整合到一張大的上,減輕伺服器對的請求數量 有可能替代sprites的方法是什麼?svg圖示,字型圖示,字元編碼等等。1 在div排版的時候,假設現在是100px的寬,我在盒子左側用padding left留個10px的白,div就撐開了...

前端面試題

行內元素有哪些?塊級元素有哪些?空 void 元素有哪些?link和 import的區別是?常見相容性問題?含移動端 html5的離線儲存?描寫一段語義化的html 吧 html5的form如何關閉自動完成功能?什麼是閉包 closure 為什麼要用?localstorage和sessionstor...