2007-10-04

衰落中的C++

关键字: c++

不知不觉之中时间过了几年,忽然发觉C/C++在程序员中的地位已经大不如前了。搜索一下SourceForge,发现现在java和C#的项目当真不少,而C++的项目叫得出名的似乎还是原来那些老帮菜,没有多少新意。

这几天公司面试程序员,我出了几道c/c++的试题。说实话,我是非常不喜欢在面试时给人出太详细的笔试题的,但是因为招的人有c++的要求,就挑了几个我个人认为非常基础的问题考了一下,结果让人很吃惊,很多自称“精通C++”的孩子,居然连最简单的问题也会答错,不少还是清华出来的有工作经验的本科生,硕士生。贴出来让大家看看,是不是我的要求太高了。

1. 声明一个函数指针
2. int (*A)[];和
   int *A [] 有何不同?
3. C++中,struct是否可以有构造/析构函数?struct和class有何不同?
4. 声明一个模板类
5. #include <stdio.h>
   class A
   {
   public:
     void Func() { printf("A\n"); }
   };

   class B : public A
   {
   public:
     void Func() { printf("B\n"); }
   };

   int main()
   {
      A* a = new B();
      a->Func();
      delete a;
      return 0;
   }
6. 什么是虚函数表?
7. 写一个简单的递归函数计算N!
   int Factorial(int n)
   {
   }

   int main()
   {
     int n;
     cin >> n;
     printf("N!=%d\n", Factorial(n));
     return 0;
   }

8. 解释关键字:volatile; const

评论
林杰杰 2007-10-25
哈哈,有个笔误。
林杰杰 2007-10-25
哈哈,那几个面试题我都做了,看看我说的对不对。
1. 声明一个函数指针
如:void (*fp_print)(char *s)
声明了一个函数指针,它指向一个接受一个char*型的参数,并且无返回值的函数。

2. int (*A)[];和
int *A [] 有何不同?
前者声明了一个指针,它指向了一个以大小未知的数组为元素的数组。
后者声明了一个大小未知的以int*型为元素的数组。

3. C++中,struct是否可以有构造/析构函数?struct和class有何不同?
可以有。struct/class不同的地方是他们成员的默认访问权限不同,struct默认public,class默认private。

4. 声明一个模板类
template < typename T >
class MyClass;

5. #include
class A
{
public:
void Func() { printf("A\n"); }
};

class B : public A
{
public:
void Func() { printf("B\n"); }
};

int main()
{
A* a = new B();
a->Func();
delete a;
return 0;
}

输出:A(换行)

6. 什么是虚函数表?
虚函数表实际上是处于类头部的一个函数入口地址表,用于实现在运行时确定函数入口,实现多态。

7. 写一个简单的递归函数计算N!
int Factorial(int n)
{
}

int main()
{
int n;
cin >> n;
printf("N!=%d\n", Factorial(n));
return 0;
}

int Factorial (int n)
{
return n > 1 ? n * Factorial(n - 1) * n : 1;
}

8. 解释关键字:volatile; const
volatile是指被修饰的变量随时会被修改,要求编译器不要对这个变量作任何优化。
const表示被修饰的变量不能被修改,是一个常量。当它放在类成员函数的参数列表后面时,表示这个成员函数不会修改所在类的其它成员变量。

大家给评个分。
王者之剑 2007-10-24
几年不用都忘光了
lova 2007-10-24
学习计算机技术,应该以市场需求和基础开发为导向,不能太过于轻浮,势力!
bigpanda 2007-10-09
写简历吹吹牛无可厚非,现在毕竟是要自我推销,打造品牌的时代。

不过既然写精通,就好好花花时间练练内功,给人揭穿了就丢脸了。说句实在话,大多数面试题都不难,只要粗通,就可过关了。

我也想好好再敲打敲打Assembler,不过没空。一大梦想是有天经济自由了,给FreeBSD做做贡献去。
mathgl 2007-10-08
hehe it is the same for assembler
however, when engaging embedded development, your skills in assembler is still helpful, and means good pay sometimes.
zzg810314 2007-10-07
这年头简历应该怎么写,不写精通简历没人看,写了精通又被人当成吹牛,没个中间过渡啊!的确还精通一门语言真的很难
oldrev 2007-10-07
下次见到敢号称“精通C++”的人甭废话直接抽就行了
Eastsun 2007-10-05
基础语言C就够了,C++当基础...太奢侈了
ottojiang 2007-10-05
我觉得c/c++应该作为基础语言学习,虽然不一定用来做开发
bigpanda 2007-10-05
时代在发展,有更新更强大的语言了呗。

要是“精通C++”而那几个问题都答不出来的话,买块豆腐撞死吧。
发表评论

您还没有登录,请登录后发表评论

jimmy_c
搜索本博客
博客分类
存档
最新评论