自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 问答 (2)
  • 收藏
  • 关注

原创 进程间通信和线程间通信总结

死锁的四个必要条件:①资源有限②持有等待③不能抢占④循环等待条件死锁的应对方式:    ①消除独占条件(即将资源无限增加或者变为共享)②消除保持和请求条件(即一个进程一次请求其所需要的所有资源,而不是请求一点资源做一点事情,但是这样太过浪费。)③消除非抢占条件(即允许对资源进行抢占)④消除循环等待条件(即产生循环等待的原因是进程请求资源的顺序是随即的,一个进程可以先请求A资

2017-08-31 17:24:38 228

原创 多益网络二笔(1)

在经过了全是数学与概率的笔试题之后,今天终于开始了编程类的题目,大题有两道,第一道为选择一种排序进行十个数字的排序。第二题为,逆时针构造一个二维数组。写了半天,没写出来,这个边界还是太难控制,刚刚才想通,写出来:#include using namespace std;void main(){int n;cin>>n;int *ar = new int[n*

2017-08-29 21:38:19 1274

原创 58一面

今天,58视频面试。面试时间30分钟,主要问了以下几个问题,1、项目。2、无序数组中的第K大数。说了好几种方法,包括冒泡N次,快排到N位,堆排序找N个,最后拉着我说的建立一个最小堆,问了问,还问了时间复杂度。3、一个字符串中删除指定的字符。让我说了下思路,说的可能不太清楚,让我上手写代码。吓得我赶紧先判空。。#include #include using names

2017-08-29 17:28:38 385

原创 创新工场2018笔试题

1给出N年的一个周期,计算2017年1月1日至2017+N-1年12月31日中17号周一到周日的次数,N为正整数且不大于400.注意:1、2017年1月17日是星期二.2、闰年2月有29天.#include #include using namespace std;#define STARTYEAR 2017bool Is_Leapyear(int year

2017-08-26 21:11:21 833

原创 地平线2018电话面试

然而并不是我的电话面试,但是听说问题之后,发现确实是都不会,就稍微总结一下: 1、vector对于自定义类型的存储 Vector定义在栈上,其存储内容在堆上,动态开辟内存。不论是自定义类型还是内置类型,其刚刚开辟的大小是0,其后当空间不足时,以2倍方式增长,元素可以增加可以减少,但是容量只能增加不能减少。 2、线程通讯的读写锁和互斥锁 读写锁:可以多个读者同时进行读操作,只允许一个写者进行写

2017-08-25 16:28:40 4956 3

原创 找到B字符串在A字符串中出现的所有位置的集合

有一种话,叫做废话,我就不说了,虽然这句也是。直接上题:在A字符串中查找到出现B字符串的所有位置的集合。例如,A字符串“ABCDDDBC”;B字符串“ABC”,那么对应的输出为123,128,178这道题可能可以使用动态规划吧,我不太会,还是笨办法,循环。void Print(string &st1,string &st2,vector &ve, int st1_i,int

2017-08-24 20:07:08 5238

原创 多道程序磁盘IO计算问题

多道处理程序,是指在计算机内存中同时存放几道相互独立的程序,使他们相互穿插运行,互不影响。他们之间共享系统资源。昨天,做58同城笔试题,遇到一道计算多道程序磁盘IO计算问题,不会做,请教了老师和学霸,发现竟然学霸比较靠谱[笑哭]。题目: 设有ABC,三个程序同时运行,每个程序都需要完成计算和磁盘IO两项工作,三个程序优先级为ABC,各个程序的工作顺序和所需时间为,A计算60MS-》

2017-08-23 18:04:56 2017 2

原创 C语言实现简单内存池

内存池的使用时很有必要的,因为他可以尽很大可能避免我们的内存碎片化,对于我们开辟小块内存的时候,他的作用尤为明显。我也实现了一个内存池,本来想和杨老师的一样高大上,但是他的代码,我实在是看不懂了,心有余而力不足。只能自己赵一份简单的实现,大体原理差不多。原理是:我们先开辟一块内存,例如1024K,然后将这1024K管理起来,用户需要开辟内存时,判断他需要多大,如果大于128K那么我们直接调用系

2017-08-20 23:43:37 1875 1

原创 select、epoll源码剖析与对比

IO复用就是通过一组函数来监听多个文件描述符。程序只需要关注是否有文件描述符就绪即可。在Linux下,有select、poll、epoll等IO复用函数。select是指,在用户空间创建一个fd_set用于存放需要监听的文件描述符,每次调用select的时候需要将被监听的文件描述符全部拷贝给内核,而内核会进行轮询监听,查看是否有就绪的文件描述符。一旦发现文件描述符准备就绪,就会将更改过的监

2017-08-20 16:11:02 351

原创 查找和是某一值或者某一范围的的所有可能

昨天做笔试题,有这么一道题,稍有难度。题目是:输入包含多组数据。第一行为一个正整数T(T母的掩码,共26个数字构成的串,对应于26个大写字母,表示使用/对应字母的数量。输出对于每一组输入数据,输出一行"Case #k ans",表示第k组数据的结果是ans。样例输入21 1001 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2017-08-19 18:48:42 258

原创 拼积木问题

问题:一个积木有两个头,用数字表示,N个积木之间相同数字可以拼接在一起,现在给出一堆积木,判断这对积木能不能拼接成功。要求:输入第一个数据是给出的测试用例的个数T,之后输入一个数据是积木的个数,然后是每块积木的两头的大小。例如:221  22  3  41  33  64  95  8输出:YESNO当时没有想到用mulset,其实可

2017-08-19 00:08:51 1169

原创 单链表的所有操作,检查是否有环,合并链表,逆置链表,排序链表......

单链表我能想起来的所有操作,这里是带头结点的单链表:主要包括,创建,增加,删除,查找,逆置,排序,合并,检测是否有环,等等。不顾有一个没有实现,就是找到环的入口地址,这个和找环是一样的,找到有环了,一个慢指针重新开始从头走,一个从检测到环的那个点走。等他们相遇,就是环的入口地址。#include #include #include #include using namesp

2017-08-18 18:36:34 269

原创 求第N个素数的值,时间复杂度尽量低

今天纠结了整整一下午的这个题,当心不静的时候,世界就更加浮躁。也许不应该这样,但是如果能时刻控制自己,那现在的我应该在家里等待笔试而不是在这里。。。先看题:输入一个数字N,输出第N个素数的值。素数(除了1和他自己不能被其他数整除的数)这道题有很多解法,比如暴力,N的平方的解法,但是这样的解法当数字很大的时候,其效率太差。当然对于N的平方的解法可以做一些优化,其实我们第二次只需要遍历到根号N

2017-08-18 16:40:51 2330

原创 编译,链接过程分析

编译链接:编译程序的时候,具体的编译过程分为四个步骤,预编译,编译,汇编,链接。实际上,Gcc这个命令只是后台程序的包装,他会根据不同的参数要求去调用预编译编译程序cc1,汇编器as,链接器ld。总结一下:编译程序分为四个步骤,预编译,编译,汇编,链接。预编译阶段主要将注释删除,添加行号,头文件展开,保留编译器指令。编译阶段,处理编译器指令,进行词法分析,语法分析,语义分析,代码的

2017-08-13 16:13:18 399

原创 位运算实现交换以及四则运算

1、位运算实现数字的交换void Swap(int &a,int &b){ int c = a ^ b; b = c ^ b; a = c ^ a;}void main(){ int a = 10; int b = 20; Swap(a,b); cout<<a<<" "<<b<<endl;} 2、位运算实现加法int Add(int a,int b){ int

2017-08-11 10:44:26 604

原创 最简单的二叉树

最简单的二叉树,今天先更新这个,以后继续更新。如果错误,欢迎指出。//简单的二叉树的基本功能实现struct Node { char data; Node *left; Node *right;};Node *Create(char **str){ Node *s = NULL; if(str != NULL && *str != NULL && **str !=

2017-08-05 18:24:44 519

原创 三大面试排序的归并以及递归实现--快速排序、归并排序、堆排序

本文主要是三大常用排序的实现,包括快速排序的递归方法,循环方法。归并排序的递归方法,循环方法。以及堆排序。快速排序:递归实现(快排)void Show(int ar[],int len){ copy(ar,ar+len,ostream_iterator(cout," ")); cout<<endl;}//快速排序--递归int Quick_sort_once(int a

2017-08-05 10:00:02 552

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除