CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

面试题目 VC(c++)

楼主AntonlioX(做人要厚道)2005-10-26 12:43:37 在 VC/MFC / 基础类 提问

1     dll,lib处理实现     .lib文件中包含什么?   dll在内存中被多个函数共享,有几个拷贝?  
  2     template<double>,template<int>等编译的时候作为几个类  
  3     struct   ,class的区别,联系  
  4     MAcro,inline区别,实现.编译运行时  
  5     进程与线程区别  
  6     hdc-cdc区别联系  
  7       model   dialog,modeless   dialog,从创建到销毁全过程具体描述  
  8     各个线程new的内存,别的线程是否可以使用?  
  9       RUNTIME_CLASS,   is   what??  
  问题点数:100、回复次数:50Top

1 楼orbit(走了走了)回复于 2005-10-26 12:49:43 得分 2

不会还是和大家分享?Top

2 楼teli_eurydice(哭泣的仙人掌。。。。)回复于 2005-10-26 12:53:27 得分 2

upTop

3 楼i_noname(晚九朝五)回复于 2005-10-26 13:00:07 得分 2

这个面试看来我可以通过了Top

4 楼AntonlioX(做人要厚道)回复于 2005-10-26 13:02:48 得分 0

shareTop

5 楼AntonlioX(做人要厚道)回复于 2005-10-26 13:05:33 得分 0

是我前面在网上看到的autodesk面试题Top

6 楼AntonlioX(做人要厚道)回复于 2005-10-26 13:05:47 得分 0

赫赫Top

7 楼Jarrylogin(正经事情我不会,歪门邪道样样行)回复于 2005-10-26 13:25:17 得分 2

UP,   汗,寻求答案Top

8 楼kenskens(☆☆☆☆☆☆)回复于 2005-10-26 13:29:43 得分 2

只会一半,唉,看来还要努力!Top

9 楼lichaowang()回复于 2005-10-26 13:35:22 得分 2

呵呵,楼主最好把答案也列出来。有些概念比较模糊Top

10 楼angel_rabbit(zj_rabbit)回复于 2005-10-26 13:39:33 得分 2

studying..Top

11 楼pomelowu(羽战士)回复于 2005-10-26 13:44:23 得分 2

:)还是比较基础的Top

12 楼holyeagle(一杯清茶)回复于 2005-10-26 14:26:50 得分 10

1     dll,lib处理实现     .lib文件中包含什么?   dll在内存中被多个函数共享,有几个拷贝?  
  简单说,lib里面只有符号,dll里面才是具体的实现.dll在内存中被函数共享有几个拷贝??比较奇怪的问题,dll是在进程空间,所以每个进程有一份dll的copy,可以用GetModuleHandle去判断是否dll已经被load进进程地址空间.  
  2     template<double>,template<int>等编译的时候作为几个类  
  如果没有记错,是两个.模板都是编译时产生代码,所以会出现两个类.如果程序中的类型较多,就会展开比较大的代码,但是速度会快.  
  3     struct   ,class的区别,联系  
  只是成员变量或者函数默认的属性,struct默认是public,class是private  
  4     MAcro,inline区别,实现.编译运行时  
  准确来说,内联要更加安全.使用内联,参数需要精确地进行一次求值,参数类型被检查,并且被正确地进行必要的转换,避免了宏的一些问题.也方便调试.简单说,内联更加像函数.  
  5     进程与线程区别  
  很多书上都有介绍,一般来说,进程是不活泼的,是线程的容器;线程是在进程里面创建的,执行代码的.  
  6     hdc-cdc区别联系  
  cdc是一块空间,保存一定的数据,hdc是放在进程的句柄表里面,用来标示所代表的cdc的  
  7       model   dialog,modeless   dialog,从创建到销毁全过程具体描述  
  模式的是CDialog的DoModal调用CreateIndirect创建对话框,然后通过一个循环自己处理消息的分发;无模式的是通过create创建,类似于一般窗口  
  8     各个线程new的内存,别的线程是否可以使用?  
  不可以,因为线程new的空间是在自己的进程空间,别的进程是得不到的.  
  9       RUNTIME_CLASS,   is   what??  
  建议看一下深入浅出mfc  
   
  有些地方只是自己的想法,楼下继续,呵呵  
  Top

