COM是一个更好的C++

  • 时间:
  • 浏览:1
  • 来源:彩神大发APP_神彩大发APP官方

2:关键段

{      

上周准备在公司内内外部转岗,面了兩个部门windows客户端相关的工作,最终拿到兩个Offer,主要涉及C++和Windows两大块内容,C++的题目基本都答上了,Windows兩个劲也有我的弱项,在这里记录一下Windows相关的题目。一点答不上的什么的问题就没列出来,还一点什么的问题忘了,下面的答案一点大每段是我被委托人的理解,一点是直接从网上copy的,有什么的问题大伙儿 儿还也能讨论。

1:GetMessage和PeekMessage的区别?

UpdateWindow(hwnd); //立即刷新窗口 

 TranslateMessage(&msg); //消息进行必要的正确处理转换。     

WM_PAINT一般在消息队列中这麼消息的之后才正确处理,但会 大伙儿 儿须要立即刷新窗口,这麼就须要UpdateWindow函数了,直接绕过消息循环,假如有一天更新区域不为空,将WM_PAINT消息直接发送到指定窗口过程即可。

阿汉:选则

7:模态窗口的实现原理?模态窗口会是是因为崩溃吗?

不了解

4:读写锁

FileMapping用于将处在于磁盘的文件放上去兩个多应用程序的虚拟地址空间,并在该应用程序的虚拟地址空间中产生兩个多区域用于“存放”该文件,并也有空间就叫做 File View,系统并一块儿产生兩个多File Mapping Object(存放于物理内存中)用于维持并也有映射关系,那我当多个应用程序须要读写那个文件的数据时,它们的File View着实对应的也有同兩个多File  Mapping  Object,那我做可节省内存和保持数据的同步性,并达到数据共享的目的。

Invalidate(hwnd); //将窗口设为不可用,是是因为更新区域不为空

读写锁实际是并也有特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则须要对共享资源进行写操作。并也有锁相对于自旋锁而言,能提高并发性,可能性在多正确处理器系统中,它允许一块儿有多个读者来访问共享资源,最大可能性的读者数为实际的逻辑CPU数。写者是排他性的,兩个多读写锁一块儿还也能了兩个多多写者或多个读者 (与CPU数相关),但还也能了一块儿既有读者又有写者。我着实他着实之后对关键段和内核事件对象的封装。写的之后独占,读的之后共享。

PostMessage:将消息发送到指定窗口所在应用程序的消息队列中,直接返回,消息算不算被正确处理删剪问你;

2:SendMessage和PostMessage的区别?为甚跨应用程序发消息?为甚跨应用程序发消息?SendMessage在应用程序间发消息要注意哪些?SendMessage能将消息发送到消息队列吗?PostMessage还也能在应用程序间发消息吗?兩个多应用程序互相SendMessage会出什么的问题吗?

4:Windows消息循环哪些函数,该人的作用是哪些?消息循环是为甚退出的?

PeekMessage:查看消息,有消息,就将数据存入MSG特性中,这麼消息就返回FALSE,不需要阻塞,但可能性这麼更新区,还也能移除WM_PAINT消息,还还也能通过最后兩个多参数来决定算不算从队列中移除查看的消息;

7:互斥量

GetMessage:获归还息队列中的兩个多消息,存入MSG中,并从消息队列中移除,可能性消息队列中这麼消息就会阻塞;

SendMessage直接调用窗口过程,那它算不算还也能将消息发送到发送到应用程序的消息队列中呢?

还也能啊,比如发送兩个多WM_PAINT消息,这是兩个多队列消息,还也能了处在无效区域的清况 下,才会正确处理WM_PAINT消息;

9:为甚实现应用程序间发消息?应用程序的消息队列默认会创建吗?

应用程序间SendMessage,可能性它基本之后调用指定窗口的窗口过程,当跨应用程序发消息的之后,无法调用指定窗口的窗口过程,在跨应用程序发送;

PostMessage还也能在应用程序间发消息,但还也能了结合WM_COPYDATA使用,WM_COPYDATA通过内存映射在应用程序间传递数据,PostMessage后映射文件的句柄就无效了。

while(GetMessage(&msg, NULL, 0, 0)) //获取兩个多消息,成功之后放上去msg中。

10:搞笑的话Windows的内存管理,为甚实现内存共享?

SendMessage还也能再应用程序间发消息,PostThreadMessage通过应用程序ID还也能在应用程序间发消息,将消息发送到指定应用程序的消息队列中。应用程序的消息队列默认是不需要创建的,可能性应用程序的消息队列并也有须要的。通过ResumeThread(threadHwnd);还也能创建应用程序的消息队列。

当GetMessage获取到的消息是WM_QUIT,返回的之后FALSE,while循环就退出了,消息循环也就终止了。

SendMessage是还也能跨应用程序发消息的,通过FindWindow找到对方应用程序的窗口句柄,发兩个多消息过去就行了,可能性兩个多应用程序间的内存是删剪独立的,还也能了发指针,可能性要发数据,就用WM_COPYDATA。

第四轮面试官:你选则吗?

只之后内核对象,就能用于应用程序间的同步,内核对象不属于任何应用程序,由系统管理。

模态窗口着实之后在当前窗口调用系统的消息循环,响应用户的操作,将相关的消息发送到对应的窗口。将父窗口设为不可用,即还也能了响应用户的操作,在关闭当前窗口的之后,将父窗口设为可用,并退出消息循环。

第四轮面试官:可能性加班严重你来吗?

1:volatile

 DispatchMessage(&msg); //调用WinProc,将msg的各项信息传递给WinProc

}

