前端面試總結(jié)

1.浮動(dòng)的div怎么居中?

2.絕對(duì)定位div居中?

? ? ? ? .test{

? ? ? ? width:100px;height:100px;

? ? ? ? position:absolute;

? ? ? ? top:0; left:0;bottom:0;right:0

? ? ? ? marign:auto;

}

3.使用原生js實(shí)現(xiàn)點(diǎn)擊table切換不同內(nèi)容

4.原生js實(shí)現(xiàn)輪播

? ? ? ? 大體思路: 先創(chuàng)建一個(gè)div,限定其寬度和高度,overflow:hidden,且設(shè)置其position為relative。然后創(chuàng)建一個(gè)裝圖片的div,寬度為所有圖片的總寬度,且設(shè)置其position為absolute,并且使其中的內(nèi)容浮動(dòng),這樣所有的圖片就處于一行中。然后為了實(shí)現(xiàn)無(wú)縫滾動(dòng),所以需要在首尾分別添加一張過(guò)渡圖片。 先添加兩個(gè)按鈕, 使其可以手動(dòng)輪播,然后只需要添加一個(gè)定時(shí)器使其朝一個(gè)方向自動(dòng)輪播即可,因?yàn)橛脩粲袝r(shí)需要查看詳情,所以當(dāng)鼠標(biāo)進(jìn)入時(shí)就clear定時(shí)器,滑出再定時(shí)播放。為了更好地用戶體驗(yàn),我們?cè)傧旅嫣砑恿艘慌判A點(diǎn),用戶可以清楚地知道現(xiàn)在所處的位置, 最后, 利用閉包使得用戶可以直接通過(guò)點(diǎn)擊小圓點(diǎn)切換圖片。

5.h1與title的區(qū)別,b與strong的區(qū)別,i和em的區(qū)別?

? ? ? ? h1突出文章主題,面對(duì)用戶,更突出其視覺(jué)效果,突出網(wǎng)站標(biāo)題或關(guān)鍵字用title。一篇文章,一個(gè)頁(yè)面最好只用一個(gè)h1,多個(gè)h1會(huì)稀釋主題。一個(gè)網(wǎng)站可以有多個(gè)title,最好一個(gè)單頁(yè)用一個(gè)title,以便突出網(wǎng)站頁(yè)面主體信息,從seo看,title權(quán)重比h1高,適用性比h1廣。標(biāo)記了h1的文字頁(yè)面給予的權(quán)重會(huì)比頁(yè)面內(nèi)其他權(quán)重高很多。一個(gè)好的網(wǎng)站是h1和title并存,既突出h1文章主題,又突出網(wǎng)站主題和關(guān)鍵字。達(dá)到雙重優(yōu)化網(wǎng)站的效果。

? ? ? ? strong與em是結(jié)構(gòu)化標(biāo)簽,而b與i是表現(xiàn)化標(biāo)簽

6.lable的作用?常怎么用?

? ? 作用: 為 input 元素定義標(biāo)注(標(biāo)記)。

? ? 使用:<label> 標(biāo)簽的 for 屬性應(yīng)當(dāng)與input元素的 id 屬性相同。

? ? label 元素不會(huì)向用戶呈現(xiàn)任何特殊效果。不過(guò),它為鼠標(biāo)用戶改進(jìn)了可用性。如果您在 label 元素內(nèi)點(diǎn)擊文本,就會(huì)觸發(fā)此控件。就是說(shuō),當(dāng)用戶選擇該標(biāo)簽時(shí),瀏覽器就會(huì)自動(dòng)將焦點(diǎn)轉(zhuǎn)到和標(biāo)簽相關(guān)的表單控件上。

7.js回調(diào)函數(shù)的作用:? js代碼會(huì)至上而下一條線執(zhí)行下去,但是有時(shí)候我們需要等到一個(gè)操作結(jié)束之后再進(jìn)行下一個(gè)操作,這時(shí)候就需要用到回調(diào)函數(shù)。

8.vue計(jì)算屬性,什么情景使用

9.選擇器優(yōu)先級(jí)(筆試都會(huì)有)

10.typeof undefined //undefined

11.循環(huán)遍歷加監(jiān)聽(tīng)

12.mui實(shí)現(xiàn)底部加載更多時(shí)沒(méi)有數(shù)據(jù),顯示底部圖片

13.vue常用指令

14.vux怎么使用插件

15.vue中各生命周期鉤子執(zhí)行時(shí)機(jī):

