首页 > 代码库 > 富士通南大笔试(2014.10.12)

富士通南大笔试(2014.10.12)

哈希表

散列表(Hash table,也叫哈希表)。是依据关键码值(Key value)而直接进行訪问的数据结构。也就是说。它通过把关键码值映射到表中一个位置来訪问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

给定表M,存在函数f(key),对随意给定的keyword值key,代入函数后若能得到包括该keyword的记录在表中的地址。则称表M为哈希(Hash)表。函数f(key)为哈希(Hash) 函数[1]

包括min,push,pop函数的栈,时间为O(1)

    #include<iostream>

#include<stack>

using namespace std;

template <typename T> classStackWithMin

{

public:

   StackWithMin(void);

   ~StackWithMin(void);

   void push(const T& node);

   void pop();

   T& min const();

private:

   stack<T> m_data;

   stack<T> m_min;

};

template <typename T> voidStackWithMin::push(const T& value)

{

   m_data.push(value);

   if(m_min.size()==0||value<m_min.top())

    {

       m_min.push(value);

    }

   else m_min.push(m_min.top());

}

template <typename T> voidStackWithMin<T>::pop()

{

   assert(m_data.size()>0&&m_min.size()>0);

   m_data.pop();

   m_min.pop();

}

template <typename T> const T&StackWithMin<T>::min() const

{

   assert(m_data.size()>0&&m_min.size()>0);

   return m_min.top();

}

採用模板类得优点:

    1)能够用来创建动态增长和减小的数据结构

    2)它是类型无关的,具有高度的可复用性

    3)它在编译时而不是执行时检查数据类型。保证了类型安全

    4)与平台无关。可移植性

    5)可用于基本数据类型

泛型的优点

 

Java 语言中引入泛型是一个较大的功能增强。不仅语言、类型系统和编译器有了较大的变化,以支持泛型。并且类库也进行了大翻修。所以很多重要的类,比方集合框架,都已经成为泛型化的了。

这带来了非常多优点:

 

1,类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器能够在一个高得多的程度上验证类型如果。没有泛型。这些如果就仅仅存在于程序猿的头脑中(或者如果幸运的话,还存在于代码凝视中)。

 

2,消除强制类型转换。

泛型的一个附带优点是。消除源码中的很多强制类型转换。

这使得代码更加可读。而且降低了出错机会。

 

3,潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序猿会指定这些强制类型转换)插入生成的字节码中。可是很多其它类型信息可用于编译器这一事实。为未来版本号的 JVM 的优化带来可能。因为泛型的实现方式。支持泛型(差点儿)不须要 JVM 或类文件更改。全部工作都在编译器中完毕,编译器生成类似于没有泛型(和强制类型转换)时所写的代码,仅仅是更能确保类型安全而已。

TCP是面向连接的,所谓面向连接,就是当计算机两方通信时必需先建立连接,然后数据传送,最后拆除连接三个过程

而且TCP在建立连接时又分三步走:

第一步是请求端(client)发送一个包括SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明client使用的port以及TCP连接的初始序号;

 

第二步,server在收到client的SYN报文后,将返回一个SYN+ACK的报文。表示client的请求被接受。同一时候TCP序号被加一,ACK即确认(Acknowledgement)。

 

第三步,client也返回一个确认报文ACK给server端,相同TCP序列号被加一。到此一个TCP连接完毕。然后才開始通信的第二步:数据处理。

 

 

Memcpy原型

void *memcpy1(void *desc,const void *src,size_t size)

{

 if((desc == NULL) && (src =http://www.mamicode.com/= NULL))

 {

 return NULL;

 }

 unsigned char *desc1 = (unsigned char*)desc;

 unsigned char *src1 = (unsigned char*)src;

 while(size-- >0)

 {

 *desc1 = *src1;

 desc1++;

 src1++;

 }

 return desc;

}

 

 

cpu读取顺序

它是按堆栈的顺序顺序运行的,至于栈中的顺序是按优先级排

cache叫做快速缓冲存储器,是集成在CPU中的,存取速度最快,其次是内存,也就是你主板上插的那个条条,速度最慢的是外存,也就是硬盘

三种云服务模式

IaaS(Infrastructure as aService)基础设施即服务

SaaS(Software as aService)软件即服务

PaaS(Platform as aService)平台即服务

java是一种解释型语言。但它的源文件要编译成java字节码即.class文件,然后在java虚拟机里执行.

jsp是一种WEB开发技术。它在特定的WEB容器里执行,WEB容器先把jsp转化成Servlet文件(即.java文件)。然后编译成.class文件然后在java虚拟机里执行。

javascript是一种浏览器脚本语言,它被浏览器解释运行.

这三种语言都採用java的语法。

构造函数,是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值。总与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个人桌面,它的长处是配置起来很easy。安装完系统之后,仅仅要硬件不是太新。基本不用进行其它配置,硬件都能够识别并安装好驱动。并且其apt更新源server中的软件很丰富,仅仅要打一条命令。就能够自己主动从网络下载安装所需软件。ubuntu安装方便,甚至于能够使用wubi将linux安装在windows分区。

ubuntu还有许多衍生版本号。包含Kubuntu(桌面採用KDE,较为华丽)。xubuntu(採用xfce。要求配置较低)。eubuntu(面向儿童和教育),用户能够依据需求,偏好,和硬件配置进行选择。

  suse。被誉为最美丽的linux发行版本号,当然。其本质和其它版本号都是一样的,仅仅是在窗体美工上开发人员下了一定功夫,并且获得华丽的同一时候当然也须要付出更高的系统资源占用。其它的linux版本号通过一些改造,全然是能够实现suse的效果的。

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

 

富士通南大笔试(2014.10.12)