搜档网
当前位置:搜档网 › 史上最全的大数据面试题,大数据开发者必看

史上最全的大数据面试题,大数据开发者必看

史上最全的大数据面试题,大数据开发者必看
史上最全的大数据面试题,大数据开发者必看

【某公司笔试面试题】

1\使用mr,spark ,spark sql编写word count程序

【Spark 版本】

val conf=new SparkConf().setAppName("wd").setMaster("local[1]")

val sc=new SparkContext(conf,2)

//加载

val lines=sc.textFile("tructField("name",DataTypes.StringType,true)")

val paris=lines.flatMap(line=>line.split("^A"))

val words=paris.map((_,1))

val result=words.reduceByKey(_+_).sortBy(x=>x._1,false)

//打印

result.foreach(

wds=>{

println("单词:"+wds._1+" 个数:"+wds._2)

}

)

sc.stop()

【spark sql版本】

val conf=new SparkConf().setAppName("sqlWd").setMaster("local[1]")

val sc=new SparkContext(conf)

val sqlContext=new SQLContext(sc)

//加载

val lines=sqlContext.textFile("E:\idea15\createRecommeder\data\words.txt")

val words=lines.flatMap(x=>x.split(" ")).map(y=>Row(y))

val structType=StructType(Array(StructField("name",DataTypes.StringType,true))) val df=sqlContext.createDataFrame(rows,structType)

df.registerTempTable("t_word_count")

sqlContext.udf.register("num_word",(name:String)=>1)