? ? beforeCreate:在實(shí)例初始化之后,數(shù)據(jù)觀測(cè)(data observer) 和 event/watcher 事件配置之前被調(diào)用。

? ? created:實(shí)例已經(jīng)創(chuàng)建完成之后被調(diào)用。在這一步,實(shí)例已完成以下的配置:數(shù)據(jù)觀測(cè)(data observer),屬性和方法的運(yùn)算, watch/event 事件回調(diào)。然而,掛載階段還沒(méi)開(kāi)始,$el 屬性目前不可見(jiàn)。

? ? beforeMount:在掛載開(kāi)始之前被調(diào)用:相關(guān)的 render 函數(shù)首次被調(diào)用。

? ? mounted:el 被新創(chuàng)建的 vm.$el 替換,并掛載到實(shí)例上去之后調(diào)用該鉤子。

? ? beforeUpdate:數(shù)據(jù)更新時(shí)調(diào)用,發(fā)生在虛擬 DOM 重新渲染和打補(bǔ)丁之前。 你可以在這個(gè)鉤子中進(jìn)一步地更改狀態(tài),這不會(huì)觸發(fā)附加的重渲染過(guò)程。

? ? updated:由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM 重新渲染和打補(bǔ)丁,在這之后會(huì)調(diào)用該鉤子。

? ? 當(dāng)這個(gè)鉤子被調(diào)用時(shí),組件 DOM 已經(jīng)更新,所以你現(xiàn)在可以執(zhí)行依賴(lài)于 DOM 的操作。然而在大多數(shù)情況下,你應(yīng)該避免在此期間更改狀態(tài),因?yàn)檫@可能會(huì)導(dǎo)致更新無(wú)限循環(huán)。

該鉤子在服務(wù)器端渲染期間不被調(diào)用。

? ? beforeDestroy:實(shí)例銷(xiāo)毀之前調(diào)用。在這一步,實(shí)例仍然完全可用。

? ? destroyed:Vue 實(shí)例銷(xiāo)毀后調(diào)用。調(diào)用后,Vue 實(shí)例指示的所有東西都會(huì)解綁定,所有的事件監(jiān)聽(tīng)器會(huì)被移除,所有的子實(shí)例也會(huì)被銷(xiāo)毀。 該鉤子在服務(wù)器端渲染期間不被調(diào)用。

16.dom事件阻塞:

? ? ? ? event.stopPropagation(); //只會(huì)阻止事件傳遞,不會(huì)阻止事件的默認(rèn)行為;

? ? ? ? clike事件函數(shù)返回false, //即會(huì)阻止事件傳遞,不會(huì)阻止事件的默認(rèn)行為;

17.vue操作數(shù)組哪個(gè)方法可以觸發(fā)雙向數(shù)據(jù)綁定:數(shù)組的變異操作方法都能觸發(fā)

18.js中怎么處理浮點(diǎn)數(shù)相加不精確問(wèn)題,如0.1+0.2=0.300000004;

? ? ? ? 使用階乘

19.多終端多分辨率適配方案:

? ? ? ? 1.使用百分比自適應(yīng)布局

? ? ? ? 2.使用rem單位適配網(wǎng)頁(yè),效果很好,瀏覽器的兼容性也不錯(cuò)只要一行代碼就能適配多個(gè)分辨率終端

? ? ? ? (function(doc,win){

? ? ? ? ? ? ? ? ? ? var docEl =doc.documentElement,

? ? ? ? ? ? ? ? ? ? resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',

? ? ? ? ? ? ? ? ? ? recalc = function(){

? ? ? ? ? ? ? ? ? ? ? ? ? ? var clientWidth = docEl.clientWidth>750 ? 750 :docEl.clientWidth;

? ? ? ? ? ? ? ? if (!clientWidth) {return};

? ? ? ? ? ? ? ? ? ? docEl.style.fontSize = 100 * (clientWidth/750) + 'px';

? ? ? ? ? ? ? ? };

? ? ? ? ? ? ? ? recalc();

? ? ? ? ? ? if (!doc.addEventListener) return;

? ? ? ? ? ? ? ? ? ? win.addEventListener(resizeEvt, recalc, false);

? ? ? ? ? ? ? ? ? ? doc.addEventListener('DOMContentLoaded', recalc, false);

? ? ? ? ? ? })(document,window)

? ? ? 3.響應(yīng)式布局來(lái)做,用媒體查詢(xún),可以使用bootstrap框架

20.vue組件中data為什么必須是一個(gè)函數(shù)?

