成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

面試題分享

AZmake / 1621人閱讀

摘要:前段時(shí)間看見(jiàn)我們班群里分享了一張圖片,上面有些題目,我自己做了一遍,覺(jué)得還是可以歸納分享出來(lái)的,聽(tīng)說(shuō)是阿里的題目,我也不知真假,看題目,出的還是有點(diǎn)技術(shù)含量的。我覺(jué)得學(xué)習(xí)應(yīng)該是積極主動(dòng)的行為,所以分享的方法沒(méi)有注釋信息。

作為一個(gè)前端一年多了,總覺(jué)得自也該寫(xiě)寫(xiě)自己的博客了。其實(shí)早就想寫(xiě)了,但是不知道寫(xiě)點(diǎn)什么,感覺(jué)自己還是小白,也不想自己寫(xiě)出的東西誤人子弟。前段時(shí)間看見(jiàn)我們班群里分享了一張圖片,上面有些題目,我自己做了一遍,覺(jué)得還是可以歸納分享出來(lái)的,聽(tīng)說(shuō)是阿里的題目,我也不知真假,看題目,出的還是有點(diǎn)技術(shù)含量的。好了,話不多說(shuō)就是干。這篇博客只是對(duì)這些題的個(gè)人解答方法,我自己針對(duì)個(gè)別題目也在百度上搜過(guò),總覺(jué)得自己的寫(xiě)法可以繼續(xù)優(yōu)化,不是很好,希望對(duì)于前端同學(xué)有所幫助。大神就請(qǐng)繞道啦~

題目如下:
1、字符串?dāng)?shù)組去除重復(fù)的項(xiàng),例如:

["1","2","1","3"] --> ["1","2","3"];
代碼:

