天天看點

2021面試第二彈來襲

第三場:

1.TCP三向交握,DNS是什麼

建立連接配接需要三個過程(三次握手):

1.主機向伺服器發送一個建立連接配接的請求

2.伺服器接到請求後發送同意連接配接的信号

3.主機接到同意連接配接的信号後,再次向伺服器發送了确認信号

DNS是域名系統(英文:Domain Name System,縮寫:DNS)是網際網路的一項服務。它作為将域名和IP位址互相映射的一個分布式資料庫,能夠使人更友善地通路網際網路。

2.Ref的用法

Ref可以擷取本頁面的DOM元素,還可以拿到子元件中的data和去調用子元件中的方法,如用于父子間傳值。

3.祖孫元件傳參

在 vue 中,祖孫元件之間是不能直接通信的,需要通過父元件作為 中間元件。實際上祖父的關系就是兩個 父與子 的關系。

1 $props 鍊  既然是兩個父與子之間的關系,那就可以 祖傳父 再由 父傳子。而 props 可以用來接收來自父元件的值,那就可以通過 props 實作鍊式傳遞了。這種方式雖然是比較容易了解,但也是比較繁瑣的。中間元件需要接收所有的 props 等。

2 $attrs vue 在 2.4.0 版本中新增了 $attrs 屬性。根據前面的了解 $attrs 就是沒有在 props 中聲明要接收的一些屬性。此外,還可以通過 v-bind="$attrs" 把來自父元件的一些屬性直接傳遞到子元件中。在 父元件 中使用 v-on="$listeners" 把祖父元件的事件綁定到孫元件;

在孫元件中觸發來自祖父元件的自定義事件就可以了,有兩種方式。

① this.$ listeners.eventName(param)

② this.$emit(eventName, param)傳遞次序:GrandFather → Father → GrandSon

4.自定義UI元件原元件方法如何處理

  使用props,引入原元件,lg:props:{...Table.props}或者mixins: [Table]

  通過v-bind=”$attrs”和v-on=”$listeners”接受父級傳遞的屬性傳遞給子元件

5.promise與async await優缺點

async/await是寫異步代碼的新方式,以前的方法有回調函數和Promise。

async/await是基于Promise實作的,它不能用于普通的回調函數。

async/await與Promise一樣,是非阻塞的。

async/await使得異步代碼看起來像同步代碼

差別:

  1. async/await函數前面多了一個async關鍵字。await關鍵字隻能用在async定義的函數内。async函數會隐式地傳回一個promise,該promise的reosolve值就是函數return的值。

    2)我們不能在最外層代碼中使用await,因為不在async函數内。

3)使用async函數可以讓代碼簡潔很多,不需要像Promise一樣需要些then,不需要寫匿名函數處理Promise的resolve值,也不需要定義多餘的data變量,還避免了嵌套代碼。

4) 錯誤處理:Async/Await 讓 try/catch 可以同時處理同步和異步錯誤。

6.js模拟多線程

JavaScript是單線程執行的。也就是說,在任何時間點,有且隻有一個線程在運作JavaScript程式,無法同一時候運作多段代碼。

實作一:用setTimeout制造異步執行的假象

實作二:Concurrent.Thread.js

實作三:WebWork

第四場:

1.vue相鄰元件傳參

  1. .使用中間件eventBus
  2. 使用狀态管理工具vueX

2.event Bus如何傳值,為啥要寫成元件,可不可以對象

在main.js檔案中暴露出一個執行個體,export const eventBus = new Vue()

1).變量通過eventBus.$emit傳過去;eventBus.$on傳過來的變量

2).建立個bus.js 以元件形式調用

3.vueX如何傳值,actions如何異步操作

This.$store.state.xx(變量名) 取值

this.$store.commit(‘xx’, obj) 傳值; 第一個參數是mutaions中定義的方法名,第二個參數是指派對象

Actions異步操作:

在actions中送出mutation,并且可以包含任何的異步操作

一個方法中可以執行多個同步函數 ;store.dispatch在不同子產品中可以觸發多個action函數

4.路由傳參有哪些方式,params為啥一定要配name

常用的有三種:

1).在路徑中顯示參數,重新整理頁面參數不丢失 /path/:id

2).通過path比對路由;在路徑中顯示參數,重新整理頁面參數不丢失

3).通過name比對路由,不在路徑中顯示參數,重新整理頁面參數丢失

5.js執行機制

javascript是一門單線程語言,所有任務需要排隊,前一個任務結束,才會執行後一個任務。

1、同步和異步任務分别進入不同的執行"場所",同步的進入主線程,異步的進入Event Table并注冊函數。

2、當Event Table中指定的事情完成時,會将這個函數移入Event Queue。

3、主線程内的任務執行完畢為空,會去Event Queue讀取對應的函數,進入主線程執行。

4、上述過程會不斷重複,也就是常說的Event Loop(事件循環)。

6.原型和原型鍊

原型:

①所有引用類型都有一個__proto__(隐式原型)屬性,屬性值是一個普通的對象

②所有函數都有一個prototype(原型)屬性,屬性值是一個普通的對象

③所有引用類型的__proto__屬性指向它構造函數的prototype

原型鍊:

當通路一個對象的某個屬性時,會先在這個對象本身屬性上查找,如果沒有找到,則會去它的__proto__隐式原型上查找,即它的構造函數的prototype,如果還沒有找到就會再在構造函數的prototype的__proto__中查找,這樣一層一層向上查找就會形成一個鍊式結構,我們稱為原型鍊。

小結: 此次問題大都不難,簡單總結下,與以往也有很多重複的内容被我砍掉了,運氣不錯面了一個電商公司幸運拿到滿意的offer,也祝各位旗開得勝,武運昌隆!

繼續閱讀