13 楼nkwesley(江南丝竹)回复于 2005-10-26 14:42:12 得分 2

看看,研究下Top

14 楼yjjbmk(天涯浪人(软件设计师))回复于 2005-10-26 14:43:56 得分 3

问:  
  1.   .lib文件中包含什么?dll在内存中被多个函数共享,有几个拷贝?(是否只有一个拷贝?)  
  2。template<double>,template<int>等编译的时候作为几个类(是否作为1个类?)  
  4.   MAcro,inline区别,实现.编译运行时?  
  8.各个线程new的内存,别的线程是否可以使用?  
  这几个问题没有把握,或者不会望各位大侠指点。  
   
  Top

15 楼pomelowu(羽战士)回复于 2005-10-26 15:26:53 得分 10

8     各个线程new的内存,别的线程是否可以使用?  
  不可以,因为线程new的空间是在自己的进程空间,别的进程是得不到的.  
   
  清茶把题目审错了。呵呵~Top

16 楼xqk(夏乾坤)回复于 2005-10-26 15:50:34 得分 0

一杯清茶,在下对您的景仰就像滔滔江水,连绵不绝!Top

17 楼AntonlioX(做人要厚道)回复于 2005-10-26 15:54:20 得分 0

漏贴了一题  
  10   How   to   do     "   Multiple   view   with   one   doc?   Multiple   doc   with   one   view???"Top

18 楼xiao_xiao_zi(笑小子)回复于 2005-10-26 16:08:11 得分 1

面试应届毕业生的吧?  
  都是基础题和概念题Top

19 楼phoenix96_2000(Arcrest)回复于 2005-10-26 16:09:25 得分 9

1.   这里讲得很详细http://www.microsoft.com/china/community/program/originalarticles/techdoc/dll.mspx  
   
  5     进程与线程区别:   最主要:   线程是执行代码的,CPU调度的单元,进程是个资源的容器  
   
  8.   同一进程内的线程之间共享进程的地址空间和所有资源Top

20 楼kulongus(公司会计说:零钱太少了,你还是半年领一次工资吧)回复于 2005-10-26 16:37:34 得分 2

一杯清茶,在下对您的景仰就像滔滔江水,连绵不绝!Top

21 楼nZAI(喃样)回复于 2005-10-26 16:47:17 得分 6

我感觉很多面试题目的确有模棱两可的解释,我就遇到过,不过我想这可能也是用人单位的一种策略吧,只有答案不一致才不容易抄袭,更容易区分吧Top

22 楼wangrb(阿布)回复于 2005-10-26 16:51:27 得分 1

要学习东西还很多Top

23 楼Featured(我握着爱情的门票静静排队……)回复于 2005-10-26 16:55:48 得分 10

清茶讲得挺好挺全了,但我想探讨两点:  
  1   dll并不是拷贝到每一个调用者的进程空间,而是只在内存中保留一份拷贝。通过引用计数的方式控制其卸载。  
  但是dll中的全局变量是要被拷贝到每一个调用者的进程空间的  
  2   对于第八题,new的内存是在系统中的,虽然它会随着创建进程的消失而被自动回收,但是,还是可以将指针作为参数传递给别的线程或者进程,虽然这种做法不被推荐使用。  
  但是,如果如本题所说,在同一个进程种的线程,是否可以传递堆的指针,我觉得是可以的,而且没有风险。  
  Top

24 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-10-26 17:12:46 得分 2

清茶好久不见了啊Top

25 楼jiang_xiao(原来秋天)回复于 2005-10-26 21:57:10 得分 0

markTop

26 楼advancedchan(try)回复于 2005-10-27 09:51:08 得分 3

9:RUNTIME_CLASS   returns   a   pointer   to   a   CRuntimeClass   structure   for   the   class   specified   by   class_name.   Only   CObject-derived   classes   declared   with   DECLARE_DYNAMIC,   DECLARE_DYNCREATE,   or   DECLARE_SERIAL   will   return   pointers   to   a   CRuntimeClass   structure.  
   
   
  Top

27 楼holyeagle(一杯清茶)回复于 2005-10-27 09:57:13 得分 5