sqlContext.sql("select name,num_word(name) from

t_word_count").groupBy(df.col("name")).count().show()

sc.stop()

2\hive的使用,内外部表的区别,分区作用,UDF和Hive优化

(1)hive使用:仓库、工具

(2)hive内外部表:内部表数据永久删除,外部表数据删除后、其他人依然可以访问

(3)分区作用:防止数据倾斜

(4)UDF函数:用户自定义的函数(主要解决格式,计算问题),需要继承UDF类

java代码实现

class TestUDFHive extends UDF {

public String evalute(String str){

try{

return "hello"+str

}catch(Exception e){

return str+"error"

}

}

}

(5)Hive优化:看做mapreduce处理

a\排序优化:sort by 效率高于order by

b\分区:使用静态分区(statu_date="20160516",location="beijin"),每个分区对应hdfs上的一个目录

c\减少job和task数量:使用表链接操作

d\解决groupby数据倾斜问题:设置hive.groupby.skewindata=true ,那么hive会自动负载均衡

e\小文件合并成大文件:表连接操作

f\使用UDF或UDAF函数:

https://www.sodocs.net/doc/7917875041.html,/ggjucheng/archive/2013/02/01/2888819.html

3\Hbase的rk设计,Hbase优化

a\rowkey:hbase三维存储中的关键(rowkey:行键,columnKey(family+quilaty):列键,timestamp:时间戳)

\rowkey字典排序、越短越好

\使用id+时间:9527+20160517 \使用hash散列:dsakjkdfuwdsf+9527+20160518

\应用中,rowkey 一般10~100bytes,8字节的整数倍,有利于提高操作系统性能

b\Hbase优化

\分区:RegionSplit()方法\NUMREGIONS=9

\column不超过3个

\硬盘配置,便于regionServer管理和数据备份及恢复

\分配合适的内存给regionserver

其他:

hbase查询

(1)get

(2)scan

使用startRow和endRow限制

4\Linux常用操作

a\awk:

awk -F:`BEGIN{print "name ip "}{print $1 $7} END{print "结束"}` /etc/passwd last | head -5 |awk `BEGIN{print "name ip"}{print $1 $3}END{print "结束了"}`

b\sed

5\java线程2种方式实现、设计模式、链表操作、排序

(1)2种线程实现

a\Thread类继承

TestCL th=new TestCL()//类继承Thread

th.start()

b\实现Runnable接口

Thread th=new Thread(new Runnable(){

public void run(){

//实现

}

})

th.start()

(2)设计模式,分为4类

a\创建模式:如工厂模式、单例模式

b\结构模式:代理模式

c\行为模式:观察者模式

d\线程池模式

6\【最熟悉的一个项目简介、架构图、使用的技术、你负责哪块】

7\cdh集群监控

(1)数据库监控(2)主机监控(3)服务监控(4)活动监控

8\计算机网络工作原理

将分散的机器通过数据通信原理连接起来,实现共享!

9\hadoop生态系统

hdfs\mapreduce\hive\hbase\zookeeper\flume

hdfs原理及各个模块的功能mapreduce原理mapreduce优化数据倾斜

11系统维护:hadoop升级datanode节点

12\【讲解项目要点:数据量、多少人、分工、运行时间、项目使用机器、算法、技术】13\【学会向对方提问】

14\jvm运行机制及内存原理

运行:

I加载.class文件

II管理并且分配内存

III垃圾回收

内存原理:

IJVM装载环境和配置

II装载JVM.dll 并初始化JVM.dll

IV 处理class类

15\hdfs、yarn参数调优

mapreduce.job.jvm.num.tasks

默认为1,设置为-1,重用jvm

16\Hbase、Hive、impala、zookeeper、Storm、spark原理和使用方法、使用其架构图讲解

【某公司笔试题】

1、如何为一个hadoop任务设置mappers的数量

答案:

使用job.setNumMapTask(int n)手动分割,这是不靠谱的

官方文档:“Note: This is only a hint to the framework”说明这个方法只是提示作用,不起决定性作用

实际上要用公式计算:

Max(min.split,min(max.split,block))就设置分片的最大最下值 computeSplitSize ()设置

参考:https://www.sodocs.net/doc/7917875041.html,/strongerbit/article/details/7440111

2、有可能使hadoop任务输出到多个目录中么?如果可以,怎么做?

答案:在1.X版本后使用MultipleOutputs.java类实现

源码:

MultipleOutputs.addNamedOutput(conf, "text2", TextOutputFormat.class, Long.class, String.class);

MultipleOutputs.addNamedOutput(conf, "text3", TextOutputFormat.class, Long.class, String.class);

参考:https://www.sodocs.net/doc/7917875041.html,/leejun2005/blog/94706

发音:Multiple['m?lt?pl]--》许多的

3、如何为一个hadoop任务设置要创建的reducer的数量

答案:job.setNumReduceTask(int n)

或者调整hdfs-site.xml中的mapred.tasktracker.reduce.tasks.maximum默认参数值4、在hadoop中定义的主要公用InputFormats中,哪一个是默认值:

(A)TextInputFormat

(B)KeyValueInputFormat

(C)SequenceFileInputFormat

答案:A

5、两个类TextInputFormat和KeyValueTextInputFormat的区别?

答案:

?FileInputFormat的子类:

TextInputFormat(默认类型,键是LongWritable类型,值为Text类型,key为当前行在文件中的偏移量,value为当前行本身);

?KeyValueTextInputFormat(适合文件自带key,value的情况,只要指定分隔符即可,比较实用,默认是\t分割);

源码:

String sepStr

=job.get("mapreduce.input.keyvaluelinerecordreader.key.value.separator","\t");

注意:在自定义输入格式时,继承FileInputFormat父类

参考:https://www.sodocs.net/doc/7917875041.html,/vichao/archive/2013/06/06/3118100.html

6、在一个运行的hadoop任务中,什么是InputSpilt?

答案:InputSplit是MapReduce对文件进行处理和运算的输入单位,只是一个逻辑概念,每个InputSplit并没有对文件实际的切割,只是记录了要处理的数据的位置(包括文件的path

和hosts)和长度(由start和length决定),默认情况下与block一样大。

拓展:需要在定义InputSplit后,展开讲解mapreduce的原理

7、Hadoop框架中,文件拆分是怎么被调用的?

答案:JobTracker,创建一个InputFormat的实例,调用它的getSplits()方法,把输入目录的文件拆分成FileSplist作为Mapper task 的输入,生成Mapper task加入Queue。

源码中体现了拆分的数量

long goalSize = totalSize / (numSplits == 0 ? 1 : numSplits);

long minSize = Math.max(job.getLong(org.apache.hadoop.mapreduce.lib.input. FileInputFormat.SPLIT_MINSIZE, 1), minSplitSize);//minSplitSize默认是1

8、分别举例什么情况下使用combiner,什么情况下不会使用?

答案:Combiner适用于对记录汇总的场景(如求和),但是,求平均数的场景就不能使用Combiner了

9、Hadoop中job和Tasks之间的区别是什么?

答案:

job是工作的入口,负责控制、追踪、管理任务,也是一个进程

包含map task和reduce task

Tasks是map和reduce里面的步骤,主要用于完成任务,也是线程

10、Hadoop中通过拆分任务到多个节点运行来实现并行计算,但是某些节点运行较慢会拖慢整个任务的运行,hadoop采用何种机制应对这种情况?

答案:结果查看监控日志,得知产生这种现象的原因是数据倾斜问题

解决:

(1)调整拆分mapper的数量(partition数量)

(2)增加jvm

(3)适当地将reduce的数量变大

11、流API中的什么特性带来可以使map reduce任务可以以不同语言(如perl\ruby\awk等)实现的灵活性?

答案:用可执行文件作为Mapper和Reducer,接受的都是标准输入,输出的都是标准输出

参考:https://www.sodocs.net/doc/7917875041.html,/archives/9220

12、参考下面的M/R系统的场景:

--HDFS块大小为64MB

--输入类型为FileInputFormat

--有3个文件的大小分别是:64k 65MB 127MB

Hadoop框架会把这些文件拆分为多少块?

答案:

64k------->一个block

65MB---->两个文件:64MB是一个block,1MB是一个block

127MB--->两个文件:64MB是一个block,63MB是一个block

13、Hadoop中的RecordReader的作用是什么?

答案:属于split和mapper之间的一个过程

将inputsplit输出的行为一个转换记录,成为key-value的记录形式提供给mapper 14、Map阶段结束后,Hadoop框架会处理:Partitioning ,shuffle 和

sort,在这个阶段都会发生了什么?

答案:

MR一共有四个阶段,split map shuff reduce 在执行完map之后,可以对map的输出结果进行分区,

分区:这块分片确定到哪个reduce去计算(汇总)

排序:在每个分区中进行排序,默认是按照字典顺序。

Group:在排序之后进行分组

15、如果没有定义partitioner,那么数据在被送达reducer前是如何被分区的?

答案:

Partitioner是在map函数执行context.write()时被调用。

用户可以通过实现自定义的?Partitioner来控制哪个key被分配给哪个?Reducer。

查看源码知道:

如果没有定义partitioner,那么会走默认的分区Hashpartitioner

public class HashPartitioner extends Partitioner {

/** Use {@link Object#hashCode()} to partition. */

public int getPartition(K key, V value, int numReduceTasks) {

return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;

}

}

参考:https://www.sodocs.net/doc/7917875041.html,/gamer_gyt/article/details/47339755

16、什么是Combiner?

答案:这是一个hadoop优化性能的步骤,它发生在map与reduce之间

目的:解决了数据倾斜的问题,减轻网络压力,实际上时减少了maper的输出

源码信息如下:

public void reduce(Text key, Iterator values,

OutputCollector output, Reporter reporter)

throws IOException {

LongWritable maxValue = null;

while (values.hasNext()) {

LongWritable value = values.next();

if (maxValue == null) {

maxValue = value;

} else if (https://www.sodocs.net/doc/7917875041.html,pareTo(maxValue) > 0) {

maxValue = value;

}

}

output.collect(key, maxValue);

}

在collect实现类中,有这样一段方法

public synchronized void collect(K key, V value)

throws IOException {

outCounter.increment(1);

writer.append(key, value);

if ((outCounter.getValue() % progressBar) == 0) {

progressable.progress();

}

}

下面是说明输出数量达到10000时,开始合并为一个maper

public static final long DEFAULT_COMBINE_RECORDS_BEFORE_PROGRESS = 10000;

Mapreduce原理详解:

https://www.sodocs.net/doc/7917875041.html,/itblog/blog/275294

最全大数据程序员面试题库

最全大数据程序员面试题库 大数据开发面试题库,千锋讲师总结了很多,经过总结学生在面试中遇到的问题,还有讲师多年的经验精心编制。就是要宠千锋学生到底,不仅教授你专业的大数据技术,更要让你从容的面对面试官,在众多的竞争者中脱颖而出。 好了,废话不多说,直接上题库。。。。。。 1.scala 语言有什么特点,什么是函数式编程?有什么优点 2.scala 伴生对象有什么作用 3.scala 并发编程是怎么弄得,你对actor 模型怎么理解有何优点 4.scala case class 有什么重要 5.scala akka 框架有没有接触过,有什么重要 6.scala 为什么设计var 和val 7.SDD,DAG,Stage怎么理解? 8.宽依赖窄依赖怎么理解? 9.Stage是基于什么原理分割task的? 10.血统的概念

11.任务的概念 12.容错方法 13.粗粒度和细粒度 14.Spark优越性 15.Spark为什么快 16.Transformation和action是什么?区别?举几个常用方法 17.SDD怎么理解 18.spark 作业提交流程是怎么样的,client和cluster 有什么区别,各有什么作用 19.spark on yarn 作业执行流程,yarn-client 和yarn cluster 有什么区别 20.spark streamning 工作流程是怎么样的,和storm 比有什么区别 21.spark sql 你使用过没有,在哪个项目里面使用的 22.spark 机器学习和spark 图计算接触过没,,能举例说明你用它做过什么吗? 23.spark sdd 是怎么容错的,基本原理是什么? 大数据时代,中国IT环境也将面临重新洗牌,不仅仅是企业,更是程序员们转型可遇而不可求的机遇。随着互联网时代的迅猛发展,大数据全面融入了现代社会的生产、生活中,并将大大改变全球的经济。大数据,它其实不仅仅是一种技术,更是战略资源。 千锋不仅仅注重学生的专业技能培训,还注重学生的素质培养,开班第一天起,每节课的课前十分钟分享,锻炼学员的沟通表达能力,在工作中减少沟通成

数据库面试题及答案

数据库面试题 1 1. 在一个查询中,使用哪一个关键字能够除去重复列值? 答案:使用distinct关键字 2. 什么是快照?它的作用是什么? 答案:快照Snapshot是一个文件系统在特定时间里的镜像,对于在线实时数据备份非常有用。快照对于拥有不能停止的应用或具有常打开文件的文件系统的备份非常重要。对于只能提供一个非常短的备份时间而言,快照能保证系统的完整性。 3. 解释存储过程和触发器 答案: 存储过程是一组Transact-SQL语句,在一次编译后可以执行多次。因为不必重新编译Transact-SQL语句,所以执行存储过程可以提高性能。 触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。 4. SQL Server是否支持行级锁,有什么好处? 答案:支持动态行级锁定 SQL Server 2000动态地将查询所引用的每一个表的锁定粒度调整到合适的级别。当查询所引用的少数几行分散在一个大型表中时,优化数据并行访问的最佳办法是使用粒度锁,如行锁。但是,如果查询引用的是一个表中的大多数行或所有行,优化数据并行访问的最佳办法可以是锁定整个表,以尽量减少锁定开销并尽快完成查询。 SQL Serve 2000通过为每个查询中的每个表选择适当的锁定级别,在总体上优化了数据并发访问。对于一个查询,如果只引用一个大型表中的几行,则数据库引擎可以使用行级锁定;如果引用一个大型表的几页中的多行,则使用页级锁定;如果引用一个小型表中的所有行,则使用表级锁定。 5. 数据库日志干什么用,数据库日志满的时候再查询数据库时会出现什么情况。答案:每个数据库都有事务日志,用以记录所有事务和每个事务对数据库所做的修改。 6. 存储过程和函数的区别? 答案:存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表 7. 事务是什么? 答案:事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务: (1) 原子性 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

大数据工程师面试题

大数据工程师面试题 大数据工程师面试,对于很多人来说应该都不陌生了吧,虽说大数据就业前景很好,但想要成功进入名企,并不是一件容易的事情,不仅仅需要专业的技能,还需要你在面试的时候认真准备一下。面试的时候,我们会遇到各种各样的问题,千锋讲师今天就先讲解一下面试经常会遇到的问题,Hadoop是如何工作的? Hadoop是一个分布式文件系统(Hadoop Distributed File System),简称HDFS。Hadoop是一个能够对大量数据进行分布式处理的软件框架,以一种可靠、高效、可伸缩的方式进行数据处理。所以说Hadoop解决了大数据如何存储的问题,因而在大数据培训机构中是必须学习的课程,也是面试中面试官非常注重的一个技术点。 Hadoop是如何工作的? Hadoop是从Google文件系统发源而来,并且他是一个用Java开发的跨平台的应用。核心组件有: Hadoop Common,拥有其他模块所依赖的库和基础

工具,Hadoop分布式文件系统(HDFS),负责存储,Hadoop YARN,管理计算资源,和Hadoop MapReduce,负责处理的过程。 Hadoop把文件拆成小块并且把他们分发给集群中的节点。然后,它使用打包的代码分发到节点上并行处理数据。这意味着可以处理数据的速度会比使用传统的体系结构的更快。 一个典型的Hadoop集群都会有主节点和从节点或者叫工作节点。主节点有一个任务跟踪器,任务调度,名字节点和数据节点组成。从节点通常作为一个数据节点和任务调度器,不过特殊的场景下程序可能只有数据节点然后在其他的从节点进行处理计算。 在大的Hadoop集群中,通常会使用一个专用的名字节点来管理HDFS节点的文件系统索引信息,这防止了文件系统的数据丢失和损坏。 千锋教育拥有一支的强师队伍,在教学研究方面,我们老师不断的推陈出新,探索更新的教学方式,结合时代所需不断更新课程大纲,加强学生对于知识的理解和运用。千锋讲师对于大数据行业时刻保持一定的敏感性和前瞻性,定期与各大企业的技术官交流分析,掌握大数据的发展动向,不仅仅可以帮助同学们更好的学习大数据技术,还会预测一些大数据工程师面试题,为同学们的就业之路披荆斩棘。 关键词:大数据工程师面试题

应届生进入大数据领域面试题大全

应届生进入大数据领域面试题大全 如今参加大数据培训学习大数据开发技术的小伙伴越来越多,因为现在就是大数据时代,所以想要加入到大数据领域的人越来越多,对于刚入门大数据领域的小伙伴来说,如果敲响企业的大门就很重要了,本篇文章小编给大家分享一下应届生进入大数据领域有哪些大数据面试题,对小伙伴感兴趣的小伙伴可以来了解一下哦。 1、频繁项集、频繁闭项集、最大频繁项集之间的关系是:(C) A、频繁项集频繁闭项集=最大频繁项集 B、频繁项集= 频繁闭项集最大频繁项集 C、频繁项集频繁闭项集最大频繁项集 D、频繁项集= 频繁闭项集= 最大频繁项集 2、考虑下面的频繁3-项集的集合:{1,2,3},{1,2,4},{1,2,5},{1,3,4},{1,3,5},{2,3,4},{2,3,5},{3,4,5}假定数据集中只有5个项,采用合并策略,由候选产生过程得到4-项集不包含(C) A、1,2,3,4 B、1,2,3,5 C、1,2,4,5 D、1,3,4,5 3、在图集合中发现一组公共子结构,这样的任务称为( B ) A、频繁子集挖掘 B、频繁子图挖掘 C、频繁数据项挖掘

D、频繁模式挖掘 4、下面选项中t不是s的子序列的是( C ) A、s=<{2,4},{3,5,6},{8}> t=<{2},{3,6},{8}> B、s=<{2,4},{3,5,6},{8}> t=<{2},{8}> C、s=<{1,2},{3,4}> t=<{1},{2}> D、s=<{2,4},{2,4}> t=<{2},{4}> 5、下列__(A)__不是将主观信息加入到模式发现任务中的方法。 A、与同一时期其他数据对比 B、可视化 C、基于模板的方法 D、主观兴趣度量 6、下列度量不具有反演性的是(D) A、系数 B、几率 C、Cohen度量 D、兴趣因子 7、以下哪些算法是分类算法,(B) A,DBSCAN

大数据面试题试卷

大数据面试题及答案 汇总版

第1部分选择题 1.1 Hadoop选择题 1.1.1 HDFS 1.下面哪个程序负责 HDFS 数据存储?A.NameNode B.Jobtracker C.Datanode D.secondaryNameNode E.tasktracker 2. HDFS 中的 block 默认保存几份? A.3份 B.2份 C.1份 D.4份 3. 下列哪个程序通常与NameNode 在一个节点启动? A. SecondaryNameNode B.DataNode C.TaskTracker D. Jobtracker 4. HDFS 默认 Block Size(新版本)

A. 32MB B.64MB C.128MB D.256MB 5. Client 端上传文件的时候下列哪项正确 A. 数据经过 NameNode 传递给 DataNode B.Client端将文件切分为Block,依次上传 C.Client 只上传数据到一台DataNode,然后由 NameNode 负责Block 复制工作 6. 下面与 HDFS 类似的框架是? A.NTFS B.FAT32 C.GFS D.EXT3 7. 的 8. 的 1.1.2 集群管理 1. 下列哪项通常是集群的最主要瓶颈 A. CPU B.网络 C.磁盘IO

D.存 2. 关于SecondaryNameNode 哪项是正确的? A.它是 NameNode 的热备 B.它对存没有要求 C.它的目的是帮助NameNode合并编辑日志,减少NameNode启动时间 D.SecondaryNameNode 应与 NameNode 部署到一个节点 3. 下列哪项不可以作为集群的管理? A. Puppet B.Pdsh C.ClouderaManager D.Zookeeper 4. 配置机架感知的下面哪项正确 A. 如果一个机架出问题,不会影响数据读写 B.写入数据的时候会写到不同机架的 DataNode 中 C.MapReduce 会根据机架获取离自己比较近的网络数据 5. 下列哪个是 Hadoop 运行的模式 A. 单机版B.伪分布式C.分布式 6. Cloudera 提供哪几种安装 CDH 的方法 A. Cloudera manager B.Tarball C.Yum D.Rpm 7. 1.2 Hbase选择题 1.2.1 Hbase基础

数据库笔试题及标准答案,常见数据库面试题

数据库笔试卷及答案 第一套 一.选择题 1. 下面叙述正确的是______。 A、算法的执行效率与数据的存储结构无关 B、算法的空间复杂度是指算法程序中指令(或语句)的条数 C、算法的有穷性是指算法必须能在执行有限个步骤之后终止 D、以上三种描述都不对 2. 以下数据结构中不属于线性数据结构的是______。A、队列B、线性表C、二叉树D、栈 3. 在一棵二叉树上第5层的结点数最多是______。A、8 B、16 C、32 D、15 4. 下面描述中,符合结构化程序设计风格的是______。 A、使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B、模块只有一个入口,可以有多个出口 C、注重提高程序的执行效率 D、不使用goto语句 5. 下面概念中,不属于面向对象方法的是______。 A、对象 B、继承 C、类 D、过程调用 6. 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______。 A、可行性分析 B、需求分析 C、详细设计 D、程序编码 7. 在软件开发中,下面任务不属于设计阶段的是______。 A、数据结构设计 B、给出系统模块结构 C、定义模块算法 D、定义需求并建立系统模型 8. 数据库系统的核心是______。 A、数据模型 B、数据库管理系统 C、软件工具 D、数据库 9. 下列叙述中正确的是______。 A、数据库是一个独立的系统,不需要操作系统的支持 B、数据库设计是指设计数据库管理系统 C、数据库技术的根本目标是要解决数据共享的问题 D、数据库系统中,数据的物理结构必须与逻辑结构一致 10. 下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。 A、内模式 B、外模式 C、概念模式 D、逻辑模式 11. Visual FoxPro数据库文件是______。 A、存放用户数据的文件 B、管理数据库对象的系统文件 C、存放用户数据和系统的文件 D、前三种说法都对 12. SQL语句中修改表结构的命令是______。 A、MODIFY TABLE B、MODIFY STRUCTURE C、ALTER TABLE D、ALTER STRUCTURE 13. 如果要创建一个数据组分组报表,第一个分组表达式是"部门",第二个分组表达式是"性别",第三个分组表达式是"基本工资",当前索引的索引表达式应当是______。 A、部门+性别+基本工资 B、部门+性别+STR(基本工资) C、STR(基本工资)+性别+部门 D、性别+部门+STR(基本工资) 14. 把一个工程编译成一个应用程序时,下面的叙述正确的是______。 A、所有的工程文件将组合为一个单一的应用程序文件 B、所有工程的包含文件将组合为一个单一的应用程序文件

大数据hadoop面试题-企业项目实战

大数据hadoop面试题-企业项目实战 大数据技术逐渐被企业所重视,其带来的益处其实是可以被无限放大的,要知道,现在的市场都是,得数据者得天下!而数据的获得还是要靠大数据技术的,Hadoop作为大数据技术的一个重要技术点,在面试大数据工程师的时候是肯定要被问及的,千锋小编整理一些关于大数据Hadoop的面试题,预祝每一位大数据工程师都能找到自己理想的工作。 1、在Hadoop中定义的主要公用InputFormat中,默认是哪一个?(A) A、TextInputFormat B、KeyValueInputFormat C、SequenceFileInputFormat 2、下面哪个程序负责HDFS 数据存储?(C) https://www.sodocs.net/doc/7917875041.html,Node B.JobTracker C.DataNode

D.SecondaryNameNode E.tasktracker 3、HDFS 中的block 默认保存几份?(A) A.3 份 B.2 份 C.1 份 D.不确定 4、下列哪个程序通常与NameNode 在一个节点启动?(D) A.SecondaryNameNode B.DataNode C.TaskTracker D.JobTracker 解析:hadoop的集群是基于master/slave模式,namenode和jobtracker 属于master,datanode和tasktracker属于slave,master只有一个,而slave 有多个. SecondaryNameNode内存需求和NameNode在一个数量级上,所以通常secondary NameNode(运行在单独的物理机器上)和NameNode 运行在不同的机器上。 JobTracker对应于NameNode,TaskTracker对应于DataNode. DataNode和NameNode是针对数据存放来而言的.JobTracker和TaskTracker是对于MapReduce执行而言的. mapreduce中几个主要概念,mapreduce 整体上可以分为这么几条执行

数据库面试题数据库的面试题及答案

数据库面试题:数据库的面试题及答案 疯狂代码 https://www.sodocs.net/doc/7917875041.html,/ ?:http:/https://www.sodocs.net/doc/7917875041.html,/DataBase/Article25003.html . 数据库切换日志的时候,为什么一定要发生检查点?这个检查点有什么意义? 答:触发dbwr的执行,dbwr会把和这个日志相关的所有脏队列写到数据文件里,缩短实例恢复所需要的时间。 2. 表空间管理方式有哪几种,各有什么优劣。 答:字典管理方式和本地管理方式,本地管理方式采用位图管理extent,减少字典之间的竞争,同时避免了碎片。 本地管理表空间与字典管理表空间相比,其优点如下: 1).减少了递归空间管理; 2).系统自动管理extents大小或采用统一extents大小; 3).减少了数据字典之间的竞争; 4).不产生回退信息; 5).不需合并相邻的剩余空间; 6).减少了空间碎片; 7).对临时表空间提供了更好的管理。 3. 本地索引与全局索引的差别与适用情况。 答:对于local索引,每一个表分区对应一个索引分区,当表的分区发生变化时,索引的维护由Oracle自动进行。对于global索引,可以选择是否分区,而且索引的分区可以不与表分区相对应。当对分区进行维护操作时 ,通常会导致全局索引的INVALDED,必须在执行完操作后REBUILD。Oracle9i提供了UPDATE GLOBAL INDEXES语句,可以使在进行分区维护的同时重建全局索引。 4. 一个表a varchar2(1),b number(1),c char(2),有100000条记录,创建B-Tree索引在字段a上,那么表与索引谁大?为什么? 答:这个要考虑到rowid所占的字节数,假设char总是占用2字节的情况,比较rowid,另外,table和index在segment free block的管理也有差别。 5. Oracle9i的data guard有几种模式,各有什么差别。 答:三种模式: 最大性能(maximize performance):这是data guard默认的保护模式。primay上的事务commit前不需要从standby上收到反馈信息。该模式在primary故障时可能丢失数据,但standby对primary的性能影响最小。 最大可用(maximize availability):在正常情况下,最大可用模式和最大保护模式一样;在standby不可用时 ,最大可用模式自动最大性能模式,所以standby故障不会导致primay不可用。只要至少有一个standby可用的情况下,即使primarydown机,也能保证不丢失数据。 最大保护(maximize protection):最高级别的保护模式。primay上的事务在commit前必须确认redo已经传递到至少一个standby上,如果所有standby不可用,则primary会挂起。该模式能保证零数据丢失。 6. 执行计划是什么,查看执行计划一般有哪几种方式。 答:执行计划是数据库内部的执行步骤: set autotrace on select * from table

面试题目

一·主观题 1.你认为app测试过程中,相对于web,要更多注意哪些测试点?或者说app测试和 web测试有哪些不同之处? 答:1、“点击加载更多”的分页处理技术,是否有重复的数据,数据显示是否完整,到达最后一页后是否还有数据进行显示; 2、数据的排序方式; 2、界面跳转是否正确; 3、出现异常情况是否有提示,是否跳转到已经设定好的默认页面,如断网情况下,显示网络未连接,数据加载失败,或者如果此页面没有数据显示,显示友好提示信息; 4、图片处理的地方,是否容易出现程序崩溃现象,主要是图片压缩机制; 5、前台展示的数据,后台进行变动(增、删、改),是否是实时更新还是app一开始运行再进行加载; 6、前台主动发出请求,后台数据库中是否存在相应的数据同时包括数据的关联性(商家的会员进行下订单,数据库中生成一条订单的记录的同时,生成一条积分记录,该会员的积分进行相应的变化); 7、手机app网络环境测试重点:主要是针对2G、3G、4G、wifi三种网络环境进行测试; 8、手机app兼容性测试:主要是针对android各个系统版本进行测试,及测试屏幕分辨率进行测试; 2.请说明 Android手机和oS手机,系统有什么区别? 答:安卓是开源的,苹果ios是闭源的 1、两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。 2、两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。 3、IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。 3.请试着说明一下黑盒测试,白盒测试,单元测试,集成测试,系统测试,验收测试的区别和联系 答:黑盒测试:把测试对象当成一个黑盒子,测试人员完全不考虑逻辑结构和内部特性,只依据程式的需求说明书来检查程式的功能是否满足它的功能说明。 白盒测试:把测试对象当成一个透明的盒子,允许测试人员利用程序内部逻辑结构 及相关信息,设计或选择测试用例,对程式所有逻辑路径进行测试。 单元测试:白盒测试的一种,对软件设计中的单元模块进行测试。 集成测试:在单元测试的基础上,对单元模块之间的连接和组装进行测试。 系统测试:在所有都考虑的情况下,对系统进行测试。 验收测试:第三方进行的确认软件满足需求的测试。 4.你认为性能测试工作的目的是什么?做好性能测试工作的关键是什么 答:性能测试的目的--- 1)评估系统的能力----测试中得到的负荷和响应时间数据可被用于验证所计划的模型的能力,并帮助作出决策。 2)识别体系中的弱点----受控的负荷被增加到一个极端水平,并突破它,从而修复体系的

