CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

开道比较难的面试题大家答?牛人来

楼主zjz800800((对不起,偶是卧底))2006-06-13 14:42:43 在 VC/MFC / 基础类 提问

1.   请解释各段代码的含义(能看懂多少就解释多少)  
  (*(void   (*))0)();  
  typedef   char   (*(*fn)(char   (*)[],char   (*)(char)))[]; 问题点数:0、回复次数:42Top

1 楼zjz800800((对不起,偶是卧底))回复于 2006-06-13 15:15:49 得分 0

看来确是有难度Top

2 楼KeSummer([IN]LPVOID YourLove,[OUT]LPVOID MyLove)回复于 2006-06-13 15:52:14 得分 0

汗~~一点也不懂,好象是函数定义..Top

3 楼honker110(honker)回复于 2006-06-13 16:22:09 得分 0

第二个fn应该是一个函数指针数组吧,函数返回值是char   *,第一个参数是char*的数组,也就是char**吧?第二个参数还是个函数指针,返回值是char,参数是char,不知道说得对不对,哪位牛人来看一下Top

4 楼cpio(备注)回复于 2006-06-13 16:25:51 得分 0

 
  有什么意思啊,写这种代码  
   
  Top

5 楼honker110(honker)回复于 2006-06-13 16:25:54 得分 0

第一个似乎是函数调用,但我在VC里面编译不过啊Top

6 楼CUG122032(烫烫烫烫烫烫?烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫?烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫)回复于 2006-06-13 16:33:23 得分 0

有意思吗>?Top

7 楼liu_qi2006()回复于 2006-06-13 16:33:40 得分 0

这公司是搞语言的?  
   
  出这样的题有P用?   谁编码这样写?  
   
  面试的时候   直接   说   我不会这样写   就Ok了Top

8 楼zjz800800((对不起,偶是卧底))回复于 2006-06-13 16:40:53 得分 0

楼上的兄弟:  
  这个你真的说错了,这种题力度很深,特别是图形图像方面的算法等等,dll还有co相互调用等等,经常用到的这些相同的概念,本人有这种感觉,自认为基础很好,但是遇到这些也感觉概念不清,这其实是基本概念的综合运用。Top

9 楼zjz800800((对不起,偶是卧底))回复于 2006-06-13 16:42:33 得分 0

楼上的兄弟:  
  这个你真的说错了,这种题力度很深,特别是图形图像方面的算法等等,dll还有com相互调用等等,经常用到的这些相同的概念,本人有这种感觉,自认为基础很好,但是遇到这些也感觉概念不清,这其实是基本概念的综合运用.Top

10 楼aa3000(杀手K)回复于 2006-06-13 16:44:07 得分 0

不懂,看上去第一段代码是不能在VC上编译通过的,感觉是纯C的。但毫无意义Top

11 楼daisy122(猫咪)回复于 2006-06-13 16:44:46 得分 0

头晕。兼没分。还是表做了,路过。Top

12 楼zjz800800((对不起,偶是卧底))回复于 2006-06-13 16:54:09 得分 0

这两段代码都可以在vc环境下运行,命题组说已经测试过了,其中第一段代码不能单独运行,只让解释含义Top

13 楼zjz800800((对不起,偶是卧底))回复于 2006-06-13 17:02:53 得分 0

给大家来个抛砖引玉,第一个语句是个函数,返回一个地址为零的函数,我这样认为的,希望大家发表自己的见解Top

14 楼ahao(天·狼·星星)回复于 2006-06-13 17:04:00 得分 0

用左(or右?忘了)螺旋法则解决,具体怎么做,忘了。Top

15 楼apollon_hhy(一天五十页!)回复于 2006-06-13 17:14:45 得分 0

第一个是   一个函数指针   感觉0是不是LZ   的笔误呢?楼上的   返回地址为0的函数,内存中没有地址0吧。  
   
  第二了定义了一个函数指针数组   。  
   
  Top

16 楼zjz800800((对不起,偶是卧底))回复于 2006-06-13 17:26:53 得分 0

不是笔误,这是我们单位的面试题,放了半年了,反正没人答出来过,我当时笔试的时候别的题答得可以才进来的,当时我也没打出来,感觉遗憾Top

17 楼Maconel(Maconel)回复于 2006-06-13 17:41:05 得分 0

