热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

百度笔试(2014年10.12.14:00)

算法描述和复杂度分析发牌程序c与c++分别是怎样动态分配和释放内存的,有什么区别?c语言提供内存动态分配的函数有:malloc、calloc、realloc,在使用这些

 算法描述和复杂度分析

发牌程序

c与c++分别是怎样动态分配和释放内存的,有什么区别?

c语言提供内存动态分配的函数有:malloc、calloc、realloc,在使用这些函数时必须包含其头文件,分别为:

    1) malloc 函数: void *malloc(unsigned int size)

     在内存的动态分配区域中分配一个长度为size的连续空间,如果分配成功,则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会进行初始化。

    2)calloc 函数: void *calloc(unsigned int num, unsigned int size)

     按照所给的数据个数和数据类型所占字节数,分配一个 num * size 连续的空间。

    calloc申请内存空间后,会自动初始化内存空间为 0,但是malloc不会进行初始化,其内存空间存储的是一些随机数据。

    3)realloc 函数: void *realloc(void *ptr, unsigned int size)

     动态分配一个长度为size的内存空间,并把内存空间的首地址赋值给ptr,把ptr内存空间调整为size。

     申请的内存空间不会进行初始化。

   释放的函数为free函数:

   free函数原型为:void free(void *ptr)

    作用:释放由上面3种函数所申请的内存空间。

    参数:ptr:指向需要释放的内存空间的首地址。

   在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。

   申请和释放堆中分配的存储空间,分别使用new 和 delete 的两个运算符来完成:

   指针变量名 = new 类型名(初始化式);

  delete 指针名;

   例如:

    int *pi = new int(0)

malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可以用于申请动态内存和释放内存。

对于非内部数据类型对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free.

有两个有序整数集合a和b,写一个函数找出它们的交集?

