现在的位置: 首页 > 综合 > 正文

c++基础

2017年12月24日 ⁄ 综合 ⁄ 共 2448字 ⁄ 字号 评论关闭

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

引用是变量在符号表中的别名,不占用内存,必须要初始化,不能初始化为NULL,初始化后不可以修改。sizeof得到的是引用指向对象的大小

指针可不初始化,可初始化为空,初始化后可以改变指向的地址,sizeof得到的是指针本身的大小。
两者自增运算意义不同。
2.全局和局部变量在内存中有什么区别?
全局变量的存储区域是静态存储区,局部变量的存储区域是栈。
3.什么是平衡二叉树?
左右子树都是平衡二叉树,并且左右子树的深度差值的绝对值不大于1。
4.堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源。
5.什么函数不能声明为虚函数?
构造函数。
6.冒泡排序算法的时间复杂度是什么?
0(n ^ 2)。
7.Internet采用哪种网络协议?该协议的主要层次结构?
Tcp/Ip协议,物理层、数据链层、网络层、传输层、会话层、表示层、应用层。
11.Internet物理地址和IP地址转换采用什么协议?
ARP
8.IP地址的编码分为哪俩部分?
网络号、主机号。
9.头文件中的 ifndef/define/endif 干什么用?
预处理,防止头文件被反复包含。
10. #include<filename> 和 #include “filename.h” 有什么区别?
#include<filename>搜索的是系统默认目录, #include"filename.h"搜索的是本地目录,如果没有则搜索系统默认目录。
11.在C++程序中调用C函数,为什么要加 extern “C”声明?
C++不能直接调用C函数,C++与C编译后的函数名在符号库中名字不同,使用extern"C"修饰函数按照C语言的方式编译和连接。
12.MFC中CString是类型安全类么?
不是,其他类型的变量可以通过CString中的Format来转换为CString类型。
13.C++中为什么用模板类。
与类型无关,具有很高的复用性。
与平台无关,具有可移植性。
在编译时而不是运行时检查数据类型,保证了类型的安全。
适用基本数据类型。
可以创建一个动态增长或者减小的数据结构。
14.CSingleLock是干什么的。
一种访问机制,在多线程程序中并发的访问一个资源。
15.NEWTEXTMETRIC 是什么。
字体结构,设置字体的高宽大小。
16.程序什么时候应该使用线程,什么时候单线程效率高。
(1)耗时的模块中使用多线程,提高程序的响应。
(2)并发操作时,如C/S中服务端并发响应客户端的请求。
(3)多CPU系统使用多线程,提高CPU的使用率。
其他情况使用单线程。
17.C++中什么数据分配在栈或堆中,new分配数据是在堆还是堆中?
(1)局部变量、函数返回值、函数参数存储在栈区。
(2)new和malloc申请的内存存储在堆区。
18.使用线程时如何防止出现大的波峰。
使用线程池,可以提高线程同时调用的效率和限制资源使用的好处,当线程池中的线程达到最大数时,其他线程就会排队等候。
19.函数模板与类模板有什么区别?
函数模板的实例化,编译程序在处理函数调用时自动完成,类模板的实例化需要程序员在程序中显式指定。
20.一般数据库若出现日志满了,会出现什么情况,是否还能使用?
只能读操作,不能写操作,因为任何操作会记录到数据库的日志中,数据库基本属于不能使用的状态。
21.如果数据库满了会出现什么情况,是否还能使用?
只能进行查询等读操作,不能进行更改、备份等写操作,因为任何操作会记录到数据库的日志中。也就是数据库基本属于不能使用的状态。
22.SQL Server是否支持行级锁,有什么好处?
支持,锁机制是为了对并发操作进行控制,对干扰操作进行了封锁,保证了数据的一致性和准确性。
行级锁确保用户取得被更新的行不会被其他用户所修改。因行级锁保证了数据的一致性、提高数据操作的并发性。
23.关于内存对齐的问题以及sizof()的输出 
处理器访问未对齐的内存需要做两次内存访问,访问对齐的内存只需要访问一次。
内存自动对齐的是为了提高程序的性能,数据结构应该尽量在自然边界上。
24.对数据库的一张表进行操作,同时要对另一张表进行操作,如何实现?
将多个表的操作放到事务中处理。
25.ICMP是什么协议,处于哪一层?
Internet Control Message Protocol,处于网络层。
42.触发器怎么工作的?
将多个表的操作放到事务中处理。
26.winsock建立连接的主要实现步骤?
服务端:建立套接字socket(),绑定bind(),监听(listen()),然后等待客户端连接accept()。
客户端:建立套接字socket(),连接服务器connect(),连接上后使用send()和recv()在套接字上做读写操作,直到数据交换完毕后用closesocket()关闭套接字。
服务端:accept()收到客户端连接后,建立一个新的套接字,并重新开始等待连接。产生的套接字用send()和recv()做读写操作。数据交换完毕后用closesocket()关闭套接字。
27.动态连接库的两种方式?
载入时动态链接。链接时链接函数所在DLL的导入库,导入库向系统提供载入DLL时需要的信息和DLL的函数定位。模块明确的调用导出的函数,就像使用本地函数一样。
运行时动态链接,使用LoadLibrary或者LoadLibraryEx载入DLL。通过调用GetProcAddress获取DLL函数的出口地址。通过返回函数的指针调用DLL函数,避免导入库文件。
28.IP组播有那些好处?
组播可以节省大量网络宽带。无论有多少个目标地址,整个网络的任意一条链路上只传送单一的数据包。
组播的核心技术就是在节约网络资源的前提下保证了服务质量。
29.类和结构的区别?
在c++中类默认的访问方式是private。结构默认访问方式是public。
结构没有默认的构造函数。
30.解释下面的含义:
int *pTemp = new int ( 5 ); //初始化并赋值
int *pTemp = new int[5];  //申请一个大小为5的内存

【上篇】
【下篇】

抱歉!评论已关闭.