滴滴 CTO C++后台开发 还愿面经

8.29 滴滴一天三面,到今天早上看了眼邮箱发现前天就收到滴滴的意向书了,藏在一堆笔试测评邮件里没看见

非科班菜鸡终于拿到第一个意向书了,赶紧来牛客还愿

一面

Linux 相关
  • IPC 方式有哪几种,socket 本地通信需要通过 TCP/IP 协议栈吗?
  • 进程内存分区,malloc 底层原理
项目相关
  • 分布式云盘项目构架,文件上传下载流程
数据库相关
  • ACID 特性
  • 如何优化 SQL 语句
  • 对 redis 的理解,在项目中的作用
手撕代码
  • 找到链表第K个结点

二面

二面面试官是做AI框架部署的,好像和高性能计算相关
正好我课题组方向是计算流体力学,折腾过一些高性能计算相关的东西,一个小时全程都在聊我们课题组自己写的 CFD 程序如何实现和相关优化,后台开发的东西一点都没问,代码也没写。。。

三面

C++ 相关
  • C++ 的类型转换,dynamic_cast 实现原理
  • 指针和引用的区别,说说对智能指针的了解
  • 什么是函数重载,说说实现原理
  • 有函数重载的C++代码放到C里会有什么问题(这里没懂啥意思,不是会编译报错吗)
  • malloc/new 的区别,分别是 库函数 还是 C/C++语言支持的
  • 什么是多态,说说实现原理
Linux 相关
  • select/epoll 的区别,select 为什么要拷贝文件描述符到内核空间
  • 什么是页表,同一进程的不同线程是否共享页表
计算机网络
  • TCP/UDP 的区别
  • TCP/IP 的区别
手撕代码
  • 递归实现汉诺塔
反问
  • 三面面试官说他在新成立的滴滴云部门?主要做分布式存储相关的,问我有没有听过Intel的3D Xpoint,侥幸本科天天混固态硬盘吧,这个还能聊两句
  • 聊着聊着面试官又补了个问题:什么是协程
#面经##C++工程师##校招##滴滴#
全部评论
有函数重载的C++代码放到C里会有什么问题 这个是c++编译的时候会进行name mangling,就是会加一些前缀用于链接,也就是说链接时候的函数名是和你写的不一样的。c不支持重载所以也不会这这样做。解决的方法就是用extern包起来,这也编译器就会按照c的方式进行编译链接。所以其实不是编译报错是链接报错😁
1 回复 分享
发布于 2020-09-06 12:53
沾沾楼主喜气~求oc
点赞 回复 分享
发布于 2020-09-07 14:24
dynamic_cast 实现原理——请问这个怎么回答
点赞 回复 分享
发布于 2020-09-07 11:49
楼主,socket本地通信需要通过tcp/ip协议栈吗
点赞 回复 分享
发布于 2020-09-06 18:29
还没消息是不是就没了😭
点赞 回复 分享
发布于 2020-09-06 17:02
select 为什么要拷贝文件描述符到内核空间,这个怎么回答啊
点赞 回复 分享
发布于 2020-09-06 16:26
计算流体力学,水利的兄弟嘛😂
点赞 回复 分享
发布于 2020-09-06 15:49
同一个三面面试官,我了解过3dxpoint。不过页表那个没出来😶
点赞 回复 分享
发布于 2020-09-06 15:40
感谢楼主分享 欢迎加入 2021滴滴秋招进度交流群  982172731
点赞 回复 分享
发布于 2020-09-06 11:18

相关推荐

07-28 15:15
门头沟学院 Java
面试八股环节还好,但是我是力扣战士,面试官让在编译器上写代码类都不会怎么写了,两个算法,字母异位词和策略模式,只写了方法,力扣战士凉透了,希望大家平时还是要在编译器上做题策略模式等一些设计模式,希望大家也进行默写,别像我一样会背不会写字母异位词import java.util.*;public class Main {public static List<List<String>> groupAnagrams(String[] strs) {// 用于存储分组结果的映射,键为排序后的字符串,值为对应的字符串列表Map<String, List<String>> anagramGroups = new HashMap<>();for (String s : strs) {// 将字符串转换为字符数组并排序char[] chars = s.toCharArray();Arrays.sort(chars);String sortedStr = new String(chars);// 如果映射中不存在该键,则创建一个新的列表anagramGroups.computeIfAbsent(sortedStr, k -> new ArrayList<>());// 将当前字符串添加到对应的列表中anagramGroups.get(sortedStr).add(s);}// 返回映射中的所有值(即所有分组)return new ArrayList<>(anagramGroups.values());}public static void main(String[] args) {// 示例输入String[] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};// 调用方法获取分组结果List<List<String>> result = groupAnagrams(strs);// 输出结果for (List<String> group : result) {System.out.println(group);}}}策略模式// 支付策略接口interface PaymentStrategy {void pay(double amount);}// 微信支付实现class WechatPay implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("使用微信支付:" + amount + "元");// 微信支付具体实现逻辑}}// 支付宝实现class Alipay implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("使用支付宝支付:" + amount + "元");// 支付宝支付具体实现逻辑}}// 银行卡支付实现class BankCardPay implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("使用银行卡支付:" + amount + "元");// 银行卡支付具体实现逻辑}}// 支付上下文(策略持有者)class PaymentContext {private PaymentStrategy strategy;public PaymentContext(PaymentStrategy strategy) {this.strategy = strategy;}public void setStrategy(PaymentStrategy strategy) {this.strategy = strategy;}public void executePayment(double amount) {strategy.pay(amount);}}// 主类和测试代码public class Main {public static void main(String[] args) {// 创建支付上下文PaymentContext context = new PaymentContext(new WechatPay());// 使用微信支付context.executePayment(100.0);// 切换为支付宝支付context.setStrategy(new Alipay());context.executePayment(200.0);// 切换为银行卡支付context.setStrategy(new BankCardPay());context.executePayment(300.0);}}
查看2道真题和解析
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-18 18:23
点赞 评论 收藏
分享
评论
4
34
分享

创作者周榜

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