快手C++ 一面 面经

1. 介绍一下你做过的项目,重点说说技术难点 (15min)

答案要点:

  • 选择1-2个最有技术含量的项目深入讲解
  • 强调:性能瓶颈分析、内存优化、多线程并发、崩溃率降低
  • 用数据说话:启动速度提升40%、内存占用降低30%、崩溃率从2%降到0.5%
  • 准备追问:为什么这么设计?有没有考虑其他方案?如何权衡的?

2. 智能指针有哪几种?shared_ptr的实现原理

智能指针类型:

  • unique_ptr:独占所有权,不可拷贝只能移动
  • shared_ptr:共享所有权,引用计数管理
  • weak_ptr:弱引用,解决循环引用问题
  • auto_ptr:已废弃(C++11)

shared_ptr实现原理:

template<typename T>
class shared_ptr {
private:
    T* ptr;
    int* ref_count;  // 引用计数
    
public:
    shared_ptr(T* p) : ptr(p), ref_count(new int(1)) {}
    
    // 拷贝构造
    shared_ptr(const shared_ptr& other) 
        : ptr(other.ptr), ref_count(other.ref_count) {
        (*ref_count)++;
    }
    
    // 析构函数
    ~shared_ptr() {
        if (--(*ref_count) == 0) {
            delete ptr;
            delete ref_count;
        }
    }
    
    T* operator->() { return ptr; }
    T& operator*() { return *ptr; }
};

关键点:

  • 控制块包含:引用计数、弱引用计数、删除器
  • 线程安全:引用计数的增减是原子操作
  • 循环引用问题:A持有B的shared_ptr,B持有A的shared_ptr,需要用weak_ptr打破

3. 进程间通信方式有哪些?

常见IPC方式:

  1. 管道(Pipe)半双工,只能单向通信只能用于父子进程或兄弟进程
  2. 命名管道(FIFO)可用于无亲缘关系进程以文件形式存在于文件系统
  3. 消息队列(Message Queue)消息链表,存放在内核中可以实现消息的随机查询
  4. 共享内存(Shared Memory)最快的IPC方式需要配合信号量进行同步
  5. 信号量(Semaphore)主要用于进程同步P/V操作实现互斥访问
  6. 套接字(Socket)可用于不同机器间通信支持网络通信
  7. 信号(Signal)用于通知进程某个事件发生异步通信方式

4. 说说C++的多态,虚函数表是什么?

多态类型:

  • 编译时多态:函数重载、模板
  • 运行时多态:虚函数

虚函数表(vtable):

class Base {
public:
    virtual void func1() { cout << "Base::func1" << endl; }
    virtual void func2() { cout << "Base::func2" << endl; }
};

class Derived : public Base {
public:
    void func1() override { cout << "Derived::func1" << endl; }
    virtual void func3() { cout << "Derived::func3" << endl; }
};

内存布局:

Base对象:
+-------------------+
| vptr (虚函数表指针) |
+-------------------+

Base的vtable:
+-------------------+
| &Base::func1      |
| &Base::func2      |
+---

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

C++八股文全集 文章被收录于专栏

本专栏系统梳理C++技术面试核心考点,涵盖语言基础、面向对象、内存管理、STL容器、模板编程及经典算法。从引用指针、虚函数表、智能指针等底层原理,到继承多态、运算符重载等OOP特性从const、static、inline等关键字辨析,到动态规划、KMP算法、并查集等手写实现。每个知识点以面试答题形式呈现,注重原理阐述而非冗长代码,帮助你快速构建完整知识体系,从容应对面试官提问,顺利拿下offer。

全部评论

相关推荐

02-16 01:39
南昌大学 Java
坚持无悔意无休:xhs上集美最爱说谎博人眼球
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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