秋招复习-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仅支持单继承,但支持接口多实现.
随机推荐
- Pascal之while
program Project1; {$APPTYPE CONSOLE} uses SysUtils; begin { TODO -oUser -cConsole Main : Insert code ...
- bzoj P1979 华容道【bfs+spfa】
调死我了-- 首先观察移动方式,需要移动的格子每次移动到相邻格子,一定是先把空白格子挪过去,所以我们得到一种做法,就是bfs预处理出每一个格子的四联通格子之间的空白格子移动距离建边,注意这个移动是不能 ...
- Ubuntu 下Python和pip的版本
首先python只是个指向特定版本的软链接,具体指向那个是可以我们自己设置的, 而在Ubuntu中默认是指向python2的,并且python2其实也是个指向特定版本的软链接 所以我们要做的就是删除这 ...
- yml文件教程
地址:http://www.ruanyifeng.com/blog/2016/07/yaml.html 原来三个横线(---)是用来区分多个文件的,像下面就是指定了两个配置. spring: appl ...
- flask框架模板系统
flask模板引擎 flask默认使用了Jinja2模板引擎,我们在使用模板的时候,需要在同级目录文件夹下 创建一个templates的文件夹,然后这个文件夹内放置我们想要的模板实例即可: 在正常普通 ...
- [Usaco2017 Open]Modern Art 2
Description Having become bored with standard 2-dimensional artwork (and also frustrated at others c ...
- _bzoj1014 [JSOI2008]火星人prefix【Splay】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1014 天,写kth()时,把判断条件k <= siz[ch[x][0]]错写成了k & ...
- 题解报告:NYOJ 题目143 第几是谁?(逆康托展开)
描述 现在有"abcdefghijkl”12个字符,将其按字典序排列,如果给出任意一种排列,我们能说出这个排列在所有的排列中是第几小的.但是现在我们给出它是第几小,需要你求出它所代表的序列. ...
- Xcode配置SVN详细步骤
转载:http://blog.csdn.net/weiqubo/article/details/8288635 Xcode 默认自带Git 与 SVN,我们本篇介绍SVN的详细配置步骤如下: 1. ...
- 413 Arithmetic Slices 等差数列划分
如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列.例如,以下数列为等差数列:1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9以下数列不是等差数列. ...