C/C++面试基础题

来源:互联网 发布:证券网络开户 编辑:程序博客网 时间:2024/05/16 09:04

一 简答题
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;
}

原创粉丝点击