面试题记录

662 阅读2分钟

一、CSS 自适应布局

image.png

已知:

• 布局分为:父元素A和N个子元素B;

• A宽度不固定:最小宽度为1000px,内部边距是32px

• B的宽度不固定:相邻两个B元素的间距是16px,所有B的宽度相同,边框为1像素,颜色为999

• 每行只能有3个B元素,超过的话需要换行;

• 最左侧B元素和最右侧的B元素,距离A的边缘都是32px; `

.client-a {
    min-width: 1000px;
    padding: 32px;
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap; }
  .client-b {
    width: 32%;
    padding: 16px;
    border: 1px #999;
    margin: 0 32px 0 32px;  }

二、给定一个以数字组成的数组,实现输出id为数字,并且从小到大排序的name(请使用es6语法)

  const source = [
  { id: 4, name: 'test1' },
  { id: {}, name: 'ssdf' },
  "test",
  { id: () => { }, name: 'sf' },
  { id: '6', name: 'test3' },
  { id: 6, name: 'test4' },
  { id: 7, name: 'test7' },
  { id: 2, name: 'test2' },
  { name: 'sf' },
  {},
]
function filterSort(source) {
  // 写下你的代码  
}
filterSort(source)

答案:

  const arr = []
  source.map((item, index) => {
    if (typeof (item.id) == "number") {
      arr.push(item)
      function compare(p) { //这是比较函数
        return function (m, n) {
          var a = m[p];
          var b = n[p];
          return a - b; //升序
        }
      }
      arr.sort(compare("id"));
      const arr1 = []
      arr.map(item => {
        arr1.push(item.name)
      })
      console.log(arr1);
      return arr1
    }
  })  `

二、给定一个以数字组成的数组,实现输出id为数字,并且从小到大排序的name(请使用es6语法) • 现有一个 POST 接口:xxx.com/students,每次请求只能返回 10 个学生的课程成绩 如下

JSON [     { name: '张三', score: 99, time: '2021-12-22' },     { name: '李四', score: 60, time: '2021-12-12' },     { name: '王五', score: 77, time: '2021-11-08' },     ... ]

• 该接口有一定概率请求失败 不可忽略:Response Status Code 500,Body 为空

要求:

实现一个函数,总共需获得 100 个成绩大于 90 分,且时间在2021年12月3日之后的学生的课程成绩,并按各自成绩从大到小排列返回。(可直接使用 fetch 或 axios)

提示:

○ 浏览器最多可以有 6 个并行的网络请求

○ 尽可能在更短的时间内,运行完成得到结果

○ 尽可能用最少的请求次数

JavaScript
async function fetchStudents(){

// 实现相应逻辑

return [...]
}

答案:

// 初步用递归实现 每次执行一个接口
let i=0;let list=[]
function rightTime(time){
// 时间大于12月03日的时间返回true
}
async function fetchStudents(){
    // 实现相应逻辑
    let res = awiat axios.post(url,data:{pageNum:i+1})
    list =list.cancat(...res.data.filter(item=>{
     return item.score>90&& rightTime(item.time)
    }))
if(list.length>=100){
return list
}else{
return fetchStudents()
}
}
// 深入 可以利用浏览器并行6个的限制每次执行6个接口
// 利用promise.all进行数据保存操作