function quchong(arr) {
    var a = [];
    for(var i=0,len=arr.length;i

注意:“indexOf”方法是ECMAscript5方法,IE8以上支持;
2、寫(xiě)一個(gè)轉(zhuǎn)換函數(shù),把JSON對(duì)象的key從橫杠形式(Pascal)轉(zhuǎn)換成小駝峰形式(Camel)。

即["a_b":1] --> ["aB":1]
代碼1:

function trans(obj) {
    var arr = [];
    var newObj = {};
    var pos,key;
    for(var p in obj) {
        key = p;
        pos = p.indexOf("_");
        p = p.slice(0,pos)+""+p.substr(pos+1,1).toLocaleUpperCase()+""+p.slice(pos+2);
        newObj[p] = obj[key];
    }
    return newObj;
}

代碼2:

function trans(obj) {
    var keys = Object.keys(obj);
    var newObj = {};
    var key;
    for(var i =0,len=keys.length;i

代碼3:

function trans(str) {
    var re = /-(w)/g;
    str = str.replace(re, function ($0, $1) {
        return $1.toUpperCase();
    });
};

注意:前兩種方法都類似字符串拼接的方法,第一種主要是通過(guò)字符串方法slice來(lái)截取字符串;第二種方法主要是通過(guò)數(shù)組和字符串的轉(zhuǎn)換,來(lái)完成字符串的拼接;第三種方法適合熟悉正則表達(dá)式的同學(xué),這里主要使用了replace的回調(diào)函數(shù)方法。
3、寫(xiě)一個(gè)類Person,擁有屬性age和name,擁有方法say(something)。

代碼:

function Person(age, name) {
        this.age = age;
        this.name = name;
    }
    Person.prototype.say=function() {
        // something
        console.log("let"s do something");
    }
   function Superman(power) {
       this.power = power;
   }
   Superman.prototype = new Person(18,"程序員");
   Superman.prototype.fly = function(height) {
       console.log("height:",height);
   }
   var superman = new Superman("電力");
   console.log(superman.name,superman.age,superman.power,superman.fly(300));
   

結(jié)果截圖:

注意:這種方法在《JavaScript設(shè)計(jì)模式》一書(shū)中叫類式繼承,有興趣的同學(xué)可以了解一下。
4、給一個(gè)div:


用原生js讓這個(gè)div可以拖拽;
代碼:

window.onload=function() {
    var box = document.getElementById("draggable");
    box.onmousedown = function() {
        document.onmousemove = function(event) {
            var ev = event || window.event;
            box.style.left = (ev.clientX - box.offsetHeight/2)+"px";
            box.style.top = (ev.clientY - box.offsetWidth/2)+"px";
        }
    }
    box.onmouseup = function() {
        document.onmousemove = null;
    }
}

5、寫(xiě)一個(gè)函數(shù)實(shí)現(xiàn)數(shù)字格式化輸出,比如輸入999999999,輸出為999,999,999。
代碼:

function formarNum(num,sep) {
    sep = sep || ",";
    var reg = /B(?=(d{3})+(?!d))/g;
    var str = num.toString().replace(reg,sep);
    return str;
}

注意:如果數(shù)字不是很大,可以直接使用toLocaleString()的方法;如果需要格式化的數(shù)字有小數(shù)部分,還需要把小數(shù)部分截取出來(lái),格式化整數(shù)部分再拼接輸出結(jié)果。

toLocaleString方法使用截圖:

6、編寫(xiě)一個(gè)函數(shù)parseQueryString,它的用途是把URL參數(shù)解析為一個(gè)對(duì)象。
代碼:

function parseQuryString(url) {
        var obj = {};
        var str = "";
        var arr = [];
        var item = "";
        if(url.indexOf("?")!=-1) {
            str = url.split("?")[1];
            arr = str.split("&");
            for(var i=0,len=arr.length;i

7.編寫(xiě)一個(gè)函數(shù)flatten,傳入僅包含數(shù)字的多維數(shù)組,返回拍平后的結(jié)果。
如:傳入[1,[2,3]],返回[1,2,3]。

代碼:

var result = [];
function flatten(arr) {
    if(arr.length>0) {
        for(var i=0,len=arr.length;i0) {
                flatten(arr[i])
            } else {
                result.push(arr[i]);
            }
        }
    }
    return result;
}

注意:這里用到了遞歸的方法,如果數(shù)組中的元素還是數(shù)組且子數(shù)組的長(zhǎng)度大于零,就繼續(xù)調(diào)用本方法。
8、寫(xiě)一個(gè)類EventEmitter,實(shí)現(xiàn)簡(jiǎn)單的發(fā)布訂閱功能:

const e = new EventEmitter();
e.on("update",function(data){console.log(data)});
e.emit("update","message");

代碼:

    function EventEmitter(event,cb) {};
    EventEmitter.prototype.on = function(eventName,cb) {
        this[eventName] = cb;
    }
    EventEmitter.prototype.emit = function(eventName,message) {
        this[eventName](message);
    }
    var e = new EventEmitter();
    e.on("update",function(data){console.log(data)});
    e.emit("update","message");
    

結(jié)果截圖:


注意:如果想鏈?zhǔn)剑▁x.xx.xx)使用發(fā)布訂閱功能,需要在on和emit中將this返回。
例如:

function EventEmitter(event,cb) {};
    EventEmitter.prototype.on = function(eventName,cb) {
        this[eventName] = cb;
        return this;
    }
    EventEmitter.prototype.emit = function(eventName,message) {
        this[eventName](message);
        return this;
    }
    var e = new EventEmitter();
    e.on("update",function(data){console.log(data)}).on("go",function(data){alert(data)});
    e.emit("update","message").emit("go","go home");

結(jié)果截圖:

隨記我的第一篇博客寫(xiě)好了,分享的方法可能不是最好的,但是是我認(rèn)為比較通俗易懂的。我覺(jué)得學(xué)習(xí)應(yīng)該是積極主動(dòng)的行為,所以分享的方法沒(méi)有注釋信息。如果對(duì)你有幫助,麻煩多多鼓勵(lì)咯。前端的知在我看來(lái)是片汪洋大海,還有很多技術(shù)還在匯入其中,我希望,這次的分享只是開(kāi)始,以后能有更優(yōu)質(zhì)的前端知識(shí)跟大家分享。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94844.html

相關(guān)文章

  • 前端最強(qiáng)面經(jīng)匯總

    摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒(méi)有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來(lái)而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測(cè)試不同環(huán)境結(jié)果可能有差異而就是。 花了很長(zhǎng)時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...

    wangjuntytl 評(píng)論0 收藏0
  • 分享一下 軟件測(cè)試面試歷程和套路,真的很實(shí)在

    摘要:軟件測(cè)試自學(xué)秘訣面試失敗一天,心態(tài)穩(wěn)的一批,因?yàn)槊嬖嚨娜峭獍耸聨臀衣?lián)系的公司,工資全都是一萬(wàn)以上,之前只有四五千的自己根本不覺(jué)得自己能勝任。 個(gè)人是去年年底零基礎(chǔ)轉(zhuǎn)行,兩三千培訓(xùn)費(fèi)學(xué)出來(lái),學(xué)完后也是稀里糊涂,僅是知道功能測(cè)試就是找問(wèn)題,其他接口,性能,數(shù)據(jù)庫(kù),python基礎(chǔ),虛擬機(jī)搭建網(wǎng)站都實(shí)現(xiàn)了課程展示那樣。面試資...

    Lyux 評(píng)論0 收藏0
  • Android-Java面試

    摘要:好不容易在月號(hào)這天中午點(diǎn)左右接到了來(lái)自阿里的面試電話。這里會(huì)不斷收集和更新基礎(chǔ)相關(guān)的面試題,目前已收集題。面試重難點(diǎn)的和的打包過(guò)程多線程機(jī)制機(jī)制系統(tǒng)啟動(dòng)過(guò)程,啟動(dòng)過(guò)程等等掃清面試障礙最新面試經(jīng)驗(yàn)分享,此為第一篇,開(kāi)篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開(kāi)發(fā)面試題總結(jié) 各大公司 Jav...

    TalkingData 評(píng)論0 收藏0
  • 前端--通用知識(shí) - 收藏集 - 掘金

    摘要:閉包有多重前端知識(shí)點(diǎn)大百科全書(shū)前端掘金,,技巧使你的更加專業(yè)前端掘金一個(gè)幫你提升技巧的收藏集。 Vue全家桶實(shí)現(xiàn)還原豆瓣電影wap版 - 掘金用vue全家桶仿寫(xiě)豆瓣電影wap版。 最近在公司項(xiàng)目中嘗試使用vue,但奈何自己初學(xué)水平有限,上了vue沒(méi)有上vuex,開(kāi)發(fā)過(guò)程特別難受。 于是玩一玩本項(xiàng)目,算是對(duì)相關(guān)技術(shù)更加熟悉了。 原計(jì)劃仿寫(xiě)完所有頁(yè)面,礙于豆瓣的接口API有限,實(shí)現(xiàn)頁(yè)面也有...

    王笑朝 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<