呵呵,那个new看错题目了,惯性思维,嘿嘿.  
   
  to   Featured,  
  thanks   你的提醒,呵呵.关于dll,代码是放到了RAM中,其他进程都可以通过静态或者动态映射到其地址空间,共享该分页,任何对该dll的使用会引起计数器加一.之前和hookapi有点混了.  
   
  那个指针传递给别的进程,好像不能直接用.必须分配的空间是在别的进程,这样的指针在别的空间才用效,好像要用到VirtualAllocEx分配虚拟空间,对于进程间的WM_SetText这类消息,指针里面的数据也是被复制到了对应进程的空间才有效,呵呵.举个例子,a空间里面的0x12345678标示字符串"ABC",但是b空间0x12345678也许是"efg",所以a给b里面传这个指针是不能用的.但是同一个进程里面的线程是可以使用别的线程分配的空间的.  
   
  对于第十个问题,是Doc/view框架里面的,可以通过设定view和doc之间的映射,那个单文档多视图做过,不过单视图多文档没有做过,可能需要动态调整各个文档在视图里面的位置吧,没有实践就没有发言权,就此打住,哈哈.  
   
  我是经常来的,不过只是在费技术里面灌水,哈哈...有点小无耻,bs一下自己  
   
  Top

28 楼gao_ming77(小明)回复于 2005-10-27 10:07:09 得分 0

8回答错了。对于在堆上和全局栈上分配的内存是所有线程共享的,当然都能访问啦。  
  6也不是太准确。hdc是windows分配的GDI对象的句柄,属于内核对象。而CDC只是MFC的类,是对windows内核的封装。CDC还提供了一系列方便的函数。Top

29 楼yyxc306()回复于 2005-10-27 10:17:03 得分 0

nan  
  Top

30 楼Aspist(边城浪子)回复于 2005-10-27 10:29:25 得分 0

简单说,lib里面只有符号,dll里面才是具体的实现.  
  -----------------------------------------------  
  这句话也有问题,lib有两种,你说的是其中的一种。还有一种静态连接的Lib,里面既有符号也有实现。传统的c/c++里面的运行时库都是这种情况。Top

31 楼mywand(简单生活)回复于 2005-10-27 10:55:16 得分 0

呵呵,不错,有收获!Top

32 楼yayaniuniu502(老唐)回复于 2005-10-27 11:13:42 得分 0

好东西Top

33 楼holyeagle(一杯清茶)回复于 2005-10-27 11:49:37 得分 0

GDI对象不属于内核对象,cdc是对显示设备的属性的封装,内核对象可以存在的比创建他的进程时间长,但是GDI对象好像不(这点有点忘了),GDI对象和内核对象的储存地方也不一样.  
   
  对了静态lib,其实在连接的时候,已经把lib里面的代码插入到了调用程序里面,所以,静态连接的文件较大.CRT库应该不一样,它的dll已经提供给了系统,这点我还要再去学习,呵呵.吃饭了Top

34 楼hdqqq(小西瓜)回复于 2005-10-27 13:16:19 得分 0

都一颗星了,这种问题应该不会很难吧.   看来,我也可以去autodesk   了.Top

35 楼pottichu(拉拉是头猪)回复于 2005-10-27 13:22:58 得分 0

只会一半。回去继续努力。Top

36 楼Featured(我握着爱情的门票静静排队……)回复于 2005-10-27 13:28:29 得分 0

那个指针传递给别的进程,好像不能直接用.必须分配的空间是在别的进程,这样的指针在别的空间才用效,好像要用到VirtualAllocEx分配虚拟空间,对于进程间的WM_SetText这类消息,指针里面的数据也是被复制到了对应进程的空间才有效,呵呵.举个例子,a空间里面的0x12345678标示字符串"ABC",但是b空间0x12345678也许是"efg",所以a给b里面传这个指针是不能用的.但是同一个进程里面的线程是可以使用别的线程分配的空间的.  
  ===  
  正解Top

37 楼Featured(我握着爱情的门票静静排队……)回复于 2005-10-27 13:40:35 得分 0

回答这类问题,第一个回答的难,后面的人挑刺和完善相对简单Top

38 楼wzhystar(毛毛雨)回复于 2005-10-27 14:23:29 得分 0

清茶好厉害!  
  顶!  
  学到不少知识!  
  Top

39 楼holyeagle(一杯清茶)回复于 2005-10-27 15:31:03 得分 7

