天天看点

总结阿里p5 p6前端面试题,并一一解决

引用https://blog.csdn.net/shadothew/article/details/88562474

阿里的应届校招网申和内推在八月份开始,提前应该开始准备

2020 4.3

1.有三个元素,第一个与第三个宽度都为100px,中间元素占用剩余空间,怎么做到中间元素随着浏览器宽度的变化而变化

<div class="b">2</div>
  <style>
    .b{
      background-color: black;
      position: absolute;
      left: 100px;
      right: 100px;
      width: auto;
      color: white;
      text-align: center;
    }
  </style>
           

2.讲讲box-sizing

content-box :常规状态,border 和 padding 单独占位,盒子总宽高是 设定宽高加上两者之和

border-box  :边框盒子  盒子总宽高为设定好宽高 ,border和padding 占用设定宽高的位置。

3.做项目有没有遇到什么坑

第一次做跨域请求,后台做拦截器接受数据报undefined,找了半天错误,结果发现开始接收的option请求,这个请求不带数据。。

4.rem与em的区别

rem是根据根的font-size变化,em是根据父级的font-size变化

5.实现destructuringArray

// destructuringArray( [1,[2,4],3], "[a,[b],c]" )
// result
// { a:1, b:2, c:3 }
           
let destructuringArray = (arry1,string) => {
    string = string.replace(/\[/g,'')
    string = string.replace(/\]/g,'')
    string = string.split(',')
    let q = {}
    string.some((item,index) => {
      if(typeof arry1[index] === 'object'){
        let arr = Object.keys(arry1[index])
        q[item] = arry1[index][arr[0]]
      }
      else{
        q[item] = arry1[index]
      }
    })
    return q
  }
           

2020.4.8

1.一个元素随页面的下滑而字体变小,如何减少监听滑轮开销,或者减少搜索引擎搜索时联想词的开销

给一个阀值,大于这个阀值时执行一次函数。

2.原型链的理解

参照https://blog.csdn.net/singlever/article/details/105113968

3.闭包理解

通过执行一个函数a创建了另一个函数b,在a执行完后b执行完之前,a不会被销毁,会和b一起成立一个闭包

4.出一个n,输出包含n对括号的所有可能组合

let dds = (n) => {
    let cont = 0  //计数器
    cont += 1  //n个组的时候 ()()()() 有n/n = 1个
    cont += n-1  //n-1个组的时候 () 空出来一个随机添加到任何一个组内 就有n-1种可能

    for(let i = 1;i<=(n-3);i++){  //n-2个组的时候 ()() 空出来两个,随机排列 有(n-3)+(n-4)+(n-5)+(n-(n-1))+0
      cont += i
    } 
    cont += (n-2)   //全包例如n=5 (()())()() 每个组能全部容纳多出来的 所以有 n-2 种
    //后续我放弃了。。。。。
  }
           

5.   0-9和a-z分别表示36进制数的0-36,写一个加法。

0-9a-z 36进制数
“1b", "2x" = "48"
"zzz", "1" = "1000"
           

没看懂题

2020 5.18

1.apply和call的区别

参考

继续阅读