文章声明:转载来源:https://www.nowcoder.com/discuss/441618441984892928
自我介绍
在你过往实习的项目中你遇到过哪些问题, 如何解决的
CSSposition属性有哪些值, 列举出来其各自的作用
static, relative, fixed, absoluate, sticky
口述https原理
CSS 手写一个两栏布局
CSS 将页面元素隐藏的方式有哪些
浏览器缓存原理
手撕代码:
function mySetTimeout(func) {
// 实现该函数, 需要考虑用多种方式解决
}
// 使执行下述代码的输出结果为"1234"
console.log(1);
setTimeout(() => {
console.log(4);
});
mySetTimeout(() => {
console.log(3);
});
console.log(2);
参考答案:
// 方法一: 直接用 Promise
function mySetTimeout(func, ...args) {
const _this = this;
return Promise.resolve().then(() => {
func.call(_this, ...args);
});
}
// 方法二: 利用 async await
async function mySetTimeout(func, ...args) {
await Promise.resolve();
func.call(this, ...args);
}
手撕代码: 用TypeScript实现防抖/节流, 要求用 ts 的泛型机制控制防抖与节流函数的参数与返回值类型相同
参考答案:
function throttle<T extends (...args: any[]) => any>(fn: T, delay?: number): T {
let flag = true;
const _this = this;
return ((...args) => {
if (!flag) {
return;
}
flag = false;
setTimeout(() => {
fn.apply(_this, args);
flag = true;
}, delay ?? 0);
}) as T;
}
手撕代码: 给定一个乱序数组, 假设该数组中有一个元素的出现次数超过了数组长度的一半, 需找到这个元素, 要求空间复杂度为O(1)
手撕代码: 给定一个只包含 6 种括号字符的字符串, 检查其括号是否能够匹配
反问环节:
部门原来在北京, 22 年开始大规模迁移到南京
业务线涵盖 B/C 端, 主要包括游戏业务(C端), 面向商城的运营(B端)
面试官自己评价说"本人涉及的工作内容没有什么技术难度"
"预计你来这里以后, 业务压力会比较大"
"去年做了好些同质化的业务", "技术在南京但产品团队在北京, 因此沟通上会有一些额外的压力"
面试官提到这边的价值观: 与其质疑产品提出的需求的价值, 不如考虑自己如何提升和扩宽业务的价值
"这边的产品没有你想象当中那样专业, 因此需要技术去帮产品考虑业务赋能问题, 需要你主动提出一种模型然后和产品去介绍沟通"
帖子还没人回复快来抢沙发