當前位置:首頁 » 網頁前端 » 前端演算法面試題及答案
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端演算法面試題及答案

發布時間: 2023-07-06 08:22:16

A. 有哪些經典的前端開發面試題及答案解析

行元素與塊元素的區別;

如何清除浮動;

定位方式當中,absolute與fixed、relative的區別;

事件的兼容問題;

Ajax是什麼;

如何優化你的頁面;

響應式布局是什麼等等。

經典的前端面試題至少有近百道,在這里也沒辦法全部給你列出來,你可以看看這個(小-程序),裡面有好幾百道面試真題,也有比較好的答案解析。

B. 前端面試題2021(JS篇(上))

(水仙花數也被稱為超完全數字不變數、自戀數、自冪數、阿姆斯特朗數。水仙花數是指一個3位數,它的每個位上的數字的3次冪之和等於它本身 例如: 1~3 + 5~3 + 3~3 =153)

(質數就是在大於1的自然數中,除了1和它本身以外不在有其他因數的自然數)

a:11,b:10

A [] B [""] C [undefined] D [null]

A ['false'] B [false] C[0] D[]

A null B undefined C 「hello」 D「world」

A "llowo" B "llow" C "llo" D null

A "llowo" B "llow" C "llo" D null

A getYear()
B getMonth()
C getDay()
DgetDate()

A 基於對象
B 移動端優先
C 事件驅動
D 跨平台

A String
B Float
C Number
D Null

A 任意單個字元
B 任意單個字母
C 任意單個字母、數字、下劃線
D 任意單個字母、數學、下劃線、$符號

A <javascript>
B <script>
C <scripting>
D <js>

A var s = 'heloe'
B var n = 20
C var x = document.getElementsByTagName('box')
D var y = document.querySelectorAll('ul li')

A document.createElement
B document.createTextNode
C document.getElementById
B document.querySelector

A ele.innerText
B ele.innerHTML
C ele.textContent
D ele.htmlContent

插入排序的演算法描述的是一種簡單直觀的排序演算法,它的工作原理是通過構建有序序列,對於未排序的數據,在已排序序列中從後向前掃描,找到對應位置並插入

A.對數組里數據的排序可以用sort函數,如果排序效果非預期,可以給sort函數加一個排序的參數
B.reverse用於對數組數據的倒序排列
C.向數組的最後位置加一個新元素,可以用pop方法
D.unshift方法用於向數組刪除第一個元素

A.window.status = "已經選中該文本框"
B.document.status = '已經選中該文本框'
C.window.screen = '已經選中該文本框'
D.document.screen = '已經選中該文本框'

A <input type="button" value="new" onclick="open('new.html','_blank')" />
B. <input type="button" value="new" onclick="window.location = 'new.html'" />
C.<input type="button" value="new " onclick = "location.assign('new.html)">
D. <form target = "_blank" action="new.html">
<input type="submit" value="new" />
</form>

A.<script type="text/javascript">document.write(<h1>hello</h1>)</script>
B.<script type="text/javascript">document.write("<h1>hello</h1>")</script>
C.<script type="text/javascript"><h1>hello</h1></script>
D.<h1><script type="text/javascript">document.write("hello")</script></h1>

以下說法中正確的是(AD)
A.在頁面的第二個文本框中輸入內容後,當目標離開第二個文本框時,第一個文本框的內容不變
B.在頁面的第一個文本框中輸入內容後,當滑鼠離開第一個文本框時,將在第二個文本框中復制第一個文本框的內容
C.在頁面的第二個文本框中輸入內容後,當滑鼠離開第二個文本框時候,將在第一個文本框中復制第二個文本框的內容
D.在頁面的第一個文本框中輸入內容後,當滑鼠離開第一個文本框時,第二個文本框的內容不變

C. 高級前端面試題目大全(三)

解析: 第 41題

比如 sleep(1000) 意味著等待1000毫秒,可從 Promise、Generator、Async/Await 等角度實現

解析: 第 42 題

解析: 第 43 題

1、客戶端使用https的url訪問web伺服器,要求與伺服器建立ssl連接
2、web伺服器收到客戶端請求後, 會將網站的證書(包含公鑰)傳送一份給客戶端
3、客戶端收到網站證書後會檢查證書的頒發機構以及過期時間, 如果沒有問題就隨機產生一個秘鑰
4、客戶端利用公鑰將會話秘鑰加密, 並傳送給服務端, 服務端利用自己的私鑰解密出會話秘鑰
5、之後伺服器與客戶端使用秘鑰加密傳輸

解析: 第 44 題

解析: 第 45 題

1.使用第一次push,obj對象的push方法設置 obj[2]=1;obj.length+=1
2.使用第二次push,obj對象的push方法設置 obj[3]=2;obj.length+=1
3.使用console.log輸出的時候,因為obj具有 length 屬性和 splice 方法,故將其作為數組進行列印
4.列印時因為數組未設置下標為 0 1 處的值,故列印為empty,主動 obj[0] 獲取為 undefined

解析: 第 46 題

解析: 第 47 題

1、Function.prototype.apply和Function.prototype.call 的作用是一樣的,區別在於傳入參數的不同;
2、第一個參數都是,指定函數體內this的指向;
3、第二個參數開始不同,apply是傳入帶下標的集合,數組或者類數組,apply把它傳給函數作為參數,call從第二個開始傳入的參數是不固定的,都會傳給函數作為參數。
4、call比apply的性能要好,平常可以多用call, call傳入參數的格式正是內部所需要的格式

解析: 第 48 題

