C++基础面试题及答案
C++
C++ 和C的主要区别
C语言是面向过程编程,C++是面向对象编程,C++ 完全兼容C
C++有哪些特性,简述对他们的理解
封装、继承、多态
封装
将的事物抽象成一个个集合(也就是所说的类),实现代码的模块化
继承
子类可以继承父类的方法,实现代码重用
多态
子类继承父类之后,父类指针指向子类对象,实现接口重用
引用和指针的区别
- 引用是变量的一个别名,内部实现是只读指针
- 引用只能在初始化时被赋值,其他时候值不能被改变,指针的值可以在任何时候被改变
- 引用不能为NULL,指针可以为NULL
- 引用变量内存单元保存的是被引用变量的地址
- “sizeof 引用" = 指向变量的大小 , "sizeof 指针"= 指针本身的大小
- 引用可以取地址操作,返回的是被引用变量本身所在的内存单元地址
- 引用使用在源代码级相当于普通的变量一样使用,做函数参数时,内部传递的实际是变量地址
重载和重写的区别
重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
重写:是指子类重新定义父类虚函数的方法。
C++ delete和delete[]的区别
delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数
const与#define 相比,有何优点?
const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被Const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性
const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误
关键字static的作用
- 可以用于全局变量的定义:为该变量分配静态存储区。程序运行结束前不会被释放。
- 声明和定义静态成员函数:表示该函数为静态函数,只能在本文件中被调用。
- 定义静态局部变量:只被初始化一次,只有程序运行结束才会释放。区别是作用域的范围
C++ - STL
使用过哪些STL容器
vector,list,deque,map,multimap,set,multiset
使用过那些算法
查找算法、排序算法、消除算法、计数算法、比较算法、变换算法、置换算法和容器管理等
Linux
使用过哪些linux命令
文件管理命令 磁盘管理命令 网络通信命令 系统管理命令 备份压缩命令 cat cd ifconfig ps bzip2 cp ls iptables free gzip rm mkdir netstat kill tar find pwd ping yum unzip linux下多进程和多线程的区别
线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。
根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的
影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行
进程间通信的方式有哪些
管道
共享内存
套接字
内存映射
信号(一般不用,优先级太高容易打断程序正常执行,且携带信息量小)
QT
使用过哪些QT控件
Widget
dialog
Box
button
...
使用过哪些QT事件
keyboard 键盘事件
mouse 鼠标事件
timer 定时器事件
...
QT信号槽机制的优缺点
优点
- QT信号槽机制的引用精简了程序员的代码量 (不用写回调函数)
- QT的信号可以对应多个槽(但他们的调用顺序随机),也可以多个槽映射一个信号
- QT的信号槽的建立和解除绑定十分自由
缺点
- 信号槽同真正的回调函数比起来时间的耗损还是很大的,所有在嵌入式实时系统中应当慎用
- 信号槽的参数限定很多例如不能携带模板类参数,不能出现宏定义等等
QT下UDP和TCP的通信流程
QT下udp通信服务器端和客户端的关系是对等的, 做的处理也是一样的
- 创建套接字对象
- 如果需要接收数据, 必须绑定端口
- 发送数据: writeDatagram
- 接收数据: readDatagram
TCP
服务器端:
- 创建用于监听的套接字
- 给套接字设置监听
- 如果有连接到来, 监听的套接字会发出信号newConnected
- 接收连接, 通过nextPendingConnection()函数, 返回一个QTcpSocket类型的套接字对象(用于通信)
- 使用用于通信的套接字对象通信
- 发送数据: write
- 接收数据: readAll/read
客户端:
- 创建用于通信的套接字
- 连接服务器: connectToHost
- 连接成功与服务器通信
- 发送数据: write
- 接收数据: readAll/read
CODE
写出下列程序执行后的结果
#include <iostream.h> class A
{
virtual void g()
{
cout << "A::g" << endl;
}
private:
virtual void f()
{
cout << "A::f" << endl;
}
};
class B : public A
{
void g()
{
cout << "B::g" << endl;
}
virtual void h()
{
cout << "B::h" << endl;
}
};
typedef void( *Fun )( void );
void main()
{
B b;
Fun pFun;
for(int i = 0 ; i < 3; i++)
{
pFun = ( Fun )*( ( int* ) * ( int* )( &b ) + i );
pFun();
}
}
/*
输出结果:
B::g
A::f
B::h
*/
写出下列程序执行后的结果
#include <iostream.h> main()
{
int x[]= {10, 20, 30, 40, 50 };
int *p;
p=x;
cout << *(p+2) << endl;
}
/*
运行结果为:
30
*/
C++基础面试题及答案的更多相关文章
- Java基础知识面试题及答案-整理
1.String类可以被继承吗? 不能.String类在声明中使用final关键字修饰符.使用final关键字修饰的类无法被继承. Java语言的开发者为什么要将String类定义为final类呢? ...
- Java基础面试题及答案(六)
异常 74. throw 和 throws 的区别? throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理.而throw则是 ...
- Java基础面试题及答案(一)
Java 基础部分 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java ...
- WPF 基础面试题及答案(一)
一 · WPF由哪两部分组成? wpf 由两个主要部分 组成:引擎和编程框架. 1 引擎.wpf引擎是基于窗体的应用程序 图形 视频 音频和文档提供了一个单一的运行时库.重要的是WPF基于矢量的呈现引 ...
- 最新Java基础面试题及答案整理
最近在备战面试的过程中,整理一下面试题.大多数题目都是自己手敲的,网上也有很多这样的总结.自己感觉总是很乱,所以花了很久把自己觉得重要的东西总结了一下. 面向对象和面向过程的区别 面向过程: 优 ...
- Java基础面试题及答案(四)
反射 57. 什么是反射? 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力 Java反射: 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能 ...
- Java基础面试题及答案(三)
多线程 35. 并行和并发有什么区别? 并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔发生. 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件. 在一台处理器 ...
- 50 道 CSS 基础面试题及答案
1 介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的? 标准盒子模型:宽度=内容的宽度(content)+ border + padding + margin 低版本IE盒子模型:宽 ...
- Java基础面试题及答案(五)
Java Web 64. jsp 和 servlet 有什么区别? jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器 ...
- Java基础面试题及答案(二)
容器 18. java 容器都有哪些? 常用容器的图录: 19. Collection 和 Collections 有什么区别? java.util.Collection 是一个集合接口(集合类的一个 ...
随机推荐
- python爬虫学习01--电子书爬取
python爬虫学习01--电子书爬取 1.获取网页信息 import requests #导入requests库 ''' 获取网页信息 ''' if __name__ == '__main__': ...
- Dynamics CRM Audit Performance Troubleshooting
记一次Dynamics CRM Audit 查询失败的问题. 客户环境现象:由于业务逻辑需要使用RetrieveAuditDetailRequest API查询相关Record的详细更改信息.但查询过 ...
- 面试京东T5,被按在地上摩擦,鬼知道我经历了什么?
一转眼间,光阴飞快,各大企业都开始招人,各大学校也开始准备陆续入学. 金三银四已经快结束了,有的朋友发来喜报,面试上了一线大厂,也有没有面试上的朋友跑来跟我说,被虐惨了,几天给大家分享下我一个面试京东 ...
- Ethical Hacking - Web Penetration Testing(4)
CODE EXECUTION VULNS Allows an attacker to execute OS commands. Windows or Linux commands. Can be us ...
- GPO - Folder Mapping via GPO
Create a Group Policy on AD DC Server. The GPO policy will come into effect on the next login, or us ...
- P5198 [USACO19JAN]Icy Perimeter S (洛谷) (水搜索)
同样是因为洛谷作业不会写…… 写(水)博客啦. 直接放题目吧,感觉放在代码框里好看点 Farmer John要开始他的冰激凌生意了!他制造了一台可以生产冰激凌球的机器,然而不幸的是形状不太规则,所以他 ...
- T1 找试场 题解
拖延症又犯了QwQ. 今天上午考试了,按照惯例,我仍然要把我会的所有题的题解写一遍. 1.找试场(way.cpp/in/out) 问题描述 小王同学在坐标系的(0,0)处,但是他找不到考试的试场,于是 ...
- Vue全家桶之一Vue(基础知识篇)
全家桶:Vue本身.状态管理.路由. 异步组件:
- swfupload控件文件上传大小限制设置
swfupload控件,是我在开发过程中用到的上传文件的控件,非常实用和方便.但最近碰到一些问题,解决之后进行一下整理. 因为用户上传文件的大小限制增加,导致原本上传控件时,文件的大小需要进行调整和限 ...
- PyQt5基础控件
QLabel标签 功能:在界面上显示文字.图片.链接等 接口: 方法 描述 setText() 设置显示的内容 setAlignment() 设置文字对齐方式 setToolTip() 设置提示信息 ...