? ? ? ? Object是引用數(shù)據(jù)類(lèi)型,如果不用function 返回,每個(gè)組件的data 都是內(nèi)存的同一個(gè)地址,一個(gè)數(shù)據(jù)改變了其他也改變了;javascipt只有函數(shù)構(gòu)成作用域(注意理解作用域,只有函數(shù)的{}構(gòu)成作用域,對(duì)象的{}以及 if(){}都不構(gòu)成作用域),data是一個(gè)函數(shù)時(shí),每個(gè)組件實(shí)例都有自己的作用域,每個(gè)實(shí)例相互獨(dú)立,不會(huì)相互影響

? ? 當(dāng)一個(gè)組件被定義, data 必須聲明為返回一個(gè)初始數(shù)據(jù)對(duì)象的函數(shù),因?yàn)榻M件可能被用來(lái)創(chuàng)建多個(gè)實(shí)例。如果 data 仍然是一個(gè)純粹的對(duì)象,則所有的實(shí)例將共享引用同一個(gè)數(shù)據(jù)對(duì)象!通過(guò)提供 data 函數(shù),每次創(chuàng)建一個(gè)新實(shí)例后,我們能夠調(diào)用 data 函數(shù),從而返回初始數(shù)據(jù)的一個(gè)全新副本數(shù)據(jù)對(duì)象。

21.js中的隱式轉(zhuǎn)換和強(qiáng)制類(lèi)型轉(zhuǎn)換

? ? ? ? ? ? 兩個(gè)不同類(lèi)型比較時(shí),會(huì)產(chǎn)生隱式類(lèi)型轉(zhuǎn)換,如false==1;//false, false先轉(zhuǎn)換為數(shù)字0

? ? ? ? ? ? js中的不同的數(shù)據(jù)類(lèi)型之間的比較轉(zhuǎn)換規(guī)則如下:

? ? ? ? 1. 對(duì)象和布爾值比較

? ? ? ? 對(duì)象和布爾值進(jìn)行比較時(shí),對(duì)象先轉(zhuǎn)換為字符串,然后再轉(zhuǎn)換為數(shù)字,布爾值直接轉(zhuǎn)換為數(shù)字

? ? ? ? [] == true;? //false? []轉(zhuǎn)換為字符串'',然后轉(zhuǎn)換為數(shù)字0,true轉(zhuǎn)換為數(shù)字1,所以為false

? ? ? ? 2. 對(duì)象和字符串比較

? ? ? ? ? ? 對(duì)象和字符串進(jìn)行比較時(shí),對(duì)象轉(zhuǎn)換為字符串,然后兩者進(jìn)行比較。

? ? ? ? ? ? [1,2,3] == '1,2,3' // true? [1,2,3]轉(zhuǎn)化為'1,2,3',然后和'1,2,3', so結(jié)果為true;

? ? ? ? 3. 對(duì)象和數(shù)字比較

? ? ? ? ? ? 對(duì)象和數(shù)字進(jìn)行比較時(shí),對(duì)象先轉(zhuǎn)換為字符串,然后轉(zhuǎn)換為數(shù)字,再和數(shù)字進(jìn)行比較。

? ? ? ? ? ? [1] == 1;? // true? `對(duì)象先轉(zhuǎn)換為字符串再轉(zhuǎn)換為數(shù)字,二者再比較 [1] => '1' => 1 所以結(jié)果為true

? ? ? ? 4. 字符串和數(shù)字比較

? ? ? ? ? ? 字符串和數(shù)字進(jìn)行比較時(shí),字符串轉(zhuǎn)換成數(shù)字,二者再比較。

? ? ? ? ? ? '1' == 1 // true

? ? ? ? 5. 字符串和布爾值比較

? ? ? ? ? ? 字符串和布爾值進(jìn)行比較時(shí),二者全部轉(zhuǎn)換成數(shù)值再比較。

? ? ? ? ? ? ? ? '1' == true; // true

? ? ? ? 6. 布爾值和數(shù)字比較

? ? ? ? ? ? ? ? 布爾值和數(shù)字進(jìn)行比較時(shí),布爾轉(zhuǎn)換為數(shù)字,二者比較。

? ? ? ? ? ? ? ? true == 1 // true

? ? ? 強(qiáng)制類(lèi)型轉(zhuǎn)換:如let str = '123',? let num = Number(str)? //num = 123;

22.數(shù)組打亂

23.js的哪些操作會(huì)造成內(nèi)存泄漏

? ? ? 1>. 閉包

