赞
踩
首先问项目,我的项目和软开没啥关系,所以他直接让我手撕代码了。
手撕代码:
给你一个区间数组,每个数组表示一个乘车人员,算出最少需要多少辆车;
示例:[1, 4] [2, 6]
输出:2
示例:[1, 2][3, 4]
输出:1
然后问问题,malloc最大能分配多少内存,然后free如何判断要释放多少内存;
32位系统,因为映射区是在1G地址位置,而且映射区与栈相对生长,malloc申请的空间大于128KB的话,调用的是mmap函数,因此分配的地址起始在1G位置,末端为3G,最大2G左右,所以一次最大申请为2G左右,如果小块小块累计申请的话算上堆区128M到1G区间的话,小块申请 malloc调用brk总和就0.9G,累计能申请到的为2.9G。
空间的大小记录在参数指针指向地址的前面,free的时候通过这个记录即可知道要释放的内存有多大。
new和delete是如何分配和释放内存的;
new不止分配内存,而且还是调用类的构造函数
delete的时候要执行析构函数
结构体struct内存对齐的意义是什么;
一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。
TCP和UDP的报文有什么区别;
TCP报文一般是20个字节,还有40个可选字节,UDP报文一般为8个字节;
TCP报文的内容比UDP丰富很多;
操作系统中进程通信中,信号的方式有多少种信号;
可以在任何时刻给进程发送信号,信号是进程间通信或操作的一种异步通信机制。
收到信号后进程对信号的处理有三种方式
如果是系统定义的信号函数,执行默认操作。
SIGINT:程序终止信号。程序运行过程中,按
Ctrl+C
键将产生该信号。SIGQUIT:程序退出信号。程序运行过程中,按
Ctrl+\\
键将产生该信号。SIGALRM:定时器信号。
SIGTERM:结束进程信号。shell下执行
kill 进程pid
发送该信号。
捕捉信号。用户可以给信号定义信号处理函数,表示收到信号后该进程该怎么做。
忽略信号。当我们不希望处理某些信号的时候,就可以忽略该信号,不做任何处理。有两个信号是应用进程无法捕捉和忽略的,即 SIGKILL
和 SEGSTOP
,它们用于在任何时候中断或结束某一进程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。