读书人

一些c++的基础面试题全部都会应付一

发布时间: 2012-03-31 13:13:26 作者: rapoo

一些c++的基础面试题,全部都会应付一般的面试就没有什么问题了。
一 简答题
1.static有什么用途?(请至少说明两种)


2.引用与指针有什么区别?


3.描述实时系统的基本特性


4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?


5.什么是平衡二叉树?


6.堆栈溢出一般是由什么原因导致的?


7.什么函数不能声明为虚函数?


8.冒泡排序算法的时间复杂度是什么?


9.写出float x 与“零值”比较的if语句。


10.Internet采用哪种网络协议?该协议的主要层次结构?


11.Internet物理地址和IP地址转换采用什么协议?


12.IP地址的编码分为哪俩部分?


13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
循环链表,用取余操作做




14.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)
int a = 4;
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
a = ?


15.某32位系统下, C++程序,请计算sizeof 的值(5分).
char str[] = “http://www.ibegroup.com/”
char *p = str ;
int n = 10;
请计算
sizeof (str ) = ?(1)
sizeof ( p ) = ?(2)
sizeof ( n ) = ?(3)


void Foo ( char str[100])
{
请计算
sizeof( str ) = ?(4)
}

void *p = malloc( 100 );
请计算
sizeof ( p ) = ?(5)

16.头文件中的 ifndef/define/endif 干什么用?


17. #include< filename> 和 #include “filename.h” 有什么区别?


18.在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?


19. switch()中不允许的数据类型是?


20.Void GetMemory(char **p, int num){
*p = (char *)malloc(num);
}
void Test(void){
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test 函数会有什么样的结果?


21. void Test(void){
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL){
strcpy(str, “world”);
printf(str);
}
}
请问运行Test 函数会有什么样的结果?


22. char *GetMemory(void){
char p[] = "hello world";
return p;
}
void Test(void){
char *str = NULL;
str = GetMemory();
printf(str);
}


23. 编写strcat函数
已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。

(1)不调用C++/C 的字符串库函数,请编写函数 strcat

(2)strcat能把strSrc 的内容连接到strDest,为什么还要char * 类型的返回值?


24.MFC中CString是类型安全类么?





25.C++中为什么用模板类。


26.CSingleLock是干什么的。


27.NEWTEXTMETRIC 是什么。


28.程序什么时候应该使用线程,什么时候单线程效率高。


29.Windows是内核级线程么。


30.Linux有内核级线程么。


31.C++中什么数据分配在栈或堆中,New分配数据是在近堆还是远堆中?


32.使用线程是如何防止出现大的波峰。


33.函数模板与类模板有什么区别?


34.一般数据库若出现日志满了,会出现什么情况,是否还能使用?


35.如果数据库满了会出现什么情况,是否还能使用?


36.SQL Server是否支持行级锁,有什么好处?


37.关于内存对齐的问题以及sizof()的输出



38.int i=20, j=10, k=2; k*=i+j; k最后的值是?


39.对数据库的一张表进行操作,同时要对另一张表进行操作,如何实现?


40.TCP/IP 建立连接的过程?(3-way shake)


41.ICMP是什么协议,处于哪一层?


42.触发器怎么工作的?


43.winsock建立连接的主要实现步骤?


44.动态连接库的两种方式?


45.IP组播有那些好处?


46.软件的开发流程?


47.char str[] = “hello”,sizeof (str ) = ________ strlen ( str ) = __________


48.类和结构的区别?


49.简述下虚拟函数的含义?


50.类中访问权限private,protested,prublic,可以被何种访问?


51.解释下面的含义:
int *pTemp = new int ( 5 );
int *pTemp = new int[5];




二 编程题
题目:有n 个人,他们围成一个圈,从第一个人开始数数(第一个人默认为1号,一直到n 号),数1,2,3,当数到3的人则退出这个圈,后面的继续数,一直进行,问到最后是否只剩一个人,如果是,这个人的编号是多少?