解析: 第 49 題

解析: 第 50 題

為什麼在 Vue3.0 採用了 Proxy,拋棄了 Object.defineProperty?

解析: 第 51 題

解析: 第 52 題

解析: 第 53 題

解析: 第 54 題

如下:{1:222, 2:123, 5:888},請把數據處理為如下結構:[222, 123, null, null, 888, null, null, null, null, null, null, null]。

解析: 第 55 題

解析: 第 56 題

解析: 第 57 題

解析: 第 58 題

解析: 第 59 題

解析: 第 60 題

解析: 第 61 題

解析: 第 62 題

解析: 第 63 題

解析: 第 64 題

解析: 第 65 題

解析: 第 66 題

隨機生成一個長度為 10 的整數類型的數組,例如 [2, 10, 3, 4, 5, 11, 10, 11, 20] ,將其排列成一個新數組,要求新數組形式如下,例如 [[2, 3, 4, 5], [10, 11], [20]] 。

解析: 第 67 題

解析: 第 68 題

解析: 第 69 題

解析: 第 70 題

解析: 第 71 題

[圖片上傳失敗...(image-2eeb30-1575446538468)]

<figcaption></figcaption>

解析: 第 72 題

解析: 第 73 題

解析: 第 74 題

解析: 第 75 題

解析: 第 76 題

示例 1:

示例 2:

解析: 第 77 題

解析: 第 78 題

解析: 第 79 題

解析: 第 80 題

解析: 第 81 題

解析: 第 82 題

解析: 第 83 題

習題: https://blog.csdn.net/qq_37024887/article/details/106784068

解析: 第 84 題

解析: 第 85 題

給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。

你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。

示例:

解析: 第 86 題

解析: 第 87 題

以下數據結構中,id 代表部門編號,name 是部門名稱,parentId 是父部門編號,為 0 代表一級部門,現在要求實現一個 convert 方法,把原始 list 轉換成樹形結構,parentId 為多少就掛載在該 id 的屬性 children 數組下,結構如下:

解析: 第 88 題

解析: 第 89 題

[圖片上傳失敗...(image-aea64e-1575446538470)]

解析: 第 90 題

解析: 第 91 題

[圖片上傳失敗...(image-21d53f-1575446538470)]

解析: 第 92 題

示例 1:

中位數是 2.0

示例 2:

中位數是(2 + 3) / 2 = 2.5

解析: 第 93 題

解析: 第 94 題

解析: 第 95 題

解析: 第 96 題

解析: 第 97 題

解析: 第 98 題

解析: 第 99 題

