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

通过慧通面试后写了一点总结,只把技术问题发上来……

楼主lufer(半个我)2005-12-03 03:00:43 在 C/C++ / C语言 提问

【写在前面】  
          不明白今年慧通为什么会招聘那么多本科生,不知道进入慧通后会做些什么。我在重庆读书,是大四计算机系的学生,和慧通签了约,岗位是软件研发。欢迎情况和我相似   或者   已在慧通工作的人与我联系(QQ5648806,注明“慧通商务”),携手互助度过这段人生不确定的时期。下面的三个问题中,第一个是我至今没有解决的,欢迎高手赐教,谢谢!!!  
   
  【节选】  
          面试官先让我介绍一下自己的大概情况,我便把简历上早已写好的基本情况概括地说了一下,他听的时候不时翻看着我的简历,大概是感觉我说的内容都是简历上的重复,便打断了我的介绍,开始就着简历询问我做过的课程设计的情况,比如交通灯模拟系统用到了哪些芯片,等等。问完这些,他便开始出题目要我做。  
   
          第一个题目是二维数组和指针的问题,原题如下:  
          A[m][n]是一个二维数组,那么A、A[0]、&A、*A分别是什么意思?可以做必要的图示说明。  
          我没有把这个题目回答正确,解释A的时候便回答错了。我说A是一个指针的指针,他让我画图表示一下。我画了一个方阵;他说内存是线性的,我马上又改画了一个线性表格,将A[0]到A[m]的指向位置标明;他问我A在哪里,我犹豫的大概又一分多钟回答不出来,也不作声;他继续问道:难道指针就是一些很虚的东西随便指来指去吗,难道他们本身不在内存里吗,你们老师是这么教你的吗(大概意思)?我尴尬的说道:“我不知道。”我明白面试中不应该说这三个字,但这时我只能这样说了……他说:“你的第一个问题回答错了,后面的也没有办法问了。”然后,他又想要多给我一次机会似的,问我后面三个是什么意思,我说A[0]是指向数组首元素的指针,*A和A[0]意义完全相同,&A是三重指针。他没再说什么,这个题目就这样结束了。  
   
          第二个题目很简单:4G的内存有多少位地址。(32)  
   
          第三个题目要在纸上写一个算法,要写能运行的代码,算法如下:  
          P指向一个链表首结点,每个结点都有两个域,第一个域是int型数据,第二个域是指向此结点的后继的指针类型,要求从大到小对这个链表排序。  
          他让我坐到窗边的桌子旁去写,自己继续面试下一个人。虽然是很简单的一个题目,可是由于我当时仍很紧张,写一个函数的开头好几遍,都没有写正确(我的心理素质真的有待提高)。在他刚开始面试第三个人(我是第一个)不久,我就完成了,等到第三个人面试结束,我把代码拿给他看,代码如下:  
   
  typedef   sturct   Node  
  {  
  int data;  
  struct   Node   *next;  
  }Node;  
   
  Node   *ChainSort(   Node   *p   )  
  {  
  Node   head;  
  Node   *first,   *pre_first;  
  Node   *q,   *pre_q;  
  head.next   =   p;  
  for(   pre_first   =   &head,   first   =   p;  
            first->next;  
            pre_first   =   pre_first->next,   first   =   first->next   )  
          for(   pre_q   =   first,   q   =   first->next;  
  q;  
  pre_q   =   pre_q->next,   q   =   q->next   )  
                  if(   first->data   <   q->data   )  
                  {  
        Node   *tmp;  
        pre_first->next   =   q;  
        pre_q->next   =   first;  
        tmp   =   first->next;  
        first->next   =   q->next;  
        q->next   =   tmp;  
  }  
  return   head.next;  
  }  
          他大体问了一下我的思路,又随便指了几处语句问了一下功能,最后说了一句:“你是我见过的做这个题目的学生里,定义变量最多的一个人。”我用无奈的笑容面对他,他又给了我一次机会说:“我给你限制一下条件,只准定义三个变量,你再重新做一遍。”我出去以后想到了“不交换结点,只交换其数据域内容”的思路,其实这个思路在第一次紧张地写代码时也有过,但我觉得不可能让我写这么简单的一个算法,必定要交换结点,所以才有了上面那些繁琐的代码。几分钟后修改完了,他还在面试一个学生,我就跟旁边的陌生人聊天。修改的代码如下:  
  void   ChainSort(   Node   *p   )  
  {  
  Node   *first,   *q;  
  int   tmp;  
  for(   first   =   p;   first->next;   first   =   first->next   )  
  for(   q   =   first->next;   q;   q   =   q->next   )  
  if(   first->data   <   q->data   )  
  {  
  tmp   =   first->data;  
  first->data   =   q->data;  
  q->data   =   tmp;  
  }  
  }  
          看来他对我做的修改挺满意,又继续问道能不能只用两个变量,我说可以把tmp变量去掉,他又问只用一个变量呢?我思考半分钟,回答“我不会”。当他好像是在给我写评语时,我想到一个递归的思路,便在纸上写起代码,他看到后问我是不是在写只用一个变量的程序,我说我正试图用递归看能不能实现,他笑着说不用写了,你回去再思考嘛。  
   
  【总结】  
          时至今日,我仍然没有写出只用一个变量对链表排序的程序,他的第一个二维数组的问题也没能回答。我请教了很多人,大家都没有确定的答案。只是同学写的一段程序运行的结果让我有点不解:  
  #include<iostream>  
  using   namespace   std;  
  void   main()  
  {   int   a[2][3]={1,2,3,4,5,6};  
      Cout   <<   &a         <<   endl;  
      Cout   <<   *a         <<   endl;  
      Cout   <<   a[0]   <<   endl;  
      Cout   <<   a           <<   endl;  
  }  
          按照我的理解,应该只有*a和a[0]的输出是相同的,但结果是这四个的输出都相同。我更加糊涂了……  
          这次面试给了我很大的打击,也让我认清了一些问题。  
          首先,没有回答出第一个问题,使我改变了以前“我对C语言本身很了解”的错误想法;  
          其次,我学过的算法没有在编译器中实现,不能算作学懂;  
          最后,写程序时应该尽可能使空间复杂度最小。  
          我知道在以后工作的日子里,我要学习的东西还有很多,这次面试使我隐约看到了公司和学校的不同,我原本以为在学校要比在公司学习更踏实一些,但现在我感到似乎在公司的具体工作中学习更为踏实,学校里的弄虚作假反而使原本的象牙塔变得甚为浮躁。我应该在日后工作中,多总结这种不同,在总结中刻苦学习,提高自己的工作能力。 问题点数:20、回复次数:73Top