嘿嘿,大家高抬我来,我也是一知半解,差的好远,对这些看上去很基础的东西理解的模棱两可,模模糊糊,其实这还是基本功太差.  
   
  一起学习,在批判中学习会更快,在教训里面提高,哈哈.  
   
  后面大家继续完善,观看中....  
  Top

40 楼vagrantman(流浪者)回复于 2005-10-27 15:40:06 得分 0

我也过来学习学习Top

41 楼WuOu(天堂*蓝珀湖*仰音*诚彦)回复于 2005-10-27 17:06:09 得分 0

MarkTop

42 楼waterczh(三十年河东三十年河西,我TMD是掉到河里了)回复于 2005-10-27 21:20:10 得分 1

我怎么连答案都看的不是很懂  
  markTop

43 楼42252343(大跃进的猪)回复于 2005-10-27 22:33:18 得分 1

看来   holyeagle(一杯清茶)   对Win32   sdk和MFC还不是很熟悉啊   呵呵Top

44 楼wenyongjie(我们的目标是:没有蛀牙!!)回复于 2005-10-27 23:17:55 得分 1

看来俺   要从基础学起Top

45 楼AntonlioX(做人要厚道)回复于 2005-10-31 22:35:15 得分 0

upTop

46 楼J3ames(挪威的森林)回复于 2005-10-31 23:00:27 得分 0

真是感受良多啊,以后每天都来看看Top

47 楼freebird001(自由鸟)回复于 2005-11-03 13:41:03 得分 0

带星的水平就是高!Top

48 楼dragonfly001(I want to fly!)回复于 2005-11-03 13:46:09 得分 0

模糊中....:(Top

49 楼xqk(夏乾坤)回复于 2005-11-03 13:55:06 得分 0

呱唧呱唧Top

50 楼bobob(静思)回复于 2005-11-03 15:25:48 得分 10

那个指针传递给别的进程,好像不能直接用.必须分配的空间是在别的进程,这样的指针在别的空间才用效,好像要用到VirtualAllocEx分配虚拟空间,对于进程间的WM_SetText这类消息,指针里面的数据也是被复制到了对应进程的空间才有效,呵呵.举个例子,a空间里面的0x12345678标示字符串"ABC",但是b空间0x12345678也许是"efg",所以a给b里面传这个指针是不能用的.但是同一个进程里面的线程是可以使用别的线程分配的空间的.  
  ===========》  
  这个说的是进程间的概念,题目问的是线程。从技术角度讲,线程之间谁new的东西别的线程(必须属于同一个进程)都可以使用,甚至delete,但是不提倡delete不是自己new的东西。  
  羽战士已经提醒了,清茶把题目审错了~~呵呵  
   
  hdc-cdc区别联系  
  这个题目完全可以等同于hwnd和cwnd区别和联系。hxx就是xx的句柄,几乎所有的api都是针对句柄操作的;cxx就是把几乎所有关于hxx的api封装成一个类,方便使用而已。所以,从这个角度讲,有了hxx,一定能够构造cxx,但是反过来不行。  
   
  大家继续  
  Top

相关问题

  • VC面试题目??
  • 求各种 C/C++ 面试题目
  • 面试题目……
  • 面试题目
  • 面试题目
  • 面试题目
  • =========求.net(c#)面试可能会出的题目===========
  • 快来救我啊,面试题目全是 C++ 的。
  • 某公司面试的题目,请大家看看,谢谢!(C#)
  • 求:c(tcp/ip)领域开发的面试题目

关键词

  • 线程
  • 指针
  • 内存
  • 函数
  • 拷贝
  • 代码
  • 视图
  • 编译
  • 进程
  • 空间

得分解答快速导航

  • 帖主:AntonlioX
  • orbit
  • teli_eurydice
  • i_noname
  • Jarrylogin
  • kenskens
  • lichaowang
  • angel_rabbit
  • pomelowu
  • holyeagle
  • nkwesley
  • yjjbmk
  • pomelowu
  • xiao_xiao_zi
  • phoenix96_2000
  • kulongus
  • nZAI
  • wangrb
  • Featured
  • oyljerry
  • advancedchan
  • holyeagle
  • holyeagle
  • waterczh
  • 42252343
  • wenyongjie
  • bobob

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo