【思特沃克前端校招笔试、一面、二面】

思特沃克

1.前端海外岗,四月中旬收到笔试,写完后几天约一面,一面后两周约二面
2.大概两周后收到邮件答复一面过了约二面,结果点约面链接进去没有显示,通过该邮件咨询了下只要等待下次邀约就行。
3.结果几天后收到了感谢信,邮件咨询校招组也无回应,估计是招满了,比较无语

笔试

时长90分钟,有选择、 编程之类的,过了几天才记录,只记得三道编程题了

编程题会提供一些测试用例,有的不可见,需要自己打印检查问题

  • 第一题:将数组里的数按顺序每两个一组组内两元素交换,比如[1,2,3,4] => [2,1,4,3]
  • 主要就是要注意测试用例中的特殊情况,不是数字或者出现NaN怎么解决
function swapAdjacent(array) {
	// 循环的步长为 2
    for (let i = 0; i < array.length; i += 2) {
    	// 正则判断方便一点
        if (/[0-9]|NaN/.test(array[i]) && /[0-9]|NaN/.test(array[i + 1])) {
            let t = array[i]
            array[i] = array[i + 1]
            array[i + 1] = t
        }
    }
    return array
}
  • 第二题:将数组里的数对称相加,如果得到的数组长度不为 2 则继续,比如[6,1,2,5,8,10,6] => [12,11,10,5] => [17,21]。用递归
function sum_two(input_array) {
    let len = input_array.length
    if (len === 2) return input_array
    let a = []
    for (let i = 0; i < Math.ceil(len / 2); i++) {
        let j = len - i - 1
        // 如果中间只有一个数,就把该数直接加入数组
        if (j === i) {
            a.push(input_array[i])
        } else {
            a.push(input_array[i] + input_array[len - 1 - i])
        }
    }
    return sum_two(a)
}
  • 第三题:移除字符串中的某所有字符,直接遍历判断一下返回一个新字符串就好了
function RemoveLetters(s, letters) {
    let res = ''
    for (let i = 0; i < s.length; i++) {
        if (letters.includes(s[i])) continue
        res += s[i]
    }
    return res
}
一面

给一个 github 仓库先自己研究,然后面试时面试官会出需求,当面写需求

代码需要写测试单元,用的 Jest,比较简单,头天晚上自学了一下就知道大概怎么用了

  • 先做了下自我介绍

  • 然后写代码。一个购物车的代码仓库,实现下面三个需求

    • 实现打折20%的功能(简单,照猫画虎就好了)
    • 实现以“BULK_BUY_2_GET_1”开头的产品就是买二送一(要点是送的那个产品得加进购物车,且价钱为零)
    • 实现购物车总价值超过500打折5%(时间不多了,面试官简化了一下要求,直接在打折后的价格上再打折5%就好)
  • 主要讲讲第二题,大概写了半小时,走了许多弯路

    • 大体思路就是先遍历购物车,每有两件同样买二送一的产品就加一件的进去;然后在计算价格时,购物车每有三件同样的商品就将其中一件商品价格置为零
    • 先得对购物车里的产品遍历,每有两个以“BULK_BUY_2_GET_1”开头且名称相同的产品就需要再加入一个同样的产品,别直接放进购物车,先放入一个数组中,遍历完再把数组中的产品加入购物车。(至于判断要加多少个可以用 Map 对象去存储每个商品出现的次数)
    • 然后在计算价格的过程中,用 Map 对象去存储各商品出现的次数,当遍历到当前商品时,如果 Map 表里其次数已经出现过两次,就将当前商品价格置为零,且将其在 Map 表里的次数重置为零,保证每遇到同一商品三次就将第三次的商品价格置为零
  • 备注:用 JS 的类实现的购物车,有点不习惯这种面向对象的编程,毕竟平常还是写页面更多一点

  • 代码写完后突然要求英语介绍兴趣爱好,有点猝不及防,勉强说了几句。再随便聊了几句天就结束了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值