解析:[第 100 題]( https://github.com/Advanced-Frontend/Daily-

D. 騰訊WEB前端筆試題和面試題答案

騰訊WEB前端筆試題和面試題答案

能進入騰訊工作是多少人的夢想,下面我為大家搜集的一篇“騰訊WEB前端筆試題和面試題答案”,供大家參考借鑒,希望可以幫助到有需要的朋友!

一、 耐心填一填!(每空4分,共24分)

1. 為span設置類a與b,應編寫HTML代碼_________。

2. 設置CSS屬性clear的值為_both___________時可清除左右兩邊浮動。

3. ____li________標簽必須直接嵌套於ul、ol中。

4. CSS屬性_____margin_______可為元素設置外補丁。

5. 設置CSS屬性float的值為___none_________時可取消元素的浮動。

6. 文字居中的CSS代碼是____text-align:center________。

二、 精心選一選!(每題4分,共16分)

1. 下列哪個樣式定義後,內聯(非塊狀)元素可以定義寬度和高度( C )

A. display:inline B. display:none C. display:block D. display:inheric

2. 選出你認為最合理的定義標題的方法( C )

A. 文章標題

B.

文章標題

C.

文章標題

D. 文章標題

3. br標簽在XHTML中語義為( A )

A.換行 B.強調 C.段落 D.標題

4. 不換行必須設置( AC )

A.word-break B.letter-spacing C.white-space D.word-spacing

5. 在使用table表現數據時,有時候表現出來的'會比自己實際設置的寬度要寬,為此需要設置下面哪些屬性值( AD )

A. cellpadding=”0″ B. padding:0 C. margin:0 D. cellspacing=”0″

三、判斷對或錯!(每題4分,共24分)

1. CSS屬性font-style 用於設置字體的粗細。 ( × )

2. CSS屬性overflow用於設置元素超過寬度時是否隱藏或顯示滾動條。 ( √ )

3. 在不涉及樣式情況下,頁面元素的優先顯示與結構擺放順序無關。 ( × )

4. 在不涉及樣式情況下,頁面元素的優先顯示與標簽選用無關。 ( √ )

5. display:inline兼容所有的瀏覽器。 ( √ )

6. input屬於窗體元素,層級顯示比flash、其它元素都高。 ( × )

;

E. 你遇到的前端面試題都有什麼

大家好,我是王我。

隨著春節的結束,各個行業也普遍開始了上班的節奏, 不過本人17號才上班。為什麼?因為長得帥的都上班比較晚。 當然,每到新年結束,又迎來了一批招聘者與面試者,我來說說作為一年工作經驗應該知道的面試題。

HTML篇

1.doctype是什麼?有哪些類型?

2.input有哪些新類型?簡要說明其8用法。

3.HTML5有哪些新特性,移除了哪些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分HTML和HTML5?

4.bootstrap響應式的原理是什麼?

5.多移動終端頁面適配是如何實現的?

CSS篇

1.如何實現兩列布局,左邊自適應,右邊固定寬度?

2.用CSS畫一個三角形

3.CSS實現字體大寫

4.display有哪些常用的屬性值?分別是什麼意思?

5.position為absolute,relative,fixed的定點位置

6.用三種方法清除浮動

7.請介紹一下margin塌陷問題

js篇

1.什麼是事件冒泡和捕獲?如何阻止事件冒泡?(分別用原生和jquery實現)

2.js創建對象,至少使用三種方法

3.簡述一下事件穿透以及解決辦法

4.用三種方式判斷變數類型是否是數組

5.如何實現對象的拷貝?

6.什麼是閉包?閉包的優缺點。

7.簡述一下ajax請求的過程。

8.簡述一下new一個人構造函數的人過程。

9.為什麼會有跨域?是怎麼解決跨域問題的?簡述一下原理。

10.js原始數據類型有哪些?

11.學一個函數,判斷一個變數是否是字元串

12.typeof有哪些結果?

13.剪頭函數和普通函數有什麼區別?

14.請用三種方法實現數組去重

15.href和src有什麼區別?

jquery篇

1.attr()和prop()有什麼區別?

2.on和bind有什麼區別?js動態添加的dom元素是通過on還是bind?

3.touch和click有什麼區別?

4.window.onload和jquery的ready有什麼區別?

vue篇

1.簡述一下vue的生命周期及其特點

2.vue雙向綁定的原理是什麼?

3.vue的特點有哪些?和jquery有什麼區別?

4.父子組件之間傳遞數據的方法

5.子組件如何共享數據?

6.一般有什麼工具進行數據交互?

7.webpack的原理是什麼?

8.簡述一下$nextTick的用法

瀏覽器篇

1.cookie、sessionStorage、localStorage的區別是什麼?

2.有用過瀏覽器緩存嗎?簡述一下基本的緩存機制

網路篇

1.http和https之間的區別

2.從伺服器的安全考慮,是使用get請求還是post請求?

3.URL請求的過程有哪些?

項目經驗篇

1.項目中遇到的最大挑戰以及解決辦法

2.常見的網頁優化有哪些?

作為一個面試一年以內工作經驗的前端程序員來說,以上的問題能夠倒答如流月薪6k應該不成問題啦。這些面試題也是我在很多面試中感覺經常被問到的題目。

希望大家年後找工作能夠順順利利, 千萬不要跟我一樣哦,只有帥氣就一無所有了。

大家好,我是王我,中國最帥的前端程序員。

前幾次都是各種培訓公司,各種忽悠就不提了,說說後面4次面試的經歷。

第一次是面一個小公司,不過他們好像沒有厲害的前端,來面我的是個後端,一來沒有問我關於js的知識,直接問我以前做過什麼,有沒有經驗,我本人不會吹牛,簡歷也沒怎麼包裝,就是自己把自學的知識和做的幾個小demo弄在上面,也用github掛在頁面上了,不過他根本不點開看,也不問,問我會不會vue,我當時對框架還不了解,他就說他們需要能直接上手開始寫的,所以我第一個就直接掛了。

第二次面試是一個國企,這個問了很多問題,都很基礎,js數據類型,數組操作,事件,大概就是高程的前面幾章看看就差不多都能答到,然後因為他們主要用jq,所以問了很多jq的操作,關於節點的,動畫的,我看鋒利的jq大概看了3遍,也練過多次,所以我答的很熟。然後問了些布局方面的,bootstrap我了解過,又看過css3,所以這方面也沒啥問題,最後在現場做了個題目,主要就是布局然後通過ajax呈現數據。後面聽介紹我面試的說面試官比較滿意,說我jq很熟,一面就過了。可惜後面電話面試不知怎麼回事可能表現的不夠自信,雖然沒問技術,但是我沒啥自信,把沒項目經驗什麼的也不知怎麼就一五一十交代了,估計因為這個掛掉了。

第三次沒問問題,直接就是一套題開做,我在那做了一個多小時。題目就是按照要求一步一步做一個頁面出來,我也搞忘了我當時卡在哪個地方了,坐在那得時候就是做不出來,沒有設計圖,要根據他的描述自己找個設計圖然後做,我第一次遇到這個有點懵,雖然當時沒做出來,不過回來我自己花了幾個小時把它做了。所以這個也是涼了。

第四個問的比較多,數據類型,數組操作,跨域,ajax,閉包,原型鏈,繼承,深拷貝,淺拷貝,模塊amd cmd,基本都是問的js。然後問了html5的新特性 css3 的新特性,遇到過什麼瀏覽器的兼容性問題,怎麼解決的,以後想往什麼方面發展。這個時候我已經會點vue了,照著做了個小demo,不過後來知道公司用的angularjs,面試官也沒看我做的,問也沒問。。以前聽網上說要帶上自己的項目去面試感覺沒起多大效果。

最後總結下如果面的比較初級的崗位,應該主要問js,原型鏈,繼承,閉包,深淺拷貝,ajax,跨域,然後js的基礎知識,對了還有apply和call也問了,html5的新特性了解下就行。主要就是看你js掌握的程度,如果稍微要求高一點的,暫時還沒面過,等以後面過在來回答

1. cookie session 的用途和區別,以及有效期

1、cookie數據存放在客戶的瀏覽器上,session數據放在伺服器上。

2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙

考慮到安全應當使用session。

3、session會在一定時間內保存在伺服器上。當訪問增多,會比較佔用你伺服器的性能

考慮到減輕伺服器性能方面,應當使用COOKIE。

4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。

2. vue的數據綁定原理,mvvm與mvc的區別

MVVM:

m:model數據模型層 v:view視圖層 vm:ViewModel
vue中採用的是mvvm模式,這是從mvc衍生過來的
MVVM讓視圖與viewmodel直接的關系特別的緊密,就是為了解決mvc反饋不及時的問題

圖片說明一下:


說到MVVM就要說一下雙向綁定和數據劫持的原理,

MVC:

m:model數據模型層 v:view視圖層 c:controller控制器

原理: c層需要控制model層的數據在view層進行顯示

MVC兩種方式,圖片說明:


總結:

mvvm與mvc最大的區別:
MVVM實現了view與model的自動同步,也就是model屬性改變的時候, 我們不需要再自己手動操作dom元素去改變view的顯示,而是改變屬性後該屬性對應的view層會自動改變。

不懂得可以復制鏈接查看:

https://www.pianshen.com/article/3716256399/

3. storage 的區別 sessionStorage localStorage

localStorage 的生命周期是永久性的。假若使用localStorage存儲數據,即使關閉瀏覽器,也不會讓數據消失,除非主動的去刪除數據,使用的方法如上所示。localStorage有length屬性


sessionStorage 的生命周期是在瀏覽器關閉前。也就是說,在整個瀏覽器未關閉前,其數據一直都是存在的。sessionStorage也有length屬性,其基本的判斷和使用方法和localStorage的使用是一致的


4.v-model雙向數據原理

有一個文本框 通過v-bind綁定了value屬性 值為myname 是我們在vue實例中定義的屬性
傳統我們獲取文本框值方法 可能通過getElementById找到文本框 然後獲取其value屬性
但是vue中直接通過v-bind綁定了value屬性 所以不需要像之前那樣獲取值
所以在後面的按鈕中獲取name值 直接獲取vue實例對象data裡面的myname屬性即可

【數據為尊 ----數據映射到瀏覽器 如果數據v-model後修改(肯定input)然後到數據在有數據映射到瀏覽器頁面 ----映射關系統稱】



5.keepAlive用過嗎?什麼作用?

緩存路由組件


使用的是vue的一個組件,參考vue的官方文檔

使用這個東西可以保證我們在切換組件的時候,原來顯示的組件不被銷毀

-----【保障組件的數據不會被切換路由而銷毀數據】

Home是對應的組件對象的名字,不是路由的名字

6.多維數組拍平

數組拍平也稱數組扁平化,就是將數組裡面的數組打開,最後合並為一個數組

一紅六種方法吧……

了解的請看: https://www.cnblogs.com/guan-shan/p/10165737.html

7.跨域的原因 解決方案

跨域是指一個域下的文檔或腳本試圖去請求另一個域下的資源,這里跨域是廣義的。

這樣就可以說同源策略----協議---埠---域名

原生的src和href可以解決跨域

代理可以解決

請求頭也可以攜帶瀏覽器提示的也可以解決

一般都是後端解決跨域問題

【別的需要了解看下方鏈接】

https://blog.csdn.net/qq_41604383/article/details/100770100

8.uniApp兼容問題

§ 如果你使用cli創建項目(即項目根目錄是package.json),不管用什麼ide,即便是用HBuilderX,切記cli項目的編譯器是在項目下的,HBuilderX不管怎麼升級都不會影響編譯器版本。你需要手動npm update來升級編譯器。以及如果你想要安裝less、scss等預編譯器,也需要自己npm安裝在項目下,而不是在HBuilderX的插件管理里安裝。

§ 如果你使用離線打包,請注意HBuilderX升級後,真機運行基座和雲打包對應引擎跟隨HBuilderX升級,而你的sdk需要手動升級。sdk的版本升級一般滯後HBuilderX正式版升級一兩天。

§ 如果你使用自定義基座,之前製作的自定義基座是不會跟隨HBuilderX升級的,升級HBuilderX後你應該重新製作新版自定義基座。

§ 如果你使用wgt升級,新版HBuilderX編譯的wgt,運行到之前的runtime上,一定要先測試好,看有沒有兼容性問題。如果有問題,就不要wgt升級,整包升級。

§ 考慮到向下兼容,uni-app編譯器在升級為新的自定義組件模式後,同時保留了對老編譯模式的向下兼容。
在HBuilderX alpha版中,App端一定會使用新編譯器,不理會manifest配置。
在HBuilderX 正式版中,新創建的項目會使用新編譯器,老項目不會強制使用,而是開發者自己在manifest里配置開啟。

§ 如果你使用其他ide開發uni-app,會經常因為拼錯單詞而運行失敗,因為經過webpack編譯一道,很多錯誤反應的不夠直觀,排錯時間很長,不如從開始就依賴有良好提示的HBuilderX,避免敲錯單詞。

§ 雲打包的引擎版本說明
HBuilderX Alpha,只有1套雲打包機,不管你的HBuilderX alpha版本多少,對應的打包機一定是最新的alpha版的客戶端引擎。
HBuilderX正式版,有2套打包機,一個是最新正式版,一個是次新正式版。
中間的緊急更新版本沒有獨立打包機。
舉個例子:
HBuilderX 有1.8.0、1.8.1、1.8.2、1.9.0、1.9.1這幾個正式版。
那麼當前可用的打包機有1.9.1和1.8.2這2台。(即每個大版本的最後一個版本)
除了這2個HBuilderX版本外,其他版本的雲打包都指向最新的1.9.1版對應的打包機。(即只保留2個大版本的雲打包機)

【詳情請看】

https://ask.dcloud.net.cn/article/35845

一、HTML

HTML書寫規范

H5新增標簽

HTML渲染過程

二、CSS

css盒子模型概念

css彈性布局概念

三、JavaScript

事件模型

DOM2級事件模型

閉包

原型鏈

四、移動Web開發

常見的布局方案

移動端前端常見的觸摸相關事件touch、tap、swipe等整理

移動端前端手勢事件

移動端頁面渲染優化

GPU渲染

GPU核心渲染過程

五、調試

常用的調試工具

Chrome控制台調試js使用

移動端測試

六、HTTP網路知識

常見的HTTP狀態碼

不同請求類型的區別

WEB緩存方案

——————————

牛客網(www.nowcoder.com)

- 專業IT筆試面試備考平台

- 最全C++JAVA前端等互聯網技術求職題庫

- 全面提升IT編程能力

- 程序員交友聖地

分享了一些Web前端的面試題,限時一小時,你看看自己能夠答出多少道!

放心,這些面試題都是一些非常基礎的知識,只要你在平時認真聽課、學習了,那麼這些面試題肯定不會難道你。

建議:雖然沒有人監督你,但還是希望你不要去尋找答案,脫離網路,拿起紙筆,你試一下自己究竟能夠答出個什麼水平!有沒有真本領?答案盡在這些面試題里!那麼,你准備好了嗎?OK!計時開始!

一、HTML常見題目

01、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?

02、HTML5為什麼只需要寫?

03、行內元素有哪些?塊級元素有哪些?空(void)元素有那些?

04、頁面導入樣式時,使用link和@import有什麼區別?

05、介紹一下你對瀏覽器內核的理解?

06、常見的瀏覽器內核有哪些?

07、html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?

08、如何區分HTML和HTML5?

09、簡述一下你對HTML語義化的理解?

10、HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?

二、CSS類的題目

01、介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?

02、CSS選擇符有哪些?哪些屬性可以繼承?

03、CSS優先順序演算法如何計算?

04、CSS3新增偽類有那些?

05、如何居中p?如何居中一個浮動元素?如何讓絕對定位的p居中?

06、display有哪些值?說明他們的作用。

07、position的值relative和absolute定位原點是?

08、CSS3有哪些新特性?

09、請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?

10、用純CSS創建一個三角形的原理是什麼?

三、Java類的題目

01、介紹Java的基本數據類型。

02、說說寫Java的基本規范?

03、Java原型,原型鏈?有什麼特點?

04、Java有幾種類型的值?(堆:原始數據類型和棧:引用數據類型),你能畫一下他們的內存圖嗎?

05、Java如何實現繼承?

06、Java創建對象的幾種方式?

07、Java作用鏈域?

08、談談This對象的理解。

09、eval是做什麼的?

10、什麼是window對象?什麼是document對象?

OK,一小時到了,這個時間可不算短了,那麼這些面試題你答出了幾道呢?你寫的答案正確了嗎?現在你可以去翻看答案了。

如果你答出了絕大多數的或者是全部的題,並且答案也正確了,那麼恭喜你……

你這時心裡是不是有點小竊喜,認為自己有能力拿高薪了?雖然我也很想這么告訴你,但事實上這只能表明你的基礎扎實,畢竟這只是一些非常基礎的面試題。騷年~繼續努力吧!

如果你只答出了小部分或者答出了大部分題但答案不正確,那麼我只想說:「騷年,你的水平還差的遠呢。」連這么基礎的題你都打不出來,還想拿高薪?回去再練一段時間吧!

扎實的基礎是你拿高薪的重要武器,如果你連基礎都不扎實,那麼想要攻克「高薪」這個厚實的堡壘,那隻是痴人說夢罷了。

1.前端框架類問題,問你會不會用vue react啊

2.語言類,問你一些JavaScript語言的問題

3.項目經驗,讓你講講做過的項目,遇到的問題和解決之道

F. 2021-11-10.Vue前端面試題及答案

const vm = new Vue({
...
methods: {
handlerEvent(event) {
console.log(event) // 滑鼠點擊時,獲取到事件對象
}
}
})
1、如果只是事件函數的調用,函數名稱後面不要添加括弧
好處:函數執行時,第一個形式參數會被系統自動注入
一個事件對象,提供給函數使用
@click="handlerEvent"
2、如果事件函數調用執行時,需要傳遞參數,函數名稱後面
必須添加括弧,如果要使用事件對象,就必須手工注入(固定語法)
@click="handlerEvent($event)"

事件冒泡是JS語法中的一種事件觸發機制,描述的是目標元素上的事件一旦發生,就會根據DOM節點結構,將事件逐步依次觸發到父節點上的一種事件機制

原生JS中通過兼容性語法阻止事件冒泡
event.stopPropagation?event.stopPropagation():event.cancelBubble=true

Vue中對於事件冒泡的處理進行了封裝,提供了事件修飾符完成阻止冒泡行為
固定語法:標簽對象的事件屬性上,添加 @事件對象.stop="處理函數"

.self事件修飾符的作用,就是讓事件的觸發方式只能由當前標簽上發生的事件觸發!

.lazy作為表單修飾符,經常用在表單元素上,用於將表單數據的同步機制延遲到表單元素失去焦點時再進行同步,節省資源、提高整體效率!

Vue數據雙向綁定的特性,指代的是Vue實例中的數據和網頁視圖中的數據綁定,實例中數據的更新會直接影響視圖的渲染展示,視圖中的數據更新會自動同步到實例中的數據,這樣的操作機制就是數據雙向綁定機制;Vue底層主要是通過Object.defineProperty()數據劫持的操作方式完成的!

數據劫持本質上就是一種變數的高級聲明方式,通過數據劫持的語法聲明的變數,我們可以針對變數數據的查詢、編輯進行監聽,隨時根據變數的使用情況進行功能的添加,如數據的雙向綁定,完成數據的自動同步和自動渲染!

G. WEB前端面試題

第二章 面試題基礎篇

2.1 HTML面試題

面試題:行內元素有哪些?塊級元素有哪些? 空(void)元素有那些?

面試題:頁面導入樣式時,使用link和@import有什麼區別?

面試題:title與h1的區別、b與strong的區別、i與em的區別?

面試題:img標簽的title和alt有什麼區別?

面試題:png、jpg、gif 這些圖片格式解釋一下,分別什麼時候用?

2.2 CSS面試題

面試題:css背景紋路

面試題:介紹一下CSS的盒子模型

面試題:CSS選擇符有哪些?哪些屬性可以繼承?

面試題:CSS優先順序演算法如何計算?

面試題:用CSS畫一個三角形

面試題:一個盒子不給寬度和高度如何水平垂直居中?

面試題:display有哪些值?說明他們的作用。

面試題:對BFC規范(塊級格式化上下文:block formatting context)的理解?

面試題:清除浮動有哪些方式?

面試題:在網頁中的應該使用奇數還是偶數的字體?為什麼呢?

面試題:寫一個左中右布局占滿屏幕,其中左、右倆塊固定寬200,中間自適應寬,要求先載入中間塊,請寫出結構及樣式。

面試題:什麼是CSS reset?

面試題:css sprite是什麼,有什麼優缺點

面試題:display: none;與visibility: hidden;的區別

面試題:position有哪些值?有什麼作用? 【特別多公司問】

面試題:line-height和height有什麼區別?

面試題:opacity 和 rgba區別

2.3 JavaScript基礎面試題

面試題:延遲載入JS有哪些方式?

面試題:JS數據類型有哪些?

面試題:null和undefined的區別

面試題:JS數據類型考題

面試題:==和===有什麼不同

面試題:JS微任務和宏任務

面試題:JS作用域考題

面試題:JS對象考題

面試題:JS作用域+this指向+原型 考題

面試題:JS判斷變數是不是數組,你能寫出哪些方法?

面試題:slice是幹嘛的、splice是否會改變原數組

面試題:JS數組去重

面試題:找出多維數組最大值

面試題:給字元串新增方法實現功能

面試題:找出字元串出現最多次數的字元以及次數

2.4 真正移動端 —— H5/C3面試題

面試題:什麼是語義化標簽

面試題:::before 和 :after中雙冒號和單冒號 有什麼區別?解釋一下這2個偽元素的作用。

面試題:如何關閉iOS鍵盤首字母自動大寫

面試題:怎麼讓Chrome支持小於12px 的文字?

面試題:rem和em有什麼樣區別

面試題:ios系統中元素被觸摸時產生的半透明灰色遮罩怎麼去掉

面試題:webkit表單輸入框placeholder的顏色值能改變嗎?

面試題:禁止ios 長按時不觸發系統的菜單,禁止ios&android長按時下載圖片

面試題:禁止ios和android用戶選中文字

面試題:自適應 [淘寶無線適配]

面試題:響應式

第三章 面試題進階篇

3.1 JavaScript進階面試題

面試題:new操作符具體做了什麼

面試題:閉包 【必須會】

面試題:原型鏈 【必須會】

面試題: JS繼承有哪些方式

面試題:說一下call、apply、bind區別

面試題:sort背後原理是什麼?

面試題:深拷貝和淺拷貝

面試題:localstorage、sessionstorage、cookie的區別

3.2 ES6面試題

面試題:var、let、const區別

面試題:作用域考題

面試題:將下列對象進行合並

面試題:箭頭函數和普通函數有什麼區別?

面試題:Promise有幾種狀態

面試題:find和filter的區別 【大廠】

面試題:some和every的區別 【大廠】

3.3 webpack面試題

面試題:webpack插件

3.4 Git面試題

面試題:git常用命令

面試題:解決沖突

面試題:GitFlow

第四章 面試題框架篇

4.1 區分初中高級的 —— Vue面試題

面試題:Vue2.x 生命周期有哪些?

1.系統自帶八個

2.當一旦進入到某個組件會執行哪些生命周期

3.$el和$data在哪個階段有

4.如果使用keep-alive會多倆個生命周期

5.如果加入keep-alive第一次進入組件會執行哪些生命周期

6.如果加入keep-alive第二次或者第N進入該組件會執行哪些生命周期

面試題:談談你對keep-alive的了解

面試題:v-if和v-show區別

面試題:v-if和v-for優先順序 2.x

面試題:ref是什麼?

面試題:nextTick是什麼?

面試題:Vue中如何做樣式穿透

面試題:scoped原理

面試題:Vuex是單向數據流還是雙向數據流?

面試題:講一下MVVM

面試題:雙向綁定原理

面試題:什麼是虛擬DOM

面試題:key是干什麼?

面試題:diff演算法

面試題:Vue組件傳值

面試題:props和data優先順序誰高?

面試題:computed、methods、watch有什麼區別?

面試題:Vuex

面試題:Vue路由

面試題:Vue項目打包後出現空白頁

4.2 微信小程序面試題

面試題:如何自定義頭部?

面試題:如何自定義底部?

4.3 uni-app面試題

面試題:生命周期

面試題:條件編譯

第五章 面試題性能優化篇

H. 史上最全前端vue面試題!推薦收藏

1.為什麼會形成跨域?

不是一個源的文件操作另一個源的文件就會形成跨域。當請求端的協議、域名、埠號和伺服器的協議、域名、埠號有一個不一致就會發生跨域。

解決方法:安裝插件

Pip install django-cors-headers


2.vuex的工作流程?

① 在vue組件裡面,通過dispatch來出發actions提交修改數據的操作。

② 然後再通過actions的commit來出發mutations來修改數據。

③ mutations接收到commit的請求,就會自動通過Mutate來修改state(數據中心裏面的數據狀態)裡面的數據。

④ 最後由store觸發每一個調用它的組件更新。


3.vuex是什麼?怎麼使用?

vuex是一個專為vue.js應用程序開發的狀態管理模式。使用:store,getters,mutations,actions,moles詳細使用寫法請見:https://blog.csdn.net/qq_33226029/article/details/109628600?spm=1001.2014.3001.5502


4.vuex中的數據在頁面刷新後數據消失怎麼解決?

使用sessionStorage或localStorage存儲數據;也可以引入vuex-persist插件


5.在vue中,如何阻止事件冒泡和默認行為?

在綁定事件時,在指令後邊加上修飾符.stop來阻止冒泡,.prevent來阻止默認行為
6.深拷貝與淺拷貝?

假設B復制A,修改A的時候,看B是否變化:B變了是淺拷貝(修改堆內存中的同一個值),沒變是深拷貝(修改堆內存中不同的值)。淺拷貝只是增加了一個指針指向已存在的內存地址,深拷貝是增加了一個指針並申請了一個新的內存,使這個增加的指針指向這個新的內存。深拷貝和淺拷貝最根本的區別在於是否真正獲取一個對象的復制實體,而不是引用。
7.vue的生命周期?

beforeCreate created beforeMount mounted beforeUpdate updated beforeDestroy destroyedactived deactived (keep-alive)組件是否激活調用

8. keep-alive: 組件緩存
https://juejin.cn/post/6844903624099758094

router.js中:
meta: {keepAlive:true} // 需要被緩存
鉤子執行順序:created -> mounted -> actived
include表示需要緩存的頁面;exclude表示不需要緩存的頁面。如果兩個同時設置,exclude優先順序更 改,則組件不會被緩存。
應用場景: 用戶在某個列表頁面選擇篩選條件過濾出一份數據列表,由列表頁面進入數據詳情頁面,再返回 該列表頁,我們希望列表頁可以保留用戶的篩選狀態。

9.vue傳值方式?
props $emit() $on() $parent $children $listener $attr

10. $on 兄弟組件傳值

$emit 分發
$on 監聽
$off 取消監聽
$once 一次性監聽一個事件
在js文件中定義一個中央事件匯流排Bus,並暴露出來
具體的實現方式:

使用Bus的時候在接收Bus的組件的beforeDestroy函數中銷毀Bus,否則會一直疊加調用這個方法。
應用場景:「退出登錄」 -> ①點擊退出登錄;②修改密碼後自動退出登錄

11.組件跨級傳值
$attrs a->b->c
$listeners 監聽

12.vue事件修飾符有哪些?
.stop .prevent .self .once .passive .sync

13.箭頭函數中的this?
不具有this綁定,但函數體可以使用this,這個this指向的是箭頭函數當前所處的詞法環境中的this對象。

15.為什麼vue組件中data必須是一個函數?
如果不是函數的話,每個組件的data都是內存的同一個地址,一個數據改變了其他也改變了,當他是一個函數時,每個組件實例都有自己的作用域,每個實例相互獨立,就不會互相影響。

16.v-if 和 v-show區別?
v-if 是對標簽的創建與銷毀, v-show 則僅在初始化時載入一次,v-if 開銷相對來說比v-show 大;
v-if 是惰性的;v-show 做的僅是簡單的css切換。

17.v-text 與 v-html區別?
v-text 用於普通文本,不能解析html;
v-html 反之。

18.v-for key的作用?
使用v-for更新渲染過的數據,它默認用「就地復用」策略。如果數據項的順序改變,vue將不是移動DOM元素來匹配數據項的改變,而是簡單地復用此處每個元素,並確保在特定索引下顯示已被渲染過的每個元素。key屬性類型只能是string或number。
key的特殊屬性主要用在虛擬DOM演算法,在新舊node對比時辨識VNods。如不使用key,vue會使用一種最大限度減少動態元素並且盡可能的嘗試修復/再利用相同類型元素的演算法,它會基於key的變化重新排列元素順序。

19.Scss是什麼?在vue-cli中安裝步驟?有哪幾大特性?
npm 下載loader (sass-loader,css-loader,node-sass),在webpack中配置extends屬性(加.scss拓展) Vscode中可在擴展中下載;
特性:可以用變數,可以用混合器,可以嵌套等。

20.vue獲取dom?
ref

21.vue初始化頁面閃動問題?
webpack、vue-router
v-cloak css:[v-cloak]:display:none

22.什麼是vue-router?
vue router 是官方路由管理器。
主要功能:路由嵌套,模塊化 基於組件路由配置,路由參數、查詢、通配符,細粒度導航控制,自定義的滾動條行為等。

23.vue路由傳參,接收?
傳: this.$router.push({path:'', query(params):{}})
接:this.$router.query.xxx

24.防抖和節流?
節流是一定時間內執行一次函數,多用在scroll事件上;
防抖是在一定時間內執行最後一次的函數,多用在input輸入操作,表單提交等。

25.如何讓scss只在當前組件中起作用?

I. Web前端5道面試題

1.請說明ECMAScript,JavaScript,Jscript之間的關系?

ECMAScript提供腳本語言必須遵守的規則、

細節和准則,是腳本語言的規范。

比如:ES5,ES6就是具體的一js版本。

JavaScript是ECMAScript的一個分支版本,

JavaScript實現了多數ECMA-262中

描述的ECMAScript規范,但存在少數差異。

JScript是微軟公司對ECMA-262語言規范的

一種實現,除了少數例外(這是為了保持向後兼容),

微軟公司宣稱JScript完全實現了ECMA標准.

關系:

JavaScript和JScript都是ECMAScript的版本分支,

二者在語法上沒有多大的區別;

只不過一個是NetScape公司的,一個是微軟的;

IE系列默認是JScript,其它的則反之用JavaScript。


2.頁面載入過程中可能觸發哪些事件?它們的順序是?

頁面載入時,大致可以分為以下幾個步驟:1)開始解析HTML文檔結構2)載入外部樣式表及JavaScript腳本3)解析執行JavaScript腳本4)DOM樹渲染完成5)載入未完成的外部資源6)頁面載入成功

