【奇虎360】 2016年技术岗A编程题 -- 内存管理

哎,感觉考试好难啊啊啊啊啊啊!!!!40个选择题+两个编程题。120分钟。那么多读程序的题目。题目都看不完有木有啊!!!!!!!!感觉整个人生都不好了。

题目描述:(具体的也记不清楚了,但是主要内容就是下面的)

模拟内存的分配 释放 和 整理。

操作如下:

new size:分配size字节大小的内存块,返回内存块的句柄handle,size为正整数,如果没有合适的空间返回null。

del handle:释放句柄handle指向的内存块。

def 整理内存碎片。

输入第一行为一个n,m , 分别表示操作次数和内存空间大小。

接下来n行是表示一个操作。

样例:

输入:

6 10

new 5

new 3

del 1

new 6

def

new 6

输出:

1

2

NULL

3

  1 #include<iostream>
  2 #include<list>
  3 #include<string>
  4 using namespace std;
  5 struct Memory{
  6     unsigned int value;
  7     unsigned handle ;
  8     bool isuesed;//使用1 没有使用0
  9 };
 10
 11 void New(list<Memory> &list_memory,unsigned int value,int &handle ){
 12     bool is_success = false;
 13     for (list<Memory>::iterator i = list_memory.begin(); i != list_memory.end(); i++){
 14         if (!(*i).isuesed && (*i).value >= value){
 15             if ((*i).value == value){
 16                 (*i).isuesed = 1;
 17                 (*i).handle = handle++;
 18             }
 19             else{
 20                 Memory m;
 21                 m.handle = handle++;
 22                 m.isuesed = 1;
 23                 m.value = value;
 24                 list_memory.insert(i, m);
 25                 (*i).value -= value;
 26             }
 27             is_success = true;
 28             cout << handle - 1 << endl;
 29             break;
 30         }
 31     }
 32     if (!is_success){
 33         cout << "NULL" << endl;
 34     }
 35 }
 36
 37 void Def(list<Memory> &list_memory){
 38     int value = 0;
 39     for (list<Memory>::iterator i = list_memory.begin(); i != list_memory.end();){
 40         if (!(*i).isuesed){
 41             value += (*i).value;
 42             (*i).handle = 0;
 43             i = list_memory.erase(i);
 44
 45         }
 46         else{
 47             i++;
 48         }
 49
 50     }
 51     if (value){
 52         Memory me;
 53         me.isuesed = 0;
 54         me.value = value;
 55         me.handle = 0;
 56         list_memory.push_back(me);
 57     }
 58 }
 59
 60 void Delete(list<Memory> &list_memory,unsigned int value){
 61     bool is_success = false;
 62     for (list<Memory>::iterator i = list_memory.begin(); i != list_memory.end(); i++){
 63
 64         if ((*i).handle == value){
 65             (*i).isuesed = 0;
 66             (*i).handle = 0;
 67             int _del_value;
 68             if (i != list_memory.begin()){
 69                 i--;
 70                 if (!(*i).isuesed){
 71
 72                     _del_value = (*i).value;
 73                     i = list_memory.erase(i);
 74                     (*i).value += _del_value;
 75                 }
 76                 else{
 77                     i++;
 78                 }
 79             }
 80             i++;
 81             if (i != list_memory.end() && !(*i).isuesed){
 82                 _del_value = (*i).value;
 83                 i = list_memory.erase(i);
 84                 i--;
 85                 (*i).value += _del_value;
 86             }
 87             is_success = true;
 88             break;
 89         }
 90     }
 91     if (!is_success){
 92         cout << "error" << endl;
 93     }
 94 }
 95
 96 int main(){
 97     int n, m;
 98     while (cin >> n >> m){
 99         list<Memory> list_memory;
100         Memory me;
101         me.value = m;
102         me.isuesed = 0;
103         me.handle = 0;
104         list_memory.push_back(me);
105         static int handle = 1;
106         for (int l = 0; l < n; l++){
107             string op;
108             unsigned int value;
109             cin >> op;
110             if (op == "new"){
111                 cin >> value;
112                 New(list_memory, value,handle);
113             }
114             else if (op == "def"){
115
116                 Def(list_memory);
117             }
118             else if (op == "del"){
119                 cin >> value;
120                 Delete(list_memory, value);
121             }
122
123             for (list<Memory>::iterator i = list_memory.begin(); i != list_memory.end(); i++){
124                 cout << (*i).value << ‘ ‘ << (*i).isuesed << ‘ ‘ << (*i).handle << endl;
125             }
126             cout << "---------------------分割线-------------------------------------------" << endl;
127         }
128     }
129 }
130  
时间: 2024-10-29 01:14:21

【奇虎360】 2016年技术岗A编程题 -- 内存管理的相关文章

2016奇虎360研发工程师内推笔试编程题:找镇长

挑选镇长 360员工桂最近申请了一个长假,一个人背着包出去自助游了. 路上,他经过了一个小镇,发现小镇的人们都围在一棵树下争吵.桂上前询问情况,得知小镇的人们正缺一个镇长,他们希望能选一个知名又公正的镇长,即,大家希望能选出一个人,所有人都认识他,但同时他不认识镇上除自己以外的其他人(在此,我们默认每个人自己认识自己).可是小镇里的人太多了,一下子大家谁也说服不了谁. “这简单啊.”桂表示.于是他一下子统计出来了镇上人们相互之间的认识关系,并且一下子找到了合适的镇长人选. 现在你手上也拿到了这样

【2015年奇虎360|绿盟科技|唯品会|4399秋招岗位分析及内推】一大波网络|安全|运维岗位来袭~

