c++工程师面试题目
在面试时,会有一些面试官通常都会问到的问题。针对这些常见面试问题,我们提前准备好自己的答案,是十分有必要的。下面给大家带来c++工程师面试题目2022,希望能帮助到大家!
c++工程师面试问题
1、c++是面向对象的编程语言吗?C++中虚函数(virtual) 是什么?有什么好处?指向类成员函数的指针
(1)C++不是纯面向对象的语言,C++是面向对象和过程的,因为C++支持类和过程。
(2)虚函数(virtual)具有传递性,即子类中对父类的虚函数的重写,也是一个虚函数,不过函数的参数表也要一样。
(3)可以让成员函数操作一般化,用基类的指针指向不同的派生类的对象时,基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数,而不是基类中定义的成员函数(只要派生类改写了该成员函数)。若不是虚函数,则不管基类指针指向的哪个派生类对象,调用时都会调用基类中定义的那个函数。
2、谈谈指针和引用的区别?
指针用操作符“_”和“->”,引用使用操作符“”.
相同点是:指针与引用都是让你间接引用其他对象。
区别:(1). 指针是一个实体,指向一块内存,它的内容是所指内存的地址;而引用仅是个别名,是某块内存的别名。
(2). 引用使用时无需解引用(_),指针需要解引用;
(3). 引用只能在定义时被初始化一次,之后不可变,“从一而终”;指针可变;
(4). 引用没有const类型,指针有const类型,const 的指针不可变;
(5). 引用不能为空,指针可以为空;
(6). “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;typeid(T) == typeid(T) 恒为真,sizeof(T) == sizeof(T) 恒为真,但是当引用作为成员时,其占用空间与指针相同(没到标准的规定)。
(7). 指针和引用的自增(++)运算意义不一样;
3. int m = 100,n = 101;
int k = m;
k = n; //此时K,m值分别是多少?
k和m的值都是101,因为k是对m的引用,k值发生变化,m值也发生着变化。
4、c++中const修饰符一般用于那几种情况,具体作用是什么?
(1).用常量定义const int n = 100;
用于常量参数即fn(const int a)
用于常量函数,即类的该函数不修改其状态。
用于返回值
(2).可以定义const常量,具有不可变性; 便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患; 可以保护被修饰的东西,防止意外的修改,增强程序的健壮性;为函数重载提供了一个参考; 可以节省空间,避免不必要的内存分配;提高了效率。编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
5、你在程序代码中用assert吗?assert一般用于做什么?
(1) 是我常用。
(2)主要用于DEBUG下断言,即假设一定是这样的,否则就是错误的。例如asser ( a > 100 );
6、i++ 相比++i 哪个更高效?为什么?
答:(1)++i 比i++效率高。
(2)i++要多调用一次类的构造和析够函数
7、windows平台下网络编程有哪几种网络编程模型?你最熟悉的是哪种?并对他们作个比较?
(1)有阻塞,,基于窗体的事件模型,事件模型,重叠模型,完成端口模型。
(2)我最熟悉的是事件模型。
(3)除了阻塞模型外,其他都是非阻塞模型,其中效率最高的是完成端口模型,尤其在windows下服务器最合适了。
做客户端一般用事件模型了,,在window和like unix都可以使用。
8、tcp进行传输时,接收方怎么告诉发送方“我已经处理不过来了,先不要再发数据给我。”
答:接受方给发送方发一个通知数据包,该通知包让发送方暂停数据的发送,或方慢发送。等接受方处理完毕后,再发一个恢复的通知数据包。
9、设计udp网络协议包设计包多大合适,为什么?
答:最好设计成MTU的大小,MTU是Maximum Transmission Unit的缩写。意思是网络上传送的最大数据包。这样的话传输速度会快。
10、win2000/win2003个有几个版本,每个版本最新系统补丁包是什么?
11、DNS的实现方法?
12、WEB服务器的负载均衡?
13、请问目前市面上常用几种网络操作系统的优缺点?
14、请问你用过那些服务器?请讲述raid0、1、5的特点和优点?
15、请列出下列协议的段口号:HTTP、HTTPS、DNS、FTP、TELNET、PPTP、SMTP、POP3?
16、请问局域网内想要通过UNC路径或者NETBIOS名称访问对方计算机,需要在对方计算机上开放什么协议或者端口?
17、OSI七层模型?TCP/IP模型?
18、能否将WIN2000P升级成WIN2000S?
经典c++面试题
1. C++的类和C里面的struct有什么区别?
struct成员默认访问权限为public,而class成员默认访问权限为private
2. 析构函数和虚函数的用法和作用
析构函数是在对象生存期结束时自动调用的函数,用来释放在构造函数分配的内存。
虚函数是指被关键字virtual说明的函数,作用是使用C++语言的多态特性
3. 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
1) 全局变量的作用用这个程序块,而局部变量作用于当前函数
2) 前者在内存中分配在全局数据区,后者分配在栈区
3) 生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在
4) 使用方式不同:通过声明后全局变量程序的各个部分都可以用到,局部变量只能在局部使用
4. 有N个大小不等的自然数(1–N),请将它们由小到大排序.要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论