js面試題
1、js資料型別
2、js變數和函數宣告的提升
3、閉包
4、== 和 ===的區別
5、this
6、js陣列和物件的遍歷方式
7、map與forEach的區別
8、箭頭函數與普通函數的區別?
9、同源策略
10、如何解決跨域
11、嚴格模式的限制
12、es6新增
13、attribute 和 property 的區別是什麼?
14、let和const 的區別是什麼?
15、記憶體漏失
16、script 引入方式?
html 靜態 <script> 引入
js 動態插入 <script>
<script defer>
: 非同步載入,元素解析完成後執行<script async>
: 非同步載入,但執行時會阻塞元素渲染17、陣列(array)方法
18、JavaScript 深淺拷貝?
19、說說非同步程式設計的實現方式?
20、說說物件導向程式設計思想?
21、專案效能優化
22、什麼是單執行緒,和非同步的關係?
23、說說負載均衡?
24、作用域鏈?
25、什麼是原型、原型鏈、繼承?
所有的物件都有__proto__屬性
26、JS垃圾回收機制是怎樣的?
1.概述
js的垃圾回收機制是為了防止記憶體漏失(已經不需要的某一塊記憶體還一直存在著),垃圾回收機制就是不停歇的尋找這些不再使用的變數,並且釋放掉它所指向的記憶體。
在JS中,JS的執行環境會負責管理程式碼執行過程中使用的記憶體。
2.變數的生命週期
當一個變數的生命週期結束之後,它所指向的記憶體就會被釋放。js有兩種變數,區域性變數和全域性變數,區域性變數是在他當前的函數中產生作用,當該函數結束之後,該變數記憶體會被釋放,全域性變數的話會一直存在,直到瀏覽器關閉為止。
3.js垃圾回收方式
有兩種方式: 標記清除、參照計數
標記清除:大部分瀏覽器使用這種垃圾回收,當變數進入執行環境(宣告變數)的時候,垃圾回收器將該變數進行了標記,當該變數離開環境的時候,將其再度標記,隨之進行刪除。
參照計數:這種方式常常會引起記憶體的洩露,主要存在於低版本的瀏覽器。它的機制就是跟蹤某一個值得參照次數,當宣告一個變數並且將一個參照型別賦值給變數得時候參照次數加1,當這個變數指向其他一個時參照次數減1,當為0時出發回收機制進行回收。
27、逐進增強和優雅降級
vue面試題
1、vue優點
檔案齊全,且檔案為中文檔案
【相關推薦:】
2、vue父元件向子元件傳遞資料
3、子元件向父元件傳遞事件
4、v-show和v-if指令的共同點和不同點
相同點:都可以控制dom元素的顯示和隱藏
不同點:v-show只是改變display屬性,dom元素並未消失,切換時不需要重新渲染頁面
v-if直接將dom元素從頁面刪除,再次切換需要重新渲染頁面
5、如何讓CSS只在當前元件中起作用
6、<keep-alive></keep-alive>
的作用是什麼
7、如何獲取dom
給dom元素加ref=‘refname’,然後通過this.$refs.refname進行獲取dom元素
8、說出幾種vue當中的指令和它的用法
v-model
v-on
v-html
v-text
v-once
v-if
v-show
9、vue-loader是什麼?它的用途是什麼?
vue檔案的一個載入器,將template/js/style轉換為js模組
用途:js可以寫es6、style樣式
10、為什麼用key
11、axios及安裝?
vue專案中使用ajax時需要axios外掛
下載方式cnpm install axios --save
12、v-model的使用
13、請說出vue.cli專案中src目錄每個資料夾和檔案的用法
components存放元件
app.vue主頁面入口
index.js主檔案入口
ass存放靜態資原始檔
14、分別簡述computed和watch的使用場景
用官網的一句話來說,所有需要用到計算的都應該使用計算屬性。多條資料影響一條資料時使用計算屬性,使用場景購物車。
如果是一條資料更改,影響多條資料時,使用watch,使用場景搜尋方塊。
15、v-on可以監聽多個方法嗎?
16、$nextTick的使用
17、vue元件中data為什麼必須是一個函數?
因為javaScript的特性所導致,在component中,data必須以函數的形式存在,不可以是物件。
元件中的data寫成一個函數,資料以函數返回值的形式定義,這樣每次複用元件的時候,都會返回一份新的data,相當於每個元件範例都有自己私有的資料空間,他們值負責各自維護資料,不會造成混亂。而單純的寫成物件形式,就是所有元件範例共用了一個data,這樣改一個全部都會修改。
18、漸進式框架的理解
主張最少
可以根據不同的需求選擇不同的層級
19、vue在雙向資料繫結是如何實現的?
vue雙向資料繫結是通過資料劫持、組合、釋出訂閱模式的方式來實現的,也就是說資料和檢視同步,資料發生變化,檢視跟著變化,檢視變化,資料也隨之發生改變
核心:關於vue雙向資料繫結,其核心是Object.defineProperty()方法
20、單頁面應用和多頁面應用區別及缺點
單頁面應用(SPA),通俗的說就是指只有一個主頁面的應用,瀏覽器一開始就載入所有的js、html、css。所有的頁面內容都包含在這個主頁面中。但在寫的時候,還是分開寫,然後再加護的時候有路由程式動態載入,單頁面的頁面跳轉,僅重新整理區域性資源。多用於pc端。
多頁面(MPA),就是一個應用中有多個頁面,頁面跳轉時是整頁重新整理
單頁面的優點:使用者體驗好,快,內容的改變不需要重新載入整個頁面,基於這一點spa對伺服器壓力較小;前後端分離,頁面效果會比較酷炫
單頁面缺點:不利於seo;導航不可用,如果一定要導航需要自行實現前進、後退。初次載入時耗時多;頁面複雜度提高很多。
21、Vue 專案中為什麼要在列表元件中寫 key,其作用是什麼?
key是給每一個vnode的唯一id,可以依靠key,更準確, 更快的拿到oldVnode中對應的vnode節點。
22、父元件和子元件生命週期勾點執行順序是什麼?
父 beforeCreate -> 父 created -> 父 beforeMount -> 子 beforeCreate -> 子 created -> 子 beforeMount -> 子 mounted -> 父 mounted
父 beforeUpdate -> 子 beforeUpdate -> 子 updated -> 父 updated
父 beforeUpdate -> 父 updated
父 beforeDestroy -> 子 beforeDestroy -> 子 destroyed -> 父 destroyed
23、談一談你對 nextTick 的理解?
當你修改了data的值然後馬上獲取這個dom元素的值,是不能獲取到更新後的值,你需要使用$nextTick這個回撥,讓修改後的data值渲染更新到dom元素之後在獲取,才能成功。
24、vue元件中data為什麼必須是一個函數?
因為JavaScript的特性所導致,在component中,data必須以函數的形式存在,不可以是物件。
組建中的data寫成一個函數,資料以函數返回值的形式定義,這樣每次複用元件的時候,都會返回一份新的data,相當於每個元件範例都有自己私有的資料空間,它們只負責各自維護的資料,不會造成混亂。而單純的寫成物件形式,就是所有的元件範例共用了一個data,這樣改一個全都改了。
25、vue和jQuery的區別jQuery是使用選擇器($)選取DOM物件,對其進行賦值、取值、事件繫結等操作,其實和原生的HTML的區別只在於可以更方便的選取和操作DOM物件,而資料和介面是在一起的。比如需要獲取label標籤的內容:$("lable").val();,它還是依賴DOM元素的值。
Vue則是通過Vue物件將資料和View完全分離開來了。對資料進行操作不再需要參照相應的DOM物件,可以說資料和View是分離的,他們通過Vue物件這個vm實現相互的繫結。這就是傳說中的MVVM。
26、delete和Vue.delete刪除陣列的區別
delete只是被刪除的元素變成了 empty/undefined 其他的元素的鍵值還是不變。Vue.delete 直接刪除了陣列 改變了陣列的鍵值。
27、SPA首屏載入慢如何解決
安裝動態懶載入所需外掛;使用CDN資源。
28、vue專案是打包了一個js檔案,一個css檔案,還是有多個檔案?
根據vue-cli腳手架規範,一個js檔案,一個CSS檔案。
29、vue更新陣列時觸發檢視更新的方法
push();
pop();
shift();
unshift();
splice();
sort();
reverse()
30、什麼是 vue 生命週期?有什麼作用?
每個 Vue 範例在被建立時都要經過一系列的初始化過程——例如,需要設定資料監聽、編譯模板、將範例掛載到 DOM 並在資料變化時更新 DOM 等。同時在這個過程中也會執行一些叫做 生命週期勾點 的函數,這給了使用者在不同階段新增自己的程式碼的機會。
31、第一次頁面載入會觸發哪幾個勾點?
beforeCreate, created, beforeMount, mounted
32、vue獲取資料在一般在哪個周期函數
created
beforeMount
mounted
33、created和mounted的區別
created:在模板渲染成html前呼叫,即通常初始化某些屬性值,然後再渲染成檢視。
mounted:在模板渲染成html後呼叫,通常是初始化頁面完成後,再對html的dom節點進行一些需要的操作。
34、vue生命週期的理解
總共分為8個階段建立前/後,載入前/後,更新前/後,銷燬前/後。
建立前/後: 在beforeCreated階段,vue範例的掛載元素$el
和資料物件data都為undefined,還未初始化。在created階段,vue範例的資料物件data有了,$el
還沒有。
載入前/後:在beforeMount階段,vue範例的$el
和data
都初始化了,但還是掛載之前為虛擬的dom節點,data.message還未替換。在mounted階段,vue範例掛載完成,data.message成功渲染。
更新前/後:當data變化時,會觸發beforeUpdate和updated方法。
銷燬前/後:在執行destroy方法後,對data的改變不會再觸發周期函數,說明此時vue範例已經解除了事件監聽以及和dom的繫結,但是dom結構依然存在。
35、vuex是什麼?
vue框架中狀態管理。
36、vuex有哪幾種屬性?
有五種,State、 Getter、Mutation 、Action、 Module
state: 基本資料(資料來源存放地)
getters: 從基本資料派生出來的資料
mutations : 提交更改資料的方法,同步!
actions : 像一個裝飾器,包裹mutations,使之可以非同步。
modules : 模組化Vuex
37、vue全家桶
vue-cli、vuex、vueRouter、Axios
38、vue-cli 工程常用的 npm 命令有哪些?
39、請說出 vue-cli 工程中每個資料夾和檔案的用處?
40、v-if 和 v-show 有什麼區別
41、v-for 與 v-if 的優先順序?
v-for 和 v-if 同時使用,有一個先後執行的優先順序,v-for 比 v-if 優先順序更高,這就說明在
v-for 每次的迴圈賦值中每一次呼叫 v-if 的判斷,所以不推薦 v-if 和 v-for 在同一個標籤中同時使用。
42、 vue 常用的修飾符?
事件修飾符
v-model 的修飾符
鍵盤事件修飾符
系統修飾符
滑鼠按鈕修飾符
43、vue 事件中如何使用 event 物件?
<button @click="Event($event)">事件物件</button>
44、元件傳值方式有哪些
45、vue 中子元件呼叫父元件的方法?
46、 如何讓 CSS 只在當前元件中起作用?
在元件中的 style 前面加上 scoped
47、如何獲取 dom?ref="domName" 用法:this.$refs.domName
48、vue路由跳轉
(一)宣告式導航router-link
// 注意:router-link中連結如果是'/'開始就是從根路由開始,如果開始不帶'/',則從當前路由開始。 <router-link :to="{name:'home'}"> <router-link :to="{path:'/home'}"> //name,path都行, 建議用name
<router-link :to="{name:'home', params: {id:1}}"> <router-link :to="{name:'home', query: {id:1}}"> <router-link :to="/home/:id"> //傳遞物件 <router-link :to="{name:'detail', query: {item:JSON.stringify(obj)}}"></router-link>
(二)this.$router.push()
this.$router.push('/home') this.$router.push({name:'home'}) this.$router.push({path:'/home'})
1.路由設定: name: 'home', path: '/home' 2.跳轉: this.$router.push({name:'home',query: {id:'1'}}) this.$router.push({path:'/home',query: {id:'1'}}) 3.獲取引數 html取參: $route.query.id script取參: this.$route.query.id
1.路由設定: name: 'home', path: '/home/:id'(或者path: '/home:id') 2.跳轉: this.$router.push({name:'home',params: {id:'1'}}) 注意: // 只能用 name匹配路由不能用path // params傳引數(類似post) 路由設定 path: "/home/:id" 或者 path: "/home:id"否則重新整理引數消失 3.獲取引數 html取參:$route.params.id script取參:this.$route.params.id
1.路由設定: name: 'home', path: '/home/:id' 2.跳轉: this.$router.push({path:'/home/123'}) 或者: this.$router.push('/home/123') 3.獲取引數: this.$route.params.id
(三)this.$router.replace()
(四)this.$router.go(n)
區別:
49、Vue.js 雙向繫結的原理
Vue.js 2.0 採用資料劫持(Proxy 模式)結合釋出者-訂閱者模式(PubSub 模式)的方式,通過 Object.defineProperty()來劫持各個屬性的 setter,getter,在資料變動時釋出訊息給訂閱者,觸發相應的監聽回撥。
每個元件範例都有相應的watcher程式範例,它會在元件渲染的過程中把屬性記錄為依賴,之後當依賴項的setter被呼叫時,會通知watcher重新計算,從而致使它關聯的元件得以更新。
Vue.js 3.0, 放棄了Object.defineProperty ,使用更快的ES6原生 Proxy (存取物件攔截器, 也稱代理器)
50、Computed和Watch的區別
computed 計算屬性 : 依賴其它屬性值,並且 computed 的值有快取,只有它依賴的 屬性值發生改變,下一次獲取 computed 的值時才會重新計算 computed 的值。
watch 偵聽器 : 更多的是觀察的作用,無快取性,類似於某些資料的監聽回撥,每 當監聽的資料變化時都會執行回撥進行後續操作。
運用場景:
Computed 和 Methods 的區別
51、過濾器 (Filter)
52、axios是什麼
易用、簡潔且高效的http庫, 支援node端和瀏覽器端,支援Promise,支援攔截器等高階設定。
53、sass是什麼?如何在vue中安裝和使用?
sass是一種CSS預編譯語言安裝和使用步驟如下。
[v-cloak]{ display:none; } <div v-cloak>{{ title }}</div>
55、如何解決資料層級結構太深的問題
在開發業務時,經常會岀現非同步獲取資料的情況,有時資料層次比較深,如以下程式碼: span 'v-text="a.b.c.d">
, 可以使用vm.$set
手動定義一層資料: vm.$set("demo",a.b.c.d)
56、vue常用指令
57、$route
和$router
的區別
58、怎樣理解 Vue 的單項資料流
59、虛擬DOM是什麼?有什麼優缺點?
由於在瀏覽器中操作DOM是很昂貴的。頻繁操作DOM,會產生一定效能問題。這就是虛擬Dom的產生原因。Vue2的Virtual DOM 借鑑了開源庫 snabbdom 的實現。Virtual DOM本質就是用一個原生的JS物件去描述一個DOM節點,是對真實DOM的一層抽象。
60、Vuex 頁面重新整理資料丟失怎麼解決?
61、Vuex 為什麼要分模組並且加名稱空間?
模組: 由於使用單一狀態樹,應用的所有狀態會集中到一個比較大的物件。當應用變得非常複雜時,store 物件就有可能會變得相當臃腫。為了解決以上問題,Vuex 允許我們將 store 分割成模組(module)。每個模組擁有自己的 state、mutation、action、getter、甚至是巢狀子模組。
名稱空間: 預設情況下,模組內部的 action、mutation、getter是註冊在全域性名稱空間的 — 這樣使得多個模組能夠對同一 mutation 或 action 做出響應。如果希望你的模組具有更高的封裝度和複用性,你可以通過新增 namespaced:true 的方式使其成為帶命名的模組。當模組被註冊後,他所有 getter、action、及 mutation 都會自動根據模組註冊的路徑調整命名。
62、vue 中使用了哪些設計模式?
63、你都做過哪些 Vue 的效能優化?
這裡只列舉針對 Vue 的效能優化,整個專案的效能優化是一個大工程。
64、Vue.set 方法原理
在兩種情況下修改 Vue 是不會觸發檢視更新的。
65、函數式元件使用場景和原理
函數式元件與普通元件的區別
優點:1.由於函陣列件不需要範例化,無狀態,沒有生命週期,所以渲染性要好於普通元件2.函陣列件結構比較簡單,程式碼結構更清晰
使用場景:
一個簡單的展示元件,作為容器元件使用 比如 router-view 就是一個函數式元件。 「高階元件」—用於接受一個元件為引數,返回一個被包裝過的元件。
相關程式碼如下:
if (isTrue(Ctor.options.functional)) { // 帶有functional的屬性的就是函數式元件 return createFunctionalComponent(Ctor, propsData, data, context, children); } const listeners = data.on; data.on = data.nativeOn; installComponentHooks(data); // 安裝元件相關勾點 (函數式元件沒有呼叫此方法,從而效能高於普通元件)
66、子元件為何不可以修改父元件傳遞的 Prop?
所有的 prop 都使得其父子 prop 之間形成了一個單向下行繫結:父級 prop 的更新會向下流動到子元件中,但是反過來則不行。這樣會防止從子元件意外改變父級元件的狀態,從而導致你的應用的資料流向難以理解。
67、vue專案建立。路由設定、環境設定以及元件傳值等
css、html面試題
HTML和HTML5有什麼區別?
主要有三個區別:
1、檔案宣告區別
HTML:超檔案標示語言,一種純文字型別的語言。
HTML5.0:檔案宣告HTML5方便書寫,精簡,有利於程式設計師快速的閱讀和開發。
2、結構語意區別
html:沒有體現結構語意化的標籤,如:<div id="nav"></div>
html5:新增了許多具有語意化的標籤,如:<article>、<aside>、<audio>、<bdi>...
3、繪圖區別
HTML:指可伸縮向量圖形,用於定義網路的基於向量的圖形。
HTML5:HTML5的canvas元素使用指令碼(通常使用JavaScript)在網頁上繪製影象,可以控制畫布每一個畫素。
什麼是盒子模型?
如何理解HTML5語意化?
語意化的好處?
**Gecko核心:**代表瀏覽器是Firefox瀏覽器。Gecko核心是開源的,最大優勢是可以跨平臺。
webkit :Webkit核心:代表瀏覽器是Safari(蘋果的瀏覽器)以及低版本的谷歌瀏覽器,是開源的專案。
**Presto核心:**代表瀏覽器是Opera瀏覽器(中文譯為「歐朋瀏覽器」),Presto核心是世界公認最快的渲染速度的引擎,但是在2013年之後,Open宣佈加入谷歌陣營,棄用了該核心。
**Blink核心:**由谷歌和Opera開發,2013年4月釋出,現在Chrome核心是Blink。
談談你對web標準以及W3C的理解?
web標準:
web標準主要分為結構、表現、行為3部分
結構:指我們平時在body裡面寫的標籤,主要是由HTML標籤組成
表現:指更加豐富HTML標籤樣式,主要由CSS樣式組成
行為:指頁面和使用者的互動,主要由JS部分組成
W3C:
W3C對web標準提出了規範化的要求,即程式碼規範
對結構的要求
1、標籤字母要小寫
2、標籤要閉合
3、標籤不允許隨意巢狀
對錶現和行為的要求
1、建議使用外連CSS和js指令碼,實現結構與表現分離、結構與行為分離,能提高頁面的渲染效率,更快地顯示網頁內容
如何實現瀏覽器響應式佈局?
CSS選擇器以及優先順序的理解?
常用的CSS選擇器
ID選擇器、類選擇器、標籤選擇器、屬性選擇器、偽類選擇器、後代選擇器
權重劃分
在同一層級下:
!important > 內聯樣式 > ID選擇器 > 類選擇器 > (標籤選擇器、偽類選擇器、屬性選擇器)
不同層級下:
正常來說權重值越高的優先順序越高,但是一直以來沒有具體的權重值劃分,所以目前大多數開發中層級越深的優先順序越高
談談你對迴流和重繪的理解?
什麼是迴流?
什麼是重繪?
當一個元素自身的寬高,佈局,及顯示或隱藏沒有改變,而只是改變了元素的外觀風格的時候,就產生了重繪
什麼時候會進行迴流?
新增或者刪除可見的 DOM 元素的時候
元素的位置發生改變
元素的尺寸發生改變
內容改變
頁面第一次渲染的時候
什麼時候會進行重繪?
列舉一些相關的 CSS 樣式:color、background、background-size、visibility、box-shadow
opacity: 0、visibility: hidden、display: none有什麼區別?
opacity=0,該元素隱藏起來了,但不會改變頁面佈局,並且,如果該元素已經繫結一些事件,如click事件,那麼點選該區域,也能觸發點選事件的
visibility=hidden,該元素隱藏起來了,但不會改變頁面佈局,但是不會觸發該元素已經繫結的事件
display=none,把元素隱藏起來,並且會改變頁面佈局,可以理解成在頁面中把該元素刪除掉一樣
css 前處理器
<img>
的 title 和 alt 有什麼區別
alt
是<img>
的特有屬性,是圖片內容的等價描述,用於圖片無法載入顯示、讀屏器閱讀圖片。可提圖片高可存取性,除了純裝飾圖片外都必須設定有意義的值,搜尋引擎會重點分析。行內元素和塊級元素有哪些?img屬於什麼元素
塊元素
address – 地址
blockquote – 塊參照
center – 舉中對齊塊
dir – 目錄列表
div – 常用塊級容易,也是CSS layout的主要標籤
dl – 定義列表
fieldset – form控制組
form – 互動表單
h1 – 大標題
h2 – 副標題
h3 – 3級標題
h4 – 4級標題
h5 – 5級標題
h6 – 6級標題
hr – 水平分隔線
isindex – input prompt
menu – 選單列表
noframes – frames可選內容,(對於不支援frame的瀏覽器顯示此區塊內容
noscript – 可選指令碼內容(對於不支援script的瀏覽器顯示此內容)
ol – 有序表單
p – 段落
pre – 格式化文字
table – 表格
ul – 無序列表
內聯元素
a – 錨點
abbr – 縮寫
acronym – 首字
b – 粗體(不推薦)
bdo – bidi override
big – 大字型
br – 換行
cite – 參照
code – 計算機程式碼(在參照原始碼的時候需要)
dfn – 定義欄位
em – 強調
font – 字型設定(不推薦)
i – 斜體
img – 圖片
input – 輸入框
kbd – 定義鍵盤文字
label – 表格標籤
q – 短參照
s – 中劃線(不推薦)
samp – 定義範例計算機程式碼
select – 專案選擇
small – 小字型文字
span – 常用內聯容器,定義文字內區塊
strike – 中劃線
strong – 粗體強調
sub – 下標
sup – 上標
textarea – 多行文字輸入框
tt – 電傳文字
u – 下劃線
img屬於行內替換元素,效果與塊元素一致
表單中readonly和disabled的區別
1、瀏覽器中輸入url到網頁顯示,整個過程發生了什麼
域名解析
發起tcp三次握手
建立tcp連線之後發起htttp請求
伺服器端響應http請求,瀏覽器得到html程式碼
瀏覽器器解析html程式碼,並請求html程式碼中的資源
瀏覽器對頁面進行渲染呈現給使用者
2、cookie的弊端
每個特定的域名下最多生成的cookie的個數有限制
IE和Opera會清理近期最少使用的cookie,firefox會隨機清理cookie
cookie最大為4096位元組,為了相容一般不超過4095位元組
安全性問題,如果cookie被人劫持,就可以獲得所有的session資訊
3、主流瀏覽器及核心
Google chrome:webkit/blink
safari:webkit
IE:trident
firefox:gecko
Opera:presto/webkit/blink
4、sessionStorage和localStorage的區別
sessionStorage用於本地儲存一個對談session中的資料,這些資料只有在同一個對談中的頁面才能存取並且當對談結束後資料會被銷燬。
localStorage用於持久化的本地儲存,除非主動刪除資料,否則資料永遠不會過期的。
5、談談對bfc規範的理解
bfc是block formatting context即格式化上下文
bfc是頁面css視覺渲染的一部分,用於決定塊盒子的佈局及浮動相互影響範圍的一個區域
bfc最重要的一個效果是,讓處於bfc內部與外部的元素相互隔離,使內外的元素的定位不會相互影響
6、請說出至少三種減少頁面載入時間的方法
儘量減少頁面中重複的http請求
css樣式放置在檔案頭部、js指令碼放置在檔案末尾
壓縮合並js、css程式碼
伺服器開啟gzip壓縮
7、 如何進行網站效能優化?
<link>
不使用 @import
8、瀏覽器儲存?
9、get / post?
10、安全性問題?
效能優化
1、效能優化的幾個方面?
2、非同步載入?
3、載入方式區別?
4、預載入?
<link rel="preload" href="http://example.com">
5、DNS 預解析?
<meta http-equiv='x-dns-prefetch-control' content='on'>
<link rel="dns-prefetch" href="//yuchengkai.cn">
6、懶執行?
懶執行就是將某些邏輯延遲到使用時再計算。該技術可以用於首屏優化,對於某些耗時邏輯並不需要在首屏就使用的,就可以使用懶執行。懶執行需要喚醒,一般可以通過定時器或者事件的呼叫來喚醒。
7、懶載入?
懶載入就是將不關鍵的資源延後載入。
懶載入的原理就是隻載入自定義區域(通常是可視區域,但也可以是即將進入可視區域)內需要載入的東西。對於圖片來說,先設定圖片標籤的 src 屬性為一張佔點陣圖,將真實的圖片資源放入一個自定義屬性中,當進入自定義區域時,就將自定義屬性替換為 src 屬性,這樣圖片就會去下載資源,實現了圖片懶載入。
懶載入不僅可以用於圖片,也可以使用在別的資源上。比如進入可視區域才開始播放視訊等等。
react面試題
1、什麼時候使用狀態管理器?
2、說說 React 有什麼特點?
3、列出 React 的一些主要優點?
4、什麼是 JSX?
render() { return( <div> <h1> Hello World </h1> </div> ) }
5、說說為什麼瀏覽器無法讀取 JSX?
6、你理解「在 React 中,一切都是元件」這句話?
7、 React 中 render()的目的?
<form>
、<group>
、<div>
等。此函數必須保持純淨,即必須每次呼叫時都返回相同的結果8、什麼是 Props?
9、React 中的狀態是什麼?
10、區分狀態和 Props?
條件 | State | Props |
---|---|---|
從父元件中接受初始值 | Yes | Yes |
父元件可以改變值 | No | Yes |
在元件中設定預設值 | No | Yes |
在元件的內部變化 | Yes | No |
設定子元件的初始值 | Yes | Yes |
在子元件的內部改變 | No | Yes |
11、如何更新元件的狀態?
this.setState()
更新元件的狀態12、React 元件生命週期的階段是什麼?
13、你對 React 的 refs 有什麼瞭解?
14、如何模組化 React 中的程式碼?
15、什麼是高階元件 HOC?
16、你能用 HOC 做什麼?
17、 React 中 key 的重要性是什麼?
18、MVC 框架的主要問題是什麼?
19、請你解釋一下 Flux?
20、你對「單一事實來源」有什麼理解
21、列出 Redux 的元件?
22、 Store 在 Redux 中的意義是什麼?
23、 Redux 有哪些優點?
24、 什麼是 React 路由?
25、說說你對 React 的渲染原理的理解?
26、React 中三種構建元件的方式?
JQuery
說出jQuery中常見的幾種函數以及他們的含義是什麼?
(1)get()取得所有匹配的DOM元素集合;
(2)get(index)取得其中一個匹配的元素.index表示取得第幾個匹配的元素;
(3)append(content)向每個匹配的元素內部追加內容;
(4)after(content)在每個匹配的元素之後插入內容;
(5)html()/html(var)取得或設定匹配元素的html內容;
(6)find(expr)搜尋所有與指定表示式匹配的元素;
(7)bind(type,[data],fn)為每個匹配元素的特定事件繫結事件處理常式;
(8)empty()刪除匹配的元素集合中所有的子節點;
(9)hover(over,out)一個模仿懸停事件(滑鼠移動到一個物件上面及移出這個物件)的方法;
(10)attr(name)取得第一個匹配元素的屬性值。
【相關推薦:jq教學】
jQuery 能做什麼?
獲取頁面的元素;修改頁面的外觀;改變頁面大的內容;響應使用者的頁面操作;為頁面新增動
態效果;無需重新整理頁面,即可以從伺服器獲取資訊;簡化常見的javascript任務。
如何將一個HTML元素新增到DOM樹中的?
可以通過appendTo()方法在指定的DOM元素末尾新增一個現存的元素或者一個新的HTML元素。
什麼是jQuery? jQuer能做什麼?
jQuery是一套JavaScript的庫,它簡化了使用Javascript進行網頁特效開發的一些複雜性,提供了對常見任務的自動化和複雜任務的簡化
JQuery 的優點
1.利用css的選擇器提供高速的元素查詢行為。
2.提供了一個抽象層來標準化各種常見的任務,可以解決各種瀏覽器的相容問題。
3.將複雜的程式碼簡化,提供連綴程式設計模式,大大簡化了程式碼的操作。
(學習視訊分享:、jQuery視訊教學)
以上就是分享一些值得收藏的精選Web前端面試題(附答案)的詳細內容,更多請關注TW511.COM其它相關文章!