# 可亚医疗

8个小球 其中一个比其他7个重 找出 O(logn/3)

  • 数组 find、filter区别

// 1. 包含字符的子数组最小成都 // 2. case通过率 // ['test1a', 'af1a', 'af2b', 'bc1a', 'bc1a'] // ['pass', 'fail', 'pass', 'pass', 'pass'] ->2

// 3.xxx // + - C D // 1 -> [1] // 2-> [1,2] // + =>

点是否在三角形中(斜率)、点是否在多边形中

两条线是否相交

点播不自己播放问题

webGL 和canvas坐标信息转换

Promise.resolve().then(() => {
    console.log('promise1');
    setTimeout(() => {
        console.log('setTimeout1')
    },10)
})
setTimeout(() => {
    console.log('setTimeout2')
    Promise.resolve().then(() => {
        console.log('promise2')
    })
}, 30) // 试着调整这个值
// promise1, setTimeout1, setTimeout2, promise2
const isValid = s => {
    let aLen, bLen;
    s.replace(/([ab])\1+/g, ($0, $1) => {
        if($1 === 'a') {
            aLen = $0.length;
        } else if($1 === 'b') {
            bLen = $0.length;
        }
    })
    return {a: aLen, b: bLen, len: s.length}
}
const fn = str => {
    let len = str.length;
    let res = ''
    let aMax = 0,bMax = 0;
    let maxLen = str.length
    for(let i = 0; i < len; i++) {
        for(let j = i; j < len; j++) {
            let s = str.substring(i, j)
            let len = isValid(s);
            if(len.a >= aMax && len.b >= bMax) {
                if(len.a === aMax && len.b === bMax && len.len < maxLen) {
                    res = s;
                    aMax = len.a
                    bMax = len.b
                    maxLen = len.len
                    break;
                }
                res = s;
                aMax = len.a
                bMax = len.b
                maxLen = len.len
            }
        }
    }
    return res;
}
console.log(fn('abaaaabbbbbab'))


// 第二方法
var str = 'abbbbbbbaaaaabbbbbaaa'
let max = 0
let s = '';
let left = 0;
while(left < str.length) {
    str.slice(left).replace(/([ab])\1*([ab])\2*/g, ($0, $1, $2) => {
        if($0.length > max) {
            max = $0.length;
            s = $0;
        }
    })
    left++;
}
console.log(s)

# 创客贴

  1. try catch finally
  2. bigint
  3. symbol作用
  4. requestIdleCallback
  5. 强缓存
  6. promise catch 返回的是?
  7. node setTimeout setImmediate
  8. vue技术细节

# 碳足迹

  1. Symbol什么时候相等?
  2. 异步错误捕获方法?

# 字节

  1. 模板解析

    let year = 2022;
    let month = 12;
    let day = 31;
    
    let str = render(`${year} - ${month} - ${day}`);
    
    console.log(str);
    function render(str) {
        return str.replace(/\{(\w+)\}/g, function (match, key) {
            return str[key];
        });
    }
    
  2. 扑克牌问题

    const shuffle = nums => {
        let res = [];
        while(nums.length) {
            if(res.length > 1) res.unshift(res.pop())
            res.unshift(nums.shift());
        }
        return res;
    }
    
  3. 输出值

    console.log(1);
    setTimeout(() => {
        console.log(2)
    }, 100)
    async function test() {
        console.log(3)
        await test1();
        console.log(4)
    }
    function test1() {
        return new Promise(resolve => {
            console.log(5);
            resolve();// 注意这里
        })
    }
    test();
    let a = new Promise(resolve => {
        setTimeout(() => {
            resolve();
            console.log(6)
        })
    }).then(() => {
        console.log(7)
    })
    console.log(8)
    
    // 1, 3, 5, 8, 4, 6, 7, 2  --- resolve 存在输出4 否则不输出
    
  4. webgpu? YUV PCM

  5. mp4、flv、m3n8