数据库面试题

1.事务四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前其它会话不能看到过程 一致性,事务前后,数据总额一致 持久性,一旦事务提交,对数据的改变就是永久的 2.数据库隔离级别 脏读:事务B读取事务A还没有提交的数据 不可重复读:两次事务读的数据不一致 幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看来,明明修改了数据,咋不一样 3.MYSQL的两种存储引擎区别(事务、锁级别等等),各自的适用场景 4.索引有B+索引和hash索引 5.聚集索引和非聚集索引

6.索引的优缺点,什么时候使用索引,什么时候不能使用索引 索引最大的好处是提高查询速度, 缺点是更新数据时效率低,因为要同时更新索引 对数据进行频繁查询进建立索引,如果要频繁更改数据不建议使用索引。 7.InnoDB索引和MyISAM索引的区别 一是主索引的区别,InnoDB的数据文件本身就是索引文件。而MyISAM的索引和数据是分开的。二是辅助索引的区别:InnoDB的辅助索引data域存储相应记录主 8.索引的底层实现(B+树,为何不采用红黑树,B树)重点 树区别 红黑树增加,删除,红黑树会进行频繁的调整,来保证红黑树的性质,浪费时间 B树也就是B-树B树,查询性能不稳定,查询结果高度不致,每个结点保存指向真实数据的指针,相比B+树每一层每屋存储的元素更多,显得更高一点。 B+树B+树相比较于另外两种树,显得更矮更宽,查询层次更浅 9.B+树的实现 一个m阶的B+树具有如下几个特征: 1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。 2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。 3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素10.为什么使用B+Tree 索引查找过程中就要产生磁盘I/O消耗,主要看IO次数,和磁盘存取原理有关。根据B-Tree的定义,可知检索一次最多需要访问h个节点。数据库系统的设计者巧妙利用了磁

