滴滴前端笔经面经

笔试

题目描述:

小明同学用薄纸片卷了N个空心的小圆柱,他想把一些小的空心圆柱嵌套到大的空心圆柱里面。已知每一个空心圆柱的底面半径,在不考虑薄纸片本身厚度的情况下,请问这些空心圆柱最多可以嵌套多少层?

输入描述

单组输入。 第1行输入一个正整数N表示空心小圆柱的总数量。(N<=10^3) 第2行输入N个空格隔开的正数(数字不大于1000, 有整数也有小数,最多不超过八位小数),表示N个空心小圆柱底面半径。

输出描述

输出最多可以嵌套的空心圆柱的数量。

样例输入

5

1.3 2 1.5 1.3 1.50

样例输出

3

我的代码,卡在27%,不明原因

const n = 7;
const arr = '1.3 2 1.5 1.3 1.50 1 1.00000000'.split(' ').map((item) => Number(item));
const set = new Set(arr);
console.log(set.size);

题目描述:

程序员小明这几天在看《三国演义》。今天他看到了“火烧赤壁”这一回:诸葛亮在七星坛终于祭来了东南风,老将黄盖带着火药准备对曹操发动火攻。因为曹操的船都用铁链相连,如果其中一条船被火烧着,其他的船都会起火。最终,曹操大败。 看着看着突然想到一个问题:如果当时曹操的船并没有全部连在一起,而只是部分船用铁链连在一起。如果一条船着火,所有与这条船连在一起的船也会着火。假定一共有N条船,这些船的编号分别为1、2、3、......、N。如果1号船着火,并且告诉你哪些船是相连的,请问一共会有多少条船着火?

输入描述

单组输入。 第1行输入两个正整数N和M,其中N表示船的总数,M表示船之间的连接关系数量,N<=1000,M<=100000。N和M之间用空格隔开。 接下来M行每行输入两个正整数,表示相连的两条船的编号,编号小的在前,编号大的在后。两个正整数之间用空格隔开。

输出描述

如果1号船着火,输出会着火的船的总数量。

样例输入

5 3

1 2

2 3

4 5

样例输出

3

我的代码

const N = 5, M = 3;
const num = ['1 2', '2 3', '4 5'];
const inToOut = new Map();
for (let i = 0; i < M; i++) {
  const arr = num[i].split(' ').map((item) => Number(item));
  if (inToOut.has(arr[0])) {
    inToOut.get(arr[0]).push(arr[1]);
  } else {
    inToOut.set(arr[0], [arr[1]]);
  }
  if (inToOut.has(arr[1])) {
    inToOut.get(arr[1]).push(arr[0]);
  } else {
    inToOut.set(arr[1], [arr[0]]);
  }
}
const isVisted = new Set();
const queue = [1];
let res = 1;
isVisted.add(1);
while (queue.length) {
  const curr = queue.shift();
  const arr = inToOut.has(curr) ? inToOut.get(curr) : [];
  for (let i = 0; i < arr.length; i++) {
    if (!isVisted.has(arr[i])) {
      isVisted.add(arr[i]);
      queue.push(arr[i]);
      res++;
    }
  }
}
console.log(res);

一面

TS实现1位数补零显示2位

function numToFormat(num: number): string | never {
    num = parseInt(num);
    if (num >= 0 && num <= 9) {
        return '0' + num;
    } else if (num >= 10 && num <= 99) {
        return '' + num;
    } else {
        throw Error('out of range 0-99');
    }
}

var s = {}
var a = [], b = [];
s[a] = 1;
s[b] = 2;
console.log(s[a]); 

以下是否存在错误 如果不存在 这些操作是在做什么

function test(a, b = 2, ...args) {
    return [...args, a, b];
}
test(1,3,4);

4,1,3

function test2() {
    console.log(a);
    var a = 11;
}

undefined

const a = 'a';
const s = 'test';
const d = `just ${a} ${s}`;
console.log(d);

just a test

let num = 10;
function ch() {
    num = 12;
}
ch(num);
console.log(num); 

12

let obj1 = {};
function ch(obj) {
    obj.a = 'a';
}
ch(obj1);
console.log(obj1.a);

'a'

const o1 = {}; 
const o2 = {};
console.log(o1 == o2);
console.log(o1 === o2); 

false

false

html片段 #root下 序号2/4div红色 第5个元素蓝色

1
2

3

4

3

5
伪类选择器

编程 randomInt(min, max, num) 返回一个长度为num 元素值在[min, max]区间的整数数组

function randomInt(min, max, num) {
    let res = [];
    for (let i = 0; i < num; i++) {
        res[i] = getRandomInRange(min, max);
    }
    return res;
}

function getRandomInRange(min, max) {
    return min + Math.floor(Math.random * (max - min + 1));
}

去重

function deDeplicated(arr) {
    return arr.filter((item, index) => {
        index === arr.indexOf(item);
    })
}

对arr排序 要求奇数(从小到大)在前 偶数(从大到小)在后
eg

arr= [5, 6, 2, 9, 4, 7, 10, 12];
result
[5, 7, 9, 12, 10, 6, 2];

讲思路

const obj = {
    a: 1,
    b: {
        c: 2
    }
}
const {a, b:{c}} = obj;
console.log(a, b, c); 

写错了1, {c:2}, 2

应该会报错,b没有赋值

手写Promise.any

Promise.any = function(arr) {
    return new Promise((resolve, reject) => {
        let res = [];
        let rejected = 0;
        const n = arr.length;
        for (let i in arr) {
            let promise = arr[i];
            if (!promise instanceOf Promise) {
                promise = Promise.resolve(promise);
            }
            promise.then(result => {
                resolve(result);
            }).catch(error => {
                rejected++;
                res[i] = error;
                if (rejected === n) reject(res);
            })
        }
    })
}

二面

扣项目

实现Promise发送请求和接收请求

除了压缩体积,模块打包还有什么作用

为什么使用rollup不用webpack

ES6导入和commonJS区别

三面

继续扣项目,这次崩溃了,比二面面试官要狠

手写一个登陆组件

#前端工程师##滴滴##面经#
全部评论
三面人傻了,让我手写抽奖组件
2 回复 分享
发布于 2021-10-30 18:34
难度不低啊
1 回复 分享
发布于 2021-10-20 21:09
校招就要会ts了吗orz
1 回复 分享
发布于 2021-10-22 21:17
老哥过了么
点赞 回复 分享
发布于 2021-10-21 16:16
圆柱那到题使用去重就可以了吧
点赞 回复 分享
发布于 2021-10-21 16:32
楼主你面的是杭州的base吗?
点赞 回复 分享
发布于 2021-10-22 17:45
后天面滴滴,有点慌😬
点赞 回复 分享
发布于 2021-10-28 20:56
卡27因为acm模式readline 最高读取2048字符,我也是刚开始卡27后来解决了,我也是去重做的
点赞 回复 分享
发布于 2021-11-09 15:33
offer了吗,楼主
点赞 回复 分享
发布于 2021-11-09 15:34
太难了吧
点赞 回复 分享
发布于 2022-04-02 14:18

相关推荐

牛客101244697号:这个衣服和发型不去投偶像练习生?
点赞 评论 收藏
分享
评论
3
24
分享
牛客网
牛客企业服务