5:句柄是哪些?

5:事件对象

可能性窗口更新的区域不为空,UpdateWindow函数通过发送兩个多WM_PAINT消息来更新指定窗口的客户区。函数绕过应用应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗口过程,可能性更新区域为空,则不发送消息。

8:你了解沙箱,UAC相关的知识吗?

6:Windows实现应用程序间同步哪些办法?实现应用程序间同步又哪些办法?读写锁的实现原理是哪些?

SendMessage:将兩个多消息发送到指定窗口的窗口过程中,等窗口过程执行完了再返回;

3:Windows是为甚实现窗口刷新的?为甚实现窗口的立即刷新?

3:旋转锁

接下来是第五轮面试……我之后内内外部转岗啊,面了五轮整整兩个小时,最后哥还是从了并也有部门。

消息的之后,发送应用程序会先挂起,由系统应用程序将消息发送到接收应用程序的那我队列中,并设置QS_SENDMESSAGE标志,当系统检测到并也有标志后,就会正确处理并也有队列的消息,当并也有消息被正确处理之后,调用SendMessage的应用程序就会被唤醒,就继续执行。

句柄之后兩个多整数,Windows为每兩个多控件指定了兩个多唯一的整数,通过并也有整数和相关函数操作控件。

Update Region不为空时,系统就会自动产生WM_PAINT消息,通过InvalidateRect和InvalidateRgn可把指定的区域加到窗口的Update Region中,通过正确处理WM_PAINT消息来实现窗口的刷新。 系统为哪些沒有调用Invalidate时发送WM_PAINT消息呢?又为哪些还也能了等应用消息队列为空时才发送WM_PAINT消息呢?这是可能性系统把在窗口中的绘制操作当作并也有低优先级的操作,于是尽可能性地推后做。不过那我也促使提高绘制的速率:兩个多WM_PAINT消息之间通过InvalidateRect和InvaliateRgn使之失效的区域就会被累加起来,但会 在兩个多WM_PAINT消息中一次得到更新,不仅能正确处理多次重复地更新同一区域,也优化了应用的更新操作。

可能性是是因为窗口崩溃,模态窗口显示的之后,除了父窗口不可用之外,一点的窗口也有可用的,可能性须要的兩个多资源在别的地方被释放了,而在模态窗口中使用的之后,这麼判断可能性就会是是因为崩溃。

兩个多应用程序互相SendMessage可能性会是是因为死锁,A应用程序锁住兩个多资源,向B应用程序发兩个多消息,A应用程序挂起,这时可能性B应用程序在正确处理A应用程序的消息须要A应用程序锁住的资源,A可能性发给B的消息还这麼正确处理完就兩个劲还也能了返回,锁也这麼打开,B应用程序又用不了,消息也就正确处理不完,结果就死锁了。

本文转自啊汉博客园博客,原文链接:http://www.cnblogs.com/hlxs/p/4091623.html

第四轮面试官:我这麼什么的问题了,你还哪些要问的吗?

阿汉:不来

6:信号量

猜你喜欢

在.NetCore中使用Myrmec检测文件真实格式

github地址:https://github.com/rocketRobin/myrmecnuget地址:https://www.nuget.org/packages/Myr

2020-03-22

目前哪些手机可以无线充电怎么无线充电

三星S10Plus华为Mate20Pro无线充电,是近一两年来在旗舰手机上经常出显的俩个 多功能,当然,目前来看,搭载无线充电功能的手机还不过多,我来推荐几款。华为Mate2

2020-03-22

阿里云CDN直播架构与双11晚会直播实战

电商直播的最佳实践猫晚流量再创记录,阿里云直播方案护航优酷21150万用户体验【云栖精选11月刊】揭秘双11肩头的互联网技术超级工程阿里云跨界商务媒体合作芒果TV看明星也用云计

2020-03-21

国美 京东 天猫 苏宁在哪个买电器便宜靠谱?

下载百度知道APP,抢鲜体验至于价格展开完整性使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。不得劲推荐为你推荐:基本差太满换一换你对这种回答的评价是

2020-03-21

2019年即将进入尾声,你的2020年最想做什么事?

3、找到俩个 多多 可不还要长期发展的行业并现在结速投资。不怎么推荐展开全部8、希望我的第7条可不还要实现。5、希望我中间的1234条都能实现。使用百度知道APP,立即抢鲜

2020-03-21