第一个编译通不过,估计是编译器不一样,但是稍微改一下就可以了(我想我改的应该符合出题人的意思):  
  (*(void   (*)())0)();  
  这句的意思是这样:  
  typedef   void   (*FN)();//定义一个函数指针类型,这是很常见的  
  FN   pfn   =   (fn)0;//把0,也就是NULL,强制转为FN型  
  (*pfn)();//调用pfn,也可以写成pfn();Top

18 楼ahao(天·狼·星星)回复于 2006-06-13 17:45:17 得分 0

好题目,如果我出面试题,可以这样,  
  typedef   char   (*(*fn)(char   (*(*fn)(char   (*)[],   char   (*)(char   (*(*fn)(char   (*)[],char   *[],   char   (*)(char,   char   (*(*fn)(char   (*(*fn)(char   (*)[],   char   (*)(char   (*(*fn)(char   (*)[],char   *[],   char   (*)(char)))[])))[],char   (*)[],char   *[],   char   (*)(char)))[])))[])))[],char   (*)[],char   *[],   char   (*)(char)))[];  
  估计放一万年也破译不出来Top

19 楼koko_han(霜之哀伤)回复于 2006-06-13 19:58:17 得分 0

这个公司是研究编译原理的吧?除非哥们感兴趣,否则千万不要去.Top

20 楼aming112(测试并开发着)回复于 2006-06-13 23:15:06 得分 0

知道编程规范的最重要的一条就是尽量写最简单的代码,。  
  出这样的题的人根本就没有得到编程精髓。Top

21 楼zjz800800((对不起,偶是卧底))回复于 2006-06-14 01:54:43 得分 0

楼上的,年轻人还是虚心点的好,写代码当然是越简单越好,地球人都知道,但是有的东西不可能简单的,你光写简单的,不写复杂的,你不读别人的代码了,你不使用别人现有已开发好的库了,你用过stl范式编成吗   ?经常写模板的特化吗?用过boost库吗?ssl吗?ace吗?这些开源已经写好了,直接调用就行了,但没有好的c++功底你读都读不懂还改写,改写出来一堆垃圾谁受得了,有的东西不是简简单单说个简单就简单,认识不了复杂的你就写不了简单的,你不认识复杂的就写简单的那肯定你太简单了,无语.命题组组长是计算机系的研究生导师,和我们一起做项目,vc代码写的相当规范,现在40岁左右了还一直在写代码,我比较佩服(一是水平二是一直能坚持写代码),水平也相当高,编程规范肯定比你看得多,编程精髓掌握的如何,我想大家心里都有数.Top

22 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2006-06-14 01:56:25 得分 0

难吗?只觉得出题人很恶心。白痴级别  
   
   
  typedef   char   (*(*fn)(char   (*)[],char   (*)(char)))[];  
   
   
  分步分析,先来看三个类别:  
   
  //   将一个指向不定元素个数的char类型数组的指针声明为TYPE_RETURN类型  
  typedef   char   (*TYPE_RETURN)[];  
  //   将一个指向不定元素个数的char类型数组的指针声明为TYPE_PARAM1类型  
  typedef   char   (*TYPE_PARAM1)[];  
  //   将一个函数的指针声明为TYPE_PARAM2类型  
  //   这个函数的参数只有一个,类型是char;有返回值,其类型也是char  
  typedef   char   (*TYPE_PARAM2)(char);  
   
  //   实现一个TYPE_PARAM2类型的函数  
  char   ParamFunc(   char   )  
  {  
  return   0;  
  }  
   
  //   fn实际是一个函数指针的类型声明,有两个参数。  
  //   第一个参数的类型TYPE_PARAM1,第二个参数的类型是TYPE_PARAM2  
  //   它有返回值,其类型就是TYPE_RETURN。下面拆开来看一下  
  typedef   char   (*     //   char表示返回值的基本数据类型,*表示返回值是个指针类型  
  (*fn)   //   *表示声明了一个指针,fn为声明的名称  
  (   //   开始参数表  
  char   (*)[],   //   参数1,char为基本数据类型,*表示指针,[]表示数组,即指向数组的指针  
  char   (*)(char)   //   参数2,由于后一个char带有圆括号,因此这是一个函数指针类型  
  //   头一个char为返回值类型,*表示函数指针,后一个char为此函数唯一的一个参数的类型  
  )//   参数表结束  
  )[];//   表示一个数据,圆括号优先级高,因此这是一个指响数组的指针  
   
   
  //   下面实现一个这样的函数  
  TYPE_RETURN   MainFunc(   TYPE_PARAM1   p1,   TYPE_PARAM2   p2   )  
  {  
  TYPE_RETURN   b   =   0;  
  return   b;  
  }  
   
  //   做一下测试  
  void   Test(   char   (*p)[]   )   //   参数为一个指向不定元素的char型数组的指针  
  {  
  fn   a   =   MainFunc;   //   测试类型是否匹配  
  TYPE_RETURN   ret   =   a(   p,   ParamFunc   );   //   测试参数分析是否正确  
  Test(   ret   );   //   测试返回值分析是否正确  
  }  
  //   测试成功  
   
   
   
   
  太无聊了!垃圾人出垃圾题Top