题目:写一个memcpy函数。


题目:写一个双向链表的插入函数。
原型如下:
struct node
{
node *head;
node *end;
int value;
}

void createnode(node **head, node **end, int val);

int main()
{
node *head = NULL;
node *end = NULL;
createnode(head, end, 1);
createnode(head, end, 1);
createnode(head, end, 1);


return 0;
}


[解决办法]

[解决办法]
..........................
楼主想干什么?
[解决办法]
一般的面试。。。何为一般的面试?
[解决办法]


[解决办法]
等答案。
[解决办法]
等标准答案
[解决办法]
噢,握手,我也一样,初级程序员级别,当前目标努力达到中级...终极目标,无
一起加油...
[解决办法]
N多不会呢
[解决办法]
答案 看看了
[解决办法]
等LZ答案
[解决办法]
太多了,写了一部分。

1.static有什么用途?(请至少说明两种)
====================================
对于变量:具有程序生命周期,具有文件作用域
对于函数:
对于函数中的成员:


2.引用与指针有什么区别?
========================
引用是一特别的指针,必须在声明的时候初始化。


3.描述实时系统的基本特性
========================
响应快,可靠

4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
==========================================================
全局变量又分初始化的和未初始化的。 未初始化的一般在.bss段
初始化的在.data段,局部变量在函数栈中


5.什么是平衡二叉树?
=======================
二叉树层数比较平衡


6.堆栈溢出一般是由什么原因导致的?
=================================
实参缓存数组过大。也可直接改esp


7.什么函数不能声明为虚函数?
============================
?????虚函数必须依附于类。这个问题有点NC了吧。

8.冒泡排序算法的时间复杂度是什么?
===============================
O(N2)


9.写出float x 与“零值”比较的if语句。
====================================
if( -0.00000001 < x && x < 0.00000001 )


10.Internet采用哪种网络协议?该协议的主要层次结构?
==================================================
TCP/IP All people seems need to data process
Application presentation sessions network transform datalink physical


11.Internet物理地址和IP地址转换采用什么协议?
============================================
arp rarp


12.IP地址的编码分为哪俩部分?
===============================
网络号,主机号


13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
循环链表,用取余操作做




14.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)
int a = 4;
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
a = ?
8 9 8? 不正确

15.某32位系统下, C++程序,请计算sizeof 的值(5分).
char str[] = “http://www.ibegroup.com/”
char *p = str ;
int n = 10;
请计算
sizeof (str ) = ?(1) //数出长度然后加1
sizeof ( p ) = ?(2) // 4
sizeof ( n ) = ?(3) // 4


void Foo ( char str[100])
{
请计算
sizeof( str ) = ?(4) // 4
}

void *p = malloc( 100 );
请计算
sizeof ( p ) = ?(5) // 4

16.头文件中的 ifndef/define/endif 干什么用?

防止头文件重复包含,条件编译等

17. #include< filename> 和 #include “filename.h” 有什么区别?
寻找路径不同 一个是先在指定的环境变量的目录中找,另一个是先在当前项目文件中找


18.在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?
==============================================================================
若不加编译器会以C++的函数name mangling 和C的 name mangling不相同


19. switch()中不允许的数据类型是?
应该是说允许的类型吧,不允许的太多了。只允许整型(enum也算)

20.Void GetMemory(char **p, int num){
*p = (char *)malloc(num);
}
void Test(void){


char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test 函数会有什么样的结果?内存泄漏外加输出的hello(hello后内容不确定)


21. void Test(void){
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL){
strcpy(str, “world”);
printf(str);
}
}
请问运行Test 函数会有什么样的结果?
输出world (后面内容不确定)


22. char *GetMemory(void){
char p[] = "hello world";
return p;
}
void Test(void){
char *str = NULL;
str = GetMemory();
printf(str);
}
输出hello world


23. 编写strcat函数
已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。

(1)不调用C++/C 的字符串库函数,请编写函数 strcat