? ? ? ? 2>.沒(méi)有及時(shí)清理的定時(shí)器和回調(diào)函數(shù)

? ? ? ? 3>.意外的全局變量

24.vux的全局鉤子:導(dǎo)航守衛(wèi)怎么使用的

25.清除浮動(dòng)的6種方式:如 父子兩層div,子元素浮動(dòng)

? ? ? ? ①父元素設(shè)置高度

? ? ? ? ②父元素設(shè)置overflow:hidden

? ? ? ? ③父元素開(kāi)始絕對(duì)定位

? ? ? ? ④添加<br>空標(biāo)簽,并設(shè)置屬性clear='all'

? ? ? ? ⑤添加空<div>標(biāo)簽,并設(shè)置屬性clear:'both',

? ? ? ? ? ? ? ? 會(huì)有最小高度問(wèn)題,添加font-size:'0px';可以解決,但是還會(huì)遺留2px的高度

? ? ? ? ⑥終極解決方案

? ? ? ? ? ? .clearfix{

? ? ? ? ? ? ? ? /* 兼容IE6,7以下不支持偽元素,,可以開(kāi)啟HasLayout */

? ? ? ? ? ? ? ? *zoom: 1;

? ? ? ? ? ? ? }

? ? ? ? ? ? .clearfix:after,

? ? ? ? ? ? .clearfix:before{

? ? ? ? ? ? ? ? ? content: "";

? ? ? ? ? ? ? ? ? display: block;

? ? ? ? ? ? ? ? ? clear: both;

? ? ? ? ? ? }

26.三列等分布局實(shí)現(xiàn),使用百分比布局

27.性能優(yōu)化:

? ? ? ? ①減少http請(qǐng)求次數(shù), 合并圖片/合并多個(gè)css或多個(gè)js/圖片懶加載

? ? ? ? ②控制資源文件加載優(yōu)先級(jí),優(yōu)先加載css,最后加載javascript

? ? ? ? ③瀏覽器緩存

? ? ? ? ④減少重排, 盡量使用增加class屬性,而不是通過(guò)style操作樣式

? ? ? ? ⑤減少DOM操作

? ? ? ? ⑥圖標(biāo)使用IconFont替換

28.數(shù)組的變異方法有哪些?

29.display屬性有幾個(gè)值,分別什么含義?

30.異步和同步的區(qū)別

31.什么是事件委托

32.http狀態(tài)碼和含義: 404:找不到文件/500:服務(wù)器異常/200:成功

33.split()和join()方法是什么意思?

? ? ? split:用于把一個(gè)字符串分割成字符串?dāng)?shù)組。

? ? ? join:把數(shù)組中的所有元素放入一個(gè)字符串,元素通過(guò)指定的分隔符進(jìn)行分隔

34.HTML5有哪些新增的表單元素(大多數(shù)瀏覽器都還不支持)

? ? ? ? datalist: 元素規(guī)定輸入域的選項(xiàng)列表

? ? ? ? ? ? ? ? ? ? ? ? 列表是通過(guò) datalist 內(nèi)的 option 元素創(chuàng)建的(option 元素永遠(yuǎn)都要設(shè)置 value 屬性)。

? ? ? ? ? ? ? ? ? ? ? ? 如需把 datalist 綁定到輸入域,請(qǐng)用輸入域的 list 屬性引用 datalist 的 id:

? ? ? ? keygen:元素的作用是提供一種驗(yàn)證用戶的可靠方法

? ? ? ? output:用于不同類(lèi)型的輸出,比如計(jì)算或腳本輸出

35.HTML5 input新增輸入類(lèi)型:

? ? ? ? email, url, number, Date pickers (date, month, week, time, datetime, datetime-local),

? ? ? ? color,search

35.選擇器都有哪些?

? ? ? ? 類(lèi):? .className;

? ? ? ? id:? #id

? ? ? ? 屬性:? [title]

? ? ? ? 子選擇器: p > span

? ? ? ? 相鄰兄弟選擇器:? p + p

? ? ? ? 后代選擇器:? div? .className或 div? p

36.vue組件間通信

37.自定義組件,插槽

38.行高line-height設(shè)置2和2em什么區(qū)別:

? ??????line-height:2;?行高是2倍的文字大小,均以相應(yīng)的字體為基準(zhǔn)。?

? ??????line-htight:2em;?行高是2倍的文字大小,文字大小是指父元素中設(shè)定的字體大小。

39.marign百分比

40.loading和ready的區(qū)別

41.JSONP跨域時(shí)cookies是否有效

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容