C/C++ 笔试、面试题目总结,
2015-10-06 17:32
435 查看
基本都没写答案,查找答案的过程就是学习的过程,会的也会引起一些思考。
1. extern,extern”C”的作用, 如何判断一段程序是由C 编译还是由C++编译程序编译的?
2. 进程和线程的区别和联系
3. inline的作用
4. KMP算法
5. 函数调用方式
· __cdecl
堆栈由调用者清除 参数从右至左的顺序压入堆栈内
· __stdcall
堆栈由被调用者清除
参数从右至左的顺序压入堆栈内
· __fastcall 堆栈由被调用者清除
部分参数保存在寄存器中,然后其他的压入堆栈内
· thiscall(非关键字) 堆栈由被调用者清除
参数压入堆栈内,this指针保存在ECX寄存器内
6. 有读和写的两个线程和一个队列,读线程从队列中读数据,写线程往队列中写数据
a) 生产者和消费者模型—(互斥变量或者线程API)
7. TCP的三次握手,断开,流量控制和拥塞控制机制
8. 求一个数组中第k大的数的位置
9. 成员函数初始化列表有什么作用?什么必须在成员初始化列表中进行初始化?
10.网络编程(网络编程范式,非阻塞connect)
常见的IO模型有阻塞、非阻塞、IO多路复用、异步。
11.一个一维数轴上的不同线段,求重复最长的两个线段
12.非递归方法实现二叉树的遍历
13. 页面置换算法
14. 常量指针和指针常量,指针函数和函数指针,指针数组和数组指针
15.大端小端
16.虚函数表
17.如果判断单链表是否有环
18. 各数据类型内存中的存储方式以及相互转化,指针强制转化
19. 位运算典型应用
20. 字节对齐(sizeof()用法),结构体、共用体内存储存
union{int i;char x[2]; }a;
i. a.x[0] =10; a.x[1] =1;
ii. printf("%d",a.i);
答案:266 (低位低地址,高位高地址,内存占用情况是Ox010A)
union{ int i;struct{ char first; char second; }half; }number;
number.i=0x4241;
printf("%c%c\n",number.half.first, mumber.half.second);
number.half.first='a'; number.half.second='b';
printf("%x\n",number.i);
getch();
答案: AB (0x41对应'A',是低位;Ox42对应'B',是高位)
6261 (number.i和number.half共用一块地址空间)
21. 引用和指针,引用作用,作参数返回值特点及应注意什么
b) new,<<,幅值构造函数,赋值运算符,对于多态
22. 写strcpy(),strstr(),strlen()函数,String类
23. 宏注意什么,哪些技术可以取代宏
24. C语言内存分配方式
25. C++中的4种类型转换方式?
26. 链表处理(合并两个有序链表,链表排序,判断是否有环)
27. 排序(大量数据内存放不开解决方法)
1. extern,extern”C”的作用, 如何判断一段程序是由C 编译还是由C++编译程序编译的?
2. 进程和线程的区别和联系
3. inline的作用
4. KMP算法
5. 函数调用方式
· __cdecl
堆栈由调用者清除 参数从右至左的顺序压入堆栈内
· __stdcall
堆栈由被调用者清除
参数从右至左的顺序压入堆栈内
· __fastcall 堆栈由被调用者清除
部分参数保存在寄存器中,然后其他的压入堆栈内
· thiscall(非关键字) 堆栈由被调用者清除
参数压入堆栈内,this指针保存在ECX寄存器内
6. 有读和写的两个线程和一个队列,读线程从队列中读数据,写线程往队列中写数据
a) 生产者和消费者模型—(互斥变量或者线程API)
7. TCP的三次握手,断开,流量控制和拥塞控制机制
8. 求一个数组中第k大的数的位置
9. 成员函数初始化列表有什么作用?什么必须在成员初始化列表中进行初始化?
10.网络编程(网络编程范式,非阻塞connect)
常见的IO模型有阻塞、非阻塞、IO多路复用、异步。
11.一个一维数轴上的不同线段,求重复最长的两个线段
12.非递归方法实现二叉树的遍历
13. 页面置换算法
14. 常量指针和指针常量,指针函数和函数指针,指针数组和数组指针
15.大端小端
16.虚函数表
17.如果判断单链表是否有环
18. 各数据类型内存中的存储方式以及相互转化,指针强制转化
19. 位运算典型应用
20. 字节对齐(sizeof()用法),结构体、共用体内存储存
union{int i;char x[2]; }a;
i. a.x[0] =10; a.x[1] =1;
ii. printf("%d",a.i);
答案:266 (低位低地址,高位高地址,内存占用情况是Ox010A)
union{ int i;struct{ char first; char second; }half; }number;
number.i=0x4241;
printf("%c%c\n",number.half.first, mumber.half.second);
number.half.first='a'; number.half.second='b';
printf("%x\n",number.i);
getch();
答案: AB (0x41对应'A',是低位;Ox42对应'B',是高位)
6261 (number.i和number.half共用一块地址空间)
21. 引用和指针,引用作用,作参数返回值特点及应注意什么
b) new,<<,幅值构造函数,赋值运算符,对于多态
22. 写strcpy(),strstr(),strlen()函数,String类
23. 宏注意什么,哪些技术可以取代宏
24. C语言内存分配方式
25. C++中的4种类型转换方式?
26. 链表处理(合并两个有序链表,链表排序,判断是否有环)
27. 排序(大量数据内存放不开解决方法)
相关文章推荐
- 交换两个数的值,不借助第三方变量
- Implementing a simple smart pointer in C++
- c++primer plus第十七章-输入和输出概述
- 黑马程序员——OC语言基础---description方法介绍及重写
- 黑马程序员——OC语言基础---extern和static关键字
- C++初始化变量
- 黑马程序员——OC语言基础---Static关键字使用
- OC语言-NSMutableArray为什么要用strong来修饰
- 黑马程序员——OC语言基础---封装的概念及原理
- c语言'\0' 意思
- C++中的函数模板&&类模板
- C++输入输出流实现未知数目的输入(相当于实现python的split函数)
- C++中的try..catch
- C++源代码生成可执行文件的四个步骤
- C语言类与对象的实现
- 学习C语言感悟
- C语言设计模式与接口
- C语言中的高级指针
- C++实现单链表
- C++各种崩溃分析