1 楼cunsh(村少)回复于 2005-12-03 03:20:32 得分 0

人家问你的是A、A[0]、&A、*A分别是什么意思?  
  你回答  
    Cout   <<   &a         <<   endl;  
      Cout   <<   *a         <<   endl;  
      Cout   <<   a[0]   <<   endl;  
      Cout   <<   a           <<   endl;  
  是没有用的呀.  
  我想的是   A   和   &A是一样的.而a[0]和*A   是一样的.  
  Top

2 楼lufer(半个我)回复于 2005-12-03 03:38:33 得分 0

Cout   <<   &a         <<   endl;  
  Cout   <<   *a         <<   endl;  
  Cout   <<   a[0]   <<   endl;  
  Cout   <<   a           <<   endl;  
   
  这是面试结束后,别的同学跟我讨论时写的一段代码,不是我当时的回答。我当时彻底晕了,只觉得这个题不会,也忘了具体说了什么话……  
   
  上面这四行程序的输出都一样,说明A、A[0]、&A、*A都指向一个地方  
  我期待高手的指点……Top

3 楼manplus(魅力加加)回复于 2005-12-03 03:50:24 得分 0

markTop

4 楼qxzheng(萧萧雨歇)回复于 2005-12-03 06:17:35 得分 0

这些指针的意思有差别,但是他们指向的都是你那个2维数组所在的首地址,这个是没有区别的,所以你输出的会是同一个值。记得谭浩强那本c语言书上写得很清楚,就像你士兵军训的时候,比如同一个位置,连长站上去就代表指向整个连队,排长站上去指向整个排队。。。但是他们实际上所占位置是相同的。Top

5 楼cunsh(村少)回复于 2005-12-03 06:24:49 得分 0

你对这4个东西做sizeof   运算看看.Top

6 楼aimt(伤逝)回复于 2005-12-03 09:08:44 得分 0

a[m][n]这个二维数组可以拆分成m个一维数组,即a[0],a[1],...,a[m-1],每个一维数组又含有n个元素.下边是一些地址的表示形式:  
  &a:是二维数组a的首行首列元素的地址,相当于&a[0][0]  
  *a:与*(a+0)或a[0]等效,相当于一维数组a[0]   0号元素的地址;  
  a[0]:见*a  
  a:是二维数组名,也就是二维数组a的首行首列地址;Top

7 楼lufer(半个我)回复于 2005-12-04 07:37:02 得分 0

 
  =============================  
  #include<iostream>  
  using   namespace   std;  
  void   main()  
  {  
  int   a[2][3]={1,2,3,4,5,6};  
  cout<<   a         <<   ":"   <<   sizeof(   a         )   <<   endl;  
  cout<<   *a       <<   ":"   <<   sizeof(   *a       )   <<   endl;  
  cout<<   &a       <<   ":"   <<   sizeof(   &a       )   <<   endl;  
  cout<<   a[0]   <<   ":"   <<   sizeof(   a[0]   )   <<   endl;  
  cout<<   a[1]   <<   ":"   <<   sizeof(   a[1]   )   <<   endl;  
  }  
  =============================  
   
  程序如上时,结果如下:  
   
  =========  
  0012FF68:24  
  0012FF68:12  
  0012FF68:24  
  0012FF68:12  
  0012FF74:12  
  =========  
   
  cunsh(校友录怎么写?求求大家了?)   ,是你告诉我对四个指针做一下sizeof运算,你对这个结果有何见解呢???  
   
  哪位愿意详细地分析一下这个程序,并解释A、A[0]、&A、*A的含义及其间的异同呢?  
  Top

8 楼hell_wolf(浪花)回复于 2005-12-04 09:00:46 得分 0

我也在重庆读书:  
  我的理解是:他们的本质都是数组,不是指针  
  A       :A[2][3]二唯数组  
  A[0]:3个元数的一唯数组  
  &A     :A[2][3]的引用,只有在作为函数参数是才和A有小小的区别  
  *A     :3个元数的一唯数组同A[0]Top

9 楼ahhy(蓝色海洋)回复于 2005-12-04 09:04:21 得分 0

1,sizeof(   a   )   =   24,说明指针a,可以寻访的整个内存空间占了24字节,也就是整个二维数组所占内存空间。其实你再测一下a++所指的地址,就可以明白a是如何寻访内存了(是行指针)  
   
  2,其他都可以类似的测试出来,还是靠你自己了:)Top

10 楼wugf0990(心语如歌)回复于 2005-12-04 09:18:04 得分 0

帅,大家都来发面试题啊,给别人是个借鉴,给自己也是一个提高。真的很不错呢!喜欢这样的朋友,见一个顶一个:-)Top

11 楼liumangxiong(陈世奎)回复于 2005-12-04 10:46:44 得分 0

加入收藏Top

12 楼trroy0525()回复于 2005-12-04 10:55:26 得分 0

a存放的是数组的首个元素的地址,但是它表示指向的是整个数组   所以sizeof(a)=24  
  a[0],a[1]分别表示指向的是该二维数组的第一维和第二维,其中每维又是一个一维数组  
  所以sizeof(a[0])=12Top

13 楼ww09124(wangwei)回复于 2005-12-04 15:14:17 得分 0

我也签了做测试,上面的兄弟一个月给的是多少啊?  
  Top

14 楼fflush(stdin)回复于 2005-12-04 16:16:30 得分 0

