快手前端秋招面经

0906 一面

  1. 手写防抖节流。基本的该有的写出来了,写获取返回值的时候出了点问题,调试不出来(获取返回值需要用一个promise对象包裹起来)。
  2. CSS 的盒子模型
  3. 垂直居中一个元素的方式有哪些
  4. 重排和重绘
  5. 实现一个三角形的方法(只答出了一种)
  6. 计算机网络分层
  7. http2,解决了什么问题,与 http1 的区别。
  8. 说说JS中数组常见的API
  9. 手写 indexOf 、并能满足 [1,2,3].indexOf()
  10. 算法:需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?(简单动规)

0912 二面

  • 三个子元素纵向排列,总高度小于视图高度时,header 固定在顶部,footer 固定在底部,content 撑满剩余空间;三个子元素总高度大于视图高度时,header 固定在顶部,footer 随着content一起滚动。(写了个大概)
<div class="box">
    <div class="header">header</div>
    <div class="content">content</div>
    <div class="footer">footer</div>
</div>
<style>
.box{
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    position: relative;
    overflow: scroll;
}

.header{
    position: absolute;
    top: 0;
    height: 100px;
}

.content{
    flex: 1;
}

.footer{
    height: 100px;
}
</style>
  • 经典看代码说输出:(结果脑子抽了没答对)
var length = 10;
function fn() {
    console.log(this.length);
}

var obj = {
    length: 5,
    method: function (fn) {
        fn();
        arguments[0]();
    }
}
obj.method(fn, 1);
  • 给出 一个时间范围 target,再给出一组时间范围 current,判断 current 覆盖的时间段是否 包含了 target时间段
const target = ["1979/06", "2001/10"];

// current1 为全覆盖
const current1 = [
    ["1985/09","1995/08"],
    ['1979/06', '1981/10'],
    ['1981/06', '1985/09'],
    ['1993/11', '1994/06'],
    ["1995/08", "2001/10"],
];

// current2 为不全覆盖
const current2 = [
    ['1979/06', '1981/10'],
    ['1981/12', '1985/09'],
    ["1985/09","1995/08"],
    ['1993/11', '1994/06'],
    ["1995/08", "2001/10"],
];

function fn(target, current){
    let cur = current.sort((a, b)=>{
        return a[0] < b[0] ? -1:1;
    });
    let min = cur[0][0]
    let max = cur[0][1];
    for(let i=1; i<cur.length; i++){
        if(min <= target[0] && max >= target[1]) return true;
        if(cur[i][0] <= max){
            max = cur[i][1] < max ? max : cur[i][1];
            continue;
        }else{
            return false;
        }
    }
    if(min <= target[0] && max >= target[1]) return true;
    else return false;
}
console.log(fn(target, current2))
  • 然后就是简历上项目以及实习相关的事情。

0921 三面

  • 简历上项目以及实习相关。
  • 简单手写:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1
  • str = "abcsdas"

    result:1

    str = "leet"

    result:0

function findDuplicate(str){
    if(str.length < 1) return 0;
    let map = {};
    for(let i = 0; i < str.length; i++){
        let s = str.charAt(i);
        if(map.hasOwnProperty(s)){
            map[s] += 1;
        }else{
            map[s] = 0;
        }
    }

    for(let i = 0; i < str.length; i++){
        let s = str.charAt(i);
        if(map[s] == 0) return i;
        else continue;
    }
    return -1;
}

console.log(findDuplicate('leet'))

总的来说一二面的八股和手撕都还行(除了二面看代码说输出有点匡瓢)。

三面项目经历有点回答得含糊不清,到 09/27 还一直在泡池子。许愿能有个 hr 面吧。

全部评论
这个时间范围题意 有点模糊 是target必须包含在某个current 还是分别在各个current里呢
2
送花
回复 分享
发布于 01-09 11:47 广东
问问是哪个部门哇
点赞
送花
回复 分享
发布于 2023-10-04 03:16 湖北
国泰君安
校招火热招聘中
官网直投
佬,二面的输出题,浏览器是10 2,为啥不是10 10 啊?
点赞
送花
回复 分享
发布于 01-10 11:57 江苏

相关推荐

6 32 评论
分享
牛客网
牛客企业服务