大数据常见面试题

大数据常见面试题 经历了水深火热的大数据学习,终于拨开云雾见天明了,但你离成功总是还差了一步,那就是拿到大数据工程师的Offer。 在电脑旁奋斗了无数个日夜,代码敲了无数遍,项目整改了无数遍,只为了得到一份自己满意的高薪资高待遇的Offer。但这个收获不仅仅需要你学到娴熟的大数据技术,还需要在面试之前精心准备,了解自己要应聘的企业发展状况、自己应聘岗位的技术要求等等,除此之外,多看一些大数据面试题也是很有必要的,给自己涨涨经验。 千锋小编虽然不能帮你调查你理想企业的发展状况,但大数据常见面试题早已经为你准备好了,需要的尽快收入囊中吧! 1.scala 语言有什么特点,什么是函数式编程?有什么优点 2.scala 伴生对象有什么作用 3.scala 并发编程是怎么弄得,你对actor 模型怎么理解有何优点 4.Spark如何处理结构化数据,Spark如何处理非结构话数据? 5.Spark性能优化主要有哪些手段?

6.对于Spark你觉得他对于现有大数据的现状的优势和劣势在哪里? 7.对于算法是否进行过自主的研究设计? 8.简要描述你了解的一些数据挖掘算法与内容 9.怎么用spark做数据清洗 10.跟我聊聊spark的应用,商场里广告投放,以及黄牛检测 11.spark读取数据,是几个Partition呢?hdfs几个block 就有几个Partition? 12.Mogodb和hbase的区别 13.开发中遇到的问题 14.HIVE的优化 15.linux的启动顺序 16.编译好的scala程序,运行时还需要scala环境吗 17.Write a java program to implement Stack in java. 18.Linkedlist和ArrayList的区别 19.hadoop中combiner的作用 20.用mr设计一个分组排重计数算法 21.用MapReduce找出存在公共好友的两个人 22.hdfs存储机制 23.MapReduce原理 24.hadoop运行原理 25.hadoop 的namenode 宕机,怎么解决 26.Hbase 的特性,以及你怎么去设计rowkey 和columnFamily ,怎么去

