フロントエンド開発面接問題(新卒)--Js基礎アルゴリズム問題


前言
        本論文はjsの基礎的なアルゴリズム問題をまとめました.多くのインターネット会社は初級先端開発エンジニア(新卒)を募集する時、応募者にjsアルゴリズムの問題を作らせることが好きです.この時、これらのjs基礎的なアルゴリズムの解題思想を習得すれば、あなたにとってとても役に立ちます.
テーマ
タイトル1:文字列を反転します.
問題解決の考え方:1、split()文字列は配列に回転します.2、逆転配列;3、join()配列は文字列に変換されます.
function reverseString(str){
    var str=str.split("").reverse().join("");		//       .    .       
    return str;						//   
}
alert(reverseString("hello world!"));                   //    :!dlrow olleh
 
テーマ2:階乗です
方法1:while方法
function factorialWhile(num){
    var result=1;
    while(num){
    result*=num;
    num--;
    }
    return result;
}
alert(factorialWhile(5));            //    :120
方法二:for方法
function factorialFor(num){
    if(num<1){
        return 1;
    }else{
        for(var i=num-1; i>=1; i--){
            num*=i;
        }
    }
    return num;
}
alert("for   :"+factorialFor(5));        //    :120
方法三:再帰方法
function factorial(num){
    if(num<1){
       return 1;
    }
    else{
        return num*factorial(num-1);
    }
}
alert("     :"+factorial(5));        //    :120
 
タイトル3:与えられた文字列が回文であれば、trueを返し、逆にfalseを返します.
文字列が句読点、大文字、空欄を無視して、正読と逆読みが同じなら、この文字列はつまりpalindromeです.
問題の考え:文字列の余分な句読点とスペースを取り除いて、文字列を小文字に変換してこの文字列が回文であるかどうかを検証します.
function palindrome(str){
    var str1 = str.replace(/[^0-9a-zA-Z]/g,"").toLowerCase();	//      ,     ,     
    //alert(str1);	//  :abc1d42efg000h000gfe24d1cba
				
    var str2 = str1.split("").reverse().join("");		//     ,     
    //alert(str2);	//  :abc1d42efg000h000gfe24d1cba
				
    if (str1 === str2) {
        return true;
    } else{
        return false;
    }
}
alert(palindrome("aBc,./1d42--==EFG0   00 h0-';'00gfE';./. 24d 1cBA"));     //    :true
 
提供された文の中で一番長い単語を見つけて、その長さを計算します.
問題を解く考え方:1、行列に変換する.2、元素の長さによって並べ替えます.3、一番長い要素を出力して長さを返します.
function findLongestString(str){
    var arr = str.split(" ");			    //     ,  split()        
    //alert(arr);        //  :I,love,China
    var aSort = arr.sort(function (a,b){	    //  
        return b.length-a.length;
    });
    //alert(aSort);	//  : China,love,I
    document.write("    :"+aSort[0]+"; ");   //        
    document.write("    :"+aSort[0].length);
}
findLongestString("I love China");        //    :     :China;     :5
 
タイトル5:文字列の各単語の頭文字はすべて大文字で、残りの部分は小文字で書くことを確保します.
問題の考え:1、文字列を小文字に変換する.2、文字列配列に分割します.3、新しい結合文字列要素=最初の文字を大文字に変換する+残りの小文字.
function titleCase(str){
    var aStr = str.toLowerCase().split(" ");		//   ,        		
    for(var i=0; i
 
テーマ6:1つの大きな行列には4つの小さい行列が含まれています.それぞれの小さい行列の中の最大値を見つけて、それを直列にして、新しい配列を作ります.
問題のアイデア:各小行列の最大値を見つけて、新しい配列に最大値を入れて出力します.
方法1:Math.max.apply()を使用して最大値を抽出する.
function largestArray(arr){
    var result = [];			            //              
    for (var i=0; i");//    :165,82,6,29658
 
方法2:並べ替え法で最大値を抽出する
 
function largestArr(arr){
    var result = [];
    for (var i=0; i");//    :165,82,6,29658    
 
テーマ7:指定された文字列で文字列が終わるかどうかをチェックします.もしそうなら、trueに戻ります.もしそうでないなら、falseを返します.
解題の考え:文字列の最後の部分(長さはtargetと同じ)を切り取ってtargetと比較します.
function confirmEnding(str, target){
    var len = target.length;				
    var strEnding = str.slice(-len);		//           		
    if (strEnding == target) {
        return true;
    } else{
        return false;
    }
}
document.write(confirmEnding("strawberry", "rry"));    //    :true
 
タイトル8:指定された文字列numを繰り返し、numが負の場合は空の文字列を返します.
function repeat(str, num){
var result=str;			        //       result
    if (num<=0) {
        return "";
    } else{
        for (var i=0; i
 
題目9:文字列を切り詰め、指定されたパラメータnumより長い文字列の長さがあれば、余分な部分を…で表します.
問題の考え:対応する長さの文字列を切り取り、…とつづり合わせます.
 
  • に規定された長さは…を含まない.
    function truncate(str, num){
        var aStr = str.slice(0, num);
        if (str.length > num) {					
            return aStr.concat("...");
        }
        else{
            return str;
        }
    }
    document.write(truncate("javascript", 8)+"");    //    :javascri...
  • に規定されている長さは…を含めて
  • です.
    function truncate(str, num) {
        var str1=str.slice(0,num-3);
        var str2=str.slice(0,num);
        if(str.length > num){
            if(num<=3){
                return str2+'...';
            }else{
                return str1+'...';
            }
        }else{
            return str;
        }
    }			
    document.write(truncate("javascript", 8));    //    :javas...
     
    テーマ10:配列arrを指定された配列サイズsizeに従っていくつかの配列ブロックに分割します.
    問題解決の考え方:空いている配列を定義し、slice()を使って元の配列のsize要素を切り取るたびに、空の配列に挿入して新しい配列を形成します.
    function chunk(arr, size){
        var Array = [];
        if (arr.length > size) {							
            for (var i=0; i
     
    題目11:1つの配列を返すn個の要素に切り捨てられた後も残りの要素は、インデックス0から切断されます.
    function slasher(arr, n){
        var Array = [];
        if (n<=0) {
            return arr;
        } else{
        Array.push(arr.slice(n));				
            return Array;
        }	
    }
    document.write(slasher([1,516,15,85,3,841], 3));       //    :85,3,841
     
    タイトル12:配列の最初の文字列要素が第二の文字列要素のすべての文字を含んでいる場合、関数はtrueを返します.
    説明:[hello]、“Hello”はtrueに戻るべきです.文字列の2番目の文字列はすべて最初の文字列で検索できます.
    function mutation(arr){
        var str1 = arr[0].toLowerCase();
        var str2 = arr[1].toLowerCase();
        for (var i=0; i
    indexOf()メソッドは、指定された文字列値が文字列で最初に現れる位置を返します.
     
    文法:strigObject.indexOf(search value、froomindex)
    キーワード:searchvalue、必ず選択して、検索する文字列の値を規定します.
         froomindexは、オプションとして、文字列のそのindexから検索を開始します.
    値を返します.指定値が文字列の最初に現れた位置を返します.-1を返すと、文字列には変更値が含まれません.
     
    テーマ13:配列内のすべての偽値を削除します.JavaScriptにおいて、false、null、0、「」、undefined、NaNがfalse、nullがあります.
    function bouncer(arr){
        return arr.filter(test);		//filter            
    }
    //     
    function test(ele){
        var cont = ele !== false || ele !== null || ele !== 0 || ele !== "" || ele !== undefined || ele !==NaN;
        if (cont) {				//  cont  
            return ele;
        }				
    }			
    document.write(bouncer([561, "hello", true, false, ""]));    //    :561,hello,true
    Aray.filter():指定された条件(fn)に適合する全ての要素が検査配列によって得られます.
    文法:array.filter(function(currentValue、index、arr)、thisValue)
    キーワード:currentValue、必ず選択して、現在の要素の値.index、オプション、現在の要素の索引;アール、オプション、現在の要素が属する配列.thisvalueは、任意で、オブジェクトがこのコールバックとして使用され、関数に伝達され、「this」の値として使用されます.this Valueを省略すると、「this」の値は「undefined」です.
     
    もっと多いjsの面接試験問題を調べます.https://blog.csdn.net/mr_javascript/articale/detail/79769572
    ----------------------------------------------------
    参考記事:https://www.cnblogs.com/mr-wuxiansheng/p/6534910.html