A[m][n]是一个二维数组,那么A、A[0]、&A、*A分别是什么意思?  
   
  A   类型为int   (*)[n]的行指针,等价于&A[0],也就是指向二维数组中第一行的行指针  
  A[0]   二维数组中第一行的指针,类型是int   *  
  &A   等价于A,不过估计没人会这么写  
  *A   等价于A[0],因为A[0]也就是*(A+0),即*ATop

15 楼wklucky(一辈子的孤单)回复于 2005-12-04 16:51:53 得分 0

mark一下Top

16 楼lufer(半个我)回复于 2005-12-05 02:08:38 得分 0

感谢大家的回复,看了大家的帖子,我已经对这个问题有了进一步的了解,下个星期去一次书店翻一下相关的书籍,有个系统的认识以后再把关于这个问题的东西整理上来……  
   
  我签的是在成都工作,一个月2800的基本工资,好像是做测试工作,最近看了一个测试工程师的blog,感觉获益匪浅,推荐大家看看:  
  http://blog.csdn.net/xdxg/  
   
  去成都前先去深圳华为大学培训,好像是两个星期左右,谁经历过华为大学的培训,希望能给小弟介绍一下(我还是蛮期待这次培训的,听说是半军事化管理)。谢谢!!!Top

17 楼lujie84(啊米托佛)回复于 2005-12-05 15:37:37 得分 0

引用:a[m][n]这个二维数组可以拆分成m个一维数组,即a[0],a[1],...,a[m-1],每个一维数组又含有n个元素.下边是一些地址的表示形式:  
  &a:是二维数组a的首行首列元素的地址,相当于&a[0][0]  
  *a:与*(a+0)或a[0]等效,相当于一维数组a[0]   0号元素的地址;  
  a[0]:见*a  
  a:是二维数组名,也就是二维数组a的首行首列地址;  
   
    aimt(还说自己是高手……)    
  分析的很好啊!我要多多的学习学习。  
       
  Top

18 楼wljjacob(千百)回复于 2005-12-12 20:22:29 得分 0

A[m][n]是一个二维数组,那么A、A[0]、&A、*A分别是什么意思?  
   
  其实A,和A[0]都是一个指针,而且指针值也相同。A是指向整个二维数组,A[0]是指向第一行。&A就是存放这个指针值的地址。*A嘛,就是A[0]。  
   
  楼主,我加你QQ。Top

19 楼wljjacob(千百)回复于 2005-12-12 20:33:29 得分 0

仔细看了一下上面各位的灰铁,还是fflush(stdin)说得最有理。我上面说的有问题。Top

20 楼tsrs(调试人生)回复于 2005-12-12 21:04:06 得分 0

呵呵,比我好,我去YAHOO面试的时候也隐约的看到了自己存在太多的不足,但没楼主幸运哈,最终被拒了。  
  回来后仔细想了想,现在正努力学习呢~  
  呵呵……  
  希望早日找到属于我的工作。:)Top

21 楼luvybird()回复于 2005-12-13 00:09:42 得分 0

mark  
  Top

22 楼rockefeller8(洛克菲勒)回复于 2005-12-13 15:41:45 得分 0

支持一下!Top

23 楼langzi520(虽左但右)回复于 2005-12-14 15:17:46 得分 0

markTop

24 楼xiaojijun(lele)回复于 2005-12-19 22:55:18 得分 0

我也是跟他们签约了的,不过我是作软件测试的,我今天在运行程序的时候出现了一个错误,希望各位高手帮我解决一下,首先谢谢各位哈!  
  无法在WEB服务器上进行调试,发送HTTP请求时出现了服务器端的错误:这个问题如何解决,请教各位高手哈!非常感谢Top

25 楼ak_2005(★★★★★)回复于 2005-12-20 00:54:53 得分 0

markTop

26 楼gokill(天上的虫子)回复于 2005-12-20 10:08:11 得分 0

第三道题如果用递归怎么来实现?  
  有没有高手能解答一下?Top

27 楼gokill(天上的虫子)回复于 2005-12-20 12:09:26 得分 0

