虎牙C++ 一面

1、自我介绍

介绍了一下我自己啥情况,之前在哪个公司实习过,主要参与 C++ 后端相关开发工作。 实习期间我做过消息处理/服务端模块开发,参与了功能迭代、问题排查和一部分性能优化工作。 技术栈方面,我主要掌握 C/C++,熟悉 STL、Linux 开发环境、网络编程(TCP/IP)、多线程与并发编程,了解常用的数据结构与算法,也用过 MySQL、Redis 这类常见组件。 整体上我偏工程实践,比较关注代码质量、稳定性和性能,想在 C++ 后端方向继续深入。

2、单例模式和工厂模式的作用

单例模式:保证一个类全局只有一个实例,适合日志、配置中心、线程池这种“全局只要一个”的对象。 工厂模式:把对象创建过程封装起来,调用方不用关心具体创建哪个类,便于解耦和扩展。

#include <iostream>
#include <memory>
using namespace std;

class Product {
public:
    virtual ~Product() = default;
    virtual void run() = 0;
};

class ProductA : public Product {
public:
    void run() override { cout << "ProductA running\n"; }
};

class ProductB : public Product {
public:
    void run() override { cout << "ProductB running\n"; }
};

class Factory {
public:
    static unique_ptr<Product> create(int type) {
        if (type == 1) return make_unique<ProductA>();
        return make_unique<ProductB>();
    }
};

3、懒汉模式的实例化细节(C++98 和 C++11)

懒汉模式是第一次使用时才创建实例。 C++98 中局部静态变量初始化不是线程安全的,需要手动加锁。 C++11 开始函数内局部静态变量初始化是线程安全的,推荐这种写法。

C++98 写法(加锁版):

#include <pthread.h>

class Singleton98 {
private:
    Singleton98() {}
    Singleton98(const Singleton98&);
    Singleton98& operator=(const Singleton98&);
    static Singleton98* instance_;
    static pthread_mutex_t mutex_;

public:
    static Singleton98* getInstance() {
        pthread_mutex_lock(&mutex_);
        if (instance_ == 0) {
            instance_ = new Singleton98();
        }
        pthread_mutex_unlock(&mutex_);
        return instance_;
    }
};

Singleton98* Singleton98::instance_ = 0;
pthread_mutex_t Singleton98::mutex_ = PTHREAD_MUTEX_INITIALIZER;

C++11 推荐写法:

class Sing

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

C++ 常考面试题总结 文章被收录于专栏

本专栏系统梳理C++方向, 大中厂高频高频面试考点 , 内容皆来自真实面试经历,从基础语法、内存管理、STL与设计模式,到操作系统与项目实战,结合真实面试题深度解析,帮助开发者高效查漏补缺,提升技术理解与面试通过率,打造扎实的C++工程能力.

全部评论

相关推荐

02-26 13:41
门头沟学院 Java
“如果想要去ai相关的岗位实习,需要先学习什么内容,可以给个学习路线吗(比如先要学习什么做基础然后学到什么程度之类)。”这是很多同学想了解的问题,我浅谈一下自己的学习路线,仅供参考。阶段一:打好地基&nbsp;🧱Python编程:重点掌握核心语法、数据结构和面向对象(OOP)思想。目标:能熟练使用Python解决问题,至少刷完LeetCode简单和中等难度的题目。数学基础:理解高数、线性代数、概率论的核心思想。目标:不要求背公式,但要懂原理。阶段二:迈入核心&nbsp;🧠机器学习基础:学习监督/无监督学习、分类、回归等经典理论。目标:熟练掌握NumPy、Pandas、Scikit-learn这“三件套”,能独立完成一个简单项目深度学习入门:理解神经网络(NN)、CNN、RNN等核心概念。目标:推荐PyTorch框架,并能搭建一些小项目。阶段三:垂直深耕&nbsp;🚀针对心仪岗位(以AI&nbsp;Agent为例)针对学习,了解相关岗位需求大语言模型&nbsp;(LLM)&nbsp;基础:核心是理解Transformer模型原理并学会如何调用GPT等大模型的API。Prompt&nbsp;Engineering:学习如何写出高质量的提示词,让LLM精准理解你的意图Agent开发框架:重点学习LangChain或LlamaIndex。目标:能用框架调用LLM、连接外部知识库或工具,并搭建一个简单的应用阶段四:动手实践&nbsp;💻项目是简历的敲门砖!&nbsp;可以利用前几个阶段学习的内容写一个小项目,将代码上传到GitHub,并写一份清晰的README文档,可以成为你面试时的Demo。可能很多时候一开始摸着石头过河会有点迷茫,但最重要的是一定要多动手、多实践
掌握什么AI技能,会为你...
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

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