面经 | 社招 腾讯云智 | 一面 已凉
2384
2024.01.23
2024.01.25
发布于 未知归属地

第一次遇到女面试官,大概面试了 1h,问的问题相对比较基础,但还是有些问题没有回答上来,只能说还得继续复习,如下是大概内容:

  1. 自我介绍,重点针对某个项目的某个难点具体展开说下。
  2. 项目中是如何监听客户端的连接(旁路推流用的是 Lib Event,但最终还是细化到 Socket 去回答)。
  3. 项目中如何实现的高并发,单台 32C 的机器最多能支持多少并发(旁路推流其实并发量很低,一台机器正常转码可跑 40 路,因为涉及到编解码,所以比较消耗计算资源)。
  4. 当发送数据量很大时,如何保证能收到对端的所有的数据,除了 TCP 本身的超时重传外,应用层协议有做哪些优化。
  5. 设计模式了解哪些,简单写个单例模式,single 会在什么时候被初始化,具体会被分配到哪一块内存区域。
  6. 有碰到死锁吗?如何调查死锁问题,以及如何去解决 & 监控死锁问题。
  7. 如果一旦出现死锁了,如何在不重新部署版本的情况下规避这个问题,具体有哪几种方式可以一一说下。
  8. 项目中有用到智能指针吗?是否有使用智能指针在模块间传参。
  9. unique_ptr 的两个指针在指向同一块堆内存时是在编译时报错还是运行时报错(编译时报错,面试官问为啥不是运行时,堆的创建不是运行时创建的吗,我理解 unique_ptr 的拷贝构造函数私有化了导致编译时出错)。
    image.png
  10. weak_ptr 如何转化为 shared_ptr。

如下是单例模式的实现:

#include <iostream>
#include <memory>

class Singleton {
 public:
  static Singleton* GetInstance() {
    static Singleton single;
    return &single;
}
 private:
  Singleton() {}
  Singleton(const Singleton& ) {}
  ~Singleton() {}
};

int main() {
  Singleton* p1 = Singleton::GetInstance();
  Singleton* p2 = Singleton::GetInstance();
  std::cout << p1 << ' ' << p2 << std::endl;
  return 0;
}

问得不难,但是比如最后一个问题你 weak_ptr 用的很少,就不知道用什么方法去转,实际上 weak_ptr.lock() 转成 shared_ptr(是的,最后一个问题还没回答上来,捂脸)。

最后反问了下岗位的具体职责,说是做 Engine 以实现数据、渲染和导航等功能,并提供给车企,由车企集成提供的库做成终端上的 app,用的 c++14。

希望能过吧,其实自己挺想回武汉的,同学朋友都在武汉,自己在上海,除了前同事和前室友,都没什么认识的人,想恰饭都恰不到一块去。

评论 (8)