大数据技术Hadoop面试题

大数据技术Hadoop面试题,看看你能答对多少? 单项选择题 1. 下面哪个程序负责HDFS 数据存储。 a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker 2. HDfS 中的block 默认保存几份? a)3 份 b)2 份 c)1 份 d)不确定 3. 下列哪个程序通常与NameNode 在一个节点启动? a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker 4. Hadoop 作者 a)Martin Fowler b)Kent Beck c)Doug cutting 5. HDFS 默认Block Size a)32MB b)64MB c)128MB 6. 下列哪项通常是集群的最主要瓶颈 a)CPU b)网络 c)磁盘 d)内存 7. 关于SecondaryNameNode 哪项是正确的? a)它是NameNode 的热备 b)它对内存没有要求 c)它的目的是帮助NameNode 合并编辑日志,减少NameNode 启动时间 d)SecondaryNameNode 应与NameNode 部署到一个节点 多选题: 8. 下列哪项可以作为集群的管理工具 a)Puppet b)Pdsh c)Cloudera Manager d)d)Zookeeper

9. 配置机架感知的下面哪项正确 a)如果一个机架出问题,不会影响数据读写 b)写入数据的时候会写到不同机架的DataNode 中 c)MapReduce 会根据机架获取离自己比较近的网络数据 10. Client 端上传文件的时候下列哪项正确 a)数据经过NameNode 传递给DataNode b)Client 端将文件切分为Block,依次上传 c)Client 只上传数据到一台DataNode,然后由NameNode 负责Block 复制工作 11. 下列哪个是Hadoop 运行的模式 a)单机版 b)伪分布式 c)分布式 12. Cloudera 提供哪几种安装CDH 的方法 a)Cloudera manager b)Tar ball c)Yum d)Rpm 判断题: 13. Ganglia 不仅可以进行监控,也可以进行告警。() 14. Block Size 是不可以修改的。() 15. Nagios 不可以监控Hadoop 集群,因为它不提供Hadoop 支持。() 16. 如果NameNode 意外终止,SecondaryNameNode 会接替它使集群继续工作。() 17. Cloudera CDH 是需要付费使用的。() 18. Hadoop 是Java 开发的,所以MapReduce 只支持Java 语言编写。() 19. Hadoop 支持数据的随机读写。() 20. NameNode 负责管理metadata,client 端每次读写请求,它都会从磁盘中读取或则会写入metadata 信息并反馈client 端。() 21. NameNode 本地磁盘保存了Block 的位置信息。() 22. DataNode 通过长连接与NameNode 保持通信。() 23. Hadoop 自身具有严格的权限管理和安全措施保障集群正常运行。() 24. Slave 节点要存储数据,所以它的磁盘越大越好。() 25. hadoop dfsadmin –report 命令用于检测HDFS 损坏块。() 26. Hadoop 默认调度器策略为FIFO() 27. 集群内每个节点都应该配RAID,这样避免单磁盘损坏,影响整个节点运行。() 28. 因为HDFS 有多个副本,所以NameNode 是不存在单点问题的。() 29. 每个map 槽就是一个线程。() 30. Mapreduce 的input split 就是一个block。() 31. NameNode 的Web UI 端口是50030,它通过jetty 启动的Web 服务。() 32. Hadoop 环境变量中的HADOOP_HEAPSIZE 用于设置所有Hadoop 守护线程的内存。它默认是200 GB。() 33. DataNode 首次加入cluster 的时候,如果log 中报告不兼容文件版本,那需要NameNode执行“Hadoop namenode -format”操作格式化磁盘。() 【编辑推荐】 没有数据分析大数据什么也不是...... 大数据告诉你,真正的白富美的生活是怎样的呢?

