欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

面試常見的js算法題

 更新時間:2017年03月23日 11:24:14   作者:bennyook  
本文主要介紹了面試常見的js算法題。具有很好的參考價值。下面跟著小編一起來看下吧

我們?nèi)ッ嬖囈话愣加泄P試,筆試題一般都會涉及到很多算法的東西。

不管你用的多不多,反正就是要會。不然筆試很難過。

就算是直接面試的,有時候也會遇到面試官直接叫你當(dāng)場寫個算法題出來這種情況。

因為筆試時間很有限,不會出很復(fù)雜的題目,所以筆試怎么出都不會離開下面這幾種題。

廢話不多說,下面來列出主要的幾個算法題。

1.排序

一般都是給個數(shù)組然后排序,有的從小到大,有的從大到小。一定要看清楚。以下都是從小到大的排序算法。

冒泡法

 var arr = [3,6,1,2,5];
 var temp;
 for(var i= 0;i<arr.length;i++){
 for(var j=i+1;j<arr.length;j++){
 if(arr[i] > arr[j]){
 temp = arr[i];
 arr[i] = arr[j];
 arr[j] = temp;
 }
 }
 }
 console.log(arr);

快速排序法

function quicksort (arr){
 if(arr.length<=1){
 return arr;
 }
 var left = [];
 var right = [];
 var middle = arr[0];
 for(var i=1;i<arr.length;i++){
 if(arr[i]<middle){
 left.push(arr[i]);
 }else{
 right.push(arr[i]);
 }
 }
 return quicksort(left).concat([middle],quicksort(right));
}

注意:可以用快速就不要用冒泡。實在沒記住才用冒泡。(因為快速排序設(shè)計到遞歸,面試官更多是想考察你遞歸算法)

2.數(shù)組去重

這題考察的是你會不會存儲數(shù)組元素的出現(xiàn)次數(shù)來解決去重問題。當(dāng)然解法也有很多,下面是其中一種解法。

