十道前端面試題(2)

2021-09-28 17:53:58 字數 4346 閱讀 8655

為什麼css樣式初始化,目的是為了什麼

js繼承

常見布局的方法

rem,px,em的區別

typeof去判斷資料型別返回值有哪些

快排和冒泡的原理

清除浮動的方法

定時器settimeout的執行機制

get和post的請求區別

浮動元素有什麼特性

之所以要進行css樣式初始化是因為不同瀏覽器對標籤對預設樣式值不同

如果不進行初始化會導致頁面在不同瀏覽器上的顯示差異

最簡單的初始化樣式

*
**樣式初始化

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 

body, button, input, select, textarea

h1, h2, h3, h4, h5, h6

address, cite, dfn, em, var

code, kbd, pre, samp

small

ul, ol

a a:hover

sup

sublegend

fieldset, img

button, input, select, textarea

table

body,ol,ul,h1,h2,h3,h4,h5,h6,p,th,td,dl,dd,form,fieldset,legend,input,textarea,select 

body

a a:hover

5 em

li img

table

p

body,ul,ol,li,p,h1,h2,h3,h4,h5,h6,form,fieldset,table,td,img,div 

body

ul,ol

select,input,img,select

a a:link

a:visited

a:hover,a:active,a:focus

px(pixel)畫素。相對長度單位。

畫素px是相對於顯示屏解析度而言的。使用px可以準確的定位網頁元素,但是,不同顯示器網頁的顯示效果可能會有差異,比較難相容。(⚠️ie無法調整用px作為單位的字型大小。)

em相對長度單位。

相對父元素的屬性而計算。示例: 如果父元素的font-size:16px,那2em =2*16px = 32px;

所有未經調整的瀏覽器都符合:1em=16px

rem相對長度單位。

rem是css3新增的乙個單位。rem是相對於html根元素的font-size值而言的.\

px,em,rem轉換工具:

typeof返回的資料型別一共有6種,分別是:

objectundefinedstringnumberbooleanfunction

⚠️nullarray返回object

使用乙個未定義的變數會報錯,但是typeof檢測乙個為定義變數資料型別不會報錯,返回undefined

console.log(a);     // error: a is not defined

typeof a ; // "undefined"

快排 -> 快速排序 是所有排序演算法中最快的乙個,其時間複雜度o(n log n)

基本思想:首先在列表中找乙個值作為基準值 -> 資料圍繞基準值進行 -> 將列表中小於基準值的元素移到陣列的左邊,大於基準值的元素移到陣列的右邊

氣泡排序

基本思想: 比較所有相鄰元素,如果前乙個比後面乙個大,兩者交換位置。最後比較大的值的元素就會一步一步的移動到後面正確的位置。較小的元素就像冒泡一樣出現在陣列前面位置。

清除浮動的本質: 主要是為了解決父級元素由於子級元素浮動引起的內部高度為0的問題。

常用的4種方法:

在最後乙個浮動元素後面新加乙個額外的標籤,給其設定屬性clear:both

示例:

.floata

.floatb

.otherclear

⚠️不推薦使用,因為新增無意義標籤

給父級元素新增偽類元素after(推薦使用)

和第一種方法類似,但是不用新增多餘標籤

但是:ie6-7不支援偽元素:after,使用zoom:1觸發haslayout.

示例:

.father:after

.father

父級元素設定overflow:hidden(不推薦使用)

優點: **簡潔

缺點:當內容過多的時候,不會自動換行的元素內容被隱藏,無法顯示溢位元素

使用beforeafter雙偽元素清除浮動

示例:

big

small

.clearfix:after,.clearfix:before

.clearfix:after

.clearfix

settimeout()函式是用來指定某個函式或者某段**在指定時間段後執行。

返回: 這個函式會返回乙個整數,表示定時器timer的編號,可用於清除定時器。

補充:setinterval()函式指定某個函式或者某個**每隔一定時間段執行一次。

返回: 同樣會返回乙個定時器編號timer,用於清除定時器。

settimeout()setinterval()的執行機制是將本次的**移出本次執行等到下一輪event loop時,檢測是否到了指定時間,如果到了就執行,如果沒到就等下次event loop時重新判斷。

⚠️思考根據上述描述,如果settimeout指定時間t執行一段**,那麼這段**一定是t毫秒時之後執行嗎?

理解settimeout執行機制,必須弄清楚以下名詞:

js單執行緒

任務佇列

同步任務

非同步任務

巨集任務微任務

get用於獲取資訊,且無***,可快取

post用於修改伺服器上的資料,有***,不可快取

報文上的區別:

get請求引數放在url

post請求引數放在body

資料上區別:

get請求傳遞的引數有長度限制(url最大長度微2048字元),只允許ascii字元

post引數無長度限制,且無型別限制

安全性上區別:

get安全性較差,因為傳送資料是url的一部分,在傳送密碼或其他敏感資訊時不能用get請求

post較安全因為引數不會被儲存在瀏覽器歷史或web伺服器日誌中

脫離文件流

浮動元素後面如果不是塊級元素,後面的元素將會和它併排(除非設定元素寬度,或者放不下時會自動換行)

浮動元素的上乙個元素如果沒有浮動,浮動只會在當前行浮動。當浮動元素遇到浮動元素將同行浮動

元素設定了position:absolute或position:fixed時浮動會被忽略

浮動會引起父元素高度塌陷

浮動元素會被後乙個元素的margin-top影響

十道前端面試題(1)

陣列去重 http狀態碼 css彈性布局 position屬性有哪些值,分別有什麼含義 const和let的區別,可以改變const定義物件某個屬性嗎 this的理解,如何改變this的指向 let和var的區別,let的產生背景 var的變數提公升底層原理是什麼 箭頭函式,箭頭函式的特點 相同點 ...

十道前端面試題(9)

前端效能理解,優化有哪些 為什麼瀏覽器會產生同源策略 如何獲取元素的父節點和兄弟節點 jsonp的原理是什麼,處理script標籤還可以通過什麼實現?靜態資源標籤 http請求頭,響應頭裡面有哪些 margin坍塌 寫乙個api實現insertafter promise的狀態有哪些 preventd...

前端面試 前端面試題300道

jsonp是如何產生的 1 乙個眾所周知的問題,ajax直接請求普通檔案存在跨域無許可權問題,甭管你是靜態頁面 動態頁面 web伺服器,wcf,只要是跨域請求,一律不准。2 不過我們又發現,web頁面上呼叫js檔案時則不受是否跨域的影響 不僅如此,我們還發現凡是擁有 src 這個屬性的標籤都擁有跨域...