当前位置: 首页 > 面试经验 >

4/8快手前端一面

优质
小牛编辑
83浏览
2023-04-08

4/8快手前端一面

base北京,生活服务部门

全程无八股,无项目考察,直接手撕代码

第一题

// 在公司年会上,我们经常会有抽奖的需求
// 需要你实现一个抽奖的功能,包含如下要求
// 1. 对待抽奖者的名单进行乱序排列(打乱次序)
// 2. 点击开始抽奖时,运行start,在名单内随机指定一个index作为开始index
// 3. 每100ms以此index开始轮询抽奖列表,当用户点击stop时停止轮询inex,并返回抽中的人
// 4. 每次抽奖可设置n(n>0)个人中奖。每次抽奖抽1个人,中奖的人不可再次被抽中
const userList = [
    '王雪', '李阳', '张晨', '陈婷', '刘宇',
    '赵博', '孙洁', '周航', '吴梅', '郑勇',
    '王梦', '杨华', '徐杰', '马丽', '何昊',
    '林俊', '朱红', '范冰', '余宏', '吕娜'
];
class Lottery {
    // 完成你的代码编写
    }
}

// 模拟一次用户的执行,设置本次抽奖中奖2人
const lotteryIns = new Lottery(userList, 2);

const sleep = (t)=> new Promise(res=> setTimeout(res, t));
async function drew(len) {
  for(let i = 0; i < len; i++) {
      lotteryIns.start();
      await sleep(1000);
      console.log(lotteryIns.stop()); // 期望输出中奖者的名字
  }
}
// 执行抽奖3次
//输出2个中奖者的名字,和1个null
drew(3);

第二题

// 实现一个过滤求解函数,该函数2个输入值,支持传入2个数组
// 执行时会从第一个数组内过滤掉第二个数组内的值
// 并对过滤后的值进行加法运算
// 返回过滤后的结果和运算的结果
// 要求:优先完成上述内容
// 加分项:使用高效的方案实现
const arr = [2,4, 1, 0, -1, 5, 9, 3, 2, 4, 1, 0, -1, 5, 9];
const fArr = [2,4, 1, 0, -1];
const arrFilter = (target, input) => {
  // 完成你的代码编写
  let arr = target.filter((item) => !input.includes(item))
  let ans = arr.reduce((t,item) => t + item ,0)
  return {
      res: arr,
      sum: ans
  }
}
// 期望得到{res: [5, 9, 3, 5, 9], sum: 31}
console.log(arrFilter(arr, fArr));

第三题

// 我们经常需要做一些营销活动,会涉及到很多的商品。
// 现在有2个商品Product1和Product2,他们的一天内促销周期以二维数组存储
// 如:[['0300', '0312'], ['0614', '0714']]
// 促销周期数组内的每个子数组代表开始的日期(时分)和结束日期,24小时计时法
// 如:['0300', '0312']代表其3点00分开始,3点12分结束。
// 需求你求出2个商品同时参加营销的时间段是什么
// Input:
// Product1 sales time slot  = [['0709', '0720'], ['0108', '0120'], ['1512','1612']],
// Product 2 sales time slot = [['0300', '0312'], ['0614', '0714']],
// Output: ['0709', '0714']
const p1slot = [['0709', '0720'], ['0108', '0120'], ['1512','1612']];
const p2slot = [['0300', '0312'], ['0614', '0714']];
const getCommonPeriod = (slot1, slot2)=> {
}
console.log(getCommonPeriod(p1slot, p2slot)) //[['0709', '0714']]

反问的时候问了下是不是比较看重算法,回答是校招入职后就需要立即参与业务,相比基础更看重coding能力,二面会更多考察基础和八股。

感觉自己随机应变的能力还是差了点,写的太慢有种被拷打的感觉。

#快手##前端##面经##春招##手撕代码#
 类似资料: