前端博客微信群一周面试题汇总

 

1.请用一行代码实现数组扁平化?

 1 /**
 2 
 3  * 数组扁平化(方式一)
 4 
 5  * @param {Array} arr 数组
 6 
 7  */
 8 
 9 function flat1 (arr) {
10 
11  return [].concat(...arr.map(v => Array.isArray(v) ? flat1(v) : v))
12 
13 }
14 
15 /**
16 
17  * 数组扁平化(方式二)
18 
19  * @param {Array} arr 数组
20 
21  */
22 
23 function flat2 (arr) {
24 
25  return arr.flat(Infinity)
26 
27 }

 

2.请在不使用Set的情况下实现数组去重?

 1 /**
 2 
 3  * 数组去重复
 4 
 5  * @param arr {Array} 数组
 6 
 7  */
 8 
 9 function unique(arr){
10 
11    return arr.filter((v, i) => Object.is(i, arr.indexOf(v)))
12 
13 }

 

3.计算一个字符串中出现重复字符的个数(不区分大小写)?

 1 /**
 2 
 3  * 出现重复字符的个数
 4 
 5  * @param {String} text 字符串
 6 
 7  */
 8 
 9 function duplicateCount (text) {
10 
11  return (text.toLowerCase().split('').sort().join('').match(/(.)\1+/g) || []).length
12 
13 }

 

4.已知DNA是双链结构,由4种碱基对构成,A和T互相配对,C和G互相配对,若有任意一条DNA单链,求配对的单链?

 1 function DNAResolve (dna) {
 2 
 3    return dna.replace(/(A|T|C|G)/gi, function($1){
 4 
 5        return {
 6 
 7            A: 'T',
 8 
 9            T: 'A',
10 
11            C: 'G',
12 
13            G: 'C'
14 
15        }[$1]
16 
17    })
18 
19 }

 

5.写一个将字符串转驼峰式的函数

 1 function camelCase (str) {
 2 
 3  return str.split(' ').map(v => v.replace(/\b(\w)/g, function (fl) {
 4 
 5    return fl.toUpperCase()
 6 
 7  })).join('')
 8 
 9 }
10 
11 camelCase('hello world') // 'HelloWorld'

 

6.求泰波那契数列

已知斐波那契数列规律为[1, 1, 2, 3, 5...], 而泰波那契数列是从第4个元素开始,后面每个元素都是前3个元素之和,请写一个有2个参数的函数,参数1是初始化数组,参数2是该函数返回泰波那契数组的长度,返回值是泰波那契数列。

 1 function tribonacci(signature,n){
 2 
 3  for (var i = 0; i < n-3; i++) {
 4 
 5    signature.push(signature[i] + signature[i+1] + signature[i+2]);
 6 
 7  }
 8 
 9  return signature.slice(0, n);
10 
11 }
12 
13  tribonacci([1,1,1],1) // [1]
14 
15  tribonacci([0,2,7],2) // [0, 2]
16 
17  tribonacci([1,1,1],10) // [1,1,1,3,5,9,17,31,57,105]

 

7.请在不使用结构伪类选择器的情况下,用CSS实现每个链接之间用竖线分隔,竖线样式为 1px solid #aaa;

<nav class="list">

 <ul>

   <li><a href="#">优酷</a></li>

   <li><a href="#">爱奇艺</a></li>

   <li><a href="#">风行</a></li>

   <li><a href="#">土豆</a></li>

   <li><a href="#">B站</a></li>

 </ul>

</nav>

 

* {

     margin:0;padding:0;

   }

   nav{

     font-size: 16px;

     overflow: hidden;

     margin: 20px 50px;

   }

   .list ul {

     overflow: hidden;

   }

   .list li {

     float: left;

     list-style-type: none;

   }

   .list a {

     display: block;

     padding: 0 16px;

     text-decoration: none;

     color: #999;

   }

   // 实现这一点的关键是使用紧邻同胞选择器 +

   .list li + li {

     border-left: 1px solid #aaa;

   }

   .list a:hover{

     color: #555;

   }

 

 转载:https://mp.weixin.qq.com/s/W8mMUYIrVS9ULGFe2_XeDw

posted @ 2019-06-18 15:23  暗恋桃埖源  阅读(341)  评论(0编辑  收藏  举报