Node*   ChainSort(   Node   *p   )  
  {  
  Node   *first;  
  int   tmp;  
  if(p->next   ==   NULL)  
  return   p;  
  for(   first   =   p;   first->next;   first   =   first->next   )  
  if(   first->data   <   ChainSort(first->next))  
  {  
  tmp   =   first->data;  
  first->data   =   first->next->data;  
  first->next->data   =   tmp;  
  }  
  return   p;  
  }  
  ------------------  
  这个算不算递归算法?  
  有没有问题,有人给看看没,呵呵Top

28 楼chenang(cha)回复于 2005-12-20 13:25:05 得分 0

解释一下我对第一题的理解,  
  对于二维数组int   A[m][n]  
  A   =   &A   =   A[0]   =   *A   =   &A[0],结果是首地址  
  A是数组名,不占存储空间,他们不同在于  
  A是一个指向一个一维数组的指针,相当于int   (*aa)[2]   =   A;  
  A[0]是一个指针,指向数组的第一列(一维数组)的地址,相当于int   *ab   =   A[0]  
  &A是一个指针,指向的是一个二维数组,即int   (*ac)[2][2]   =   &A;  
  *A是数组的首地址,即int   *ad   =   *A;  
  总结一下:  
  A的类型是int[m][n],一个二维数组,相当于指向一维数组的指针  
  A[0]的类型是int[n],一个一维数组,相当于一个int类型的指针  
  &A的类型是int   (*)[m][n],一个指向二维数组的指针  
  *A的类型是int   [n]=   A[0]  
   
   
  Top

29 楼forthelichking(丢大便)回复于 2005-12-20 14:02:15 得分 0

慧通不是3500+500么?我同学今年毕业的,在里面,本科毕业进去基本上都是搞测试的,很累,干了4个月,我同学已经开始想走人了。Top

30 楼luoqiang2008(夜行侠)回复于 2005-12-20 15:32:42 得分 0

UP  
  Top

31 楼lwplay(轻松)回复于 2005-12-20 21:47:12 得分 0

gokill(天上的虫子):我觉得if(   first->data   <   ChainSort(first->next))   这句有问题ChainSort(first->next))得到的是node型指针,怎么跟int型的data值比较?  
  Top

32 楼gokill(天上的虫子)回复于 2005-12-21 09:08:28 得分 0

汗~我糊涂,这段加个-〉data。  
   
  我是说,我觉得我写的算法本身有问题,有没有人给看看?Top

33 楼orange017(金枪鱼)回复于 2005-12-21 09:46:10 得分 0

收藏了Top

34 楼rockhard(不签名)回复于 2005-12-21 11:14:45 得分 0

A[m][n]是一个二维数组,那么A、A[0]、&A、*A分别是什么意思?  
   
   
  A:   一个指针,与定义int   (*p)[5];中的p代表的意义一样。  
   
  A[0]:上述指针所代表的一个元素(第一个元素而已),该元素有n个int型变量  
   
  &A:整个A[m][n]数组在内存中的起始地址,也可解释为A指针的地址  
   
  *A:与A[0]等价,得到A数组的第一个元素,注,该元素是int   X[5]类型,非int型  
  Top

35 楼rockhard(不签名)回复于 2005-12-21 11:16:28 得分 0

将上在的5换为n就是int   A[m][n]  
   
  Top

36 楼HuangQQ(黄QQ)回复于 2005-12-21 11:23:44 得分 0

这几个的意思是明白的,  
  不明白为什么长度会不一样???  
  =============================  
  #include<iostream>  
  using   namespace   std;  
  void   main()  
  {  
  int   a[2][3]={1,2,3,4,5,6};  
  cout<<   a         <<   ":"   <<   sizeof(   a         )   <<   endl;  
  cout<<   *a       <<   ":"   <<   sizeof(   *a       )   <<   endl;  
  cout<<   &a       <<   ":"   <<   sizeof(   &a       )   <<   endl;  
  cout<<   a[0]   <<   ":"   <<   sizeof(   a[0]   )   <<   endl;  
  cout<<   a[1]   <<   ":"   <<   sizeof(   a[1]   )   <<   endl;  
  }  
  =============================  
   
  程序如上时,结果如下:  
   
  =========  
  0012FF68:24  
  0012FF68:12  
  0012FF68:24  
  0012FF68:12  
  0012FF74:12  
  =========  
  Top

