滴滴出行高级Node.js开发工程师笔试题2024

今天参加了一个滴滴出行的Node.js岗位面试,一面为腾讯视频面试,俩个面试官。面试官比较深入问一些你过去做个的项目,问你解决了哪些棘手的问题。

还有就是他们比较关注性能优化,会问你们现在项目的峰值QPS是多少,如何进行优化等等

最后会在聊天窗口发你两道笔试题,让你在自己本地IDE编写代码调试,但是要开启屏幕共享,方便让他们欣赏你编码的过程。

下面贴一下原题

笔试题1

给定由 a-z A-Z 空格 组成的一个字符串,要求:按字典序输出该字符串中出现的全部字母去重并转化为小写,并给出时间复杂度
例:输入 Hello World,输出 dehlorw

let str = "Hello World";
let result = str
  .toLowerCase()
  .split("")
  .filter((item) => item !== " ")
  .sort();

console.log([...new Set(result)].join(""));

上面的代码仅供参考,大家可以自行研究性能更高的方式。

笔试题2

给定一个域和一个字符串,若该字符串是一个合法的http/https链接,返回该链接是否在给定域或者其子域下,否则报错退出
例:
输入 didi.com, http://fast.didi.com/foo/bar 返回 true
输入 didi.com, http://fast.uber.com/foo 返回 false
输入 didi.com, fast.didi.com throw Error

你可能也想到使用正则了吧

let str = "http://fast.didi.com/foo/bar";
let domain = "didi.com";

function test(domain, str) {
  if (!/^http/.test(str)) {
    throw new Error("str is not a valid url");
  }
  return str.includes(domain);
}

// console.log(test(domain, "http://fast.didi.com/foo/bar"));
// console.log(test(domain, "http://fast.uber.com/foo"));
// console.log(test(domain, "fast.didi.com"));
// console.log(test(domain, "xxhttp://fast.didi.com.cn"));

其实上面的正则还是有问题的,只是可以通过当前给定的测试用例。

更好的方法可以借助javascript的内置对象URL来处理这个问题:

function isValidURL(urlString) {
  try {
    new URL(urlString);
    return true; // 如果没有抛出错误,则URL是合法的
  } catch (e) {
    return false; // 如果抛出了错误,则URL不是合法的
  }
}

希望可以帮到你。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Node.js开发指南,我可以给你一些基本的指导。 1. 安装Node.js:首先,你需要在你的计算机上安装Node.js。你可以从Node.js官方网站(https://nodejs.org)下载适合你操作系统的安装包,并按照安装程序的指示进行安装。 2. 学习JavaScript:Node.js使用JavaScript作为其主要的编程语言。如果你已经熟悉JavaScript,那么你可以直接开始使用Node.js。如果你对JavaScript不熟悉,那么你需要先学习一些基础知识,例如语法、变量、函数等等。 3. 了解Node.js模块:Node.js通过模块系统来组织代码。了解如何创建和使用模块是非常重要的。你可以查阅Node.js官方文档来学习更多关于模块的知识。 4. 使用npm:npm是Node.js的包管理工具,它可以帮助你安装、管理和发布代码包。学习如何使用npm是非常重要的。你可以使用npm来安装第三方的库和框架,以及管理你自己的项目依赖。 5. 掌握异步编程:Node.js采用非阻塞的I/O模型,这意味着大部分操作都是异步的。了解如何编写异步代码是非常重要的,以充分利用Node.js的性能优势。你可以使用回调函数、Promise、async/await等技术来处理异步操作。 6. 学习常用的Node.js框架:Node.js有许多流行的框架,例如Express、Koa、Socket.io等等。学习和使用这些框架可以帮助你更快地开发应用程序。 7. 掌握调试和测试:调试和测试是开发过程中不可或缺的部分。Node.js提供了一些调试工具,例如Node.js自带的调试器、第三方的调试工具(如ndb)等等。此外,你还可以学习如何编写单元测试和集成测试来确保代码的质量。 这只是一个简单的指南,希望对你有所帮助。如果你有任何具体的问题或者需要更深入的指导,可以随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值