
24. 二手的shell命令
cp,mv,rm,mkdir,touch,pwd,cd,ls,top,cat,tail,less,df,du,man,find,kill,sudo,cat
25. 使用过的vim命令
wq!,dd,dw,yy,p,i,%s / old / new / g,/ abc向后搜索字符串abc 、? abc前向搜索字符串abc
26. 使用过的gdb命令
27. 常用算法
快速排序,堆排序和合并排序
堆排序:
快速排序,合并排序:
稳定性分析
28. C库函数实现
29. 静态链表和动态链表的区别
31. 大并发(epoll)
优势:
示例:
32. 数据处理的知识点(哈希表,哈希统计)
哈希表:
质量数据处理方法:
33. 我什么时候应该使用虚拟析构函数
当基类的指针删除派生类的对象时,基类的析构函数应该是虚拟的. 否则,将无法达到删除效果.
在正常情况下,这种删除只能删除基类对象,而不能删除子类对象,而子类对象形成了要删除的一半图像,从而导致数千万的内存泄漏.
原因:
在公共继承中,基类对派生类及其对象的操作只能影响从基类继承的那些成员.
如果要使用基类对非继承成员进行操作,则必须将基类的此操作(函数)定义为虚拟函数.
因此,析构函数自然应该是相同的: 如果要破坏重定义或子类中的新成员和对象,那么当然也应该将其声明为虚拟的.
注意:
如果不需要基类对派生类和对象进行操作,则不能定义虚拟函数(包括虚拟析构函数),因为这会增加内存开销.
34. C ++如何使返回对象的函数不调用复制构造函数
在复制构造函数之前添加“显式”关键字
35. 孤儿进程和僵尸进程
主要计算机公司的笔试和面试问题
面试问题既困难又容易. 我们不能轻视它们,因为它们很容易,我们也不能放弃,因为它们很困难. 我们对待高薪工作的态度将永远不会改变,即毅力,毅力,毅力. 如果有问题,请找出原因;如果遇到困难,请找到解决方案. 我们始终相信,只有在坚持不懈的过程中才能看到希望.
生活没有结果,只有结果和后果. 既然选择了,您就不会后悔. 青年是资本,青年必须忍受艰辛和经验. 必须学会在毅力中成长. 如此感性,最深刻的体验,绝对的体验.

好,输入主要问题,以下是“必须掌握的20个技术面试问题”.
Q1: 请告诉我什么是C ++的简单语言?
答案: C ++是在C语言的基础上开发的一种面向对象的编程语言c 类 static 函数,已被广泛使用. C ++支持多种编程范例-面向对象的编程,通用编程和过程式编程. 它的编程领域被广泛使用,并且经常被用于系统开发和引擎开发等应用领域. 它是大多数程序员使用的最强大的编程语言之一. 支持的类: 类,封装和重载之类的功能!
Q2: C和C ++有什么区别?
答案: C ++在C的基础上添加类. C是一种结构化语言,其重点是算法和数据结构. C程序设计中的首要考虑因素是如何处理输入(或环境条件)以通过过程获得输出(或实现过程(事务)控制). 对于C ++,首先要考虑的是如何构建对象模型,让此模型适合相应的问题领域,以便您可以通过获取对象的状态信息来获取输出或实现过程(事务)控制.
Q3: 什么是面向对象(OOP)?
答案: 面向对象是一种用于理解和抽象现实世界的方法和想法. 通过将需求要素转化为对象来解决问题是一种想法.
Q4: 什么是多态性?
答案: 多态性意味着相同的操作,功能或过程可以作用于多种类型的对象并获得不同的结果. 不同的对象,接收相同的消息会产生不同的结果,这种现象称为多态.
Q5: 您了解设计模式,仅举一个例子吗?
答案: 设计模式(Design pattern)是一组重复使用的代码设计经验,大多数人都知道,对其进行了分类和分类.
例如,单顿模式可确保一类只有一个实例,并提供一个全局访问点来访问它.
适用于: 当该类只能有一个实例,并且客户端可以从一个著名的访问点访问它时;当该唯一实例可以通过子类扩展,并且客户端在扩展实例时应使用一个实例而无需更改代码.
例如,工厂模式,定义用于创建对象的接口,然后让子类确定要实例化的类. Factory Method将类的实例化延迟到其子类.
适用于: 当类不知道必须创建的对象的类时;当一个类希望其子类指定其创建的对象时;当类将创建对象的责任委托给多个助手子类之一时,并且您想定位哪个助手子类是代理.
Q6: 是否已使用STL库?常见的STL容器是什么?使用了哪些算法?
答案: STL包括两个部分: 容器和算法. (结合两个迭代器也很重要)
容器,存储数据的位置. 例如数组等.
在STL中,容器分为两类: 串行容器和关联容器.
顺序容器,元素不一定要排序,但可以排序. 例如: 向量,列表,双端队列,堆栈,队列,堆,priority_queue,slist;
关联容器,内部结构基本上是平衡的二叉树. 所谓关联,是指每个元素都有一个键值和一个实值,并且这些元素是根据某些规则存储的. 例如: RB树,集合,地图,多集,多图,哈希表,hash_set,hash_map,hash_multiset,hash_multimap.
选择以下一项作为解释.
vector: 它是一个动态分配存储空间的容器. 与C ++中的数组不同,数组分配的空间是静态的,分配后不能更改,向量将自动重新分配(扩展)该空间.
set: 其内部元素将根据元素的键值自动排序. 与map不同,其键值是实值,并且map可以同时具有不同的键值和实值.
算法,例如排序,复制...以及特定于容器的算法. 这一点不需要太多的介绍,主要看下面迭代器的内容.
迭代器是STL的本质,我们以这种方式描述它: 迭代器提供了一种使它能够按顺序访问容器中包含的每个元素的方法,但又不暴露容器的内部结构. 它将容器和算法分开,以便可以独立设计两者.
Q7: 数据结构将是吗?哪些主要用于项目开发过程中?
答案: 数组,链接列表,树(较少)主要用于数据结构中,还使用堆栈和队列的思想.
Q8: const知道吗?解释其作用.
答案:
1.const修改类的成员变量,指示无法修改的成员常量.
2. const修改函数保证不会在该函数内修改类中的数据成员,并且不会调用其他非const成员函数.
3. 如果const构成函数重载,则const对象只能调用const函数,非const对象具有优先权来调用非const函数.