Array.prototype.unique = function(){
 var res = [];
 var json = {};
 for(var i = 0; i < this.length; i++){
 if(!json[this[i]]){
 res.push(this[i]);
 json[this[i]] = 1;
 }
 }
 return res;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
alert(arr.unique());

3.js的拷貝

這題涉及到的就是你能不能清楚的分辨深拷貝和淺拷貝。

var a = {name:'Tom'};  var b = a;  b.name = 'Peter'; 

請問a.name = ?

正確答案是Peter,如果你的答案是Tom的話,那么你要好好去看看js的深拷貝。

如果要被拷貝的是數(shù)組:

slice和concat都可以直接讓數(shù)組進行深拷貝

arr.slice();
arr.concat();

下面是解法。當(dāng)然肯定有比我寫得更好的。

function deepCopy(source){
 var result = {};
 for(var i in source){
 if(typeof source[i] === "object"){
 result[i] = deepCopy(source[i]);
 }else{
 result[i] = source[i];
 }
 }
 return result;
}

4.獲取字符串里出現(xiàn)子串的位置

function appear(str,str_target){
 var n = 0;
 var result = [];
 while(str.indexOf(str_target,n)!=-1 && n < str.length){
 result.push(str.indexOf(str_target,n));
 n = str.indexOf(str_target,n) + str_target.length;
 }
 return result;
}
var arr = appear('abascbascbabasbascbascascbab','ab');
console.log(arr);

5.不確定數(shù)量的數(shù)組遍歷組合算法

好吧,解釋下這題。這題在現(xiàn)實中確實會用到。尤其是做商城網(wǎng)站時,sku的算法真的經(jīng)常會遇到。

這題的意思就是說。相當(dāng)于說[1,2,3],[4,5]。。。。的不確定個數(shù)的數(shù)組進行遍歷組合,組成[[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]這樣。然后數(shù)組越多,組出來就肯定越多。

那怎么做的,我上網(wǎng)查了一些相關(guān)算法都沒找到好的,然后我就自己寫??赡苓€是會有點毛病,大家將就看。

有寫的更好的歡迎評論教我一下。

function group(arr,re){
 if(arr.length <=0){
 return re;
 }
 if(!re){
 var arr = arr.slice();
 var re = arr.shift();
 return group(arr,re);
 }else{
 var now = arr.shift();
 var newre = [];
 for(var j=0;j<now.length;j++){
 for(var k=0;k<re.length;k++){
 var temp = [];
 if(re[k] instanceof Array){
  temp = re[k];
 }else{
  temp.push(re[k]);
 }
 newre.push(temp.concat(now[j]));
 }
 }
 return group(arr,newre);
 }
}
var arr = [['a','b','c'],['e','d','f'],['h','i'],['j','k','l','m']];
// var arr = [['a','b','c'],['e','d','f'],['h','i']];
// console.log(arr);
var result = group(arr);
console.log(result); 

6.lazyMan(這道題考察了很多內(nèi)容)

這道題自行百度吧。。只要百度lazyMan 面試題,應(yīng)該是可以搜出來的

7.編寫一個函數(shù)fn(Number n),將數(shù)字轉(zhuǎn)為大寫輸出,如輸入123,輸出一百二十三。

好吧,這道題我是忘了我看的本站的哪位的文章了,覺得確實有點意思。

下面是他的代碼。

function fn(n){
 if(!/^([1-9]\d*)/.test(n)){
  return '非法數(shù)據(jù)';
 }
 var unit = '千百十億千百十萬千百十個';
 if(n.length > unit.length){
  return '數(shù)據(jù)過長';
 }
 var newStr = '';
 var nlength = n.length;
 unit = unit.substr(unit.length - nlength);
 for(var i = 0; i < nlength; i++){
  newStr += '零一二三四五六七八九'.charAt(n[i]) + unit.charAt(i);
 }
 newStr = newStr.substr(0,newStr.length-1);
 newStr = newStr.replace(/零(千|百|(zhì)十)/g,'零').replace(/(零)+/g,'零').replace(/零(億|萬)/g,'$1');
 return newStr;
}
console.log(fn('205402002103'));

8.如何將浮點數(shù)左邊的數(shù)每三位添加逗號

如1200000.11轉(zhuǎn)成12,000,000.11

result = num && num.toString().replace(/(\d)(?=(\d{3})+\.)/g,function($1,$2){
 return $2 + ',';
})

上面的解法是用正則,當(dāng)然你也可以用別的方法。

以上就是面試常見題目??赡軙羞z漏。歡迎補充。

不要光看。。要自己動手寫一下,不然你以為你看會了。其實要你寫,你還是寫不出。

ok. 就這樣。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • Javascript在IE下設(shè)置innerHTML時出現(xiàn)未知的運行時錯誤的解決方法

    Javascript在IE下設(shè)置innerHTML時出現(xiàn)未知的運行時錯誤的解決方法

    程序代碼思路大致如下,想動態(tài)的改變tr標(biāo)簽的innerHTML內(nèi)容,但是IE卻報未知的運行時錯誤
    2011-01-01
  • Bootstrap基本模板的使用和理解1

    Bootstrap基本模板的使用和理解1

    這篇文章主要為大家詳細(xì)介紹了關(guān)于Bootstrap基本模板的使用和理解的學(xué)習(xí)記錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 使用JavaScript根據(jù)圖片獲取條形碼的方法

    使用JavaScript根據(jù)圖片獲取條形碼的方法

    本文重點給大家介紹JavaScript識別圖片中的條形碼,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-07-07
  • JavaScript定義類和對象的方法

    JavaScript定義類和對象的方法

    這篇文章主要介紹了JavaScript定義類和對象的方法,分別以函數(shù)方式與Object類方式實現(xiàn),是javascript非常重要的技巧,需要的朋友可以參考下
    2014-11-11
  • 微信小程序?qū)崿F(xiàn)車牌鍵盤

    微信小程序?qū)崿F(xiàn)車牌鍵盤

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)車牌鍵盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 詳解JSON Web Token 入門教程

    詳解JSON Web Token 入門教程

    這篇文章主要介紹了詳解JSON Web Token 入門教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • js簡單抽獎代碼

    js簡單抽獎代碼

    年底了各個公司都有抽獎活動,我也寫了一個超級簡單的代碼來實現(xiàn)抽獎效果,這里沒有華麗的Css3效果,但卻有短小精悍的js代碼。
    2015-01-01
  • 原生js實現(xiàn)手風(fēng)琴功能(支持橫縱向調(diào)用)

    原生js實現(xiàn)手風(fēng)琴功能(支持橫縱向調(diào)用)

    本文主要介紹了原生js實現(xiàn)手風(fēng)琴功能(支持橫縱向調(diào)用)的示例代碼。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 微信小程序之自定義組件的實現(xiàn)代碼(附源碼)

    微信小程序之自定義組件的實現(xiàn)代碼(附源碼)

    最近在項目開發(fā)中,遇到好多雷同的頁面樣式,就想著可以將常用的功能模塊封裝成組件,方便在項目中使用和修改。這篇文章主要介紹了微信小程序之自定義組件的實現(xiàn)代碼(附源碼),需要的朋友可以參考下
    2018-08-08
  • JS實現(xiàn)簡易貪吃蛇游戲

    JS實現(xiàn)簡易貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)簡易貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評論