快手主站秋招前端
本周连着三轮面完,开泡
一面 题目不分先后
- 说说文档流
- 说说样式层叠(这东西跟层叠样式是两码事)
- 一个关于普通函数与箭头函数的this输出
- 说说flex与grid
- 多人文档编辑会出现什么问题,怎么解决
- js 基本数据类型
- 订阅发布
- 异步输出一道
- BFC
- 作用域与作用域链
- 闭包
很久没背八股加上问的太空了,不好回答, 反馈:你不错,有人比你还不错
二面
- 问React,diff, fiber, scheduler,diff优化,vue对比react,谁快
- 浏览器渲染,流程走一遍,blink优化怎么做,开发者可以有什么优化措施
- 网络相关,cookie,samesite
- 原型链输出一道,嘴说就行
- 手写,返回一个函数,定时执行,多少次, fn, repeat, interval,不难,要求两种实现方式
- 并发控制,题挺难的,我直接贴在这,和那种顺序index++的不是一个题目
function createRequest(maxConcurrent) { let activeRequests = 0; const requestQueue = []; function processQueue() { if (activeRequests < maxConcurrent && requestQueue.length > 0) { const { url, params, resolve } = requestQueue.shift(); activeRequests++; // 发起请求的逻辑,这里使用 setTimeout 模拟异步请求 setTimeout(() => { makeRequest(url, params) .then((result) => { resolve(result); }) .finally(() => { activeRequests--; processQueue(); }); }, 0); } } function myRequest(url, params) { return new Promise((resolve) => { requestQueue.push({ url, params, resolve }); processQueue(); }); } return myRequest; } // 模拟请求函数 function makeRequest(url, params) { return new Promise((resolve) => { // 这里可以根据实际情况发起请求 // 这里使用 setTimeout 模拟异步请求 setTimeout(() => { resolve(`Result for ${url} with params ${params}`); }, 1000); // 延迟1秒模拟异步请求的响应时间 }); } // 示例使用: const urlList = ['https://example.com/api/1', 'https://example.com/api/2', 'https://example.com/api/3']; const myRequest = createRequest(2); // 最大并发量为2 Promise.all( urlList.map((url) => { const params = { /* 根据需要传递的参数 */ }; return myRequest(url, params); }) ) .then((results) => { console.log(results); // 打印所有请求的结果 }) .catch((error) => { console.error(error); // 处理错误 });
二面:总体一般,主要是这个并发确实写不出来,react源码很久没看了,知道调度器怎么做的但是说不出来了
三面
- 说实习,组件库,单测,覆盖率,serverless函数,为什么做,为什么现在做,为什么你做,怎么做
- 让你说自己项目,说亮点
- next相关,图片优化,cdn图片处理方案思路
- 浏览器性能优化,lighthouse, performence api
- 手写一道,rgbToHex RGB(255,255,255) => #FFFFFF
三面聊实习为主,无反馈
#快手#