搜狐 2022 C++工程师面试题(应聘 求职 面试准备资料).pdf

上传人:奔*** 文档编号:88130100 上传时间:2023-04-22 格式:PDF 页数:35 大小:3.60MB
返回 下载 相关 举报
搜狐 2022 C++工程师面试题(应聘 求职 面试准备资料).pdf_第1页
第1页 / 共35页
搜狐 2022 C++工程师面试题(应聘 求职 面试准备资料).pdf_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《搜狐 2022 C++工程师面试题(应聘 求职 面试准备资料).pdf》由会员分享,可在线阅读,更多相关《搜狐 2022 C++工程师面试题(应聘 求职 面试准备资料).pdf(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、搜 狐2022 C+工程师面试题第 1 题:一、单选题假设整数0 x12345678存放在内存地址0 x0开头的连续四个字节 中(即 地 址 0 x0 到 0 x3).那么在以Little Endian字节序存储的memory中,地址0 x3的地方存放的字节是:A、0 x12B、0 x34C、0 x56D、0 x781、Aa)Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。b)Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。c)网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此 TCP/IP协议

2、中使用的字节序通常称之为网络字节序。假如是 Little-Endian:0 x0-0 x3 内存分别存放的是:0 x78、0 x56、0 x34、0 x12;假如是 Big-Endian:0 x0-0 x3内存分别存放的是:0 xl2、0 x34、0 x56、0 x78;第2题:2、以下代码输出的是_?int foo(int x,int y)(if(x=0|y=0)return 1;return 3*foo(x-l,y/2);)coutfoo(3,5)endl;A、81B、27C、9D、32、B递归:3*3*3*f(0,0)=3*3*3*1=27。第3题:-2-3、给定下列程序,那么执行pri