大数据面试题

1、给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 s 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中。这样每个小文件的大约为300M。 s 遍历文件b,采取和a相同的方式将url分别存储到1000个小文件(记为)。这样处理后,所有可能相同的url都在对应的小文件()中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可。s 求每对小文件中相同的url时,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。 方案2:如果允许有一定的错误率,可以使用Bloom filter,4G内存大概可以表示340亿bit。将其中一个文件中的url使用Bloom filter映射为这340亿bit,然后挨个读取另外一个文件的url,检查是否与Bloom filter,如果是,那么该url应该是共同的url(注意会有一定的错误率)。2、有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。 方案1: s、顺序读取10个文件,按照hash(query)的结果将query写入到另外10个文件(记为)中。这样新生成的文件每个的大小大约也1G(假设hash函数是随机的)。s、找一台内存在2G左右的机器,依次对用hash_map(query, query_count)

数据库面试问题汇总

数据库面试问题汇总 1.数据库管理命令 1.1查询所有数据库 ---- show databases; 1.2创建数据库,并将数据库字符集默认为utf-8 ----create database day814 ----default character set utf8 -----; 1.3查看数据库的默认字符集 ----show create database day814; 1.4 删除数据库 ---- drop database day15; 1.5 修改数据库(即修改数据库的默认字符集) -----alert database day814 default character set gbk; 2.表管理命令 2.1选择数据库命令 ----- use day814; 2.2查看所有表 ---- show tables; 2.3 创建表 ---- create table student( -----sid int, -----sage int, -----sname varchar(20) -----); 2.4 查看表结构 ------desc student; 2.5 删除表 ----- drop table student; 2.6 修改表 添加字段 -----alter table student add column sgender varchar(2); 删除字段 -----alter table studnet drop column s gender; 修改字段类型 -----alter table student modify column sgender varchar(100); 修改字段名称 -----alter table student change column sgender gender varchar(100); 修改表名称 -----alter table student rename to teacher; 3.数据管理

