前端須要記住的一些基礎問題

最近在面試,一些公司會有筆試題,有些本身確實作的很差,因此把它記錄下來,鞏固複習。html

部分沒有完善,抽時間回來補充html5

 

怎樣實現a對象能夠調用b對象的方法?git

         考的是繼承,b要有a的方法,繼承有3種web

function classA(name) {
  this.name = name;
  this.showName = function() {
    alert(this.name);
  }
}面試

function classB(name) {
  classA.call(this, name);
}gulp

var oB = new classB("Black Cat");
oB.showName(); // Black Catcanvas

 

h5有哪些新標籤數組

         header, nav, section, article, aside, footer, details, summary瀏覽器

headercookie

定義文檔或節的頁眉

nav

定義導航連接的容器

section

定義文檔中的節

article

定義獨立的自包含文章

aside

定義內容以外的內容(好比側欄)

footer

定義文檔或節的頁腳

details

定義額外的細節

summary

定義 details 元素的標題

 

<!DOCTYPE> 的做用

定義文檔的類型,讓瀏覽器正確地顯示文檔(html5: <!DOCTYPE html>)

 

表單元素

Input, textarea, option, select , button  (html5新增:datalist, keygen, output)

 

Html5新增的input輸入類型

  • color
  • date
  • datetime
  • datetime-local
  • email
  • month
  • number
  • range
  • search
  • tel
  • time
  • url
  • week

 

html5新特性

  • 新的語義元素,好比 <header>, <footer>, <article>, and <section>。
  • 新的表單控件,好比數字、日期、時間、日曆和滑塊。
  • 強大的圖像支持(藉由 <canvas> 和 <svg>)
  • 強大的多媒體支持(藉由 <video> 和 <audio>)
  • 強大的新 API,好比用webstorage(本地存儲) 取代 cookie。

 

數組去重的實現

方法一:用是indexOf方法:

var arr = [1, 2, 3, 4, 4, 1, 21, 3, 12, 3, 4, 5324, 234, 3, 2, 1, 3]

function unique(res) {

    var result = [];

    for (var i = 0; i < res.length; i++) {

        if (result.indexOf(res[i]) == -1) {

            result.push(res[i])

        }

    }

    return result;

}

console.log(unique(arr));

方法二:

var arr2 = [1,2,4,5,3,2,1,3,4,2,4,5,4,234];

var o = {};

var resultArr = [];

for(var i=0;i<arr2.length;i++){

    if(!o[arr2[i]]){

        resultArr.push(arr2[i]);

        o[arr2[i]] = 2

    }

}

console.log(resultArr)

 

js實現clone方法,對5中數據類型進行復制

 

function clone(obj) {

    var o;

    if (typeof obj == "object") {

        if (obj === null) {

            o = null;

        } else {

            if (obj instanceof Array) {

                o = [];

                for (var i = 0, len = obj.length; i < len; i++) {

                    o.push(clone(obj[i]));

                }

            } else {

                o = {};

                for (var j in obj) {

                    o[j] = clone(obj[j]);

                }

            }

        }

    } else {

        o = obj;

    }

    return o;

}

 

說說對gulp的瞭解

         記住5個API

         gulp.tesk()        // 定義任務

         gulp.src()          // 獲取流(虛擬的文件對象流),有路徑,文件名,內容等信息

         gulp.dest()        // 輸出文件(寫文件)

         gulp.watch()    // 監聽文件變化

         gulp.run()          // 用來執行任務

         // pipe() 管道

 

Git版本管理的經常使用命令

         回頭來整理他們各自的做用

         git add .

         git checkout xxx

         git commit –m xxx

         git push origin master

         git pull origin master

         git branch

         git checkout –b xxx / git checkout xxx

         git merge xxx

 

360金融筆試題

   寫在前面:有些題目本身還以爲是面試官出的題目有問題呢,實際上並非,只是都有他的目的。

1.隨便列舉4個或多個BOM對象

  一、window對象 ,是JS的最頂層對象,其餘的BOM對象都是window對象的屬性;

  二、document對象,文檔對象;

  三、location對象,瀏覽器當前URL信息;

  四、navigator對象,瀏覽器自己信息;

  五、screen對象,客戶端屏幕信息;

  六、history對象,瀏覽器訪問歷史信息;

 

2.img元素的alttitle的異同

      alt屬性和title屬性的區別是前者是在圖片沒法加載的時候纔會顯示的其值,而title是在圖片正常加載鼠標劃上去顯示的值,雖然alt也有後者的功能,可是隻是在低版本的ie瀏覽器才支持,高版本及標準瀏覽器不支持這個 功能了。

 

3.Javascript有哪幾種數據類型

         基本類型:String  Number  Boolean  Null  undefined

         引用類型:Object

 

4.下面這段的執行結果

    <script>

        var a = 1,b = 0;

        <!--

        b = 2;

         -->

         if(a<b) alert('a is smaller');

         else slert('b is smaller')

    </script>

         結果:彈出a is smaller

 

5.說出下面腳本的執行結果,並說明緣由

         var a;

  if(a == undefined) alert('undefined');

  if(a == null) alert('null')

  結果:先彈出 undefined。關閉後再彈出 null。緣由:這裏「==」會強制類型轉換,a聲明瞭,但未定義,因此a是undefined, 而undefined == null也返回true,因此兩個alert都會執行

 

6.下面腳本的執行結果:

考的是進制的問題,這塊本身須要去增強

var x = 011, y= 0x10, z= 1.2e2;

alert(x+y+z)

  結果:145    (9+16+120)

 

7.下面腳本的執行結果:

var a=1,b=2;

function c(){

    alert('c1')

}

function test(){

    alert(a);

    alert(b);

    c();

    function b(){

        return 0

    }

 

    var a=5,b=6;

    function c(){

        alert('c2')

    }

}

test();

 

彈出undefined

彈出:function b(){

        return 0

    }

彈出:c2

 8.      下方腳本能正確alert2嗎?若是不行,怎麼解決?

for (var i = 0, l = 10, obj = []; i <= l; i++) {

    obj[i] = function() {

        alert(i);

    }

}

obj[2]()

結果:不能,alert的是11,解決方案是利用閉包

for (var i = 0, l = 10, obj = []; i <= l; i++) {

    (function(i) {

        obj[i] = function() {

            alert(i);

        }

    })(i)

}

obj[2]()

9.    說出下方腳本的執行結果

var array = [1,2];

deal(array, array);

function deal(arrA, arrB){

    arrA = [3,4];

    console.log(array[1]);   // 2

    arrB[1] = 9;           // arrB[1] = 9, arrB爲[1,9]  arrB是array引用,array爲[1,9]

    console.log(array[1]);   // 9

}

結果:// 2     // 9

相關文章
相關標籤/搜索