2015年华为网申截止提醒 ①华为的网申页面:http://career.huawei.com/recruitment/campus.html,之前说明是9月3号截止网申,这两天上去看,发布时间又更新为9月1号,不管怎样,建议大家还是先投递吧.按照拼客科技这边的经验(内部已经有3枚学员入职华为),我们前两年投递的岗位是:技术服务工程师和销售解决方案经理,都是大家学习网络和安全这块的,比较匹配的岗位. ②今年主要是技术服务工程师.网络安全工程师,如果打算走销售方向,也可以投递他们的营销工程师.产品

奇虎360选择IPO “壳概念”很受伤

黄一帆 “市场正呈现出为一幕经典影像:在绚丽的霞光笼罩下,蔚蓝色的大海边,在金色的海岸上,欢笑的孩子们踮起脚尖,刚好看见原来海平面露出的航船桅杆——那是缓缓驶来的注册制号:而转过头来,则是沙滩上大大小小的壳,有的鲜艳,有的朴素,有的饱满光滑,有的干瘪可憎,有的空空荡荡,有的被蟹寄居,动来动去,带着怪异的生机.” 曾为2015年末资本市场写下历史注脚的作者大概不会想到,仅在1年多后,“注册制号”虽然尚未抵达,然而那些曾经遍地的各色怪异“壳”已被慢慢冲刷. 继分众传媒.巨人网络以借壳方式回归A股后,

每天200亿次查询 – MongoDB在奇虎360【转】

100多个应用,1,500多个实例,每天200亿次查询 奇虎是中国最大的安卓移动发布平台.奇虎也是中国最顶尖的病毒软件防护公司,同时为网络以及移动平台提供产品.自从2011年成为MongoDB的用户之后,奇虎已经在MongoDB上构建了100多个不同的应用,其中包括新服务以及从MySQL和Redis上迁移过来的服务——每天都会在MongoDB上运行超过1, 500个实例并且支持200亿次查询. 我很高兴能够有一个机会与奇虎的高级DBA——杨艳杰进行交流,了解更多关于他们使用MongoDB的过程及

杂项-公司:奇虎360

ylbtech-杂项-公司:奇虎360 奇虎360是(北京奇虎科技有限公司)的简称,由周鸿祎于2005年9月创立,主营360杀毒为代表的免费网络安全平台和拥有问答等独立业务的公司.该公司主要依靠在线广告.游戏.互联网和增值业务创收.2014年1月15日,奇虎360宣布进军台湾,授权希悦资讯为台湾地区总代理.2015年2月4日,内部人士确认,奇虎360公司斥巨资收购国际顶级域名360.com,收购价格为1700万美元,约合人民币1.1亿元.目前360.com的whois信息已经更改为北京奇虎科技有

为什么奇虎360也宣布退市 启动私有化?

继人人.世纪互联等公司宣布私有化后,又一家重量级中概股选择了退市之路.6月17日下午,奇虎360宣布退出美股,启动360私有化战略. 于当天晚七点左右,360公司董事长周鸿祎内部群发邮件证实了这则消息.并表示,对360实施私有化,是在反复考虑当前全球及中国资本市场环境后,为了360未来更好地发展,他和公司总裁齐向东经过审慎思考后做出的主动战略选择. 360公司宣布,公司董事会已接到初步非约束性私有化要约.该要约来自公司董事长周鸿祎.中信证券.华兴资本.红杉资本等,以每股普通股51.33美元(相当

奇虎360退出美国股市 12月再曝拟私有化

文/辛东方 [摘要]2015年6月,奇虎360董事长周鸿祎宣布启动360私有化战略计划,并退出美国股市,12月再曝与投资者集团达成私有化协议.周鸿祎在股市上到底是赔了,还是赚了,外人不得而知!360到底在卖什么膏药,更是把行业人人士给纠结住了. 据了解,奇虎360是由周鸿祎于2005年9月创立的以主营360杀毒为代表的免费网络安全平台和拥有问答等独立业务的公司.该公司主要依靠在线广告.游戏.互联网和增值业务创收. 2015年6月,奇虎360与投资者集团达成私有化协议,奇虎360的全现金私有化交易

光线凭借《左耳》胜出五一档后,又要拉上奇虎360整大事?

由光线影业出品,苏有朋首度执导的青春题材电影<左耳>,自4月24日上映以来,票房成绩惊人.首周末破两亿,十天破4亿,由欧豪.陈都灵等领衔的鲜肉军团更是让<左耳>成为今年"五一档"最大黑马. 5月10日,<左耳>在实体院线仍保持每天近1000万票房的增势,以"零窗口期"独家超前登陆360网络院线,导演苏有朋以及陈都灵.马思纯.欧豪.胡夏.饶雪漫等主创人员将分别通过创新产品"明星专场"方式与网友.粉丝互动观影. 一

2013:奇虎360最好的时光

奇虎360发布了第二季度财报,财报显示,奇虎第二季度总营收3.179亿美元,同比增长109.6%:净利润3910万美元,同比增长18.5%. 咋一看,奇虎的财报无论是营收还是净利润都在增长,看上去是份不错的财报.不过,两个增长率却相差很大,净利润明显跟不上营收增长势头,这说明奇虎的利润率在下降,那么这个数据具体是多少呢?据报道,奇虎Q2净利率为12.3%,去年同期为21.8%,上季度为18.5%.这说明公司成本上升很快,虽然营收在大幅增长,但利润却不见涨,反而呈现环比下降的态势,这用另外一组数据