1. 程式人生 > >前端面試問題總結-第四篇

前端面試問題總結-第四篇

綜述:對於2018年3/4月份的面試總結,面試中的問題是對自己平時工作內容的思考和積累,一定要平時思考,面試前總結,且不可臨時抱佛腳。大公司對於基礎知識,網路安全,資料結構和演算法,後端基礎知識有較高的要求,自己要有自己的認識和思考。並儘可能將其應用到工作中,不斷提高自己的能力。

1.阻止冒泡和阻止預設時間的js程式碼?

2.求最小公倍數,最大公約數的js演算法實現?

3.css中的尺寸單位有哪些?px pt em rem cm ?

4.遞迴實現N!演算法,怎樣防止棧溢位?

5.資料雙向繫結的原理是什麼?使用程式碼實現?在vue中有關於object.defineProperty()的應用,這就是資料雙向繫結的核心思想;在vue中也是這樣實現的;

6.jq中擴充套件方法的兩種方法的實現?及其實現思路?

7.jq原始碼解讀?和vue原始碼進行比對?

8.html中的viewport和meta具體有哪些作用?顯安的程式碼中為什麼會出現那麼多的meta標籤,具體作用是什麼?

9.現在的稍微高階一點的前端不在進行頁面的開發,而是進行頁面元件的開發,和框架的開發?要儘快形成一種理解框架,理解元件的能力,當代碼高度耦合時,怎樣來理清楚思路十分關鍵;

10、var a="test"; var b=new String("test");之間的區別?感覺一些js的基礎知識非常的不紮實,沒有透徹理解語言的深層次的含義。要轉變學習方法了。

//前者是定義一個普通的js字串變數,後者是建立一個成員,可以對這個成員進行擴充套件;
a.sex=1;
alert(a.sex);//輸出未定義,因為不是成員,沒有這屬性
b=new String('123');
b.sex=1;
alert(b.sex);  //輸出1,成員的屬性

11.編寫元件和框架程式碼的能力是在一點一滴中積累的,其中對於繼承和this比較重要?

12.在hybrid APP中涉及到前端和安卓的合作,怎樣讓兩者之間能夠毫無阻礙的進行語言間的交流十分的重要,weex前端框架專案中,安卓負責對頁面的元素進行解析並展示到頁面上。實際的核心思想是進行多個json檔案、js檔案的切換; 當在new元素的時候,是利用玉軍構建的ltsdk來進行構建的。這個時候就和安卓之間沒有啥關係了;

頁面佈局由安卓來佈局,後來的操作全部由前端來解決;

13.對於物件中的鍵值對格式的資料進行獲取的方法是通過類似陣列的下標方式來獲取值的。如圖所示;和框架相比,自己的實在需要學習的東西太多了;js的基礎內容和深層次的東西還沒有學習到;

14.在除錯手機端的頁面時,由於沒有f12除錯工具,非常需要和微信小程式一樣的除錯工具,將下屬程式碼加入到頁面中即可;非常的方便;特別是在做單頁面應用的時候,非常的好,比如vue頁面。如果是多個頁面,則直接放到公共的js檔案即可;

// 載入控制檯,將微信小程式的手機端除錯工具加入到自己的頁面的一段程式碼,十分的好
export const loadScript = (url, callback) => {
const script = document.createElement('script')
script.onload = () => callback()
script.src = url
   document.body.appendChild(script)
}

loadScript(
'https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/vconsole/3.0.0/vconsole.min.js',
() => {
// eslint-disable-next-line
new VConsole(); //微信那邊定義的一個物件,可以獲取一系列的除錯資訊
})

15.es6中的promise的實現原理是什麼?牽扯到狀態機的問題,一定要有所認識,在16種常見的設計模式中,狀態模式中就牽扯到狀態機的概念?