37 楼lovepet(想着)回复于 2005-12-21 13:55:56 得分 0

#include   "stdio.h"  
  #include   "conio.h"  
   
  main()  
  {  
      char   a[]="123456";  
      printf("%s\n",&a);  
      printf("%c\n",*a);  
      printf("%c\n",a[1]);  
      printf("%s\n",a);  
          getch();  
  }Top

38 楼lovepet(想着)回复于 2005-12-21 13:56:58 得分 0

楼上的是用的什么语法啊?csharp?Top

39 楼lovepet(想着)回复于 2005-12-21 14:09:23 得分 0

#include   "stdio.h"  
  #include   "conio.h"  
   
  main()  
  {  
      int   a[6]={1,2,3,4,5,6};  
      printf("%d\n",&a);  
      printf("%d\n",*a);  
      printf("%d\n",a[1]);  
      printf("%d\n",a);  
          getch();  
  }  
   
  改成int类型的,1\4输出为一个负数,如果a是int类型的,取&a,a具体为什么呢?请前辈指点~谢谢~Top

40 楼rockhard(不签名)回复于 2005-12-21 15:40:56 得分 0

第三题:   如果可以改结点中的值,可以只用一个变量,见下在的代码。如果是修改结点的next域进行交换结点,没找到解决办法。哪位有代码发封存到rockhard@sohu.com,谢谢。  
   
  typedef   struct   NODE{  
      int   value;  
      struct   NODE   *   next;  
  }   *   pNode;  
   
  //先找到最大的value,放在第一个元素处,  
  //然后再在剩下的元素中找到次大的value值,放入第二个元素处......  
  void   sort(pNode   head)  
  {  
      pNode   current;  
   
      while(head)  
      {  
          for(   current=head->next;   current;   current=current->next   )  
          {  
              if(current->value   >   head->value)  
              {  
                  //交换两结点的value值,可以不用中间变量  
                  //即交换变量a,b可用如下方法  
                  //a=a+b;  
                  //b=a-b;  
                  //a=a-b;  
                  current->value   =   current->value   +   head->value;  
                  head->value   =   current->value   -   head->value;  
                  current->value   =   current->value   -   head->value;  
              }  
          }  
          head=head->next;  
      }  
  }  
   
  Top

41 楼wcg_jishuo()回复于 2005-12-24 20:56:10 得分 0

是不是要把c语言真真理解要学好汇编才行啊?Top

42 楼chenys0921(南岭雪)回复于 2006-01-12 21:14:46 得分 0

一个变量排序,经过测试,各位高人是否还有更多良方  
  void   chainsort(node   *   head)  
  {  
        node   *   p;  
        for(;head->next;head=head->next)  
            for(p=head->next;p;p=p->next)  
        {  
                if(head->data<p->data)  
              {  
                      head->data=head->data^p->data;  
                      p->data=head->data^p->data;  
                      head->data=head->data^p->data;  
              }  
        }  
  }Top

43 楼longlongago8(南瓜)回复于 2006-01-12 22:21:28 得分 0

4G的内存有多少位地址Top

44 楼longlongago8(南瓜)回复于 2006-01-12 22:22:45 得分 0

4G的内存有多少位地址  
  请问这句话什么意思?  
   
  Top

45 楼cutegang(醉柠檬)回复于 2006-01-12 22:45:11 得分 0

我也在疑惑这家公司怎么招这么多人。  
  看看面试的题目,说明未来的工作岗位技术是不需要的。Top

46 楼xxdashi(很想搞3G)回复于 2006-01-13 11:52:54 得分 0

应该说要的是机器人,只帮做产品的COPYTop

47 楼marine12(副才科)回复于 2006-01-13 12:59:43 得分 0

第一个问题是行指针和列指针的问题,很简单  
  A其实就是行指针,A+1就是指向第二行,就是A[1]了,但是如果你要指向A[1][0],那就需要加*了  
  就是*A[1].于是如果指向第二行第二列就是*(*(A+1)+1)  
  这样说明白吗?Top