執行順序:1)documentreadystatechange事件2)documentDOMContentLoaded事件3)windowload事件


3.函數中在聲明變數a前使用a會產生錯誤嗎?為什麼?

不會,JS中能夠進行變數作用域提升,

把所有變數、函數的聲明提升到當前

作用域的最前面,但不進行賦值操作;

所以可能造成獲取的值是undefined。


4.什麼是hash,以及hashchange事件?

先了解下什麼是hash:hash即URL中"#"字元後面的部分。

a)使用瀏覽器訪問網頁時,

如果網頁URL中帶有hash,

頁面就會定位到id(或name)

與hash值一樣的元素的位置;

b)hash還有另一個特點,

它的改變不會導致頁面重新載入如橡尺;

c)hash值瀏如清覽器是不會隨請求發送到伺服器端的;

d)通過window.location.hash屬性獲取和設置hash值。

window.location.hash值的變化會直渣高接

反應到瀏覽器地址欄(#後面的部分會發生變化),同時,瀏覽器地址欄hash值的變化也會觸發

window.location.hash值的變化,

從而觸發onhashchange事件。

再來了解下什麼是hashchange事件:

a)當URL的片段標識符更改時,

將觸發hashchange事件(跟在#符號後面的URL部分,包括#符號)b)

hashchange事件觸發時,

事件對象會有hash改變前的URL(oldURL)和hash改變後的URL(newURL)兩個屬性。


5.什麼是CDN,CDN對於網站有什麼意義,它有什麼樣的缺點?

CDN又稱為內容分發網路;本意在於

盡可能避開互聯網上有可能影響數據

傳輸速度和穩定性的瓶頸和環節,

使內容傳輸的更快、更穩定。

主要目的:

解決因分布、帶寬、伺服器性能帶來的訪問延遲問題,

適用於站點加速、點播、直播等場景。

使用戶可就近取得所需內容,解決Internet網路擁擠的狀況,

提高用戶訪問網站的響應速度和成功率。

缺點:

a)實施復雜,投資大;

