C\C++程序员面试总结

最近看了些C/C++方面的一些面试题,对于一些容易忘记并且重要的简单做一个总结。

1、宏定义概念
     宏定义是C++预处理命令之一。
2、宏定义如何展开
     宏展开是将宏体去代替宏指令名。
3、包含头文件时如何查找头文件
     标准头文件在系统目录下查找。自定义头文件会依次在用户目录、安装目录、系统文件下查找
4、什么是异常,如何抛出与捕获异常
     a、异常就是程序运行时出现的不正常,他会导致系统无法正常运行
     b、通过try块和异常处理构成异常机制,catch捕获异常并且执行异常处理,throw抛出异常
5、什么是指针
     指针是存储内存地址的变量,指向单个对象的地址。
6、指针数组与数组指针区别
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针
数组指针:a pointer to an array,即指向数组的指针
还要注意的是他们用法的区别,下面举例说明。
int* a[4]     指针数组     
                 表示:数组a中的元素都为int型指针    
                 元素表示:*a[i]   *(a[i])是一样的,因为[]优先级高于*
int (*a)[4]   数组指针     
                 表示:指向数组a的指针
                 元素表示:(*a)[i]  
7、如何实现多态
     通过继承机制与虚函数来实现。
8、虚函数的作用
     虚函数作用是实现动态联编,当程序发现虚函数前的virtual关键字后,会将其自动作为动态联编处理,即在程序运行时动态选择合适的成员函数
9、虚函数表
     虚函数是通过虚函数表来实现的。表中,主要是虚函数的地址表,解决继承、覆盖问题。
10、C++支持参数不确定的函数吗
     可以通过隐藏参数机制(...)来支持参数个数不确定的函数。va_list进行管理。
11、什么是函数模板,什么是类模板
      使用了模板技术定义了参数化类型的非常员函数。类模板类似。
12、容器特点总结
     vecor:vector对元素访问时间比较小。多用于不需要对数据进行增删的场合。vector实际是一个动态数组。
     list:list是一种链表的实现。存储元素是通过双链表实现。list对任意位置进行插入与删除时比较快
13、C++如何实现泛型编程
     主要是通过模板。
14、进程与线程
     资源的最小单位是进程。
     线程是操作系统最小的调度单位。
     区别:进程拥有多个线程,进程用于独立内存单元。
15、设计模式理念
     设计模式目的为了重用与扩展。

16、C、C++定义结构的区别
     C++结构可以声明函数。
17、构造函数可否为虚函数,析构函数呢。
     构造函数不能为虚函数,原因1:要构造函数,需要清楚构造什么,原因2:对象还没有实例化。
     析构函数可以为虚函数,也可以为纯虚函数。
18、深度拷贝、浅拷贝
      深度拷贝拷贝了资源和指针。 浅拷贝只拷贝指针(PS:包含指针的话容易程序崩溃)。
19、为什么引入纯虚函数
     作为一种接口。
20、什么是MVC,举例说明
     观察者模式
21、列举几种进程同步机制
      号量、管程、会合、分布式系统
22、进程间通信
     共享存储系统、消息传递系统、管道(PS:基于文件系统)。
23、操作系统进程调度策略
     先来先服务、最短作业优先、最高响应比优先法、时间片轮转、多级反馈,是一种CPU调度处理机制算法(PS:UNIX操作系统采用改算法)
24、ISO七层模型是什么,TCP/UDP属于哪一层, TCP/UDP优缺点
      七层主要包括:应用层,表示层,会话层,运输层,网络层,物理链路层,物理层。
     TCP\UDP属于运输层。
     
25、一个类所占内存空间可以为0吗
     不能。
26、面向对象的3个基本特征
     封装、继承、多态。
27、struce、class区别
28、重载、重写区别
29、new、malloc区别
30、main执行前、后会执行什么代码
     全局对象的构造会在main前执行
31、什么函数不能 声明 为虚函数
    构造函数。
32、internet采用什么协议
     采用的是TCP\UDP, TCP\UDP为5层协议:应用层、传输层、网络层、数据链路层、物理层。
33、什么是预编译
     处理#开头的指令,比如头文件展开、#define的替代等。
34、添加Extern "C"目的
     extern关键字是告诉编译器,其声明的函数和变量可以在本模块或其他模块使用。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值