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能力,二面会更多考察基础和八股。

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

#快手##前端##面经##春招##手撕代码#
全部评论
lz,抽奖写出来了吗
1 回复 分享
发布于 2023-04-09 16:35 辽宁
这么大的公司连个员工培训都没有?
1 回复 分享
发布于 2023-04-08 23:09 陕西
楼主,你知道二面面什么吗
点赞 回复 分享
发布于 2023-04-11 16:32 广东
mark
点赞 回复 分享
发布于 2023-04-09 13:26 四川

相关推荐

1️⃣上班不是那么简单的事情2️⃣不要急于判断一家公司的好坏首先这一个半月以来我像是坐过山车一样&nbsp;高开低走。一开始觉得找到“梦中情司”&nbsp;团队珍惜我的学历和能力&nbsp;带教愿意教很耐心。再到后面发生事情,公司开始显现出它的阴暗面还有那些规训。首先就是表面平静维稳,打眼看,看不出任何毛病,向新人宣扬价值也是讲着各种各样的公平公正。实则这些话没触碰到事情后,你是真不知道真假。口号也只是口号。还有公司处理事情的圆滑,那种领导人事的说话真假参半,都是我一个应届生目瞪口呆招架不住的,我会惊叹的想,原来这就是公司啊,比我想象中复杂的多得多得多。3️⃣学会观察公司氛围再说到氛围&nbsp;前司就是这样一个表面平静和睦&nbsp;实则巨压抑的氛围。从来不可能闲聊,和旁边同事交流工作都得用气声,手机是只能在厕所看的,离开工位时间长是要被说的,玩手机是一次都不行的,带耳机也不行,空调开低了是会被通报批评的,公司还会时不时通报批评谁又扣工资,中午吃饭是不敢大声嚼的,上班期间是不敢拿外卖的,嗯诸如此类我真的不想再说了。一开始我以为&nbsp;哦&nbsp;公司安静&nbsp;那挺好的&nbsp;不让玩手机我偷偷偶尔摸鱼还不行吗,结果只是一次一次的又被警告,忍下来后才发现忍了那么多不该忍的。4️⃣不要和任何一个人明面上发生冲突5️⃣努力的&nbsp;减少自己的情绪这两条也一起说了吧。如果说这份工作我只后悔一件事&nbsp;那就是这件事。在试用期和一个瞒着大家马上升职副经理的所谓老员工发生争执。看我不爽的人都不用找我的蛛丝马迹,这种重大事情的发生在那一刻其实就已经代表了那段工作的结束&nbsp;只是苟活的时间长短罢了&nbsp;其实我后来也能料到。一个原因是因为随着推移&nbsp;我意识到我是个很容易被情绪控制的人&nbsp;而且很可能爆发就在一瞬间。因为我一向习惯先忍&nbsp;但忍完我就会觉得更难受&nbsp;更不公。总之我委屈&nbsp;我就不想再装&nbsp;我爱哭&nbsp;我讨厌伪装坚强&nbsp;等等等等。我的真性情让我在工作里很容易被拿捏吧&nbsp;因为我本身就是一个讨厌装的人&nbsp;一个喜欢自由的人。但这些在工作里都是会被人拿捏的点&nbsp;所以我也在想下一步我要怎么改进
工作上你捅过哪些篓子?
点赞 评论 收藏
分享
评论
10
42
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务