4. const函数只能调用const函数. 非const函数可以调用const函数.
5. 在类外部定义的const成员函数在定义和声明时需要const修饰符.
Q9: 此类的静态变量何时初始化?函数的静态变量何时初始化?
答案: 类的静态成员变量在实例化类和分配内存之前就已存在. 该函数的静态变量在执行此函数时会初始化.
Q10: 堆和堆栈有什么区别?堆和堆栈的生命周期?
答案:
首先,堆栈空间分配的差异:
1. 堆栈(操作系统): 由操作系统自动分配和释放,存储函数参数值,局部变量值等. 其操作类似于数据结构中的堆栈;
2. 堆(操作系统): 通常,它由程序员分配和释放. 如果程序员不释放它,则在程序结束时OS可能会恢复它. 分配方法类似于链表.
第二,堆栈缓存方法之间的区别:
1. 堆栈使用一级缓存. 它们通常在被调用时位于存储空间中,并在调用后立即释放;
2. 堆存储在第二级缓存中,生命周期由虚拟机的垃圾回收算法确定(一旦成为孤立对象,就无法回收). 因此,调用这些对象的速度相对较低.
三,堆栈数据结构之间的区别:
堆(数据结构): 堆可以看作是一棵树,例如: 堆排序;
堆栈(数据结构): 一种高级数据结构.
Q11: C和C ++有什么区别?
答案: C ++在C的基础上添加类
C是一种结构化语言,其重点是算法和数据结构.
在C程序设计中,首先要考虑的是如何处理输入(或环境条件)以通过过程获得输出(或实现过程(事务)控制). 对于C ++,首先要考虑的是如何构造对象. 模型,以便该模型适合相应的问题域,从而可以通过获取对象的状态信息来获得输出或实现过程(事务)控制.
Q12: 解释封装,继承和多态性吗?
答案:
一个,包装:
封装是实现面向对象编程的第一步. 封装是一个单元(我们称为类)中数据或函数的集合.
封装的意义在于保护或防止代码(数据)被我们无意中破坏.
第二,继承:
继承主要实现代码重用,节省了开发时间.
子类可以从父类继承某些东西.
三,多态性
多态性: 相同的操作作用于不同的对象,这些对象可能具有不同的解释并产生不同的执行结果. 在运行时,您可以通过指向基类的指针来调用派生类中的方法.
Q13: 指针和引用之间有什么区别?
答案:
1. 指针是一个变量,但是此变量在内存中存储一个指向存储单元的地址. 该引用仅是个人名称;
2. 使用引用时无需取消引用(*),指针需要取消引用;

3. 该引用在定义后只能初始化一次,然后是不可变的. 指针是可变的;
4. 引用没有const,指针有const;
5. 引用不能为空,指针可以为空;
6. “ sizeof引用”是指向的变量(对象)的大小,“ sizeof指针”是指针本身的大小;
7. 指针和引用的增量(++)操作的含义不同;
8. 指针可以有多个级别,但是引用只能是一个级别(int ** p;合法,int && a是非法的)
9. 从内存分配的角度来看: 程序为指针变量分配了内存区域,而引用则不需要分配内存区域.
Q14: 什么是内存泄漏?面对内存泄漏和指针越界,您有什么选择?您通常使用什么方法来避免和减少此类错误?
答案: 动态存储分配功能动态创建的空间在使用后不会释放. 结果,该存储单元始终被作为内存泄漏占用.
使用它时,请记住指针的长度.
Malloc必须确保它在那里是免费的.
分配指针时,应注意是否需要释放分配的指针.
最好不要再次分配动态分配的内存的指针.
Q15: 常用的排序算法是什么?简要描述几种排序算法的优缺点?
答案: 选择,冒泡,快速,**,希尔,合并,堆叠等
1. 快速排队: 这是对气泡排序的一种改进.
优点: 快速,数据移动少
缺点: 稳定性不足
2. 合并: 分治法排序,稳定的排序算法,通常用于整体无序但部分有序的序列.
优点: O(n)效率高,稳定
缺点: 内存使用更多
问题16: new和malloc有什么区别?
答案:
1. malloc和free是C ++ / C语言的标准库函数,而new / delete是C ++的运算符. 它们可用于申请动态内存和可用内存.
2. 对于非内部数据类型的对象,使用maloc / free不能满足动态对象的要求. 创建对象时,该对象应自动执行该构造函数,而该对象死亡前应自动执行该析构函数.
3. 由于malloc / free是库函数而不是运算符,因此它不在编译器的控制权限之内,并且执行构造函数和析构函数的任务不能强加于malloc / free. 因此,C ++语言需要一个可以完成动态内存分配和初始化工作的new运算符,以及一个可以完成清除和释放内存工作的delete运算符. 请注意,new / delete不是库函数.
4. C ++程序经常调用C函数,并且C程序只能使用malloc / free来管理动态内存.
5. new可以看作是malloc plus构造函数的执行. 新指针直接带有类型信息. 而且所有的malloc返回都是空指针.
Q17: TCP和UDP通信之间有什么区别?什么是IOCP?
答案:
1. TCP是面向连接的,UDP是无连接的
2. 保证TCP,不保证UDP传输
3. TCP效率低下c 类 static 函数,UDP效率高

4. TCP基于流,UDP基于数据消息
5. TCP传输重要数据,UDP传输不重要的数据
IOCP的全名是I / O完成端口,将其翻译成中文的I / O完成端口.
IOCP是异步I / O API,可以有效地将I / O事件通知给应用程序.
与使用select()或其他异步方法不同,套接字[socket]与完成端口关联,然后正常的Winsock操作可以继续. 但是,当事件发生时,操作系统会将完成端口添加到队列中. 然后应用程序可以查询核心层以获取此完成端口.
Q18: 同步IO和异步IO有什么区别?
答案:
A. 同步
所谓的同步是指当发出函数调用时,直到获得结果后,该调用才会返回.
根据此定义,大多数功能被同步调用(例如sin isdigit等).
但是一般来说,当我们谈论同步和异步时,我们特别指的是需要其他组件配合或需要一定时间才能完成的任务.
最常见的示例是SendMessage.
此功能将消息发送到窗口. 对方处理完该消息后,此功能才会返回.
此函数在另一方完成处理后,将消息处理函数返回的值返回给调用方.
B. 异步
异步的概念与同步相反.
发出异步过程调用时,调用者将不会立即获得结果.
实际处理此呼叫的部分是在发出呼叫后通过状态和通知通知呼叫者,或通过回调函数处理呼叫.
Q19: 解释C ++中的静态函数和静态变量吗?
答案:
(1)类静态数据成员是在编译时创建和初始化的: 在建立该类的任何对象之前存在,并且不属于任何对象,并且非静态类成员变量属于该对象. 类静态数据成员只有一个副本,所有这些对象都共享该副本.
(2)类的静态成员函数属于整个类,而不属于一个对象,并且由该类中的所有对象共享.
1. 静态成员变量可实现相似对象之间的信息共享.
2. 静态成员类存储在外部,找到类的大小,不包括在内.
3. 静态成员是一个全局变量,其名称空间属于一个类,并存储在数据区的rw部分.
4. 静态成员只能在类外部进行初始化.
5. 可以通过类名(或不生成任何对象时)或对象来访问它.
1. 静态成员函数的含义不是在信息共享和数据通信中,而是在管理静态数据成员以完成静态数据成员的封装中.
2. 静态成员函数只能访问静态数据成员. 原因: 调用此指针时,将非静态成员函数称为参数. 静态成员函数属于类,而不是对象,并且没有此指针.
问题20: 告诉我您的记忆吗?
答案:
1. 由编译器自动堆栈分配和释放
2. 通常,堆是由程序员分配和释放的. 如果程序员不释放它,则操作系统可能会在程序结束时对其进行恢复
3. 全局区域(静态区域),全局变量和静态变量的存储放在一起,初始化的全局变量和静态变量在一个区域中,未初始化的全局变量和未初始化的静态变量在另一个区域中. -在程序结束时发布
4. 还有一个常量的地方. -在程序结束时发布
5程序代码区域,存储二进制代码.
函数主体中定义的变量通常在堆栈上. 由malloc,calloc,realloc和其他分配内存的函数分配在堆上. 全局数量在所有功能的主体之外定义. 添加静态修饰符后,无论它在哪里,它都存储在全局区域(静态区域)中. 在所有函数主体之外定义的静态变量表示该变量在此文件中有效,不能被其他文件替代. 使用时,在函数主体中定义的静态表示仅在函数主体中有效. 另外,函数中的字符串“ adgfdf”存储在常量区域中.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-283910-1.html
中国海军的人员素质还不行
10万明年变9万