3、ntf(%n,foo(20,13);的输出结果是多少?intfoo(intx,inty)(if(x=0|y inta44;B int*a;C、int*a4D int(*a)4;8、B可以看出fun函数的形参是一个指针数组,也就是指针指向一个地址,地址中存放的内容也是指针。A,二维数组,不符合B,二级指针,也就是指针指向的内容也还是存放指针的,符合C,二级指针数组,数组的内容是二级指针,不符合D,数组指针,不符合第 9 题:9、下面说法正确的是()A、C+已有的任何运算符都可以重载B、const对象只能调用const类型成员函数C、构造函数和析构函数都可以是虚函数D、函数重载返回值类型必需相同9

4、、BA 不能重载7,由于?在类中对任何成员都有意义,已经成为标准用法。不能重载?:,由于这个运算符对于类对象来说没有实际意义,相反还会引起歧义还有:C 构造函数不能是虚函数。D 函数重载只跟参数类型和参数个数有关。-9-第 10题:10、典型的创建Windows窗口过程的流程为()A、注册窗口类-创建窗口-显示窗口-更新窗口-消息循环B、注册窗口类-创建窗口-更新窗口-显示窗口-消息循环C、创建窗口-注册窗口类-更新窗口-显示窗口-消息循环D、创建窗口-注册窗口类-显示窗口-更新窗口-消息循环10、A在屏幕上显示一个窗口的过程一般有以下步骤,这就是主程序的结构流程:(1)得到应用程序的句柄(G

5、etModuleHandle)o(2)注 册 窗 口 类(RegisterClassEx)。在 注 册 之 前,要先填写RegisterClassEx 的参数 WNDCLASSEX 结构。(3)建立窗口(CreateWindowEx)。(4)显示窗口(ShowWindows)o(5)刷新窗口客户区(UpdateWindow)。(6)进入无限的消息猎取和处理的循环。首先猎取消息(GetMessage),假如有消息到达,则将消息分派到回调函数处理(DispatchMessage),假如消息是WM_QUIT,则退出循环。-1 0-第 11题:11、下面哪个API返回的不属于windows内核对象()

6、A、CreateFileB、CreateSemaphoreC、CreateDCD、eateEvent11、CA BD 选项是内核对象:大 事 对 象 HANDLE CreateEvent。;文件对象HANDLE CreateFile。;信号量对象 HANDLE CreateSemaphore();C 选项是GDI对象。设备上下文(HDC)CreateDC第 12题:12、用户双击鼠标时产生的消息序列,下面正确的是()A、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDOWN,WM_LBUTTONUPB、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_

7、LBUTTONUP,WM_LBUTTONDBLCLKC、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDOWN,11WM LBUTTONDBLCLKD、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDBLCLK,WM_LBUTTONUP12、D双击即点击左键两下,第一次触发LBUTTONDOWN和 LBUTTONUP,其次次点击时触发双击大事LBUTTONDBLCLK(doubleclick),放掉再触发 LBUTTONUP第 13题:13、以下关于线程以下描述正确的是()l .windows线程创建时,默认绑定在1 个特定的CPU上

8、2.可采纳SetThreadAffinityMask接口设置线程与某个cpu绑定3._beginthreadex比 CreateThread创建线程平安是由于使用_beginthreadex会创建一个_tiddata,在调用一些诸如strtok函数时会将需要爱护的数据存入iddata4.使用_beginthread创建线程时,线程执行函数必需为_cdecl约束规范,而_beginthreadex指定的线程执行函数必需为_stdcallA、1,2B、1,3-1 2-C、1D、以上都不正确13、D解释:1:不正确。windows线程创建时,不会绑定在特定的CPU上,需要手动绑定,或 者 调 用 S

9、etThreadAffinityMask接口进行绑定;2:正 确。参 考http:/ 的链接。欢迎各位订正。4:正确。参考msdn:_beginthread函数可创建在start_address开头执行例程的线程。start_address中的例程必需使用 cdecl(用于本机代码)或_clrcall(用于托管代码)调用商定,并且应没有返回值。传递给 _beginthreadex 的 start_ad dress 中的例程必需使用 stdcall(用于本机代码)或 circaII(用于托管代码)调用商定,并且必需返回线程退出代码。所以,通过1,就能选出Do第 14题:14、以下哪些线程同步锁可

10、以为递归锁-1 3-1.信号量2.读 写 锁 3.互斥量4.大 事 5.临界区(Critical Section)A、1,3,4,5B、5C、3,5D、1,3,514、C进程/线程同步方法常见的进程/线程同步方法有互斥锁(或称互斥量Mutex)、读写锁(rdlock)条件变量(cond)信号量(Semophore)等。在 windows系统中,临界区(Critical Section)和大事对象(Event)也是常用的同步方法。递归锁/非递归锁Mutex可以分为递归锁(recursive mutex)和非递归锁(non-recursivemutex)o递归锁也叫可重入锁(reentrant m

11、 utex),非递归锁也叫不行重入锁(non-reentrant mutex)o二者唯一的区分是:同一个线程可以多次猎取同一个递归锁,不会产生死锁。假如一个线程多次猎取同一个非递归锁,则会产生死锁。Windows 下的 Mutex 和 Critical Section 是可递归的。Linux下 的 pthread_mutex_t锁是默认是非递归的。可以通过设置 14 PTHREAD_MUTEX_RECURSIVE 属性,将 pthread_mutex_t 锁设置为递归锁。第15题:15、关 于sendmessage和postmessage的区分,下面的说法错误的是()A、postmessage

12、发出消息后,将消息放到消息队列中,立刻返回B、sendmessage发出消息后,始终等到该消息执行完毕,才返回C、用sendmessage给其他线程创建的窗口发送消息时,消息也会进消息队列D、用2个函数只能给当前进程的窗口发送消息15、DA:PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后连续执行,这是个异步消息投放函数。B:SendMessage必需等待其他程序处理消息完了之后才返回,连续执行,这是个同步消息投放函数。C:当某线程调用sendmessage给别的线程创建的窗口时一,发送的消息首先追加到接收线程的发送消息队列,发送线程处于空闲状态,等待接收线程处理完他的

13、消息返回给发送线程的应答队列,等到后发送-15-线程被唤醒取得应答队列的消息(就是处理完消息的返回值),连续执行。D:sendmessage和postmessage都可以给其他线程发送消息第16题:16、关于WM_COPYDATA消息的处理,下面描述错误的是()A、可以在不同进程之间传递少量只读数据B、只能通过sendmessage方式来发送该消息C、只能在窗口过程函数中处理该消息D、可以在消息队列或窗口过程函数中处理该消息16、CA:WM_COPYDATA消息的主要目的是允许在进程间传递只读数据。Windows在通过WM_COPYDATA消息传递期间,不供应继承同步方式。B;该消息只能由Se

14、ndMessage。来发送,而不能使用PostMessage()o由于系统必需管理用以传递数据的缓冲区的生命期,假如使用了PostMessage(),数据缓冲区会在接收方(线程)有机会处理该数据之前,就被系统清除和回收。D:可以在消息队列或窗口过程函数中处理该消息-1 6-第 17题:17、常用的windows进入点函数wWinMain共有四个参数,其中不包括以下哪种类型的参数()A、intB、char*C、PWSTRD、HINSTANCE17、CWinMain函数的原型声明如下:intWINAPI WinMain(HINSTANCE hlnstance,handle to current i

15、nstanceHINSTANCE h Previn stance,handle to previous instanceLPSTR IpCmdLine,/command lineint nCmdShow/show state);第一个参数hlnstance表示该程序当前运行的实例的句柄,这是一个数值。其次个参数hPrevInstance表示当前实例的前一个实例的句柄。第三个参数IpCmdLine是一个以空终止的字符串,指定传递给应用 17-程序的命令行参数。第四个参数nCmdShow指定程序的窗口应当如何显示,例如最大化、最小化、隐蔽等。第 18题:18、下列windows消息中,优先级相对较

16、低的是哪一个()A、WM_MOUSEMOVEB、WM_TIMERC、WM_CHARD、WM_WINDOWPOSCHANGED18、BWM_TIMER消息的优先级最低,所以在有其他消息的状况下,WM_TIMER消息得不处处理A:WM_MOUSEMOVE消息在鼠标移动时被发送至已获焦点的窗口B:Windows定时器是一种周期性的消息产生装置,它会每隔一段指定时间发送一次定时消息WM_TIMERoC:未经输入法而直接送人程序中的字符会响应WM_CHAR消息D:发送此消息给那个窗口的大小和位置已经被转变时,来调用setwindowpos函数或其它窗口管理函数-18 第19题:19、最小堆0,3,2,5

17、,7,4,6,8,在删除堆顶元素0之后,其结果是()A、3,2,5,7,4,6,8B、2,3,5,7,4,6,8C、2,3,4,5,7,8,6D、2,3,4,5,6,7,819、C依据堆的删除规章,删除操作只能在堆顶进行,也就是删除0元素。然后让最终一个节点放在堆顶,做向下调整工作,让剩下的数组依旧满意最小堆。删除0后用8填充0的位置,为832,5,7,4,6然 后8和其子节点3,2比较,结 果2最小,将2和8交换,为:2,3,8,5,7,4,6然后8的下标为2,其两个孩子节点下标分别为2*2+1=5,2*2+2=6也就是4和6两个元素,经比较,4最小,将8与4交换,为23,4,5,7,8,6

18、这时候8已经没有孩子节点了,调整完成。-1 9-第 20题:20、对一个由A,B,C,D随机组成的序列进行哈弗曼编码,据统计,各个元素的概率分别为:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,请问该编码的平均期望编码长度为()bits?A、1.45B、1.7C、1.85D、1.9220、C首先要建立哈夫曼树,然后计算平均期望编码长度:0.4*1+0.35*2+0.2*3+0.05*3=1.85第 21题:21、设有递归算法如下,int x(int n)(if(n=3)return 1;else 20 return x(n-2)+x(n-4)+l;)试问计算x(x

19、)时需要计算()次X 函数。A、8B、9C、16D、1821、Dx(8)=x(6)+x(4)+l递归计算x第一次调用x(6)=x(4)+x(2)+l递归计算x其次次调用x(4)=x(2)+x(0)+l递归计算x(4)第三次调用x(4)=x(2)+x(0)+l 递归计算x(4)第四次调用之后再调用x()计算黑体部分的结果(5 次,加上前面4 次,一共9次),最终x(8)返回值为9接着计算x(9)x(9)=x(7)+x(5)+l递归计算x(9)第一次调用x(7)=x(5)+x(3)+l递归计一算x(7)其次次调用x(5)=x(3)+x(l)+l递归计算x(5)第三次调用x(5)=x(3)+x(l)

20、+l递归计算x(5)第四次调用之后再调用x()计算黑体部分的结果(5 次,加上前面4 次,一共9-2 1-次),最终x(8)返回值为9所以总共调用x()的次数是9+9=18第22题:22、设一组初始记录关键字序列9出 工,丫 尸 八1/15肌,力,则按字母升序的第一趟冒泡排序结束后的结果是()A、F,H,C,D,P,A,M,Q,R,S,Y,XB、P,A,C,S,Q,D,F ,X,R,H,M,YC、A,D,C,R,F,Q,M,S,Y,P,H,XD、H,C,Q,P,A,M,S,R,D,F,X,Y22、D第一趟冒泡:从数组第一个元素到最终一个元素扫描,比较相邻的元素,假如后一个元素小于前一个,则交换

21、位置。第一趟结束时,最大元素到达最终一个元素位置第23题:23、堆排序的空间简单度是(),堆排序中构建堆的时间简单度是-2 2-()oA、0(logn),0(n)B、O(logn),O(nlogn)C、0(1),0(n)D、0(1),O(nlogn)23、C 空间简单度”指占内存大小,堆排序每次只对一个元素操作,是就地排序,所用帮助空间0(1),空间简单度是0(1)在构建堆的过程中,完全二叉树从最下层最右边的非终端结点开头构建,将它与其孩子进行比较和必要的互换,对于每个非终端结点来说,其实最多进行两次比较和互换操作,因此整个构建堆的时间简单度为0(n)o在正式排序时,第i次取堆顶记录重建堆需要

22、用O(logi)的时间(完全二叉树的某个结点到根结点的距离为?Iog2i?+1),并且需要取n-1次堆顶记录,因此,重建堆的时间简单度为O(nlogn)。第24题:24、若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别0和3o当从队列中删除一个元素,再加入两 个元素后,rear-2 3-和front的值分别为()A、2 和 4B、1 和 5C、4 和 2D、5 和 124、A由于出队时,front=front+l/MAXSIZE,rear 不变,所以 front=4入队时,rear=rear+l/MAXSIZE,front 不变,所以 rear=2;第25题:25、如下

23、表是用户是否使用某产品的调查结果()U ID年 龄 地 区 学 历收入用户是否使用调查产品1低 北 方 博 士 低是2高 北 方 本 科 中否3低 南 方 本 科 高否4高 北 方 讨 论 生 中 是请计算年龄,地区,学历,收入中对用户是否使用调查产品信息增益最大的属性(Log23=0.63)A、年龄-2 4-B、地区C、学历D、收入25、C不用算一眼就能看出来,全部本科学历都不使用调查产品,全部非本科学历都使用了调查产品。这种可以确定的划分导致信息嫡为。,信息增益最大第26题:26、假设某算法的计算时间可用递推关系式T(n)=2T(n/2)+n表示,则该算法的时间简单度为()A、O(logn

24、)B、O(n*logn)C、0(n)D、0(nA2)26、BT(n)=2Ak*(T(n/(2Ak)+k*n-2 5-2Ak=n,k=log(n)(以 2 为底)T(n)=n*T(l)+n*log(n)=c*n*log(n)(c 为常数)所以是O(n*logn)第27题:27、基于统计的分词方法为()A、正向最大匹配法B、逆向最大匹配法C、最少切分D、条件随机场27、D目前的分词方法归纳起来有3类:第一类是基于语法和规章的分词法。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来进行词性标注,以解决分词歧义现象。由于现有的语法学问、句法规章非常笼统、简单,基于语法和规章的分词

25、法所能达到的精确度远远还不能令人满足,目前这种分词系统还处在试验阶段。其次类是机械式分词法(即基于词典)。机械分词的原理是将文档中的字符串与词典中的词条进行逐一匹配,假如词典中找到某个字符-2 6-串,则匹配胜利,可以切分,否则不予切分。基于词典的机械分词法,实现简洁,有用性强,但机械分词法的最大的缺点就是词典的完备性不能得到保证。据统计,用一个含有70 000个词的词典去切分含有15 000个词的语料库,仍 旧 有30%以上的词条没有被分出来,也就是说有4500个词没有在词典中登录。第三类是基于统计的方法。基于统计的分词法的基本原理是依据字符串在语料库中消失的统计频率来打算其是否构成词。词是

26、字的组合,相邻的字同时消失的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映它们成为词的可信度。最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描,这是基于词典分词的方法1.正向最大匹配法2.逆向最大匹配法3.最少切分法:使每一句中切出的词数最小,这也是基于词典分词的方法条件随机场是一个基于统计的序列标记和分割的方法,属于基于统计的分词方法范畴。它定义了整个标签序列的联合概率,各状态是非*的,彼此之间可以交互,因此可以更好地模拟现实世界的数据.第28题:28、下列哪个不属于CRF模型对于HMM和MEMM模型的优势()27-A、特征

27、敏捷B、速度快C、可容纳较多上下文信息D、全局最优28、B隐马尔可夫模型(Hidden Markov Model,HM M),最大熠马尔可夫模型(Maximum Entropy Markov Model,MEMM)以及条件随机场(Conditional Random Field,CRF)是序列标注中最常用也是最基本的三个模型。HMM模型是对转移概率和表现概率直接建模,统计共现概率。MEMM模型是对转移概率和表现概率建立联合概率,统计时统计的是条件概率,但 MEMM简单陷入局部最优,是由于MEMM只在局部做归一化。RF模型中,统计了全局概率,在做归一化时,考虑了数据在全局的分布,而不是仅仅在局部

28、归一化,这样就解决了 MEMM中的标记偏置(label bias)的问题。CRF没有HMM那样严格的*性假设条件,因而可以容纳任意的上下文信息、。特征设计敏捷。(与ME 一 样)-与 HMM比较同时,由于CRF计算全局最优输出节点的条件概率,它还克服了最大焙马尔可夫模型标记偏置(Label-bias)的缺点。shy;shy;-与-28 MEMM比较CRF是在给定需要标记的观看序列的条件下,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布。CRF需要训练的参数更多,与 MEMM和 HMM相比,它存在训练代价大、简单度高的缺点。第 29题:29、假设一个完整的扑

29、克牌有52张牌,2 黑色(黑葵和梅花)和 2红 色(方块和红心)。假如给你一副完整的牌,和半副牌(1 红色和1黑色),则两种状况下抽两种牌都是红色的概率是多少()A、1/2,1/2B、25/102,12/50C、50/51,24/25D、25/51,12/2529、B第一种状况 26/52*25/51=25/102其次种状况 13/26*12/25=12/50-2 9-第 30题:30、在二分类问题中,当测试集的正例和负例数量不均衡时,以下评 价 方 案 哪 个 是 相 对 不 合 理 的()(假 设precision=TP/(TP+FP),recall=TP/(TP+FN)。)A、Accur

30、acy:(TP+TN)/allB、F-value:2*recall*precision/(recall+precision)C、G-mean:sqrt(precision*recall)D、AUC:曲线下面积30、A题目提到测试集正例和负例数量不均衡,那么假设正例数量很少占10%,负例数量占大部分90%。而且算法能正确识别全部负例,但正例只有一半能正确判别。那么 TP=0.05xall,TN=0.9xall,Accuracy=95%o虽然Accuracy很高,但正例precision只有50%第 31题:31、下面关于ID3算法中说法错误的是()A、ID3算法要求特征必需离散化-3 0-B、信

31、息增益可以用烯,而不是GINI系数来计算C、选取信息增益最大的特征,作为树的根节点D、ID3算法是一个二叉树模型31、DID 3算法生成的决策树是一棵多叉树,分支的数量取决于分裂属性有多少个不同的取值。第 32题:32、圆内接三角形是锐角三角形概率是多少()A、1/4B、1/3C、1/2D、2/332、A三角形的三点在圆上的位置是等概率的。这种任意位置组成的三角形中,最大的那个角必定大于等于60度,因此满是三角形是锐角的变化范围是60-90度,钝角的范围是90-180度第33题:33、六个人排成一排,甲与乙不相邻,且甲与丙不相邻的不同排法数是多少()A、216B、240C、288D、36033

32、、C1,首先将甲乙丙拿出来,剩下三个做全排列,有A(3,3)=6种排列,2,将甲乙两个插入第一步三个人的四个空隙中,有A(4,2)=12种3,剩下丙插入到前五个人中的六个空隙中,其中甲的左右两侧不符合,还有4个符合条件的空隙,C(4,l)=44,总共有 6*12*4=288第34题:34、在其他条件不变的前提下,以下哪种做法简单引起机器学习中-3 2-的过拟合问题()A、增加训练集量B、削减神经网络隐蔽层节点数C、删除稀疏的特征SD、SVM算法中使用高斯核/RBF核代替线性核34、B过拟合就是导致拟合过度,算法的普适性降低B选项削减神经网络隐层节点数,也就减小了输入层与隐层,隐层与输出层之间的

33、连接矩阵,使其适应性变差第35题:35、计算一个任意三角形的面积,S=V(p(p-a)(p-b)(p-c),p=(a+b+c)/2,以下等价类测试用例中,不属于无效等价类的是()A、a=5,b=3,c=6;B、a=2,b=3,c=5;C a=7,b=3,c=3;D、a=2,b=6,c=3;-3 3-35、A选项A满意三角形两边之和大于第三边,两边之差小于第三边,是有效的选项BCD都不满意两边之和大于第三边,属于等级无效的第36题:二、多选题36、下列排序算法的常规实现中,哪些空间简单度是0(1)A、冒泡B、选择C、归并D、快排E、堆排序36、A.B.E冒泡排序,选择排序,堆排序的空间简单度为0(1),由于需要一个临时变量来交换元素位置,(另外遍历序列时自然少不了用一个变量来做索引).快速排序空间简单度为logn(由于递归调用了),归并排序空间简单是0(n),需要一个大小为n的临时数组.-3 4-3 5-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