海康威视面试(C++研发岗位)

时间:2024-10-12 11:31:23

单选题:
1、 已知中序遍历的序列为abcdef,高度最小的不可能的二叉树的前序遍历是(C)

 A、dbacfe		B、cbaedf		C、cabefd		D、dbacef
  • 1

2、下列运算符中,在C++语言中不能重载的是(D)

	A、*			B、delete		C、>=			D、::
说明:C++中不能重载的运算符:“?:”、“.”、“::”、“sizeof”和”.*”。
  • 1
  • 2

3、下面哪个函数不能创建Windows内核对象(D)

	A、CreateSemaphore		B、CreateFile		
	C、CreateEvent			D、CreateDc
	解析:
	说明:在Windows操作系统中我们常常接触的有三种对象类型: 
	•	Windows内核对象 (事件对象,文件对象,进程对象,线程对象,I/O完成端口对象,互斥量对象,等等):由执行体(Excutive)对象管理器(Object Manager)管理,内核对象结构体保存在系统内存空间(0x80000000-0xFFFFFFFF),句柄值与进程相关。 
	•	Windows GDI对象 (画笔对象,画刷对象等):由Windows子系统管理,句柄值在系统,会话范围  (system-wide / session-wide)  有效。 
	•	Windows USER对象 (窗口对象,菜单对象等) :由Windows子系统管理,句柄值在系统,会话范围  (system-wide / session-wide)  有效。   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4、

		#include <iostream>
		#include <>
		using namespace std;
		uint64_t get_square(uint32_t a)
		{
		    cout<<a<<" "<<(uint64_t)a<<endl;
		    return (uint64_t)a*(uint64_t)a;
		}
		int main()
		{
		    uint64_t ret=0;
		    ret=get_square(1<<20);	
		printf("ret=0x%llx\n",ret);		//0x10000000000
		}
		%d 有符号32位整数
		%u 无符号32位整数
		%lld 有符号64位整数
		%llx有符号64位16进制整数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

5、下列有关动态链接库说法错误的是(C)

	A、动态链接库可以静态加载,也可以调用LoadLibrary函数动态加载;
	B、使用GetModuleFileName,并传入该动态链接库的句柄,可以得到动态链接库文件的全路径;
	C、动态链接库的入口点函数是DllMain,它只会在首次加载该动态链接库时执行一次;
	D、同一个动态链接库在内存中只会存在一份;
	解析:
1、The DllMain function is an optional method of entry into a dynamic-link library (DLL)。(简要翻译:对于动态链接库,DllMain是一个可选的入口函数。)这句话很重要,很多初学者可能都认为一个动态链接库肯定要有DllMain函数。其实不然,像很多仅仅包含资源信息的DLL是没有DllMain函数的。
2、系统是在什么时候调用DllMain函数的呢?静态链接时,或动态链接时调用LoadLibrary和FreeLibrary都会调用DllMain函数。DllMain的第二个参数fdwReason指明了系统调 Dll的原因,它可能是::DLL_PROCESS_ATTACH、DLL_PROCESS_DETACHDLL_THREAD_ATTAC、
DLL_THREAD_DETACH。
以下从这四种情况来分析系统何时调用了DllMain。
3、DllMain函数是DLL模块的默认入口点。当Windows加载DLL模块时调用这一函数。系统首先调用全局对象的构造函数,然后调用全局函数DLLMain。DLLMain函数不仅在将DLL链接加载到进程时被调用,在DLL模块与进程分离时(以及其它时候)也被调用。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10