(2)strcat能把strSrc 的内容连接到strDest,为什么还要char * 类型的返回值?


24.MFC中CString是类型安全类么?
=============================
不是




25.C++中为什么用模板类。


26.CSingleLock是干什么的。


27.NEWTEXTMETRIC 是什么。


28.程序什么时候应该使用线程,什么时候单线程效率高。


29.Windows是内核级线程么。


30.Linux有内核级线程么。


31.C++中什么数据分配在栈或堆中,New分配数据是在近堆还是远堆中?


32.使用线程是如何防止出现大的波峰。


33.函数模板与类模板有什么区别?


34.一般数据库若出现日志满了,会出现什么情况,是否还能使用?


35.如果数据库满了会出现什么情况,是否还能使用?


36.SQL Server是否支持行级锁,有什么好处?


37.关于内存对齐的问题以及sizof()的输出



38.int i=20, j=10, k=2; k*=i+j; k最后的值是?


39.对数据库的一张表进行操作,同时要对另一张表进行操作,如何实现?


40.TCP/IP 建立连接的过程?(3-way shake)


41.ICMP是什么协议,处于哪一层?


42.触发器怎么工作的?


43.winsock建立连接的主要实现步骤?


44.动态连接库的两种方式?


45.IP组播有那些好处?


46.软件的开发流程?


47.char str[] = “hello”,sizeof (str ) = ________ strlen ( str ) = __________


48.类和结构的区别?


49.简述下虚拟函数的含义?


50.类中访问权限private,protested,prublic,可以被何种访问?


51.解释下面的含义:
int *pTemp = new int ( 5 );
int *pTemp = new int[5];




二 编程题
题目:有n 个人,他们围成一个圈,从第一个人开始数数(第一个人默认为1号,一直到n 号),数1,2,3,当数到3的人则退出这个圈,后面的继续数,一直进行,问到最后是否只剩一个人,如果是,这个人的编号是多少?


题目:写一个memcpy函数。


题目:写一个双向链表的插入函数。
原型如下:
struct node
{
node *head;
node *end;
int value;
}

void createnode(node **head, node **end, int val);

int main()
{
node *head = NULL;
node *end = NULL;
createnode(head, end, 1);
createnode(head, end, 1);
createnode(head, end, 1);
return 0;
}
[解决办法]

[解决办法]
这问题不难,但是的确不好回答。用语言表达困难。比如struct 和 class 的区别。回答是在windows flat 模式的内存管理下,没有区别。
[解决办法]
这是基本知识点,要掌握的。谢谢!!
[解决办法]
看看,掌握一下
[解决办法]
还真不错。感谢分享
[解决办法]
http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/1.gif

好,赞一个!
[解决办法]

探讨

http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/1.gif

好,赞一个!

[解决办法]
对我来说还是有难度的。
[解决办法]
9.写出float x 与“零值”比较的if语句。


====================================
if( -0.00000001 < x && x < 0.00000001 )


一直想知道这题当初谁想出来的。

浮点数对于0值有严格定义的,正0,全比特位为0,负0,符号位为1其他都为0。
[解决办法]

探讨

引用:

太多了,写了一部分。

1.static有什么用途?(请至少说明两种)
====================================
对于变量:具有程序生命周期,具有文件作用域
对于函数:
对于函数中的成员:


2.引用与指针有什么区别?
========================
引用是一……

[解决办法]
探讨

9.写出float x 与“零值”比较的if语句。
====================================
if( -0.00000001 < x && x < 0.00000001 )


一直想知道这题当初谁想出来的。

浮点数对于0值有严格定义的,正0,全比特位为0,负0,符号位为1其他都为0。

[解决办法]
29.Windows是内核级线程么。
========================
是说Windows线程是内核线程么? 应该是,要不然线程切换代价太大了。

30.Linux有内核级线程么。
========================
好像是用clone实现的,应该也是内核线程
[解决办法]


MARK

网络是白学了
[解决办法]
(++a) += (a++)
我理解错了。
查了下资料,这条语句在C++里面是合法的,在C语言里面不能通过编译。
++a 是 lvalue 并且是modifiable ,下面是原文。
5.2.6 Increment and decrement [expr.post.incr]
1 The value obtained by applying a postfix ++ is the value that the operand had before applying the operator.
[Note: the value obtained is a copy of the original value ] The operand shall be a modifiable lvalue. The
type of the operand shall be an arithmetic type or a pointer to a complete object type. After the result is
noted, the value of the object is modified by adding 1 to it, unless the object is of type bool, in which case
it is set to true. [Note: this use is deprecated, see annex D. ] The result is an rvalue. The type of the
result is the cv-unqualified version of the type of the operand. See also 5.7 and 5.17.
2 The operand of postfix -- is decremented analogously to the postfix ++ operator, except that the operand
shall not be of type bool. [Note: For prefix increment and decrement, see 5.3.2. ]

至于C不能通过编译,应该是C有更严格的语法检查,不允许 ++a作为 left operand
[解决办法]
呵呵,基本都面试过了。关于网络的很少看~C++基本都做的差不多了
[解决办法]
很猛很强大
[解决办法]

6.堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源。

这个回答不对吧,堆栈肯定跟函数调用有关系,应该是循环调用函数造成堆栈溢出


[解决办法]
仰视一下
[解决办法]
难道静态函数可以为虚?嘻嘻
[解决办法]
有答案,留着看看吧
[解决办法]
实现一个String类也经常被面吧。
[解决办法]
这是个好资源啊
[解决办法]
都不会
[解决办法]
不懂的还不少..
[解决办法]
索隆也会写c++么。。血血楼主分享。
------解决方案--------------------


21. void Test(void){
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL){
strcpy(str, “world”);
printf(str);
}
}
请问运行Test 函数会有什么样的结果?
输出world (后面内容不确定)


22. char *GetMemory(void){
char p[] = "hello world";
return p;
}
void Test(void){
char *str = NULL;
str = GetMemory();
printf(str);
}
输出hello world

这都对??????????????
[解决办法]
好多啊~!
[解决办法]
过于简单了。。。。用来面试应届毕业生的吧。。。
[解决办法]
还可以,基本都会。。。。。
[解决办法]
看书百度百科去,哈哈
[解决办法]

[解决办法]
占个座 慢慢看
[解决办法]
好久没面试了,讨厌面试的时候做超级多题目。
[解决办法]

C/C++ code
int a=4,b=4,c=4,d=4;a += (a++); b += (++b);//(c++) += c;(++d) +=(d++);
[解决办法]
29.Windows是内核级线程么。
30.Linux有内核级线程么。

windows不仅有进程模型,而且还有级线程,内部本身就存在线程这个数据结构;
在linux中是只有进程模型,把进程进行稍微改变一下,然后当作线程使用,来实现多线程
[解决办法]
好东西啊~~~
[解决办法]
太好了,谢谢楼主的分享。
[解决办法]
LZ给力啊 谢谢楼主
[解决办法]
楼主可以一个一个题目地公布答案!
[解决办法]
膜拜楼主 铭记楼主
[解决办法]
探讨

难道静态函数可以为虚?嘻嘻

[解决办法]
回答的都是皮毛,没到本质。楼主也还是学生吧
[解决办法]
题目也太多了吧,看的都看花了。前面的题答案不一,都是概念知识没有标准答案。所以很期待编程的标准答案。不过那几个编程题目都看过
[解决办法]
探讨
21. void Test(void){
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL){
strcpy(str, “world”);
printf(str);
}
}
请问运行Test 函数会有什么样的结果?
输出world (后面内容不确定)


22……

[解决办法]
基本都不会
[解决办法]
学习一下,为了一般性的面试。
[解决办法]
探讨

学习一下,为了一般性的面试。

[解决办法]
很好,
[解决办法]
这帖子好,换工作用的上,不换工作也可以复习基础

读书人网 >C++

热点推荐