前两天去参加了个南京爱立信的实习的笔试,哎,这活动办的真是无语,等他的考卷就等了40分钟。。。
下面是部分实习笔试题的解析
1. const char *p和char *const p 有什么区别?
答:const char *p是常量指针,表示该指针指向的是一个常量,而char *const p是指针常量,表示该指针自身是一个常量,即该指针所指向的常量的地址不可变。
2. delete p和delete[] p有什么区别?
答:delete p对应于使用new去动态创建对象
delete[] p对应于使用new[]去动态创建对象数组
3. 写一段程序,实现在链表的尾部插入新的节点,可以使用递归的方法
<待完成>
4. 以下程序的输出是什么?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <iostream> using namespace std; void main() { class base { public: base() { cout << "base::base()\n"; } virtual ~base() { cout << "base::~base()\n"; } void func() { cout << "base::func()\n"; } }; class inherited:public base { public: inherited() { cout << "inherited::inherited()\n"; } ~inherited() { cout << "inherited::~inherited()\n"; } void func() { cout << "inherited::func()\n"; } }; inherited *ptrD = new inherited; base *ptrB = ptrD; ptrB->func(); delete ptrB; } |
答:本题的关键在于理解对象构造以及析构的顺序,构造时先调用父类的构造函数,再调用成员变量的构造函数,接着再调用自己的构造函数。析构时相反。
所以该题的答案为:
base::base()
inherited::inherited()
base::func()
inherited::~inherited()
base::~base()
5. C中~是什么运算符?
答:是取反位运算符
6. 解释下面的语句 int (*p) (char *p)
答:p是一个函数指针,该函数的参数是char*类型,返回值为int
7. ls -l > temp.txt 2 >& 1 解释一下这个命令
答:将当前目录里的文件以列表形式重定向到temp.txt文件中,同时将出错信息打印在标准输出上
8. 现在你在A机器上,需要FTP到B机器/usr/bin下取出二进制文件man到A的/usr/bin下。请写出命令行。
A:>ftp B (have logged in)
ftp>cd /usr/bin
ftp>lcd /usr/bin
ftp>get man
ftp>bye
