4399 C++笔试题
2012-11-04 10:54
330 查看
1 写出一个函数,取到链表中倒数第二个节点。
双链表:
node* getSec(List mylist)
{
return mylist.m_tail->m_prev; //m_prev为链表前指针
}
单链表:
node* getSec(List mylist)
{
node* rsec = mylist.m_head;
node* rfirst = rsec->m_next;
for(;rfirst != mylist.m_tail ; rsec = rsec->m_next)
{
rfirst = rsec->m_next;
}
return rsec;
}
2 找出数组中第二大的数。
int findSec(int* numArray, int numSize, int& numSec)
{
int max=numArray[0],min=numArray[0];
for(int i=0;i!=numSize;i++)
{
if(numArray[i] > max && numArray[i] > min )
{
min = max;
max = numArray[i];
}else if(numArray[i] > min)
{
min = numArray[i];
}
}
numSec = min;
return numSec;
}
3 一个sql表,字段有id(用户ID),charge_num(交费数额),charge_time(交费时间)。写出sql语句找出在(t1,t2)时间段内充值总额超过100的用户前10位。
请高手指点
4 你知道的容器有哪些,其查找,插入,删除的复杂度分别是。
5 编译和连接的概念。
6 struct和union的差别。
struct 简单来说就是一些相互关联的元素的集合,说是集合,其实它们在内存中的存放是有先后顺序的,并且每个元素都有自己的内存空间。那么按照什么顺序存放的呢?其实就是按你声明的变量顺序来存放的,下面先看一个例子:
struct sTest
{
int a; //sizeof(int) = 4
char b; //sizeof(char) = 1
shot c;//sizeof(shot) = 2
}x;
所以在内存中至少占用 4+1+2 = 7 byte。然而实际中占用的内存并不是7 byte,这就涉及到了字节对齐方式,可以参考转载的《 struct 字节对齐分析》,介绍的还是不错的。
union 的不同之处就在于,它所有的元素共享同一内存单元,且分配给 union 的内存 size 由类型最大的元素 size来确定,如下的内存就为一个 double 类型 size :
union uTest
{
int a; //sizeof(int) = 4
double b; //sizeof(double) = 8
char c; //sizeof(char) = 1
}x;
所以分配的内存 size 就是8 byte。
既然是内存共享,理所当然地,它不能同时存放多个成员的值,而只能存放其中的一个值,就是最后赋予它的值,如:
x.a = 3; x.b = 4.5; x.c = ‘A’;
这样你只看到x.c = ‘A’,而其它已经被覆盖掉,失去了意义。
说到这里,大家应该已经明白两者最关键的区别了吧,无非就在于内存单元的分配和使用。然而要灵活地使用struct 和 union 还是存在许多小技巧的,比如:元素的相关性不强时,完全是可以使用 union ,从而节省内存size; struct 和 union 还可以相互嵌套
7 struct和class的差别。
8 TCP/IP有哪几层,分别述说其功能。
9 C、C++程序编译的内存分配情况。
10 进程间通信方式,差别。
11 线程同步技术有哪些。其优缺点。
12 Linux系统下查看进程的命令(命令还是方式,忘记了)。
13 Linux系统下复制、移动文件的命令。
14 什么是“引用”,定义和使用“引用”要注意什么,什么情况下使用“常引用”。
双链表:
node* getSec(List mylist)
{
return mylist.m_tail->m_prev; //m_prev为链表前指针
}
单链表:
node* getSec(List mylist)
{
node* rsec = mylist.m_head;
node* rfirst = rsec->m_next;
for(;rfirst != mylist.m_tail ; rsec = rsec->m_next)
{
rfirst = rsec->m_next;
}
return rsec;
}
2 找出数组中第二大的数。
int findSec(int* numArray, int numSize, int& numSec)
{
int max=numArray[0],min=numArray[0];
for(int i=0;i!=numSize;i++)
{
if(numArray[i] > max && numArray[i] > min )
{
min = max;
max = numArray[i];
}else if(numArray[i] > min)
{
min = numArray[i];
}
}
numSec = min;
return numSec;
}
3 一个sql表,字段有id(用户ID),charge_num(交费数额),charge_time(交费时间)。写出sql语句找出在(t1,t2)时间段内充值总额超过100的用户前10位。
请高手指点
4 你知道的容器有哪些,其查找,插入,删除的复杂度分别是。
5 编译和连接的概念。
6 struct和union的差别。
struct 简单来说就是一些相互关联的元素的集合,说是集合,其实它们在内存中的存放是有先后顺序的,并且每个元素都有自己的内存空间。那么按照什么顺序存放的呢?其实就是按你声明的变量顺序来存放的,下面先看一个例子:
struct sTest
{
int a; //sizeof(int) = 4
char b; //sizeof(char) = 1
shot c;//sizeof(shot) = 2
}x;
所以在内存中至少占用 4+1+2 = 7 byte。然而实际中占用的内存并不是7 byte,这就涉及到了字节对齐方式,可以参考转载的《 struct 字节对齐分析》,介绍的还是不错的。
union 的不同之处就在于,它所有的元素共享同一内存单元,且分配给 union 的内存 size 由类型最大的元素 size来确定,如下的内存就为一个 double 类型 size :
union uTest
{
int a; //sizeof(int) = 4
double b; //sizeof(double) = 8
char c; //sizeof(char) = 1
}x;
所以分配的内存 size 就是8 byte。
既然是内存共享,理所当然地,它不能同时存放多个成员的值,而只能存放其中的一个值,就是最后赋予它的值,如:
x.a = 3; x.b = 4.5; x.c = ‘A’;
这样你只看到x.c = ‘A’,而其它已经被覆盖掉,失去了意义。
说到这里,大家应该已经明白两者最关键的区别了吧,无非就在于内存单元的分配和使用。然而要灵活地使用struct 和 union 还是存在许多小技巧的,比如:元素的相关性不强时,完全是可以使用 union ,从而节省内存size; struct 和 union 还可以相互嵌套
7 struct和class的差别。
8 TCP/IP有哪几层,分别述说其功能。
9 C、C++程序编译的内存分配情况。
10 进程间通信方式,差别。
11 线程同步技术有哪些。其优缺点。
12 Linux系统下查看进程的命令(命令还是方式,忘记了)。
13 Linux系统下复制、移动文件的命令。
14 什么是“引用”,定义和使用“引用”要注意什么,什么情况下使用“常引用”。
相关文章推荐
- 4399_C++笔试题
- 华为C/C++笔试题二
- C++ 笔试面试题链接
- [C++基础]C++笔试面试的题目类型
- 笔试面试--神马搜索C++程序员电话面试
- C++笔试题解析
- C/C++笔试题目大全(转载)
- 海康威视2014校园招聘C++笔试题
- C++笔试题库之编程、问答题 100~150道
- C/C++笔试题(6)
- c++笔试题汇总
- 在C++面向对象编程语言中,以下关于接口的阐述不正确的是:----腾讯2016研发工程师笔试题(一)
- C++ 堆排序算法的实现与改进(含笔试面试题)
- 网上收集的C++笔试题目(8)
- c++笔试题目(嵌入式软件开发)
- C++笔试面试(概念题集)
- c++笔试题汇总
- 牛客网-专业IT笔试面试备考平台,最全C++JAVA前端求职题库,全面提升IT编程能力
- 面试笔试总结(二)之 C++基础