大数据工程师笔试题

链表排序 Java: class Node{ Int value; Node next; } C++: struct Node{ int nValue; Node* pNext; } 请实现如下函数对任意给定链表按照其中的value字段排序 Java: Node sortList(Node head); C++: Node* sortList(Node* pHead); 解答: 编写归并排序迭代器 java: class MergeIterator implements Iterator{ Public MergeIterator(Iterator a,Iterator b){} Public boolean hasNext(){} Public Integer next(){} } 测试用例: Class MockIterator implements Iterator{ Int current,step,endValue; Public MockIterator(int step,int endValue){ this.step=step; This.endValue=endValue; This.current=endValue%step; } Public boolean hasNext(){return this.current < this.endValue;} Public Integer next(){return this.current += this.step;} } Iterator it=new MergeIterator(new MockIterator(2,10),new MockIterator(2,9)); //输出2 3 4 5 6 7 8 9 10 C++: Struct Iterator{ Virtual bool hasNext()=0; Virtual int next()=0;

大数据面试题剖析讲课稿

单项选择题 1. 下面哪个程序负责 HDFS 数据存储。 a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker 2. HDfS 中的 block 默认保存几份? a)3 份 b)2 份 c)1 份 d)不确定 3. 下列哪个程序通常与 NameNode 在一个节点启动? a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker

4. Hadoop 作者 a)Martin Fowler b)Kent Beck c)Doug cutting 5. HDFS 默认 Block Size a)32MB b)64MB c)128MB 6. 下列哪项通常是集群的最主要瓶颈 a)CPU b)网络 c)磁盘 d)内存 7. 关于 SecondaryNameNode 哪项是正确的? a)它是 NameNode 的热备 b)它对内存没有要求

c)它的目的是帮助NameNode 合并编辑日志,减少NameNode 启动时间 d)SecondaryNameNode 应与 NameNode 部署到一个节点 多选题 8. 下列哪项可以作为集群的管理工具 a)Puppet b)Pdsh c)Cloudera Manager d)d)Zookeeper 9. 配置机架感知的下面哪项正确 a)如果一个机架出问题,不会影响数据读写 b)写入数据的时候会写到不同机架的 DataNode 中 c)MapReduce 会根据机架获取离自己比较近的网络数据 10. Client 端上传文件的时候下列哪项正确 a)数据经过 NameNode 传递给 DataNode b)Client 端将文件切分为 Block,依次上传

Oracle数据库DBA面试题

数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复 操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢 解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。 3. 如何转换到spfile 解答:使用create spfile from pfile 命令 . 4. 解释data block , extent 和segment的区别(这里建议用英文术语) 解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一 个数据库对象拥有的所有extents被称为该对象的segment. 5. 给出两个检查表结构的方法 解答:1、DESCRIBE命令 2、包 6. 怎样查看数据库引擎的报错 解答:alert log. 7. 比较truncate和delete 命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要rollback segment .而Delete是DML操作 , 需要rollback segment 且花费较长时间. 8. 使用索引的理由 解答:快速访问表中的data block 9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据 解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而dimension tables 存放对fact table 某些属性描述的

大数据面试

大数据面试:面对众多的offer,该如何选择 大数据的就业前景,相信就不用小编多赘述了吧,从千锋大数据培训班毕业的学生平均每个人都能拿到2到3个大数据岗位的offer,由此可见,各大企业对于大数据技术人才的渴求真的是求贤若渴!那面对众多企业向我们抛来的橄榄枝,我们该如何选择呢? 首先先解决大家都比较困惑两点,一是薪资问题,二如何选择公司。 一、薪资问题 其实对于刚毕业几年的大学生来说,不要太看重薪资,除非薪资的差距是在数量级间的差距,如果只是几千块的差距这个不算差距,现在的工资并不代表你未来的工资,学会投资自己看未来,成长性好的员工未来的收益差距是在数量级,比如几年后,同学A的薪水比另外一个同学B的薪水高上百万都是非常正常的。 其次要学会比较薪水。收到Offer时,首先要知道薪酬福利的组成,比如月薪,年终奖,期权,商业保险,补贴等。不要单纯的比较月薪,而是综合比较年薪和福利。A同学月薪比B低几千,但是A同学年薪和福利加在一起可能比B同学高好几倍。除了期权外,福利上主要关注以下几点:(1)公积金,等你买房或

退休的时候可以取出来,这个我认为可以算在薪水里;(2)补贴,不同的公司补贴不一样,大致有住房补贴,异地补贴,汽油补贴,餐补等。另外补贴有个期限,是一年还是几年,这个也要问清楚。(3)商业保险,过节费等。 二、如何选择公司 我自己也经历过几个不同类型的公司,小型私企,大型私企,大型国企,互联网企业。从我的经历来看,如果你想学技术可以选择互联网公司,外企和创业公司,如果你想做管理,可以选择创业公司和中大型私企。 我总结了一下各种类型公司的状态,仅供参考: 三、其他问题 1、某某公司的招聘我是否应该参加? 如果有时间尽量参加,好处很多,第一拿到offer越多选择就多,也有和想去的公司谈offer的资本。其次是参加了一些面试也能意识到自己的不足,比如先去意愿不强的企业面试,发现自己的不足后回来复习,再继续面试。 2、选择大公司还是小公司?

SQL数据库面试题目及其答案

1.触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。 它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。 2.什么是存储过程?用什么来调用? 答:存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。 3.索引的作用?和它的优点缺点是什么? 答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。 缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。 3。什么是内存泄漏? 答:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new 等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。 4.维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么? 答:我是这样做的,尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。 5.什么是事务?什么是锁? 答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。 要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。 锁:在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。

相关主题