某公司C++笔试要求(不难)
v_023 发表于:
http://topic.csdn.net/u/20081119/14/0aa4a340-81ed-4c19-8323-ffd0e071bb4b.html
1.栈和堆的区别
2.内联函数和宏的区别
3.C++函数传值有几种
4.什么是多态,实现多态的机制有哪几种?
5.STL的容器,迭代子,算法
6.继承与派生
7.空类的默认方法和操作符
8.Socket的TCP实现(客户端和服务器端)
9.函数参数(实参)返回值是否有变化
10.字符串String的构造函数,析构函数,拷贝函数,operator=函数
11.引用和指针的比较
12.重载与覆盖的区别
13.统计一段英语文字种每个单词出现的次数,并且按照单词首字母的次序将单词和出现次数显示在屏幕上
14.实现链表的创建,删除和逆序等
15.字符串逆序
lzg0001的回帖:
1.栈:此处的栈指为函数调用及局部变量对象生成而准备的数据结构,局部对象内存自动回收,函数的返回值也保存在栈上,但不宜作过大局部分配;
如: void fun(){int a[2*1024*1024*1024];}
则编译通过,但栈一定会溢出而使进程“挂”掉。
堆:通常所说的进程可访问 2 GB 内存主要即指堆,在堆上分配的数据对象必须显式释放。
如: void fun(){char * ps = new char[100]; delete ps;}
2.内联函数:也是函数,编译器在调用函数的地方自动用函数体代替函数调用,可以减少函数调用时的栈操作的效率消耗,但函数体必须简短(好像还不能调用其它什么成员函数来着),否则编译器自动将其转为非内联函数。
宏:纯粹是编译器在代码层次上搞出来“文字游戏”,编译时编译器只简单的用宏定义代替宏。
3. a.传值:构造一个新的临时对象作为形参数传给函数,最简单也效率最低;
b.指针:将目标对象地址传给函数,分为可写类型指针传入与只读类型指针传入两种。
c.引用:与指针相似,也分为可写类型指针传入与只读类型指针传入两种。
4. 一个含虚函数的父类派生出多个不同的子类,各子类重载虚函数从而表现各自不同的形为。
5.std::list <char *> chars; // 容器
std::list <char *>::iterator iter; // 迭代器
算法: 在容器中针对迭代器的特定运算过程,如查找一个特定条件的对象 find.
6.不想回答!
7.编译器在类定义不实现缺省构造函数、缺省拷贝构造函数时自动生成此两个函数,前者为空函数,后者进行机械复制,对于具有可写指针类型数据成员的类最好自己实现缺省拷贝构造函数。
8.略
9.参照 3
10.略
11.各有千秋
12.不知道
13.略
14.
typedef struct Node
{
Node * next;
}Node;
Node head = {0};
void add()
{
Node * pn = &head;
while(pn->next)
pn = pn->next;
pn -> next = new Node;
pn -> next.next = 0;
}
void delete()
{
Node * pn = &head;
while(pn->next)
{
if(... pn->next ...)
{
Node * pn2 = pn->next.next;
delete pn->next;
pn->next = pn2;
return;
}
}
}
15.略
v_023 发表于:
http://topic.csdn.net/u/20081119/14/0aa4a340-81ed-4c19-8323-ffd0e071bb4b.html
1.栈和堆的区别
2.内联函数和宏的区别
3.C++函数传值有几种
4.什么是多态,实现多态的机制有哪几种?
5.STL的容器,迭代子,算法
6.继承与派生
7.空类的默认方法和操作符
8.Socket的TCP实现(客户端和服务器端)
9.函数参数(实参)返回值是否有变化
10.字符串String的构造函数,析构函数,拷贝函数,operator=函数
11.引用和指针的比较
12.重载与覆盖的区别
13.统计一段英语文字种每个单词出现的次数,并且按照单词首字母的次序将单词和出现次数显示在屏幕上
14.实现链表的创建,删除和逆序等
15.字符串逆序
lzg0001的回帖:
1.栈:此处的栈指为函数调用及局部变量对象生成而准备的数据结构,局部对象内存自动回收,函数的返回值也保存在栈上,但不宜作过大局部分配;
如: void fun(){int a[2*1024*1024*1024];}
则编译通过,但栈一定会溢出而使进程“挂”掉。
堆:通常所说的进程可访问 2 GB 内存主要即指堆,在堆上分配的数据对象必须显式释放。
如: void fun(){char * ps = new char[100]; delete ps;}
2.内联函数:也是函数,编译器在调用函数的地方自动用函数体代替函数调用,可以减少函数调用时的栈操作的效率消耗,但函数体必须简短(好像还不能调用其它什么成员函数来着),否则编译器自动将其转为非内联函数。
宏:纯粹是编译器在代码层次上搞出来“文字游戏”,编译时编译器只简单的用宏定义代替宏。
3. a.传值:构造一个新的临时对象作为形参数传给函数,最简单也效率最低;
b.指针:将目标对象地址传给函数,分为可写类型指针传入与只读类型指针传入两种。
c.引用:与指针相似,也分为可写类型指针传入与只读类型指针传入两种。
4. 一个含虚函数的父类派生出多个不同的子类,各子类重载虚函数从而表现各自不同的形为。
5.std::list <char *> chars; // 容器
std::list <char *>::iterator iter; // 迭代器
算法: 在容器中针对迭代器的特定运算过程,如查找一个特定条件的对象 find.
6.不想回答!
7.编译器在类定义不实现缺省构造函数、缺省拷贝构造函数时自动生成此两个函数,前者为空函数,后者进行机械复制,对于具有可写指针类型数据成员的类最好自己实现缺省拷贝构造函数。
8.略
9.参照 3
10.略
11.各有千秋
12.不知道
13.略
14.
typedef struct Node
{
Node * next;
}Node;
Node head = {0};
void add()
{
Node * pn = &head;
while(pn->next)
pn = pn->next;
pn -> next = new Node;
pn -> next.next = 0;
}
void delete()
{
Node * pn = &head;
while(pn->next)
{
if(... pn->next ...)
{
Node * pn2 = pn->next.next;
delete pn->next;
pn->next = pn2;
return;
}
}
}
15.略