常见的C ++面试问题
c++编程语言被用于广泛的技术需求,包括客户机-服务器系统、面向对象的数据库、实时系统设计,甚至像神经网络和并行编程这样的学科。c++在许多大型软件公司中使用,它可能会成为你简历中有用的技能。
通过研究这些共同的C ++面试问题,准备与潜在招聘经理会面。
以下是c++工作面试中最常被问到的50个问题。
1. C和C ++之间有什么区别?
C是一种面向过程的编程(POP)语言,而c++语言支持面向对象。此外,c++还支持模板、继承、函数重载、虚函数、友函数和引用等特性。这些特性在C中不受支持。
2. oops代表什么?
OOPS代表面向对象编程系统(Object-Oriented Programming System),这是c++的分类方式。
3.什么是函数重载?
函数重载的概念是拥有多个同名函数。这些函数对于不同类型的功能应该有不同的参数。
4.操作员重新载荷是什么?
操纵预先存在的操作员的操作以实现不同的操作。
5.什么是c++中的类?
一个类是不同变量和不同函数的集合。变量称为数据成员,函数称为成员函数。
6.什么是朋友类?
如果一个类被作为另一个类的友元类提到,那么它可以访问另一个类的private和protected成员。
例子:
class class {private: int a;public: ClassA() {a=10;}朋友类FriendClass;};class FriendClass {private: int b;public: void printClassA(ClassA& p) {cout<< " a= " <
7.我们如何访问类的数据成员和成员函数?
DOT-Operator(。)有助于访问类的数据成员和成员函数。
8.什么是遗产?
继承是对象获取另一个类的属性的功能。
9.什么是不同类型的遗产?
有不同类型的遗产 -
- 单继承
- 多重继承
- 多级继承
- 分层继承
- 混合继承
10.什么是单身遗传?
在单一继承中,有一个派生类和一个基类。
11.多级继承是什么?
在多级继承中,一个类从另一个派生类派生而来。
12.什么是多重继承?
这是一个可以使用多个父类派生类时。
13.什么是等级继承?
在分层继承中,许多类是从单个父类派生的。
14.混合遗传是什么?
这是一个以上遗产的组合,称为混合继承。它也被称为虚拟继承。
15.模板是什么?
模板是创建泛型类和泛型函数的方法。
16.什么是访问说明符?什么是不同类型的?
访问说明符定义类别的成员的可访问性。有三种类型的访问说明符:
- Private -它们只能从类内部访问
- 受保护的 - 像私人说明符,但具有额外的功能 - 它们也可以在派生类中访问
- Public -它们可以从类内部和外部访问
17.什么是朋友功能?
一个朋友的朋友函数可以访问类的所有成员,甚至是私有的。我们在课外宣布它。
18.什么是虚函数?
虚函数是声明为类成员函数的函数,但其定义在其派生类中。
19.什么是数据隐藏?
数据隐藏就是在对象中隐藏数据。这通常通过类的私有数据成员来实现。
20.什么是构造函数?
构造函数是类的特殊成员函数。当我们声明一个对象时,它初始化数据成员。
21.什么是副本构造函数?
复制构造函数是类的成员函数。当在创建类的新对象时调用时,它使用同一类的另一个对象初始化对象。要使用复制构造函数,应该已经存在该类的现有对象。
例子:
class Copy {private: int a;复制(int z) {a=z;} Copy(Copy &x) {a=x.a;} void print() {cout<< " a的值是" <
22.静态成员函数的使用是什么?
如果您构成了静态类的成员函数,则使其独立于类的任何对象。即使不存在该类的任何对象,也可以进行静态成员函数的函数调用。
23.使用多少种方式使用?
有很多方法可以使用范围解析。一些例子包括:
- 在类外部定义成员函数
- 在继承中访问各种类的数据成员
24.什么是内联函数?
如果函数是内联,则编译器将在编译时调用函数调用的每个点处的该函数的代码副本。
25.说明内联职能的优势。
内联功能增加了程序的执行时间。
26.结构和课程有什么区别?
结构的变量是公开的,而该类的数据成员可以作为私有。
27.本地和全局变量之间有什么区别?
在代码块中声明的变量称为局部变量。我们只能在代码块中使用这个局部变量。在程序的顶部,在所有函数定义之前声明一个全局变量。可以从代码的任何地方访问它。
28.什么是编译时间和运行时间?
编译器编译一段代码所花费的时间称为代码的编译时间。程序运行所花费的时间称为运行时间。
29.什么是赋值运算符?
我们使用赋值运算符将值分配给变量。它由'='表示。
30.什么是函数重写?
重新定义派生类中基类的成员函数是函数覆盖。
31.解释多态性。
如果对象遵循多态性,那么它在不同的条件下行动不同。有两种类型的多态性:
- 编译时间多态性(静态绑定)
- 运行时多态性(动态绑定)
32.内在课程是什么?
嵌套类是在另一个类中声明的类。
33.解释例外处理。
当程序中遇到某些异常时,使用异常处理。三个关键字用于异常处理:尝试,捕获,抛出。
34.什么是毁容?
析构函数是一种特殊的成员函数。析构函数销毁对象并释放空间。
35.虚拟析构函数的使用是什么?
当我们尝试使用基类指针删除派生类的对象时,遇到一些未定义。为防止这种情况,应在基类中定义虚拟析构函数。
36.什么是完整形式的STL?
STL代表标准模板库。
37.我们可以在集合中存储重复值吗?
不,我们无法在集合中存储重复值。
38.映射使用哪种类型的数据结构?
Map使用BST作为其数据结构。
39.我们可以初始化带数组的矢量吗?
是的,我们可以用数组初始化向量。
40. STL的一些组成部分是什么?
STL的一些组件是迭代器,容器和算法。
41.final怎么用?
在声明函数名时,我们在函数名后添加' final ',以防止在派生类中重写。
42.编写一个C ++程序,用于使用String迭代器查找字符串的长度。
# include using namespace std;int main(){string str =“欢迎”;string ::迭代器它;int count = 0;for(它= str.begin();它!= str.end();它++){cout <<“长度是”<< count << endl;返回0;}
43.编写一个c++程序将给定的字符串全部改为大写。
#include 使用命名空间std;int main(){string str =“welcomber7”;for(int i = 0; str [i]!='\ 0'; i ++){if(str [i]> = 97 && str [i] <= 122){str [i] = str [i] -32;cout << str << endl;返回0;}
44.写一个c++程序来检查一个字符串是否为回文。
# include using namespace std;int main(){string str =“madam”;字符串rev =“”;int len =(int)str.length();Rev.resize(Len);for(int i = 0; j = len-1; i
45.写一个C ++程序以显示功能模板。
# include using namespace std;模板 t maxim(t a,t b){返回一个>b?} int main() {cout<
46.写一个c++程序来显示指向一个对象的指针。
# include using namespace std;类矩形{公共:int长度;int宽度;Int area(){返回长度*宽度;} int周长(){返回周长2*(长度+宽度);}};Int main(){矩形r1;矩形* ptr;ptr = r1;ptr - >长度= 10; ptr->breadth=5; cout<area()<perimeter()<
47.编写一个c++程序,显示使用友元函数重载操作符。
# include using namespace std;Class complex {private: int real;int img;Public: complex(int r=0,i=0) {real=r;img =我;} void display() {cout<
48.使用Access说明符编写C ++程序。
# include using namespace std;课程{PUBLIC:INT A;void显示(){cout <<“显示基本”<< A << ENDL;}};派生:公共基础{public:void show(){cout <<端口的“{cout << endl;}};int main(){派生D;D.A = 100;d.display();d.show(); }
49.写一个c++程序显示继承。
# include using namespace std;类矩形{私有:int长度;int宽度;Public: void setlength(int l) {if(l>0) length=l;其他长度= 1;} void setwidth (int b) {if(b>0) width =b;其他宽度= 1;} int getlength(){返回长度;} int getwidth(){返回宽度;} int area(){返回长度*宽度; } int perimeter() { return 2*(length+breadth); } }; int main() { rectangle r1; r1.setlength(10); r1.setbreadth(5); cout<<"r1.area()<
50.编写一个显示多态性的c++程序。
# include using namespace std;Class car {public: virtual void start() {cout<<"car started"< start ();p =新斯威夫特(); ptr->start(); }
51.为嵌套类编写C ++示例程序。
# include using namespace std;类外部{Class Inner;公众:void fun(){i.display();}类内部{public:void显示(){cout << endl;}};内心我;};int main(){外::内部i;}
52.写一个C ++程序以在功能之间显示抛出并捕获。
# include using namespace std;int句(int a,int b){if(b == 0)抛出1;返回a / b;} int main(){int x = 10,y = 2,z;尝试{if(y == 0)扔1;z = x / y;cout << z << endl;} catch(int e){cout <<“划分零”<< e <<端点;cout <<“再见”<< endl;}
53.使用STL中的向量编写c++程序。
#包括使用命名空间std;int main(){vector v = {2,4,6,8,10};V.Push_Back(20);v.push_back(30);Vector ::迭代器ITR;cout <<“使用迭代器”<< endl;for(iTr = v.begin(); ITR!= v.end(); ITR ++)COUT << ++ * ITR << ENDL;cout <<“每个循环”<< endl;for(int x:v)cout << x << endl;}
54.写一个c++程序使用map从STL。
#Include #包含
55.编写一个C ++程序,显示了自动使用。
# include using namespace std;Float fun(){返回2.34f;} int main() {double d=12.3f;int i = 9;汽车x = 2 * d +我;cout < < x;}
56.编写一个c++程序来显示Lambda函数。
# include using namespace std;int main () {[] (int x, int y) {cout < <”和“x + y < < < < endl;}(10、30);}
57.为省略号编写C ++程序。
#include #include 使用命名空间std;int sum(int n,...){va_list列表;va_start(list,n);int x;int s = 0;for(int i = 0; i
58.写入C ++程序以在文件中写入。
# include # include using namespace std;Int main() {ofstream of ("my.text",ios::trunc);ofs < <“约翰”< < endl;25 ofs < < < < endl;ofs < <“cs”< < endl;ofs.close ();}
59.写一个c++程序读取文件。
# include # include using namespace std;int main(){ifstream ifs;ifs.open(“my.txt”);如果(ifs_open())cout <<“文件打开”<< endl;字符串名称;int roll;串分支;ifs >>名称>>卷>>分支;ifs.close();cout <<“名称”<<名称<< ENDL; cout<<"roll"<