23 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2006-06-14 02:06:05 得分 0

第一题有毛病,编译器都解释不了,让人解释个鸟啊  
  应该是(*(void(*)())0)();才对  
   
  将0强制转换一个无返回无参数的函数指针类型,并调用之。  
   
  能运行就鬼了。  
  Top

24 楼ahao(天·狼·星星)回复于 2006-06-14 02:09:42 得分 0

楼主真是程序员中的孔乙己了,这种东西本来是编译器的事情,你偏要用脑袋去想,自己还觉得挺厉害的,告诉你,要分析这个,完全是体力活,方法我上面已经说了,右左原则,或者叫左手螺旋法则。  
  写成这样,你看起来累不累?你就不能分成几个typedef,写清楚些?Top

25 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2006-06-14 02:12:32 得分 0

奉劝楼主一句,知道一大堆C++扩展库并不见得水平有多高。  
   
  任何时间任何地点任何人都没有必要把函数指导针这样子恶搞。  
   
  如果真的很闲,不如研究一下设计模式,真的牛的话用C++设计一套大型数据库的架构,这才是体现C++水平的真正方式。Top

26 楼BinaryTreeEx(狂徒(完全抵制日货))回复于 2006-06-14 07:24:59 得分 0

to   zjz800800((对不起,偶是卧底))    
  从你回帖的态度来看很是得意地,不要别人回了一个帖子就说是年轻人,你是如  
  何知道的?我不否认对语法掌握尽可能多一些或者深一些是好处的。但是一味专  
  进去有什么意义?你说图形图像程序方面可能会用到,或者stl之类也会用到,这  
  个我不知道,因为我没有用过,但是如果有人不明白问一下知道的人就可以了。  
  何必费劲自己琢磨?就像语法错误编译一下就可以了,让编译器去找。而读代码查  
  错能力可以慢慢培养,这个不是一天两天可以有的。  
   
  别人写的东西确实要看,但是现在写程序的人也会考虑别人会看我的程序,如果有  
  谁的代码写成这样,那又有多少去看意义。编译器对代码的理解能力肯定比人高,  
  代码当然简单易懂为好,个别地方追求效率的可以考虑从算法入手,当然编程技巧  
  也是要的。只是希望搂住不要太自以为事,把这种题目说的如何如何,做不出你这  
  道题的就不是优秀程序员了?  
   
  再多说一句,就算你要考的内容很重要,但是你以这种形式来考实在是浪费了内容。  
  你就没有考虑一下以一种人人都会作,只有你要的那个人才才能做对形式来考么?Top

27 楼nickgg(匿名哥哥)回复于 2006-06-14 08:20:48 得分 0

(*(void(*)())0)();  
   
  单片机的C软复位用的就是它!!!Top

28 楼templarzq(原谅我这一生不羁放纵爱自由,也会怕有一天会跌倒)回复于 2006-06-14 09:22:48 得分 0

楼上的能否解释一下单片机软复位的意义。。Top

29 楼yjhgmyyamd(优优人)回复于 2006-06-14 09:27:45 得分 0

指针?  
   
  以指针的地址定义数据组吗?Top

30 楼xdkui(xdkui)回复于 2006-06-14 09:32:41 得分 0

第一个感觉倒是很好理解,相当于  
  mov   eax,[0]  
  call   eax   吧  
  不知道对否  
   
  至于nickgg说的单片机软复位  
  51是上电是从程序地址0开始执行,应该相当于  
  mov   eax,0  
  call   eax  
  感觉还是不同的吧?Top

31 楼xiaoheng_wh(XH)回复于 2006-06-14 09:53:13 得分 0

我比较关心能做出这道题,能给出多少薪水。  
  哈哈  
   
  我还从没有见到面试问这种问题的,除了无聊的考试。Top

32 楼zjz800800((对不起,偶是卧底))回复于 2006-06-14 10:03:17 得分 0

