秋招复习-C++( 一)
Linux/Unix编程部分
1.进程间通信方式:信号,信号量,消息队列,共享内存,套接字Socket
2.ipcs: Linux/Unix下的命令,可以用来查看当前系统中所使用的进程间通信方式的各种信息,可以通过不同的参数选项来进行查询。
ipcs -a 是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息
ipcs -m 打印出使用共享内存进行进程间通信的信息
ipcs -q 打印出使用消息队列进行进程间通信的信息
ipcs -s 打印出使用信号进行进程间通信的信息
3.ipcrm:Linux/Unix下的命令,可以用来移除进程间通信的载体,如共享内存段,信号集合和消息队列等,该命令只有root管理员和ipc的创建者才可以成功使用。该命令执行之后会将与载体相关的数据一起移除。
4.ELF文件:Unix/Linux系统下的一种标准文件格式,可以分为目标文件、可执行文件、共享库文件和核心转移文件四种不同的类型,主要由ELF头部、Program Header table、Section、Section Table组成,本质上是类Unix系统的标准二进制文件。
网络编程部分
1.connect发生阻塞,怎么解决?
答:方法一是设置定时器,使connect进行定时等待,一旦超时就返回错误,方法二是选择使用非阻塞模式,返回之后使用select判断此时所处的状态。
2.select判断数据可读,但是读回来的人数据长度为0,为什么?
答:某个套接字集合中没有准备好,可能会select内存用FD_CLR清该位为0
3.keepalive是什么?
答:TCP协议中用于检测死连接的一种机制。当建立TCP连接的双方长时间没有数据传输而处于空闲状态时,其中一方的主机会发出保持活动信号给另外一方,并等待应答。如果主机可达并且有回应,那么认为对方主机还在线,连接继续保持,反之,重复多次发现都没有报文返回,说明连接已经丢失,直接丢弃该连接。keepalive的探测报文发送间隔可以设置,具体可以参考这篇博客:https://blog.csdn.net/u010126059/article/details/50670801
算法部分
1.排序:常用的排序算法有多种,如快速排序、插入排序、基数排序等,各个算法都有自己的优点和缺点,时间复杂度和空间复杂度也不同,在选用排序算法时应该结合实际需求来选择合适的算法。
快速排序:平均时间复杂度为O(nlogn),最坏情况是O(n^2),当分割的元素选取不恰当时,就会出现最坏情况,此时左区间长度为0,右区间长度为n,一般采用三点中值算法进行优化。
插入排序:平均时间复杂度为O(n^2),适合小数据量或者数据接近有序的排序
C++ STL中实现了一个sort函数,用于对具有线性表结构的容器中的数据进行排序,可以用于对vector或者数据进行排序,不能用于对list和slist进行排序,其底层实现机制运用了以上所说的快速排序和插入排序,源码分析可以参考以下两篇博客:
https://blog.csdn.net/u010902721/article/details/45868391和https://blog.csdn.net/u010902721/article/details/45869367(感谢这位大神的分享,基本将sort的实现机制都说到了)
C++部分
1.值传递、指针传递和引用传递的区别
值传递是传递变量的值,将实参的值拷贝一份给形式参数,在函数中形参的改变与实参没有关系,因此在写swap的demo程序时输出结果并没有发生交换,因为形式参数相当于局部变量,其值存放在栈区域,函数执行完毕退出栈会被销毁。
引用传递和指针传递本质上都是传递地址,实参和形参都是同一变量的地址,在函数中对形参的操作是对该地址对应的内存进行操作,因此测试swap的demo输出结果会发生交换。
2.dynamic_cast
全称是动态类型转换,是C++提供的一种运行时多态类型转换的操作。dynamic_cast提供了类型安全检查,是一种基于能力查询(Capability Query)的转换,所以在多态类型间进行转换更提倡采用dynamic_cast。dynamic_cast只能用于多态类型的类型转换,被转换对象obj的类型T1必须是多态类型,即T1必须公有继承自其它类,或者T1拥有虚函数(继承或自定义)。若T1为非多态类型,使用dynamic_cast会报编译错误。
具体解析可以参考这篇博客:https://www.cnblogs.com/weidagang2046/archive/2010/04/10/1709226.html
暂且分享到这里,未完待续.............
2018-07-22 23:26:04 深圳
秋招复习-C++( 一)的更多相关文章
- 秋招复习-C++(二)
1.Segmentation Fault是什么?什么情况下会导致它的出现?怎么解决? Segmentation Fault中文是段错误,在Linux系统中,段错误一般是是由用户程序非法访问内存引起的( ...
- 秋招复习-C++(三)
• 数据库 1.数据库的索引有哪些? (1)B树索引:利用B树作为底层数据结构的索引,在B树索引中保存索引列的值和数据表的对应行的ID,每一个叶子结点都存放着一个索引列的值和数据表对应行的ID,通过这 ...
- Java Collection秋招复习
抽象类和接口的区别 我们先来看一下抽象类 * @auther draymonder */ public abstract class AbstractClassTest { private int T ...
- 9.秋招复习简单整理之Spring面试AOP和IOC的理解
1.Spring的AOP理解: OOP面向对象,允许开发者定义纵向的关系,但不适用于定义横向的关系,导致了大量代码的重复,而不利于各个模块的重用. AOP,一般称为面向切面,作为面向对象的一种补充,用 ...
- 8.秋招复习简单整理之Spring面试一般问题
1.不同版本的Spring Framework有哪些主要功能? 2.什么是Spring Framework? Spring是一个轻量级的IOC和AOP容器框架,是为Java应用程序提供基础性服务的一套 ...
- 7.秋招复习简单整理之请你讲讲 Statement 和 PreparedStatement 的区别?哪个性能更好?
Statement和PreparedStatement都是数据库用于执行SQL语句的句柄,但是PreparedStatement代表一个预编译的SQL. 以下是PreparedStatement和St ...
- 6.秋招复习简单整理之请你谈谈JDBC的反射,以及它的作用?
通过反射com.mysql.jdbc.Driver类,实例化该类时会调用该类的静态代码块,该代码块会去java的DriverManager类中注册自己,DriverManager管理所有已注册的驱动类 ...
- 5.秋招复习简单整理之请介绍一下List和ArrayList的区别,arrayList和HashSet区别?
第一问:List是接口,ArrayList是List的实现类. 第二问:ArrayList是List的实现类,HashSet是Set的实现类,List和Set都实现了Collection接口. Arr ...
- 4.秋招复习简单整理之java支持多继承吗?
java仅支持单继承,但支持接口多实现.
随机推荐
- bootstrap 表单元素、按钮、链接的禁用
在Bootstra中,表单元素,按钮通过在标签内设置 disabled 或 disabled="disabled" 可以禁用表单元素,按钮.链接需要加入class="di ...
- C#6.0的新特性之内插字符串
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/interpolated-strings C# 6 ...
- python中threading模块中的Join类
join类是threading中用于堵塞当前主线程的类,其作用是阻止全部的线程继续运行,直到被调用的线程执行完毕或者超时.具体代码如下: import threading,time def doWai ...
- 逆序数 UVALive 6508 Permutation Graphs
题目传送门 /* 题意:给了两行的数字,相同的数字连线,问中间交点的个数 逆序数:第一行保存每个数字的位置,第二行保存该数字在第一行的位置,接下来就是对它求逆序数 用归并排序或线段树求.想到了就简单了 ...
- github下载下来的C#控制台小游戏[含源码]
早就听说了github是世界最大的源码库,但自己却不是很懂,今天去研究了下,注册了一个帐号,然后在上面搜索了一下C# game,然后发现有许多的游戏. 随意地选择了一个,感觉比较简单,于是就下载了下来 ...
- C. Mahmoud and a Message dp + 暴力
http://codeforces.com/contest/766/problem/C 关键在于dp,如何计数. 设dp[i]表示前i个字母中,能分成多少份合法的情况.那么答案就是dp[n],其中dp ...
- Windowsforms 中 进程,线程
进程: 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动. 它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体. Process 类,用来操作进程. 命名空间:using Syst ...
- Java核心技术梳理-异常处理
一.引言 异常总是不可避免的,就算我们自身的代码足够优秀,但却不能保证用户都按照我们想法进行输入,就算用户按照我们的想法进行输入,我们也不能保证操作系统稳定,另外还有网络环境等,不可控因素太多,异常也 ...
- CCF|游戏|Java
import java.util.Scanner; public class tyt { public static void main(String[] args) { Scanner in = n ...
- darknet+opencv在windows上的编译
darknet 源码网站:https://github.com/pjreddie/darknet 技术支持官网:https://pjreddie.com/darknet/ darknet采用C++编写 ...