刷前端面經筆記(十二)

2021-09-12 15:36:00 字數 2941 閱讀 6342

1.以下遞迴函式存在棧溢位的風險,請問如何優化?

function factorial(n)
解答:

function factorial(n)
2.請實現乙個計算最大公約數的函式:
function greatestcommondivisor(a,b)

greatestcommondivisor(8, 12) //4

greatestcommondivisor(8, 16) //8

greatestcommondivisor(8, 17) //1

解答:

function greatestcommondivisor(a,b)  

return a;

}

3.陣列去重(如果陣列中有nan)
array.prototype.uniq = function () 

return fibonacci(n - 1) + fibonacci(n - 2);

}

5.根據包名,在指定空間中建立物件

輸入描述:

namespace(}, 'a.b.c.d')
輸出描述:

}}}}
function namespace(onamespace, spackage) ;

}parent = parent[property];

}return onamespace;

}

6.封裝函式 f,使 f 的 this 指向指定的物件
function bindthis(f, otarget)   

}

7.dom 節點查詢

查詢兩個節點的最近的乙個共同父節點,可以包括節點自身

輸入描述:

onode1 和 onode2 在同一文件中,且不會為相同的節點
function commonparentnode(onode1, onode2) else if(onode2.contains(onode1))else

}

8.關係型陣列轉換成樹形結構物件

關係型陣列:

var obj = [,,

,]

期望結果:

o = }}}

實現原始碼:

function treeobj(obj) 

o.child.push(item);

o.child = o.child;

}});

}});

return obj.filter(item => item.parent === null)[0]

}

或者:

function treeobj(obj)  : cur));

}

9.js如何判斷一組數字是否連續
// 當出現連續數字的時候以『-』輸出

[1, 2, 3, 4, 6, 8, 9, 10]

期望結果:

["1-4", 6, "8-10"]
實現**:

判斷是否連續:

var arrange = function(arr)).concat(infinity).reduce(function(source, dest)

return dest;

});return result;

};

格式化實現:

var formatarr = function(arr)  else 

}return newarr;

}

10.建立子類child,使用原型和建構函式的方式繼承父類people的方法,並呼叫say函式說出姓名和年齡。

父類:

function people(name,age);

}

原型繼承:

function child(name, age)

child.prototype = new people();

var child = new child('rainy', 20);

child.say()

建構函式繼承:

function child(name, age)

var child = new child('rainy', 20);

child.say()

組合繼承:

function child(name, age)

child.prototype = people.prototype;

var child = new child('rainy', 20);

child.say()

組合繼承優化:

刷前端面經筆記(十二)

1.以下遞迴函式存在棧溢位的風險,請問如何優化?function factorial n 解答 function factorial n 2.請實現乙個計算最大公約數的函式 function greatestcommondivisor a,b greatestcommondivisor 8,12 4...

刷前端面經筆記(十二)

1.以下遞迴函式存在棧溢位的風險,請問如何優化?function factorial n 解答 function factorial n 2.請實現乙個計算最大公約數的函式 function greatestcommondivisor a,b greatestcommondivisor 8,12 4...

刷前端面經筆記(一)

1.css的盒子模型 包含元素內容content 內邊距padding 邊框border 外邊距margin box sizing border box content box inherit 1 content box 總寬度 margin border padding width,即為標準模型 ...