我发现这里的星星倒是蛮喜欢扎堆喜欢搞人生攻击,大家都觉得这题目无聊那就10分钟内结贴,不浪费大家宝贵时间了Top

33 楼zjz800800((对不起,偶是卧底))回复于 2006-06-14 10:15:38 得分 0

怎么结不了贴子Top

34 楼2004v2004(980)回复于 2006-06-14 10:50:40 得分 0

我经历的面试也有这样的情况,  
  我说说我的辽宁沈阳经历:  
  2004来到沈阳,有一个做食堂售饭系统的(名字具体忘记了),他需要是pb   的程序员,当时我不会pb   ,我会delphi   和vb,当时他的招聘也要vb的,我就添了一个表,  
  1:其中有个适用期待遇(我写1500,大家可能说少,也有说多的,但是当时---现在沈阳的也就是800-2000左右,好点的也就是3000以内吧(使用vb、delphi、asp、.net、vc)这种语言的,我说的是处于90%的人说的,可能有人很高,至少我认识的圈子套圈子没有几个超过2500的也没有3000的)抛开公务员(国家统计的)至少我认为我的比较接近现实。  
   
  结果连个面试通知都没有,过了两个星期,我当时已经找到一个了,不是很满意,骑马找马吧,我又去了人才市场,看到他还招聘vb的人员写工资2000。我又添一个表(试用期待遇     面仪,我就看这个公司什么态度,我猜测能有面试机会,因为我没有写价格),结果第二天就给消息了,我去看看,结果出了一份考卷,类似咱们上学的时候考题(我记忆中有   什么是进程?什么是线程?他们的区别,还有写pb   的术语,什么数据窗口了,等吧     时间长了我也忘记了,大约有6页)我看了看题,写个名字就走了Top

35 楼zjz800800((对不起,偶是卧底))回复于 2006-06-14 11:22:39 得分 0

很多公司的笔试我也非常的讨厌,其实只要技术人员面谈一下就可以摸清楚应聘者的水平到底有多高,笔试是最差劲的,因为现在开发东西都可以查相关源代码,但笔试的时候什么也不行,加如一条语句忘了就写不出程序了,但其实这对一个优秀的开发人员来说是多么的不重要,只要查找一下msdn就ok了,但现在笔试是种社会产物,无语Top

36 楼badboy19800808(我是大飞猪他爹!!!)回复于 2006-06-14 12:49:01 得分 0

看不懂,汗!!!Top

37 楼kinzz()回复于 2006-06-14 15:34:14 得分 0

nickgg(匿名哥哥)说得不错哈,一般单片机把代码入口地址放在0地址  
  (*(void   (*))0)();   先把0转换成地址(void   (*))0,   然后(*(void   (*))0)取0地址的值,再把这个值做函数地址进行函数调用,就是(*(void   (*))0)();Top

38 楼kinzz()回复于 2006-06-14 15:49:30 得分 0

typedef   char   (*(*fn)(char   (*)[],char   (*)(char)))[];   应该是定义了一个叫fn的指针数组类型,这些指针是指向函数的指针的指针,这个函数是char   fn(char   (*)[],char   (*)(char));第一个参数是char的指针数组,第二个参数又是一个函数指针。Top

39 楼wubaowang(Knowledge is power)回复于 2006-06-14 16:06:27 得分 0

无语Top

40 楼haodaniu(大牛)回复于 2006-06-14 17:06:01 得分 0

还是kinzz分析得对啊Top

41 楼quanyy(天堂电影院)回复于 2006-06-14 17:37:34 得分 0

ahao(天·狼·星星)   (   )   信誉:96     2006-6-14   2:09:42     得分:   0      
     
     
         
  楼主真是程序员中的孔乙己了,这种东西本来是编译器的事情,你偏要用脑袋去想,自己还觉得挺厉害的,告诉你,要分析这个,完全是体力活,方法我上面已经说了,右左原则,或者叫左手螺旋法则。  
  写成这样,你看起来累不累?你就不能分成几个typedef,写清楚些?  
   
       
     
  ----------------------------------------------------------  
  支持,楼主你在研究茴香豆的茴有几种写法啊Top

42 楼zjz800800((对不起,偶是卧底))回复于 2006-06-15 16:46:50 得分 0

to   quanyy(quanyy)   (   )   信誉:92    
   
  我想研究你妈是不是个垃圾有几种拉法Top

相关问题

关键词

得分解答快速导航

  • 帖主:zjz800800

相关链接

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

广告也精彩

反馈

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