Advertisement

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

阅读量:

已给定中序排列abcdef的高度最矮的二叉树不存在,则其前缀序列是(C)

复制代码
     A、dbacfe		B、cbaedf		C、cabefd		D、dbacef

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

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

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)  有效。

4、

复制代码
    		#include <iostream>
    		#include <stdint.h>
    		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进制整数

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模块与进程分离时(以及其它时候)也被调用。

全部评论 (0)

还没有任何评论哟~