拼多多社招面经(1小时)

1.自我介绍(因为楼主介绍里面是制造业转回互联网的,所以面试官很贴心给了比较简单的题目,面试脑袋一热,导致简单题也没回答的号)

2.手撕题目:

  1. 在一个多层级的节点中,找到id名为container的dom节点,并且找出嵌套层级≥4的img节点,并为之添加class名'.abc'。

这一题本质上在考察递归查找dom节点,如下是比较好的方法:

function addClassToDeepImg(element, level = 1) {
    if (!element) return;

    // 遍历当前元素的所有子节点
    for (let child of element.children) {
        if (child.tagName.toLowerCase() === 'img' && level >= 4) {
            child.classList.add('abc');
            console.log(`Added class 'abc' to img at level ${level}`);
        }

        // 递归查找子节点的子节点
        addClassToDeepImg(child, level + 1);
    }
}

// 获取 container 元素
const container = document.getElementById('container');

// 开始遍历并处理 img 子节点
addClassToDeepImg(container);

  1. 水平垂直居中,尽可能多写,并且解释每一种方法每个属性为什么这么写。
  2. promise串行和并行题。 串行:c函数依赖于b函数的返回值,b函数依赖于a函数的返回值,中间要注意处理rejected的情况,请用promise串行写。 并行:各个函数并不互相干扰,写出如何计算各个函数的返回值的和,如果有rejected的情况,则当做异常处理。

串行

function a() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('Result from a');
        }, 1000);
    });
}

function b(resultFromA) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if (resultFromA === 'Result from a') {
                resolve('Result from b');
            } else {
                reject('Error in b');
            }
        }, 1000);
    });
}

function c(resultFromB) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if (resultFromB === 'Result from b') {
                resolve('Result from c');
            } else {
                reject('Error in c');
            }
        }, 1000);
    });
}

a()
    .then(resultFromA => b(resultFromA))
    .then(resultFromB => c(resultFromB))
    .then(finalResult => {
        console.log('Final result:', finalResult);
    })
    .catch(error => {
        console.error('Error:', error);
    });

并行

function a() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(1);
        }, 1000);
    });
}

function b() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(2);
        }, 500);
    });
}

function c() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(3);
        }, 1500);
    });
}

function d() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('Error in d');
        }, 700);
    });
}

Promise.all([a(), b(), c(), d()])
    .then(results => {
        const sum = results.reduce((acc, curr) => acc + curr, 0);
        console.log('Sum of results:', sum);
    })
    .catch(error => {
        console.error('Error:', error);
    });

3.本来还想问vue的,因为我太菜了,所以拖延了时间,导致面试官没时间问。

还是太菜了,在制造业待久了,楼主太懒散了,学计算机的东西学不动,几道题都是知道大概什么原理怎么实现,但是手撕完全没办法完全写出来,但是不面试自己写又是能大概写出来,面试太紧张,这回肯定挂了。还是继续边找工作面试边复习吧。

共勉加油!

拼多多面试官挺好的,生怕我过不了。

#拼多多##面试##前端##面经#
全部评论
1 回复 分享
发布于 2024-11-13 23:22 上海
楼主这是第几面呀
点赞 回复 分享
发布于 02-19 08:46 四川
楼主几年经验啊 在职面试吗
点赞 回复 分享
发布于 01-02 11:46 上海

相关推荐

先说说目前面试进度,我是在BOSS直聘投的简历,然后京东安排面试,一面面试完成过一天安排2面2面面试完过一天安排3面,3面去线下面,面完你会遇到你今后的直属领导,下面来说说面经一面,是个女面试官1 先自我介绍2说说项目以及你目前技术栈3 说说你实时都做了哪些,说说维度建模和范式建模都有啥区别4 平时有遇到数据倾斜吗,怎么处理的5 看你有做财务数据,你认为财务数据和流量数据有啥区别,需要注意什么地方,财务数据你感觉最难的地方是哪里,怎么解决的6 来个场景题,对于一个字段找到其中出现a字母的所有次数7 模型建设规范都有哪些二面 似乎就是大部门leader和hr一起来的1 先进行自我介绍2 说一下做的项目,你扮演了什么角色3 看你实时经验比较丰富,下面来做2个场景题,对于一些交易订单来说,会出现订单出现退款,你如何可以做到订单实时的成交金额目前交易链路存在一个这个问题,交易的订单的渠道信息的某些字段可能会更新,你如何可以实现字段可以实时更新为最新得数据,保证数据不丢4 你平时看实时任务都是怎么看的,实时任务有哪些指标可以衡量,你平时遇到哪些问题,怎么解决的,你认为实时资源该怎么分配,时效性怎么确定5看你经验目前做过流量数据和财务数据,你感觉财务数据和流量数据最大的区别是啥,两者时效性和准确性都有啥区分6 你这边有啥问我的3面 线下面,京东似乎最后一面必须线下面,我去了一趟总部,感觉很大和面试官面对面聊,似乎还是交叉面,应该是别的部门领导,主要是聊了和一面2面差不多问题,不一样的地方是聊了一下数据湖,为啥现在企业都在追求数据湖,数据入湖和出湖都有哪些好处后面进展,似乎面试都通过了开始收集流水,还不知道涨幅怎么样,之前都说京东似乎不能太频繁跳,我这似乎跳的还比较频繁也给过了,可能跳槽不是卡的这么严同步一下后续到了谈薪阶段,目前base不变,加了4个月年终,总包涨30%多点
查看14道真题和解析
点赞 评论 收藏
分享
评论
5
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务