民生银行总行“民芯计划”笔试
题型:30道选择,两道编程,两道简答
选择题:(凭记忆记了几个题,选项就不说了,把考完试查到的相关知识点做个总结吧)
1.fang huo qiang (为啥是违禁词,离谱!)的工作模式不包括?
***能够工作在三种模式下:路由模式、透明模式、混合模式。
2.RAID5最少需要几块硬盘?
RAID5的存储机制是两块存数据,一块存另外两块硬盘的交易校验结果,就好像最简单的数学题,1+2=3,当你少了其中任何一个数时,就可以通过逆推,找到第三个数。RAID5的建立后,坏掉一块硬盘,可以通过另外两块硬盘的数据算出第三块的,所以至少要3块。
3.cookie类型为“小型文本文件”,是某些网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。一个 Web 站点可能会为每一个访问者产生一个唯一的ID, 然后以 Cookie 文件的形式保存在每个用户的机器上。如果使用浏览器访问 Web, 会看到所有保存在硬盘上的 Cookie。在这个文件夹里每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的 Web 站点的信息。在这里的每个 Cookie 文件都是一个简单而又普通的文本文件。透过文件名, 就可以看到是哪个 Web 站点在机器上放置了Cookie(当然站点信息在文件里也有保存)
cookie欺骗:是通过盗取、修改、伪造Cookies的内容来欺骗Web系统,并得到相应权限或者进行相应权限操作的一种攻击方式。
4.排序算法
排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。内排序有可以分为以下几类:
(1)、插入排序:直接插入排序、二分法插入排序、希尔排序。
(2)、选择排序:简单选择排序、堆排序。
(3)、交换排序:冒泡排序、快速排序。
(4)、归并排序
(5)、线性时间排序:计数排序、基数排序、桶排序
使用情况:
1)待排序数较少时(n<=50),采用直接插入排序或简单排序。
2)初始状态的关键字已经基本有序,用直接插入排序或冒泡排序。
3)当待排序数较多时,宜采用时间复杂度为O(nlog2n)的方法:快速排序,堆排序,归并排序
5.sizeof的用法
sizeof 用于判断变量或数据类型的字节大小的编译时运算符。
char * p = NULL; cout<<sizeof(p);32位操作系统结果是4,64位操作系统结果是8
指针是用来记录另一个对象的地址,所以指针的内存大小当然就等于计算机内部地址总线的宽度。指针变量的sizeof值与指针所指的对象无关,和系统可寻址的地址长度有关。
C/C++中,sizeof()只是运算符号,是编译的时候确定大小的。动态分配是运行过程中得到大小的,也就是说C++中new出来的内存,sizeof都无法统计的,退一步说,即使是new出来的空间也有可能失败,所以sizeof无法统计动态分配的内存大小。
//使用new关键字,在堆区开辟一个int数组 int* arr = new int[5]{1,2,3,4,5}; //并不是计算数组arr所占用的内存空间大小,而是计算指针所占内存大小,32位系统指针占4字节,64位系统指针占8字节 cout << sizeof(arr) << endl; //解指针,因为arr指针指向的时数组的首元素,所以实际计算的是int类型的数据所占用内存空间,int类型占4字节 cout << sizeof(*arr) << endl;参考:
6.加密算法
对称密钥算法:在对称密钥算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。加密方法的双方使用方式用同样的密钥进行加密和解密。
优点:算法公开、计算量小、加密速度快、加密效率高。
缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
例子:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK。 公钥算法(不对称加密算法):使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信者使用收信者的公钥加密信件,收信者使用自己的私钥钥解密信件。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。
优点:安全性高
缺点:效率低
例子:RSA、DSA
7.FTP:是应用层的协议。FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。
缺点:密码和文件内容都使用明文传输,可能产生不希望发生的窃听。
缺点:密码和文件内容都使用明文传输,可能产生不希望发生的窃听。
8.Hive:
Hive只能分析结构化的数据,Hive是坐落在hadoop之上的(使用hive前提是必须要安装了hadoop),用来分析大数据的,可以让你的查询和分析更简单.
1.hive处理的数据都在hdfa中,但是hive还会存储一个schema(元数据,就是表结构)在数据库里面.
2.hive是基于在线分析处理,主要为了实现分析功能,分析功能特点是不在乎程序运行时间的,只在乎给大型数据的结果分析出来就行了.
3.hive提供了类似sql的语言,和sql语法还是有点区别的,这个语言主要是用来查询的,叫做hiveql 或者是hql.
hive只能分析结构化数据,hive不是关系型数据库,虽然也是用sql操作hive,关系型数据库特点是基于oltp设计(在线事务处理),关系型数据库最大优势是事务.hive主要是分析数据,而不是生产数据.所以hive只有查询操作,没有写操作。
Hive只能分析结构化的数据,Hive是坐落在hadoop之上的(使用hive前提是必须要安装了hadoop),用来分析大数据的,可以让你的查询和分析更简单.
1.hive处理的数据都在hdfa中,但是hive还会存储一个schema(元数据,就是表结构)在数据库里面.
2.hive是基于在线分析处理,主要为了实现分析功能,分析功能特点是不在乎程序运行时间的,只在乎给大型数据的结果分析出来就行了.
3.hive提供了类似sql的语言,和sql语法还是有点区别的,这个语言主要是用来查询的,叫做hiveql 或者是hql.
hive只能分析结构化数据,hive不是关系型数据库,虽然也是用sql操作hive,关系型数据库特点是基于oltp设计(在线事务处理),关系型数据库最大优势是事务.hive主要是分析数据,而不是生产数据.所以hive只有查询操作,没有写操作。
9.
序列号即,Seq序号,占32位,是用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
确认号即,Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
10. 视图和基本表的区别:
确认号即,Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
10. 视图和基本表的区别:
1)表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改。
2)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
3)表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。
11.决策树:
2)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
3)表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。
11.决策树:
ID3使用信息增益作为特征选择的度量
C4.5使用信息增益比作为特征选择的度量
选择题答得一塌糊涂基本都是乱蒙的,概念什么的比较靠平时的积累。
C4.5使用信息增益比作为特征选择的度量
选择题答得一塌糊涂基本都是乱蒙的,概念什么的比较靠平时的积累。
两道编程题都很简单,一个是对学生成绩排序,写一个结构体的cmp函数就可以,另一个是统计空行数,getline读入(可以读空格),需要注意的是在输入完指令字符后,需要先用getchar接受一下末尾的空格。
简答题,第一个题是让设计什么分布式组件,其实没太懂题意,xjb乱写,第二题让写mysql语句,掌握的不太熟练,嵌套子查询想了半天才绉出来,也不知道对不对。