b)目前大部分的CDN還只是對靜態內容加速,

對動態加速效果不好;

而雙線對動態加速的效果跟靜態是一樣的。

J. 前端面試題(十五)

已知高度和寬度的元素:

設置父元素為相對定位relative,給子元素設置絕對定位absoluted,top: 0; right: 0; bottom: 0; left: 0; margin: auto;

設置父元素為相對定位,給子元素設置絕對定位,left: 50%; top: 50%; margin-left: --元素寬度的一半px; margin-top: --元素高度的一半px;

未知高度和寬度的元素:

設置父元素為相對定位,給子元素設置絕對定位,left: 50%; top: 50%; transform: translate(-50%,-50%);

設置父元素為相對定位,給子元素設置絕對定位,left: 50%; top: 50%; transform:translate(-50%,-50%);

組件中的 data 寫成一個函數,數據以函數返回值形式定義,這樣每復用一次組件,就會返回一份新的 data ,類似於給每個組件實例創建一個私有的數據空間,讓各個組件實例維護各自的數據。而單純的寫成對象形式,就使得所有組件實例共用了一份 data ,就會造成一個變了全都會變的結果。

for of:

支持 return ,並且是值 of 數組(不能遍歷對象)
1. 可以避免所有 for-in 循環的陷阱
2. 不同於 forEach(),可以使用 break, continue 和 return
3. for-of 循環不僅僅支持數組的遍歷。同樣適用於很多類似數組的對象
4. 它也支持字元串的遍歷
5. for-of 並不適用於處理原有的原生對象

for in:

forEach:

assets文件夾里是靜態資源;components是放組件;router是定義路由相關的配置;view視圖;app.vue是一個應用主組件;main.js是入口文件

在組件切換過程中將狀態保留在內存中,防止重復渲染DOM,減少載入時間及性能消耗,提高用戶體驗性。

生命周期函數: activated( 組件激活時調用 )、deactivated( 組件停用時調用

常見的使用場景可以分為三類:

當頻繁執行條件時,不適合使用 v-if ,用 v-show ;
反之執行條件的次數很少,使用 v-if 即可。

v-if 和 v-for ,不推薦兩者一起使用在同一個元素上,雖然也能運行,但是編輯器會報警告;兩者一起使用時,v-for比v-if具有更高的優先順序,