48 楼danfeng827()回复于 2006-01-13 13:59:20 得分 0

4G的内存有多少位地址???应该是35位把Top

49 楼danfeng827()回复于 2006-01-13 14:46:43 得分 0

4G的内存有多少位地址???应该是35位把  
  Top

50 楼danfeng827()回复于 2006-01-13 14:55:36 得分 0

错了,不是35位Top

51 楼wildfire555(阿猫)回复于 2006-01-13 17:40:39 得分 0

32bit  
   
  11111111111111111111111111111111   二进制  
  4294967295   十进制   约等于4GTop

52 楼lengsehuoyan(努力学习C语言!)回复于 2006-01-14 09:25:28 得分 0

支持一下!Top

53 楼gdszcbwq(coer)回复于 2006-01-14 16:37:08 得分 0

我刚从里面辞职出来。Top

54 楼ww09124(wangwei)回复于 2006-01-14 19:28:57 得分 0

去HT是每天加班很累吧呵呵Top

55 楼Jinhao(辣子鸡丁·GAME就这样OVER了)回复于 2006-01-15 00:02:54 得分 0

HT   试用是多少?Top

56 楼JohnsonShu(野蛮人)回复于 2006-01-15 12:46:59 得分 0

楼主总结的挺不错的。  
  不知道楼主这个水平最后能找到月薪多少的工作。  
  Top

57 楼lovememememe(请你为我在掌声中舞动)回复于 2006-02-12 16:05:15 得分 0

markTop

58 楼qianjinrail(呵呵)回复于 2006-02-12 19:01:18 得分 0

markTop

59 楼nicenight(SeeSea)回复于 2006-02-13 11:33:50 得分 0