________________________________________

   方法一:

 1   privatestatic Set setMethod(int[] a,int[] b){

 2        Set set = new HashSet();

 3        Set set2 = new HashSet();

 4        for(int i=0; i

 5            set.add(a[i]);

 6        }

 7        for(int j=0; j

 8            if(!set.add(b[j]))

 9                 set2.add(b[j]);

10         }

11        return set2;

12    }

  方法二:

 1   privatestatic Set forMethod(int[] a,int[] b){

 2        Set set=new HashSet();

 3        int i=0,j=0;

 4        while(i

 5            if(a[i]

 6                 i++;

 7            else if(a[i]>b[j])

 8                 j++;

 9            else{

10                 set.add(a[i]);

11                 i++;

12                 j++;

13             }

14        }

15        return set;

16    }

方法三:

 1   privatestatic int[] intersect(int[] a, int[] b) {

 2        if (a[0] > b[b.length - 1] || b[0] > a[a.length - 1]) {

 3            return new int[0];

 4        }

 5        int[] intersection = new int[Math.max(a.length, b.length)];

 6         int offset = 0;

 7        for (int i = 0, s = i; i

 8            while (a[i] > b[s]) {

 9                 s++;

10             }

11             if (a[i] == b[s]) {

12                 intersection[offset++] =b[s++];

13             }

14             while (i <(a.length - 1)&& a[i] == a[i + 1]) {

15                 i++;

16             }

17        }

18        if (intersection.length == offset) {

19             return intersection;

20        }

21        int[] duplicate = new int[offset];

22        System.arraycopy(intersection, 0, duplicate, 0, offset);

23        return duplicate;

24    }

HTTP

Hypertext Transfer Protocol, 超文本传输协议

Domain Name Server, 域名服务器

File Transfer Protocol , 文件传送[输]协议

Post Office Protocol, 邮局协议,用于电子邮件的接收

Simple Message Transfer Protocol, 简单邮件传输协议, 用于电子邮件的传输

Internet Control Messages Protocol, 网间控制报文协议

User Datagram Protocol, 用户数据报协议

Transfer Control Protocol, 传输控制协议

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

font-?&#17;?&#29;l&#16;:&#2;?В??o-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin‘>即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们即构造函数的重载。

大数据的特征  关于大数据的特征,业内专业认识人士表示,可以用很多词语来表示。比较有代表性的即为2001年DougLaney最先提出“3V”模型,包括数量(Volume)、速度(Velocity)和种类 (Variety)【1】。除此之外,在3V的基础上又提出了一些新的特征。关于第四个V的说法不一,IDC 认为大数据还应当具有价值性(Value),大数据的价值往往呈现出稀疏性的特点。而IBM 认为大数据必然具有真实性(Veracity)。维基百科对大数据的定义则简单明了:大数据是指利用常用软件工具捕获、管理和处理数据所耗时间超过可容忍时间的数据集【2】。如今,业内人士已经将其扩展到了11个V,包括有效性、可见性等。  下面就目前使用最多的“4V”模型进行分析。“4V”特征主要体现在以下方面:  1.规模性(volume)        Volume指的是数据巨大的数据量以及其规模的完整性。数据的存储TB扩大到ZB。这与数据存储和网络技术的发展密切相关。数据的加工处理技术的提高,网络宽带的成倍增加,以及社交网络技术的迅速发展,使得数据产生量和存储量成倍增长。实质上,在某种程度上来说,数据的数量级的大小并不重要,重要的是数据具有完整性。数据规模性的应用有如下的体现,比如对每天12 tb的tweets进行分析,了解人们的心理状态,可以用于情感性产品的研究和开发;基于Facebook上成千上万条信息的分析,可以帮助人们处理现实中的朋友圈的利益关系。

2.高速性(Velocity)    Velocity主要表现为数据流和大数据的移动性。现实中则体现在对数据的实时性需求上。随着移动网络的发展,人们对数据的实时应用需求更加普遍,比如通过手持终端设备关注天气、交通、物流等信息。高速性要求具有时间敏感性和决策性的分析——能在第一时间抓住重要事件发生的信息。比如,当有大量的数据输入时(需要排除一些无用的数据)或者需要马上做出决定的情况。比如:一天之内需要审查500万起潜在的贸易欺诈案件;需要分析

5亿条日实时呼叫的详细记录,以预测客户的流失率。    3.多样性(variety)        Variety指有多种途径来源的关系型和非关系型数据。 这也意味着要在海量、种类繁多的数据间发现其内在关联。互联网时代,各种设备通过网络连成了一个整体。进入以互动为特征的Web2.0时代,个人计算机用户不仅可以通过网络获取信息,还成为了信息的制造者和传播者。这个阶段,不仅是数据量开始了爆炸式增长,数据种类也开始变得繁多【3】。除了简单的文本分析外,还可以对传感器数据、音频、视频、日志文件、点击流以及其他任何可用的信息。比如,在客户数据库中不仅要关注名称和地址,还包括客户所从事的职业、兴趣爱好、社会关系等。利用大数据多样性的原理就是:保留一切你需要的对你有用的信息,舍弃那些你不需要的;发现那些有关联的数据,加以收集、分析、加工,使得其变为可用的信息。  4.价值性(value)      Value体现出的是大数据运用的真实意义所在。其价值具有稀缺性、不确定性和多样性。“互联网女皇”Mary Meeker在2012年互联网发展趋势中,用一幅生动的图像来描述大数据。一张是整整齐齐的稻草堆,另外一张是稻草中缝衣针的特写。寓意通过大数据技术的帮助,可以在稻草堆中找到你所需要的东西,哪怕是一枚小小的缝衣针。这两幅图揭示了大数据技术一个很重要的特点,价值的稀疏性【4】。

Linux版本

centos与rhel类似。

  fedora,这个版本每次发行都比较冒进,以至于很多驱动程序都不能很好的配置,但最新的fedora10还是很保守和稳定的。yu软件源基于rpm包管理

,安装软件很方便。

  ubuntu,基于debian,桌面环境以gnome为主,是目前最流行的linux个人桌面,它的优点是配置起来非常简单,安装完系统之后,只要硬件不是太新,基本不用进行其他配置,硬件都可以识别并安装好驱动。而且其apt更新源服务器中的软件非常丰富,只要打一条命令,就可以自动从网络下载安装所需软件。ubuntu安装方便,甚至于可以使用wubi将linux安装在windows分区。ubuntu还有很多衍生版本,包括Kubuntu(桌面采用KDE,较为华丽),xubuntu(采用xfce,要求配置较低),eubuntu(面向儿童和教育),用户可以根据需求,偏好,和硬件配置进行选择。

  suse,被誉为最漂亮的linux发行版本,当然,其本质和其他版本都是一样的,只是在窗口美工上开发者下了一定功夫,而且获得华丽的同时当然也需要付出更高的系统资源占用。其他的linux版本通过一些改造,完全是可以实现suse的效果的。

  redflag,中科院开发的linux版本,主要面向政府用户,其个人桌面版免费,这个版本的美工上与windows非常接近,是使用者的入门难度降低,但实际上桌面也是基于KDE的,很平常。

百度笔试(2014年10.12.14:00)


推荐阅读
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • HashMap的扩容知识详解
    本文详细介绍了HashMap的扩容知识,包括扩容的概述、扩容条件以及1.7版本中的扩容方法。通过学习本文,读者可以全面了解HashMap的扩容机制,提升对HashMap的理解和应用能力。 ... [详细]
  • 【影评】大内密探灵灵狗
    本文是对王晶执导的电影《大内密探灵灵狗》进行的影评。文章称赞了王晶的才华和导演经验,认为演员阵容强大,笑料不少,发明新奇又好笑。然而,编剧的表现被认为是本片的最大失败,宣传言过其实,笑点不多。总体来说,本片是一部典型的王式喜剧,可看性较高,但没有突破。 ... [详细]
  • 说到C语言的语句块,真是一堆血泪史。第一大坑就是优先级。刚工作那会儿,C的书没看几本,自信满满的认为C语言都会了,拿出搞ACM培养的豪情壮志,代码倒是写得爽,却到处留 ... [详细]
author-avatar
dcwzyb_271
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有