大华一面面经复盘

自我介绍 这个倒是听我说完了
项目介绍 这个没说完打断我 我甚至只介绍了有什么功能 功能的具体实现还没说就打断了
说学mfc没有前途 还是去学qt吧

mfc

1. DBX/DBV:查都查不到

2. 如何让模态框一直置顶

我答的是在对对话框编辑的时候侧面添加控件的地方应该可以设置。在这里插入图片描述

3. updatedata函数

是MFC的窗口函数,用来刷新数据的,操作系统会调用这个函数来初始化对话框中的数据,或者检索或者验证对话框中的数据。

4. onpaint

(1)OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。
(2)OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.
6. 子线程调用界面文件会发生什么事:会报错

qt

6. 信号和槽的机制

在这里插入图片描述
在这里插入图片描述

c++

7. list/vector,map

8. unorded_map和map的底层实现有什么区别

https://blog.youkuaiyun.com/photon222/article/details/102947597?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.base

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

9. 如果对大数据量进行处理 用unorded_map还是map 哈希表对于处理大数据量有没有红黑树好

10. 如果插入一个数据选择vector还是list

11. vector的扩容:primerc++ p317

为了支持随机访问,vector将数据连续存储。向vector和string中添加元素时,如果没有空间容纳新元素,容器不能简单地把它添加到内存的其他位置(因为元素必须连续存储),容器必须分配新的内存空间给已有元素和新元素,将已有的元素从旧位置移动到新空间中,然后添加新元素,释放旧空间。如果每添加一个元素,vector就执行一次这样的内存分配和释放操作,性能会非常的差。
避免这种代价,采取了减少容器空间重新分配次数的策略。当不得不获取新的内存空间时,vector和string通常会分配比新空间需求更大的内存空间。容器预留这些空间作为备用,了用来保存更多的新元素。这样就不需要每次添加新元素的时候都重新分配容器的内存空间了。
延伸出两个概念:size和capacity
size:已经保存的元素数目
capacity:不分配新的内存空间的前提下最多可以保存多少元素

13. 函数覆盖

14. 纯虚函数是什么

virtual void Bark() = 0;//纯虚函数

15. 纯函数如果继承的话没有重新定义会发生什么

会报错 调试代码

#include <iostream>
#include <string>

class Animal//抽象类
{
public:
	Animal(std::string name) :mname(name)
	{
		std::cout << "Animal::Animal()" << std::endl;
	}
	virtual void Bark() = 0;//纯虚函数
	virtual ~Animal()
	{
		std::cout << "Animal::~Animal()" << std::endl;
	}
protected:
	std::string mname;
};

class Dog :public Animal
{
public:
	Dog(std::string name) :Animal(name)
	{
		std::cout << "Dog::Dog()" << std::endl;
	}
	//void Bark()
	//{
	//	std::cout << mname << "   wang wang wang!" << std::endl;
	//}
	~Dog()
	{
		std::cout << "Dog::~Dog()" << std::endl;
	}
};

class Cat : public Animal
{
public:
	Cat(std::string name) :Animal(name)
	{
		std::cout << "Cat::Cat()" << std::endl;
	}
	//void Bark()
	//{
	//	std::cout << mname << "   miao miao miao!" << std::endl;
	//}
	~Cat()
	{
		std::cout << "Cat::~Cat()" << std::endl;
	}
};

//void ShowBark(Animal* pa)
//{
//	pa->Bark();
//}

int main()
{
	Cat* pc = new Cat("cat");
	Dog* pd = new Dog("dog");

	//ShowBark(pc);
	//ShowBark(pd);

	delete pc;
	delete pd;
	system("pause");
	return 0;
}

在这里插入图片描述
在这里插入图片描述

16. 虚函数表

17. 智能指针

18. 用过哪些设计模式

19. 多线程有用过吗

20. io多路复用技术 select/poll/epoll

跟mfc和qt相关的问题后面估计也不会有了 电话面试就是容易准备不充分啊 唉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值