面试真有点感觉吹毛求疵:(Top

60 楼vc_hunter(飞天御箭)回复于 2006-02-13 12:31:16 得分 0

第一个题目是二维数组和指针的问题,原题如下:  
          A[m][n]是一个二维数组,那么A、A[0]、&A、*A分别是什么意思?可以做必要的图示说明。  
   
  A是指向一个大小为m*n的线性地址的首地址的指针  
  a[0]里装的是首地址加偏移量0*0位置的指针  
   
  &A是得到A本身的地址    
   
  *A是得到A指向的地址里的值  
   
  上面是概念,可能有点模糊  
  比如  
  地址:2000为A的地址,地址2000里的值为5000,这个是数组的首地址  
  &A得到的是2000,*A得到的是5000里的值,就是以5000为起始地址,里面32位数据所代表的值,比如a[0][0]里面是1,那么*a就是1  
  其实A[m][n]的形式转换为另一种形式就容易理解了  
  如:  
  int   *p=new   int[m];  
  p自己有地址,p里面的值是数组的首地址,  
  &p是自己的地址,p是数组的地址,*p是p[0]的值  
   
   
   
   
   
   
   
  Top

61 楼jjduan185(duanjigang)回复于 2006-02-14 11:02:53 得分 0

我刚面试完,叫我过去,还在犹豫中Top

62 楼Andy_L(波大没脑)回复于 2006-02-15 15:37:40 得分 0

我也是今年毕业的,我很多同学都签了   HT公司,薪水是这样的:3250   !就是工资加补助。  
   
  我在西安。Top

63 楼giggsjw(秋叶)回复于 2006-02-15 17:41:02 得分 0

支持一下!Top

64 楼guest0708()回复于 2006-02-17 13:49:00 得分 0

4GB   =   4   *   1024MB   =   4   *1024   *   1024kb   =   4   *   1024   *   1024   *   1024b    
  =   2^2   *   2^10   *   2^10   *   2^10  
  =   2^(2   +   10   +   10   +   10)  
  =   2^32  
  也即32位  
  Top

65 楼yoyo82(优游)回复于 2006-02-17 14:41:45 得分 0

∵   G=2^30,4=2^2  
        4G=2^32  
  ∴   是32位地址线  
  Top

66 楼zjpixyniannian()回复于 2006-02-20 22:09:17 得分 0

//只用一个变量  
  #include   <stdio.h>  
  #include   <malloc.h>  
   
  typedef   struct   tagNODE  
  {  
  int   m_n;  
  tagNODE   *   pNext;  
  }  
  NODE;  
   
  void   Sort(NODE   *   pHead)  
  {  
  if(!pHead   ||   !pHead->pNext)  
  return   ;  
   
  while(pHead)  
  {  
  NODE   *   pNode   =   pHead->pNext;  
  while(pNode)  
  {  
  if(pHead->m_n   >   pNode->m_n)  
  {  
          pHead->m_n   =   pHead->m_n   +   pNode->m_n;  
  pNode->m_n   =   pHead->m_n   -   pNode->m_n;  
  pHead->m_n   =   pHead->m_n   -   pNode->m_n;  
  }  
  pNode   =   pNode->pNext;  
   
  }  
  pHead   =   pHead->pNext;  
  }  
  }  
   
  int   main()  
  {  
  NODE   *   pHead=NULL,*pNode=NULL;  
  pHead   =   (NODE   *)malloc(sizeof(NODE));  
  pHead->m_n   =   0;  
  pHead->pNext   =   NULL;  
   
  for(int   i   =   1;   i   <   10;   i++)  
  {  
  pNode   =   (NODE   *)malloc(sizeof(NODE));  
  pNode->m_n   =   i;  
  pNode->pNext   =   pHead;  
  pHead   =   pNode;  
  }  
   
  Sort(pHead);  
  }Top

67 楼shiqing8899(米豆)回复于 2006-02-20 23:02:33 得分 0

顶Top

68 楼ice3745()回复于 2006-02-21 00:52:52 得分 0

UP^_^ing............Top

69 楼yjf7888(seeking a place 找工作了location:Chengdu)回复于 2006-02-21 08:54:31 得分 0

不错,知道总结Top

70 楼qtshalazhang(沙拉张)回复于 2006-02-21 12:54:04 得分 0

基础不牢   地动山摇啊   呵呵Top

71 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2006-02-21 13:52:33 得分 0

The   array   variable   does   not   occupy   any   additional   memory   (pointer   variable   will   occupy   4   bytes   memory   in   32-bits   OS),   its   address   is   the   same   with   one   of   the   first   element   of   array.    
   
  for   example:   int   a[2][3];      
  It   assumes   that   the   address   of   array   a   is   0x1234567,   then  
  a   ==   &a   ==   a[0]   ==   &a[0]   ==   &a[0][0]   ==   *a   ==   0x1234567  
  Top

72 楼robertcarlos(还我信誉分)回复于 2006-02-21 14:15:58 得分 0

#include<iostream>  
  using   namespace   std;  
  void   main()  
  {   int   a[2][3]={1,2,3,4,5,6};  
  Cout   <<   &a   <<   endl;  
  Cout   <<   *a   <<   endl;  
  Cout   <<   a[0]   <<   endl;  
  Cout   <<   a   <<   endl;  
  }  
  二维数组,他们都是指向同一个地址所以上面的结果是一样的。  
   
  blh(老猫)的意思已经很清楚了。Top

73 楼jjj346()回复于 2006-02-21 14:25:16 得分 0

......  
  我是大二的,学软件,上学期学C时老师说二维数组不用,自己看了一点没怎么懂,就没细看,寒假带了C++回来又没怎么看,看来是不是太急于求成了~~~~Top

相关问题

  • 慧通面试失败 伤心_哀悼,沉痛总结中
  • wushimiang12面试题的总结(一)
  • 几道技术面试题:
  • 如何应对技术面试???
  • 关于慧通面试
  • 一年后第一次参加java面试的总结,大家进来总结一下自己面试的经验!
  • 今天面试微软,做的不错(技术类),easy!!!****散分****
  • 新浪的技术人员问我的一道面试题
  • 华为慧通面试c语言题
  • 与慧通公司的面试之乱。。。

关键词

  • 指针
  • 内存
  • 代码
  • 算法
  • 总结
  • 结点
  • 简历
  • 数组
  • phead
  • 地址

得分解答快速导航

  • 帖主:lufer

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

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