第二次面试:C++qt开发实习生

大家好,本篇文章记录总结我的面经,希望对各位读者有帮助,如有不正确之处望各位帮忙指正!

一.自我介绍:

姓名+学校+专业,项目经验(主要运用了什么技术,对我有什么帮助),对入职实习的期望,我的自我介绍到此结束,谢谢!

二、软件模式:

1.写一个单例模式

单例模式一定要体现单例 ,**GetInstance、私有构造函数、禁止拷贝赋值的函数一定要写!!!**这样才能保证"单例",如果自己有意识地写就很加分,如果面试官提醒的话就肯定会减分。(我就是忘记写禁止拷贝赋值o(╥﹏╥)o)

懒汉模式:

懒汉模式就是懒,所以别人不催它就不创建(我们不主动GetInstance,它就始终不创建对象)

复制代码
//单例模式:懒汉模式
class Singleton
{
public:
	static Singleton& GetInstance()
	{
		static Singleton instance;
		return instance;
	}
	Singleton(const Singleton& rhs) = delete;
	Singleton& operator=(const Singleton& rhs) = delete;
	Singleton(const Singleton&& rhs) = delete;
private:
	Singleton()
	{
		cout << "单例创建" << endl;
	}
};

饿汉模式:

我们饿的时候巴不得立刻有吃的,饿汉模式就是这样,一启动就创建好对象

复制代码
//饿汉模式
class Singleton
{
public:
	static Singleton& GetInstance()
	{

		return _instance;
	}
	Singleton(const Singleton& rhs) = delete;
    Singleton& operator=(const Singleton& rhs) = delete;
	Singleton(const Singleton&& rhs) = delete;
private:
	Singleton()
	{
		cout << "单例创建" << endl;
	}
	static Singleton _instance;
};
Singleton Singleton::_instance;

饿汉模式vs懒汉模式:

特性 饿汉式 懒汉式
创建时机 程序启动时立即创建 第一次调用getInstance()时创建
资源占用 可能浪费资源(如果一直不用) 按需分配,节省资源
性能特点 获取实例速度快(已创建好) 第一次获取稍慢(需要创建)

2.软件模式知道哪些:

工厂模式、建造者模式、代理模式等等,可以私下自行搜索(说的越多肯定越好,确保说的都会、不会的切记不要说

三、编译环境:

1.平时在哪些环境下写代码:

根据自己的亲身经历。我一般是VS2022和VScode以及QtCreator

2.编译器的常用快捷键:

  • 切换源文件和头文件:Ctrl K + O
  • 调试的时候快捷键:F5(运行到断点处、没有程序直接开始运行),F10(逐过程调试),F11(逐语句调试)

四、C++语法

1.写一个类,随便加两个成员变量,写一份成员函数:

复制代码
class Myclass
{
public:
	Myclass():_a(0),_b(0)
	{ }
	int Geta()const
	{
		return _a;
	}
private:
	int _a;
	int _b;
};

2.写一个智能指针的变量:

有两种方式:推荐第二种,因为性能更好,更安全

复制代码
std::shared_ptr<MyClass> ptr(new Myclass());
std::shared_ptr<MyClass> ptr=make_shared<Myclass>();

ps:智能指针非常重要,面试几乎都会问的,可以详细看这篇博客C++:四大智能指针-CSDN博客

3.创建一个顺序表,10个这个类:

复制代码
std::vector<Myclass> classes1(10);

4.sort函数总共几个参数?如何使用sort函数的第三个参数将这个类按照a值进行一个排序:

复制代码
//lambda表达式
std::sort(classes.begin(), classes.end(), [](const Myclass& lhs, const Myclass& rhs) {return lhs.Geta() < rhs.Geta(); });
//函数指针
bool Compare1(const Myclass& lhs,const Myclass& rhs)
{
	return lhs.Geta() < rhs.Geta();
}
std::sort(classes.begin(), classes.end(), Compare1);
//仿函数
struct Compare2
{
public:
	bool operator()(const Myclass& lhs, const Myclass& rhs)
	{
		return lhs.Geta() < rhs.Geta();
	}
};
std::sort(classes.begin(), classes.end(), Compare2());

五、算法:

1.顺序表删除下标为奇数的元素:

从后向前删除 !!!从前向后删除的话,元素的下标会改变 ,不好处理,正难则反,从后面删

复制代码
std::vector<Myclass> classes(10);
for (int i = 0; i < 10; i++)
{
	classes[i].seta(i);
	cout << classes[i].Geta();
}
cout << endl;
int i = classes.size() - 1;
for (auto it = classes.begin(); i>=0; i--)
{
	if(i%2==1)
	classes.erase(it+i);
}
for (int i = 0; i <classes.size(); i++)
{
	cout << classes[i].Geta();
}

六、项目:

1.为什么想写第一个项目?为什么想写第二个项目?

根据自己的想做项目的初心回答即可,因为什么想做这个项目(可以是自己的兴趣,也可以是学校课题的拓展等)

七、个人反思:

  • 自己做的项目,一定要多熟悉熟悉,张口就来这种,如果有一部分的代码参考了AI一定要在理解AI做法的基础上再去自己敲一遍这部分的代码,将学的东西转化为自己的。
  • 对于C++11的东西还是不太熟练,不仅要掌握原理还要会用会敲代码,用到项目中。
  • 对于算法题,有一个月没怎么认真做算法题了,问到算法的时候脑子是空白的,每天要养成写算法题的好习惯。
  • 软件模式这方面掌握的实属不怎么样,要重点复习回顾。

结语:

以上就是我第二次面试的全部内容了,希望对大家有些帮助,也希望与一样喜欢编程的朋友们共进步,希望大家面试全过,offer多多!!!

谢谢观看

如果觉得还阔以的话,三连一下,以后会持续更新的,我会加油的

祝大家早安午安晚安

相关推荐
GL-Yang3 小时前
2025年-集合类面试题
java·面试
黄昏恋慕黎明4 小时前
JVM虚拟机(面试重)
jvm·面试·职场和发展
-睡到自然醒~4 小时前
[go 面试] 并发与数据一致性:事务的保障
数据库·面试·golang
Dolphin_海豚4 小时前
@vue/reactivity
前端·vue.js·面试
怪兽20144 小时前
请谈谈什么是同步屏障?
android·面试
尘世中一位迷途小书童4 小时前
版本管理实战:Changeset 工作流完全指南(含中英文对照)
前端·面试·架构
吃饺子不吃馅4 小时前
【八股汇总,背就完事】这一次再也不怕webpack面试了
前端·面试·webpack
我命由我123455 小时前
Photoshop - Photoshop 工具栏(14)抓手工具
ui·职场和发展·pdf·求职招聘·职场发展·photoshop·美工
渣哥6 小时前
当容器里有多个 Bean,@Qualifier 如何精准定位?
javascript·后端·面试