阿里巴巴笔试题

阿里巴巴笔试题

【范文精选】阿里巴巴笔试题

【范文大全】阿里巴巴笔试题

【专家解析】阿里巴巴笔试题

【优秀范文】阿里巴巴笔试题

范文一:阿里巴巴笔试题

1、 给定一个 query 和一个 text,均由小写字母组成。要求在 text 中找出以同样的顺序连续 出现在 query 中的最长连续字母序列的长度。 例如,query 为“acbac”, text 为“acaccbabb”, 那么 text 中的“cba”为最长的连续出现在 query 中的字母序列,因此,返回结果 应该为 其长度 3。请注意程序效率。

2、 写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树 中相差最大的两个节点间的差值绝对值。请注意程序效率。

3、写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树 中相差最大的两个节点间的差值绝对值。请注意程序效率。

原文地址:http://fanwen.wenku1.com/article/14635997.html

范文二:阿里巴巴笔试题

下列不属于hash碰撞解决方法是______。

线性探测

单旋转法@

二次探测

拉链法

双重散列

多重散列

在32位操作系统中,下列类型占用8个字符的为______。

short int

int C long

unsigned int

long long@

char

int

下列C代码中,不属于未定义行为的有:______。

int i=0; i=(i++);

char *p="hello"; p[1]='E';

char *p="hello"; char ch=*p++;

int i=0; printf("%d %d\n",i++,i--);

都是未定义行为

都不是未定义行为@

每台物理计算机可以虚拟出20台虚拟机,假定一台虚拟机发生故障当且仅当它所宿主的物理机发生故障。通过5台物理机虚拟出100台虚拟机,那么关于这100台虚拟机的故障的说法正确的是:______?

单台虚拟机的故障率高于单台物理机的故障率。

这100台虚拟机发生故障是彼此独立的。

这100台虚拟机单位时间内出现故障的个数高于100台物理机单位时间内出现故障的个数。

无法判断这100台虚拟机和100台物理机哪个更可靠。

如果随机选出5台虚拟机组成集群,那么这个集群的可靠性和5台物理机的可靠性相同。

可能有一段时间只有1台虚拟机发生故障。

有4个进程A、B、C、D,设它们依次进入就绪队列,因相差时间很短可视为同时到达。4个进程按轮转法分别运行11,7,2和4个时间单位,设时间片为1。四个进程的平均周转时间为______。

15.25

16.25

16.75 @

17.25

17.75

18.25

已知一个二叉树的前序遍历结果是(ACDEFHGB),中序遍历结果是(DECAHFBG),请问后序遍历结果是______。

HGFEDCBA

EDCHBGFA

BGFHEDCA

EDCBGHFA

BEGHDFCA

BGHFEDCA

在小端序的机器中,如果

union X{

int x;

char y[4];

};

如果:

X a;

a.x=0x11223344;//16进制

则:______

a.y[0]=11

a.y[1]=11

a.y[2]=11

a.y[3]=11

a.y[0]=22

a.y[3]=22

使用一辆卡车运输n块单块1TB装满数据的硬盘,以时速80km/h行驶1000km将数据运送到目的地;卡车至少运送______块硬盘才能使传输速率超

1000Gbps。

2000

3000

4000

5000

6000

7000

若路由器接收的IP报文的目的地址不是路由器的接口IP地址,并且未匹配的路由项,则采取的策略是______。

丢掉该分组@

将该分组分片

转发该分组

将分组转发或分片

将分组保留存储

以上都有可能

下列方法中,______不可以用来程序调优 ?

改善数据访问方式以提升缓存命中率

使用多线程的方式提高I/O密集型操作的效率

利用数据库连接池替代直接的数据库访问

使用迭代替代递归

合并多个远程调用批量发送

共享冗余数据提高访问效率

下面的函数中哪个是系统调用而不是库函数______?

printf

scanf

fgetc

read@

print_s

scan_s

H同学每天乘公交上学,早上睡过头或遇到堵车都会迟到;H早上睡过头概率为0.2,路上遇到堵车概率为0.5;若某天早上H迟到了,那么以下推测正确的有______。

今天H早上睡过头了

今天H早上睡过头的概率为0.2

今天H早上睡过头的概率大于0.2

今天H早上遇到堵车了

今天H早上遇到堵车的概率为0.5

今天H早上遇到堵车的概率小于0.5

甲乙两路发车间隔均为10分钟的公交车发车时刻分钟数个位分别为1和9,那么对于一个随机到达的乘客,ta乘坐甲车的概率为:

0.1

0.2

0.3

0.4

0.5

0.9

对立的两方争夺一个价值为1的物品,双方可以采取的策略可以分为鸽子策略和鹰策略。如果双方都是鸽子策略,那么双方各有1/2的几率获得该物品;如果双方均为鹰策略,那么双方各有1/2的概率取胜,胜方获得价值为1的物品,付出价值为1的代价,负方付出价值为1的代价;如果一方为鸽子策略,一方为鹰策略,那么鹰策略获得价值为1的物品。在争夺的结果出来之前,没人知道对方是鸽子策略还是鹰策略。那么以下说法正确的是:______?

如果选择鸽子策略的人多于2/3,那么你应该选择鸽子策略。

如果选择鸽子策略的人少于1/3,那么你应该选择鸽子策略。

选择鸽子策略的人越多,你越应该选择鸽子策略。@

如果选择鹰策略的人多于2/3,那么你应该选择鹰策略。

如果选择鹰策略的人少于1/3,那么你应该选择鸽子策略。

以上结论都不对。

19:36:09

村长”带着5对父子参加“爸爸去哪儿”第三季第二站某村庄的拍摄。村里为了保护小孩不被拐走有个千年的规矩,那就是吃饭的时候小孩左右只能是其他小孩或者自己的父母。那么5对父子在圆桌上共有______种坐法。(旋转一下,每个人面对的方向变更后算是一种新的坐法)

960

3120

2400

7200

7440

9600

下列描述中,唯一错误的是______。

本题有五个选项是正确的

B正确

D正确

DEF都正确

ABC中有一个错误

如果ABCDE都正确,那么F也正

附加题

1、

写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。

答案1、nt min,max=0;

//初始化min,max

void init(BT *bt){

//初始化min,max

if(head!=NULL){

min = head->data;

max = min;

}

}

//用于计算最大最小值差的函数

//函数返回最大最小值差的绝对值

int find(BT *bt){

BT *head = bt;

//中序遍历,并求得最大、最小值

while(head!=NULL){

find(head-lchild);

if(min>head->data){

min = head->data;

}

if(maxdata){

max = head->data;

}

find(head->rchild);

}

return (max-min);

}

答案2#include

#include

#include

#include

typedef struct TREE_NODE

{

int value;

struct TREE_NODE *left;

struct TREE_NODE *right;

}TreeNode;

static TreeNode *tree;

void

insert(int value)

{

TreeNode *current;

TreeNode **link;

link = &tree;

while((current = *link) != NULL){

if(value value)

link = ¤t->left;

else{

assert(value != current->value);

link = ¤t->right;

}

}

current = (TreeNode *)malloc(sizeof(TreeNode));

assert(current != NULL);

current->value = value;

current->left = NULL;

current->right = NULL;

*link = current;

}

int

main(void)

{

int i;

int value;

for(i = 0; i

{

printf("input the %d value:",i+1);

scanf("%d",&value);

getchar();

insert(value);

}

TreeNode *leftnode = tree;

while(leftnode->left != NULL)

{

leftnode = leftnode->left;

}

int small = leftnode->value;

TreeNode *rightnode = tree;

while(rightnode->right != NULL)

{

rightnode = rightnode->right;

}

int max = rightnode->value;

printf("%d\n",max-small);

return 0;

}

2、测试类

如果让你来测试淘宝站内的搜索系统,请问你能想到哪些方法来进行测试?我们假设淘宝网的搜索入口页面如下图所示:

图片:淘宝首页搜素系统

答案:1、文字测试——此搜索系统文字可以看做软件文档,可以用测试文档的方法进行测试,检查术语,内容,准确度,特别是可能过期的产品,例如(1)输入的文字内容:衣服,食品等;(2)文字的输入法:中文,英文等

2、链接测试——它是在界面之间进行切换和指导用户去一些未知页面,分为3个方面:(1)测试所有链接是否按指示的那样确实链接到了该链接的页面(2)测试所链接的页面是否存在(3)保证系统上没有孤立的页面,即没有链接指向该页面,例如:该系统有两个主要的链接:宝贝,店铺

3、图形测试——可以包括图形、按钮等,图形测试的内容有:(1)确保图形有明确的用途,图片的大小和质量也是一个重要的元素,一般采用JPG或GIF压缩

(3)检测所有的图片是否都正确载入和显示

4、动态内容测试——根据当前条件发生变化的文字和图形的测试,如:日期、时间、用户爱好、具体的用户操作等。

5、服务器性能和加载测试——每一次点击都要从系统的服务器下载数据到浏览器的计算机。

6、安全性测试——主要设计的内容有:(1)该系统是否有超时的限制(2)服务器端的脚本是否构成威胁,以及在服务器端放置好编辑脚本的问题 20:48:40

3、给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如, query为“acbac”,text为“acaccbabb”,那么text中的“cba”为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。请注意程序效率。 答案:public class Main {

public static void main(String[] args) {

String query = "acbac";

String text = "acaccbabb";

l: for (int i = query.length(); i > 0 ; i--) {

for (int j = 0; j

if (text.contains(query.substring(j,i-j))) {

System.out.println(query.substring(j,i-j).length());

break l;

}

}

} } }

阅读详情:http://www.wenku1.com/news/E1C08EA67DA7E8E9.html

范文三:阿里巴巴笔试题

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

http://www.tanhui.org.cn/

阅读详情:http://www.wenku1.com/news/DB2071CE67D9E477.html

范文四:阿里巴巴笔试题答案

第一题选C,不解释吧,按位与就行

第二题选D,不解释,2*3*sizeof(int*)=48(64位机器上是8字节一个指针)

第三题选C,我不确定,不过,应该是的

第四题选D,明显考的是补码

第5题选D,果断访问错误(这是Java的代码)

第6题选B,大家都懂

第7题果断A啊

第8题果断是B,不解释,大家懂

第9题是B,’0’不是’\0’,这个要注意

第10题果断是Fibonacci,显然是C,前几个是0,1,2,3,5,8,13,21

第11题选B,计算量是2^35,现在计算机的主频是2^30,所以差不多是几秒的事

第12题是B,显然有n=4N1+3N3+2N2+N1+1=N4+n3+n2+n1,所以N0=82,不解释

第13题果断是D,这个老题目了,不解释

第14题是C,二分查找嘛,大家都会,不解释

第15题是Fulkerson算法,算出来是46,每一次选一个增广路径即可,直接选不出来为止

第16题选185,显然,它给了120块钱(楼主二了)和一个物品(值65元),所以亏损185 这个题目楼主是这样想的,结果二了

第17题是2,不解释Fermart小定理,2^6 mod 7= 1,所以2^100=2^4=16=2 mod 7

第18题,我觉得是B,不知道对不对,这个不会

第19题,算得不太精细,选了A,不确定。

第20题C,概率与级数运算,不解释

第21题,果断B,D,malloc,new申请到的是Virtual Memory,不过,windows里面还真可以申请到物理内存,用的是VirtualAllocEx API即可

第22题B,C肯定对,D不确定,感觉是对的,不过,没敢选

第23题,其实就是解n^14

第24题,D,因为选出第一个是白的,所以位于A的概率是2/3

第25,不可能,需要2.8*10^8 bit,而蓝牙只能传2.4*10^7bit所以一帧需要0.2S

第26题(mnlogn)不解释,归并而已

第27题显然是17分钟

第28,错两个地方1,没考虑只有一个数,2,可能死循环(给你数组0,2,3让查找1) 楼主两个都想到了,写的时候忘记了写1,悲剧

第29题,果断SkipList,地球人懂的O(PLogpN)

阅读详情:http://www.wenku1.com/news/029692FB6D6FA551.html

范文五:阿里巴巴笔试dba题目

DBA笔试考题

2007年06月27日 星期三 17:59

一:SQL tuning 类

1 列举几种表连接方式

等连接、非等连接、自连接、外连接(左、右、全)

2 不借助第三方工具,怎样查看sql的执行计划

I) 使用Explain Plan,查询PLAN_TABLE;

EXPLAIN PLAN

SET STATEMENT_ID='QUERY1'

FOR

SELECT *

FROM a

WHERE aa=1;

SELECT operation, options, object_name, object_type, ID, parent_id

FROM plan_table

WHERE STATEMENT_ID = 'QUERY1'

ORDER BY ID;

II)SQLPLUS中的SET TRACE 即可看到Execution Plan Statistics

SET AUTOTRACE ON;

3:如何使用CBO,CBO与RULE的区别

IF 初始化参数 OPTIMIZER_MODE = CHOOSE THEN --(8I DEFAULT)

IF 做过表分析

THEN 优化器 Optimizer=CBO(COST); /*高效*/

ELSE

优化器 Optimizer=RBO(RULE); /*高效*/

END IF;

END IF;

区别:

RBO根据规则选择最佳执行路径来运行查询。

CBO根据表统计找到最低成本的访问数据的方法确定执行计划。

使用CBO需要注意:

I) 需要经常对表进行ANALYZE命令进行分析统计;

II) 需要稳定执行计划;

III)需要使用提示(Hint);

使用RULE需要注意:

I) 选择最有效率的表名顺序

II) 优化SQL的写法;

4 如何定位重要(消耗资源多)的SQL

使用CPU多的用户session

SELECT a.SID, spid, status, SUBSTR (a.program, 1, 40) prog, a.terminal,a.SQL_TEXT,

osuser, VALUE / 60 / 100 VALUE

FROM v$session a, v$process b, v$sesstat c

WHERE c.statistic# = 12 AND c.SID = a.SID AND a.paddr = b.addr

ORDER BY VALUE DESC;

5 如何跟踪某个session的SQL

利用TRACE 跟踪

ALTER SESSION SET SQLTRACE ON;

COLUMN SQL format a200;

SELECT machine, sql_text SQL

FROM v$sqltext a, v$session b

WHERE address = sql_address

AND machine = '&A'

ORDER BY hash_value, piece;

6 SQL调整最关注的是什么

检查系统的I/O问题

sar-d能检查整个系统的iostat(IO statistics)

7 说说你对索引的认识(索引的结构、对dml影响、对查询影响、为什么提高查询性能)

l 索引有B-TREE、BIT、CLUSTER等类型。ORACLE使用了一个复杂的自平衡B-tree结构;

l 通常来说,在表上建立恰当的索引,查询时会改进查询性能。但在进行插入、删除、修改时,同时会进行索引的修改,在性能上有一定的影响。

l 有索引且查询条件能使用索引时,数据库会先度取索引,根据索引内容和查询条件,查询出ROWID,再根据ROWID取出需要的数据。由于索引内容通常比全表内容要少很多,因此通过先读索引,能减少I/O,提高查询性能。

8 使用索引查询一定能提高查询的性能吗?为什么

l 通常,通过索引查询数据比全表扫描

要快.但是我们也必须注意到它的代价.

n 索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,

n 索引本身也会被修改. 这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4,5 次的磁盘I/O. 因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.

l 使用索引查询不一定能提高查询性能,索引范围查询(INDEX RANGE SCAN)适用于两种情况:

n 基于一个范围的检索,一般查询返回结果集小于表中记录数的30%宜采用;

n 基于非唯一性索引的检索

9 绑定变量是什么?绑定变量有什么优缺点?

l 绑定变量是指在SQL语句中使用变量,改变变量的值来改变SQL语句的执行结果。

l 优点:使用绑定变量,可以减少SQL语句的解析,能减少数据库引擎消耗在SQL语句解析上的资源。提高了编程效率和可靠性。减少访问数据库的次数, 就能实际上减少ORACLE的工作量。

l 缺点:经常需要使用动态SQL的写法,由于参数的不同,可能SQL的执行效率不同;

10 如何稳定(固定)执行计划

可以在SQL语句中指定执行计划。使用HINTS;

11 和排序相关的内存在8i和9i分别怎样调整,临时表空间的作用是什么

SORT_AREA_SIZE 在进行排序操作时,如果排序的内容太多,内存里不能全部放下,则需要进行外部排序,

此时需要利用临时表空间来存放排序的中间结果。

12 存在表T(a,b,c,d),要根据字段c排序后取第21—30条记录显示,请给出sql

SELECT *

FROM (SELECT ROWNUM AS row_num, tmp_tab.*

FROM (SELECT a, b, c, d

FROM T

ORDER BY c) tmp_tab

WHERE ROWNUM WHERE row_num >= 20

ORDER BY row_num;

二:数据库基本概念类

1 Pctused and pctfree 表示什么含义有什么作用

pctused与pctfree控制数据块是否出现在freelist中,

pctfree控制数据块中保留用于update的空间,当数据块中的free space小于pctfree设置的空间时,

该数据块从freelist中去掉,当块由于dml操作free space大于pct_used设置的空间时,该数据库块将

被添加在freelist链表中。

2 简单描述tablespace / segment / extent / block之间的关系

n tablespace : 一个数据库划分为一个或多个逻辑单位,该逻辑单位成为表空间;每一个表空间可能包含一个或多个 Segment;

n Segments : Segment指在tablespace中为特定逻辑存储结构分配的空间。每一个段是由一个或多个extent组成。包括数据段、索引段、回滚段和临时段。

n Extents : 一个 extent 由一系列连续的 Oracle blocks组成.ORACLE为通过extent 来给segment分配空间。

n Data Blocks :Oracle 数据库最小的I/O存储单位,一个data block对应一个或多个分配给data file的操作系统块。

3 描述tablespace和datafile之间的关系

◎ 一个表空间可包含一个或多个数据文件。

◎ 表空间利用增加或扩展数据文件扩大表空间,表空间的大小为组成该表空间的数据文件大小的和。

◎ 一个datafile只能属于一个表空间;

4 本地管理表空间和字典管理表空间的特点,ASSM有什么特点

n 本地管理表空间:(9i默认)

n 空闲块列表存储在表空间的数据文件头。

n 特点:减少数据字典表的竞争,当分配和收缩空间时会产生回滚,不需要合并

n 字典管理的表空间:(8i默认)

n 空闲块列表存储在数据库中的字典表里.

n 特点:片由数据字典管理,可能造成字典表的争用。存储在表空间的每一个段都会有不同的存储字句,需要合并相邻的块;

5 回滚段的作用是什么

回滚段用于保存数据修改前的映象,这些信息用于生成读一致性数据库信息、在数据库恢复和Rollback时使用。一个事务只能使用一个回滚段。

6 日志的作用是什么

日志文件(Log File)记录所有对数据库数据的修改,主要是保护数据库以防止故障,以及恢复数据时使用。其特点如下:

a)每一个数据库至少包含两个日志文件组。每个日志文件组至少包含两个日志文件成员。

b)日志文件组以循环方式进行写操作。

c)每一个日志文件成员对应一个物理文件。

7 SGA主要有那些部分,主要作用是什么

系统全局区(SGA):是ORACLE为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。

SGA主要包括:

u a)共享池(shared pool) :用来存储最近执行的SQL语句和最近使用的数据字典的数据。

u b)数据缓冲区 (database buffer cache):用来存储最近从数据文件中读写过的数据。

u c)重作日志缓冲区(redo log buffer):用来记录服务或后台进程对数据库的操作。

另外在SGA中还有两个可选的内存结构:

u d)Java pool: 用来存储Java代码。

u e)Large pool: 用来存储不与SQL直接相关的大型内存结构。备份、恢复使用。

8 Oracle系统进程主要有哪些,作用是什么

u 数据写进程(DBWR):负责将更改的数据从数据库缓冲区高速缓存写入数据文件

u 日志写进程(LGWR):将重做日志缓冲区中的更改写入在线重做日志文件

u 系统监控 (SMON): 检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复

u 进程监控 (PMON): 负责在一个Oracle 进程失败时清理资源

u 检

查点进程(CKPT):负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。

u 归档进程 (ARCH):在每次日志切换时把已满的日志组进行备份或归档

u 恢复进程 (RECO): 保证分布式事务的一致性,在分布式事务中,要么同时commit,要么同时rollback;

u 作业调度器(CJQ ): 负责将调度与执行系统中已定义好的job,完成一些预定义的工作.

三:备份恢复类

1 备份如何分类

n 物理备份

u 物理备份是最主要的备份方式。用于保证数据库在最小的数据库丢失或没有数据丢失的情况下得到恢复。

n 冷物理

u 冷物理备份提供了最简单和最直接的方法保护数据库因物理损坏丢失。建议在以下几种情况中使用。

u 对一个已经存在大最数据量的数据库,在晚间数据库可以关闭,此时应用冷物理备份。

u 对需对数据库服务器进行升级,(如更换硬盘),此时需要备份数据库信息,并在新的硬盘中恢复这些数据信息,建议采用冷物理备份。

n 热物理

u 主要是指备份过程在数据库打开并且用户可以使用的情况下进行。需要执行热物理备份的情况有:

u 由于数据库性质要求不间断工作,因而此时只能采用热物理备份。

u 由于备份的要求的时间过长,而数据库只能短时间关闭时。

n 逻辑备份 (EXP/IMP)

u 逻辑备份用于实现数据库对象的恢复。但不是基于时间点可完全恢复的备份策略。只能作为联机备份和脱机备份的一种补充。

n 完全逻辑备份

u 完全逻辑备份是将整个数据库导出到一个数据库的格式文件中,该文件可以在不同的数据库版本、操作系统和硬件平台之间进行移植。

n 指定表的逻辑备份

u 通过备份工具,可以将指定的数据库表备份出来,这可以避免完全逻辑备份所带来的时间和财力上的浪费。

2 归档是什么含义

n 归档是归档当前的联机redo日志文件。

n SVRMGR> alter system archive log current;

n 数据库只有运行在ARCHIVELOG模式下,并且能够进行自动归档,才可以进行联机备份。有了联机备份才有可能进行完全恢复。

3 如果一个表在2004-08-04 10:30:00 被drop,在有完善的归档和备份的情况下,如何恢复

I) 9i 新增的FLASH BACK 应该可以;

II) Logminer应该可以找出DML。

III)有完善的归档和备份,先归档当前数据,然后可以先恢复到删除的时间点之前,把DROP 的表导出来,然后再恢复到最后归档时间;

不过,我没试过,都是理论的说!!

4 rman是什么,有何特点

n RMAN可以用来备份和还

原数据库文件、归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。

n RMAN启动数据库上的Oracle服务器进程来进行备份或还原。备份、还原、恢复是由这些进程驱动的。

n 注意:RMAN不能用于备份初始化参数文件和口令文件。

具有如下特点:

n 功能类似物理备份,但比物理备份强大N倍;

n 可以压缩空块;

n 可以在块水平上实现增量;

n 可以把备份的输出打包成备份集,也可以按固定大小分割备份集;

n 备份与恢复的过程可以自动管理;

n 可以使用脚本(存在Recovery catalog 中)

n 可以做坏块监测

5 standby的特点

备用数据库(standby database):ORACLE推出的一种高可用性(HIGH AVAILABLE)数据库方案,

在主节点与备用节点间通过日志同步来保证数据的同步,备用节点作为主节点的备份

可以实现快速切换与灾难性恢复,从920开始,还开始支持物理与逻辑备用服务器。

9i中的三种数据保护模式分别是:

n MAXIMIZE PROTECTION :最大数据保护与无数据分歧,LGWR将同时传送到备用节点,

u 在主节点事务确认之前,备用节点也必须完全收到日志数据。如果网络不好,引起LGWR不能传送数据,将引起严重的性能问题,导致主节点DOWN机。

n MAXIMIZE AVAILABILITY :无数据丢失模式,允许数据分歧,允许异步传送。

u 正常情况下运行在最大保护模式,在主节点与备用节点的网络断开或连接不正常时,自动切换到最大性能模式,

u 主节点的操作还是可以继续的。在网络不好的情况下有较大的性能影响。

n MAXIMIZE PERFORMANCE:这种模式应当可以说是从8i继承过来的备用服务器模式,异步传送,

u 无数据同步检查,可能丢失数据,但是能获得主节点的最大性能。9i在配置DATA GUARD的时候默认就是MAXIMIZE PERFORMANCE

没实践过,只是把答案列出来。

6 对于一个要求恢复时间比较短的系统(数据库50G,每天归档5G),你如何设计备份策略

数据库比较大逻辑备份没什么必要,每天归档5G,每周三/周六自动归档10G,每月RMAN归档全库。

应该有standby。

我对备份和恢复缺少实践机会,JUST PAPER。

四:系统管理类

1 对于一个存在系统性能的系统,说出你的诊断处理思路

I) 做statspack收集系统相关信息

了解系统大致情况/确定是否存在参数设置不合适的地方/查看top 5 event/查看top sql等

II) 查v$system_event/v$session_event/v$session_wait

从v$system_event开始,确定需要什么资源(db file sequential read)等

深入研究v$session_event,确定等待事件涉及的会话

III)从v$session

_wait确定详细的资源争用情况

通过v$sql/v$sqltext/v$sqlarea表确定disk_reads、(buffer_gets/executions)值较大的SQL

2 列举几种诊断IO、CPU、性能状况的方法

top

uptime

vmstat

iostat

statspack

sql_trace/tkprof

查v$system_event/v$session_event/v$session_wait

查v$sqlarea(disk_reads或buffer_gets/executions较大的SQL)

或者第三方的监视工具,TOAD就不错。

3 对statspack有何认识

认识不深。仅限了解。StapSpack是Oracle公司提供的一个收集数据库运行性能指标的软件包。

可以做数据库健康检查报告。

4 如果系统现在需要在一个很大的表上创建一个索引,你会考虑那些因素,如何做以尽量减小对应用的影响

可以先表分析一下,然后测试创建索引前后对应用的性能影响;

需要考虑的是该索引列不经常更新,不是有很多重复值的情况时, 在大表中使用索引特别有效.

创建的索引可以跟数据表分不同表空间存储。

5 对raid10 和raid5有何认识

几乎不懂。没配过磁盘阵列

五:综合随意类

1 你最擅长的是oracle哪部分?

pl/sql及sql优化

2 喜欢oracle吗?喜欢上论坛吗?或者偏好oracle的哪一部分?

喜欢。PL/SQL比较得心应手。

3 随意说说你觉得oracle最有意思的部分或者最困难的部分

我对数据库的备份/恢复和性能调优经验明显不足,自然觉得有些困难。

基于ORACLE的研究应该是个宽广的领域,所以我觉得还是有意思的。

4 为何要选择做DBA呢?

我对数据库的备份/恢复和性能调优经验明显不足,主要是缺乏环境和交流。

因此,算不上什么DBA。不过因此我更需要这样的机会。

不过就整个ORACLE 来说,一直从事与它相关的工作,感情还是颇深的。放弃可惜。而且就技术本身而言我觉得自己还是有学习和创新的能力,它的诸如数据仓库,数据挖掘之类的领域也很广。

阅读详情:http://www.wenku1.com/news/C6A03C7C42237963.html

范文六:阿里巴巴2015年笔试题

有一个装过食盐的瓶子,容积是w,在食盐用完之后,还有一些食盐粉末(体积可以忽略)残留在瓶子壁上。现在要把该瓶子改装糖,给你u体积的纯净水,用来清洗该瓶子。在每次清洗之后,瓶子里会残留至少v体积的水(食盐溶液,可以忽略盐的体积)。假设w>u>v,请问下述哪种方式使用这些纯净水,能把瓶子洗得最干净______?

 把所有的纯净水全部倒入瓶子,然后把水倒掉。 将纯净水平均分为两份,用每一份清水洗一遍瓶子。 每次注入体积为v的纯净水清洗瓶子,直到纯净水用尽。 每次注入体积为2v的纯净水清洗瓶子,直到纯净水用尽。 将用过的水重新注入瓶子,多次清洗。 以上方法清洗效果相同。

int main(){ fork()||fork();} 共创建几个进程:______。

 1 2 3 4 5 6

以下属性中,______不是m阶B树特性。

 根节点至少2子女节点 非根节点包含的子女数j满足:┌m/2┐ - 1

 叶节点均位于同一层 B+也常用于计算机磁盘文件组织

使用一辆卡车运输n块单块1TB装满数据的硬盘,以时速80km/h行驶1000km将数据运送到目的地;卡车至少运送______块硬盘才能使传输速率超1000Gbps。

 2000 3000 4000 5000 6000 7000

12321能被写成______种两个质数相加的形式。

 0 1 2 3 4 5

在以下操作中,数组比线性表速度更快的是______。

 原地逆序 头部插入 返回中间节点 返回中间节点 返回头部节点 选择随机节点

程序出错在什么阶段______?

int main(void)

{

http://www.taobao.com

cout

}

 

 预处理阶段出错 编译阶段出错 汇编阶段出错 链接阶段出错 运行阶段出错 程序运行正常

以下排序方式,平均时间复杂度最差的排序是______。

 快速排序 归并排序 希尔排序 选择排序 堆排序 三点中值快速排序

一 监狱人脸识别准入系统用来识别待进入人员的身份,此系统一共包括识别4种不同的人员:狱警、小偷、送餐员、其它。下面哪种学习方法最适合此种应用需求:______。

 二分类问题 多分类问题 层次聚类问题 K-中心点聚类问题 回归问题 结构分析问题

甲乙两路发车间隔均为10分钟的公交车发车时刻分钟数个位分别为2和8,那么对于一个随机到达的乘客,ta乘坐甲车的概率为:______。

 0.1

 

  0.2 0.3 0.4 0.5 0.9

关于UNIX系统代码段和数据段分开的目的,错误的说法有______。

 可共享正文 可共享数据 可重入 可保护代码为只读 方便编程 更好支持内存回收策略

每台物理计算机可以虚拟出20台虚拟机,假定一台虚拟机发生故障当且仅当它所宿主的物理机发生故障。通过5台物理机虚拟出100台虚拟机,那么关于这100台虚拟机的故障的说法正确的是:______?

 单台虚拟机的故障率高于单台物理机的故障率。 这100台虚拟机发生故障是彼此独立的。 这100台虚拟机单位时间内出现故障的个数高于100台物理机单位时

间内出现故障的个数。

 无法判断这100台虚拟机和100台物理机哪个更可靠。 如果随机选出5台虚拟机组成集群,那么这个集群的可靠性和5台物

理机的可靠性相同。

 可能有一段时间只有1台虚拟机发生故障。

下列C代码中,不属于未定义行为的有:______。

 int i=0; i=(i++); char *p=

针对外部存储器(如磁盘)上存放的程序和数据,说法正确的是______。

 可由CPU直接进行读取写入操作 须在CPU访问之前移入内存 必须由文件系统管理的 必须由进程调度程序管理 程序和数据必须为只读 程序和数据只能被一个进程独占

某航空公司有M个城市之间的全连通运营线路,最近业务扩张,新增了N(>1)个城市。为了保持其全连通运营的特色,公司新增了58种单程票(往与返各算一种单程票,没有联程票);那么扩张后,该航空公司有______个城市间的运营能力。

 13 14 15 16 17 18

下列描述中,唯一错误的是______。

 本题有五个选项是正确的 B正确 D正确 DEF都正确 ABC中有一个错误 如果ABCDE都正确,那么F也正确

关于IP地址下列说法错误的是______。

 IP地址采用分层结构,它由网络号与主机号两部分组成 根据不同的取值范围IP地址可以分为五类 202.112.139.140属于B类地址 每个C类网络最多包含254台主机 IPv6采用128位地址长度 A类,B类和C类地址为内部私有地址

程序出错在什么阶段______?

int main(void)

{

http://www.taobao.com

cout

}

 预处理阶段出错 编译阶段出错 汇编阶段出错 链接阶段出错

 运行阶段出错 程序运行正常

下面的函数中哪个是系统调用而不是库函数______?

 printf scanf fgetc read print_s scan_s

如果一个博物馆参观者到达的速率是每分钟20人,平均每个人在馆内停留20分钟,那么该博物馆至少需要容纳______人才行?

 100人 200人 300人 400人 500人 600人

在以下操作中,数组比线性表速度更快的是______。

 原地逆序 头部插入 返回中间节点

 返回中间节点 返回头部节点 选择随机节点

1. 写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树

中相差最大的两个节点间的差值绝对值。请注意程序效率。

2. 给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续

出现在query中的最长连续字母序列的长度。例如, query为“acbac”,text为“acaccbabb”,那么text中的“cba”为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。请注意程序效率。

阅读详情:http://www.wenku1.com/news/7D83D879E9D9BAE1.html

范文七:2013阿里巴巴笔试题

一、单项选择题

1.下列说法不正确的是:(B)

A.SATA硬盘的速度速度大约为500Mbps/s

B.读取18XDVD光盘数据的速度为1Gbps

C.前兆以太网的数据读取速度为1Gpbs

D.读取DDR3内存数据的速度为100Gbps

解析:有说B的,有说D的,B肯定是不对的吧。

关于B选项:

理论上讲:DVD的1倍速是1350KB/s,CD是150KB/s,DVD的1倍速等于CD的9倍速。

因为CD容量是700MB左右,DVD单面单层(DVD-5)是4.7GB(实际为4.37GB),DVD单面单层的容量是CD的6.4倍左右,所以,1倍速的播放器在80分钟内把一张700MB的CD读取出来(700MB*1024/150KB/s/60=79.6min),1倍速的播放器在60分钟内把一张4.7GB的DVD读出来(4.37GB*1024*1024、1350KB/s/60=56.6min)

DVD的倍速:

1x:(1倍速)基本传输速率为1350KB/s。

2x:(2倍速)基本传输速率为2700KB/s。

4x:(4倍速)基本传输速率为5400KB/s。

18x:(18倍速)基本传输速率为24300KB/s=23M。

CD的倍速:

1x(1倍速)基本传输速率为150KB/s。

2x(2倍速)基本传输速率为300KB/s

4x(4倍速)基本传输速率为600KB/s。

8x(8倍速)基本传输速率为1200KB/s。

2.(D)不能用于Linux中的进程通信

A.共享内存

B.命名管道

C.信号量

D.临界区(每个进程访问临界资源的那段代码称为临界区;临界资源就是每次只允许一个进程访问的共享资源)

解析:

Linux进程间通信的几种主要手段简介:

(1)管道及有名管道:管道可用于具有亲缘关系的进程间通信;有名管道克服了管道没有名字的限制,因此,除了具有管道所具有的功能外,它还允许无亲缘关系进程间通信;

(2)信号:信号是比较复杂的通信方式,用于通知接收有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数signal外,还支持语义符合Posix标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);

(3)消息队列:消息队列是消息的链接表,包括Posix消息队列和system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列客服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点;

(4)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其他通信机制,如信息量结合使用,来达到进程间的同步及互斥;

(5)信息量:主要作为进程间以及同一进程不同线程之间的同步手段;

(6)套接口:更为一般的进程间通信机制,可用于不同机器之间的进程间通信。

Linux线程间通信几种主要通信手段简介:

(1)锁机制:包括互斥锁、条件变量、读写锁,互斥锁提供了以排他方式防止数据结构被并发修改的方法,使用条件变量可以以原子的方式阻塞线程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的,条件变量始终与互斥锁一起使用。读写锁运行多个线程同时读共享数据,而对写操作是互斥的;

(2)信号量机制:包括无名线程信号量和命名线程信号量;

(3)信号机制:类似于进程间的信号处理;

进程与线程的区别:

进程概念:

进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源。然后,把该进程放入进程的就绪队列。进程调度程序选中它,为它分配CPU以及其他有关子亚U年,该进程才真正运行。所以,进程是系统中并发执行的单位。

线程的概念:

线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多子任务之一。线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独处理器上进行。

引入线程的好处:

(1)易于调度。

(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。

(3)开销少。创建线程比创建进程要快,所需开销很少。

(4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。

进程和线程的关系:

(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。

(3)处理机分给线程,即真正在处理机上运行的是线程。

(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

3.设在内存中有P1,P2,P3三道程序,并按照P1,P2,P3的优先级次序运行,其中内部计算和IO操作时间由下表给出(CPU计算和IO资源都只能同时由一个程序占用):

P1:计算60ms---》IO 80ms---》计算20ms

P2:计算120ms---》IO 40ms---》计算40ms

P3:计算40ms---》IO 80ms---》计算40ms

完成三道程序比单道运行节省的时间是(C)

A.80ms B.120ms C.160ms D.200ms

解析:

单道运行的总时间为:60+80+20+120+40+40+40+80+40=520ms

4.两个等价线程并发的执行下列程序,a为全局变量,初始为0,假设printf、++、--操作都是原子性的,则输出不肯哪个是(A)

1 void foo() {

2

3 if(a

4

5 a++;

6

7 }

8

9 else {

10

11 a--;

12

13 }

14

15 printf(

16

17 }

A.01 B.10 C.12 D.22

解析:

对于B选项:P1执行程序,输入1,P2执行程序,输出0;

对于C选项:初始为0,P1执行完判断语句,决定要执行a++,中断,P2进行判断,此时a仍然等于0,执行判断语句,并执行输入,得到1,P1然后继续执行,此时它该执行a++,这时a=1,执行并输出,结果为2;

对于D答案:初始为0,P1执行完判断语句,决定要执行a++,中断,P2进行判断,此时a仍然等于0,执行a++,得到a=1,中断,P1继续执行a++,a=2,P1输出,得到2,P1结束,P2继续执行输出语句,得到2;

5.给定fun函数如下,那么fun(10)的输出结果是(C)

int fun(int x)

{

return (x==1) ? 1 : (x + fun(x-1));

}

A.0 B.10 C.55 D.3628800

6.在c++程序中,如果一个整型变量频繁使用,最好将他定义为(D)

A.auto B.extern C.static D.register

解析:

C语言提供了四种类型修饰符:auto、register、extern、static。

auto修饰仅在语句块内使用,初始化可为任何表达式,其特定是当执行流程进入该语句块的时候执行初始化操作,没有默认值;

使用register修饰符修饰变量,将暗示编译程序相应的变量被频繁地使用,如果可能的话,应将其保存到CPU的寄存器,以加快其存储速度;

static静态变量声明符。在声明它的语句块、子程序块或函数内部有效,值保持,在整个程序期间分配存储器空间,编译器默认值为0,。是C/C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。Static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。

extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其他模块中寻找其定义。另外,extern也可用来进行链接指定。

7.长为n的字符串中匹配长度为m的子串的复杂度为(B)

A.O(N) B.O(M+N) C.O(N+LOGM) D.O(M+LOGN)

解析:有选B的,也有选C的。

这道题目首先想到的是KMP算法,时间复杂度为O(m+n)。但是还有的选择C选项,貌似是Sunday算法。

8.判断一包含n个整数a[]中是否存在i、j、k满足a[i] + a[j] = a[k]的时间复杂度为(B)

A.O(n) B.O(n^2) C.O(nlog(n)) D.O(n^2log(n))

解析:

对于B选项,可以这样实现。

(1)先对数组进行排序,时间为O(nlogn),然后从大往小取a[k],n次

然后在0到k-1之间夹出i,j来...每次K操作...若存在负数,则需要在0到n-1之间夹出i,j;

(2)先对数组进行排序,时间为O(nlogn),然后两次for循环嵌套,进行hash查找;

对于D选项,可以这样实现。

(1)先对数组进行排序,时间为O(nlogn),然后两个for循环嵌套,二分查找a[i]+a[j]是否在数组中;

9.三次射击能中一次的概率是0.95,请问一次射击能中的概率是多少?(C)

A.0.32 B.0.5 C.0.63 D.0.85

解析:

公式很简单,1-(1-p)^3=0.95。接下来需要有一定的估算技巧。A选项可以看作1/3,C选项可以看作2/3,D选项可以看作4/5.

10.下列序排算法中最坏复杂度不是n(n-1)/2的是(D)

A.快速序排 B.冒泡序排 C.直接插入序排 D.堆序排

解析:

各种排序算法的时间复杂度:

插入排序思想:

将n个元素的数列分为已有序和无序两个部分,每次处理就是讲无序数列中的第一个元素与有序数列的元素从后往前逐个进行比较,找到插入位置,将该元素插入到有序数列的合适位置。

希尔排序思想:

希尔排序,也称为递减增量排序算法,是插入排序的一种高速而稳定的改进版本。

希尔排序是基于插入排序的以下两点性质而提出改进方法的:

(1)插入排序在对几乎已经排好序的数据操作时,效率高,即可达到线性排序的效率;

(2)但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;

选择排序思想:

首先在未排序的序列中找到最大(小)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最大(小)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

二、不定向选择题

1.以下哪些进程状态转换是正确的(ABCE)

A.就绪到运行 B.运行到就绪 C.运行到阻塞 D.阻塞到运行 E.阻塞到就绪

解析:

进程调度:

四种进程间的状态转换:

就绪—>执行 执行—>阻塞 阻塞—>就绪 执行—>就绪

1)进程的三种基本状态

进程在运行中不断地改变其运行状态。通常,一个进程必须具有以下三种基本状态:

就绪状态:

当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态就称为就绪状态;

执行状态:

当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态;

阻塞状态:

正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而进入阻塞状态。引起进程阻塞的事件有很多种,例如,等待I/O完成、申请缓冲区不能满足、等待信号等。

2)进程三种状态间的转换

一个进程在运行期间,不断地从一种状态转换到另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。

A. 就绪—>执行

处于就绪状态的进程,当进程调度程序为之分配好了处理机后,该进程便由就绪状态转换为执行状态;

B. 执行—>就绪

处于执行状态的进程在其执行过程中,因分配给它的一个时间片已经用完而不得不让出处理机,于是进程从执行状态转换为就绪状态;

C. 执行—>阻塞

正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态;

D. 阻塞—>就绪

处于阻塞状态的进程,若其等待的事件已经发生,于是进程便从阻塞状态转变为就绪状态。

4.A和B晚上无聊就开始数星星。每次只能数K个(20

A、2013 B、2888 C、4062 D、*** E、****

解析:不懂

对于上述答案,A有必胜的策略,A、B、C、D、E都应该选择。首先,A选取,使剩余的星星为50的倍数。然后数星星的顺序为B、A、B、A......。B数k个星星,则A就数50-k个,使剩余星星始终剩余为50的倍数,最后,一定是A数最后的星星。A必胜。

三、填空问答题

1.给你一个整型数组A[N],完成一个小程序代码(20行之内),使得A[N]逆向,即原数组为1,2,3,4,逆向之后为4,3,2,1。

3.有个苦逼的上班族,他每天忘记定闹钟的概率为0.2,上班堵车的概率为0.5,如果他既没定闹钟上班又堵车那他迟到的概率为1.0,如果他定了闹钟但是上班堵车那他迟到的概率为0.9,如果他没定闹钟但是上班不堵车他迟到的概率为0.8,如果他既定了闹钟上班又不堵车那他迟到的概率为0.0,那么求出他在60天里上班迟到的期望。

解析:概率为0.51

4.战报交流:战场上不同的位置有N个战士(n>4),每个战士知道当前的一些战况,现在需要这n个战士通过通话交流,互相传达自己知道的战况信息,每次通话,可以让通话的双方知道对方的所有情报,设计算法,使用最少的通话次数,是的战场上的n个士兵知道所有的战况信息,不需要写程序代码,得出最少的通话次数。

解析:

笔试的时候是这样想的:N-1个人围成一个环,将知道的消息都告诉第N个人,需要N-1次,同时第N-1个人与第N个人交流时,两人互相交流消息,这样子第N-1个人与第N个人都知道了所有人的信息,接下来第N-1人沿着环将消息传递下去,需要N-2次,所以需要N-1+(N-2)=2N-3。

但是实际上这个问题有着更优的解法。

扩展的一类问题:

题目:假如我们班有n个MM,每一个MM都有一个独家的八卦消息。两个MM可以通过电话联系,一通电话将使得双方都获知对方目前已经知道的全部消息。要想所有n个MM都知道所有n条八卦消息,最少需要多少通电话?请给出通话方案。

来自:http://www.matrix67.com/blog/archives/1078

解答:

(1)分析情况

当n很小时我们很容易通过枚举的方法找出最佳通话方案:

A1=0 A2=1 A3=3 A4=4 A5=6 A6=8

(2)基于中间消息传递人的思想建模

可以先把所有消息集中于一个或几个人,然后再由这些消息汇总人把消息传给所有人。设n个MM中有m个消息汇总人,她们共享所有消息需要打An通电话。

通话方案如下:

第一、剩下的n-m个MM每个人从m个消息汇总人中随机选择一个通话。这样一来m个消息汇总人就掌握所有n条八卦消息,并且她们每个人所掌握的消息互不重叠,是互补的;

第二、m个消息汇总人通过打电话共享所有八卦消息;

第三、作为消息汇总人的m个MM再通过电话将自己新得到八卦新闻告知最开始打电话给自己的MM,使得她们也掌握所有n条消息;

模型如下:

(3)模型分析

按照上面的通话方案,第一步需要n-m通电话,第二步需要Am通电话,第三步需要n-m通电话,故有An=2*(n-m)+Am,进一步化简得

An=2*n - (2*m - Am)

即当MM的个数为n时,共享所有八卦消息共需要2*n - (2*m - Am)通电话。若要使得通话次数最小,就要求(2*m - Am)最大。因此,取多少个MM作为消息汇总人使得(2*m - Am)最大成为了解决这个问题的关键,它反映了MM们之间通话的效率。记Em=(2*m - Am)。

当有一个消息汇总人即m=1时,E1=2*1 - A1=2;

当有两个消息汇总人即m=2时,E2=2*2 - A2=3;

m=3时,E3=2*3 - A3=3;

m=4时,E4=2*4 - A4=4;

m=5时,E5=2*5 - A5=4;

m=6时,E6=2*6 - A6=4;

.......

由归纳法可知,当m>=4时,Em有最大值4,An有最小值2*n - 4,即当有大于或等于4个消息汇总人时可通过上述通话方案使得n个MM通过最小的电话数共享所有八卦消息。此时共需要2*n - 4次电话。

(4)模型证明

http://blog.csdn.net/linygood/article/details/8898844

(5)模型结果

题目中如果告诉n大于4,那么结果就是2n-4。

5.有N个人,其中一个明星和n-1个群众,群众都认识明星,明星不认识任何群众,群众和群众之间的认识关系不知道,现在如果你是机器人R2T2,你每次问一个人是否认识另外一个人的代价为O(1),试设计一种算法找出明星,并给出时间复杂度(没有复杂度不得分)。

解答:

这个问题等价于找未知序列数中的最小数,我们将reg这个函数等价为以下过程:如果i认识j,记作i大于等于j,同样j不一定大于等于i,满足要求,i不认识j记作i

另外一种思路:

四、综合题

有一个淘宝商户,在某城市有n个仓库,每个仓库的储货量不同,现在要通过货物运输,将每次仓库的储货量变成一致的,n个仓库之间的运输线路围城一个圈,即1->2->3->4->...->n->1->...,货物只能通过连接的仓库运输,设计最小的运送成本(运货量*路程)达到淘宝商户的要求,并写出代码。

解答:

这个题目类似的题目有:

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1045

有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1,求使所有人获得均等糖果的最小代价。

分析:

假设a1分给an的糖果数为k,则可以得到以下的信息:

a1 a2 a3 an-1 an

当前数目:a1-k a2 a3 an-1 an+k

所需代价:|a1-k-ave| |a1+a2-k-2*ave| |a1+a2+a3-k-3*ave||a1+..+a(n-1)-k-(n-1)*ave| |k| 以sum[i]表示从a1加到ai减掉i*ave的和值,这以上可以化简为

总代价 = |s1-k|+|s2-k|+...+|s(n-1)-k|+|k|

不难看出:当k为s1...s(n-1)中的中位数的时候,所需的代价最小

阅读详情:http://www.wenku1.com/news/0C126FB6478140BF.html

范文八:2014阿里巴巴笔试题

2014年阿里巴巴秋季校园招聘

系统工程师 笔试卷

第一部分 单选题(前10题,每题2分;后10题,每题3分;共50分。选对得

满分,选错倒扣一分,不选得0分。)

1. 字符串“alibaba”有个不同的排列。

A. 5040 B. 840 C. 14 D.420

2. 下列一段C++代码的输出是

class Base

{

public:

int Bar(char x) {return (int)(x);}

virtual int Bar(int x) {return(2*x);}

};

class Derived :public Base

{

public:

int Bar(char x) {return(int)(-x);}

int Bar(int x) {return (x/2);}

};

void main(void)

{

Derived Obj;

Base*pObj=&Obj;

printf(

printf(

}

A. 100,50 B. -100,200 C. -100,50 D. 100,200

3. 有一个二维数组A[10][5],每个数据元素占1个字节,且A[0][0]的存储地址是1000,

则A[i][j]的地址是 。

A. 1000+10i+j B. 1000+i+j C. 1000+5i+j D. 1000+10i+5j

4. 下列

A. 队列 B. 栈 C. 关联数组 D. 链表

5. 下列有关在一个处理器(processor)上跑两个线程(thread)的说法中,正确的是。

A. 一个线程可以改变另一个线程的程序计数器(program counter)

B. 一个线程既不能读也不能写另一个线程的栈(stack)

C. 一个线程可以读写另一个线程的寄存器(register)

D. 以上都不对

6. 关于双链表的搜索给定元素操作的说法正确的是。

A. 从两个方向搜索双链表,比从一个方向搜索双链表的速度慢

B. 从两个方向搜索双链表,比从一个方向搜索双链表的方差要小

C. 从两个方向搜索双链表,比从一个方向搜索双链表速度要快

D. 以上说法都不正确

7. 对n个数字进行排序,期中两两不同的数字的个数为k,n远远大于k,而n的取值区间 长度超过了内存的大小,时间复杂度最小可以是 。

A. O(nlogk) B. O(nk) C. O(n) D. O(nlogn)

8. 一台指针式钟表的时钟和分钟的指向重合的时间间隔是

A. 720/13分钟 B. 720/11分钟 C. 60分钟 D. 以上都不正确

9. 两个大小不同的杯子R和S,R中装着一定量的小米,S中装着一定量的沙子。一名儿

童用勺子从S中取出一勺沙子放入R,与小米混合之后,再从R中取出等体积的一勺混合

物放入S。假定两勺物品的体积相等,且R和S都没有发生溢出。则以下说法中正确的是 。

A. R中的沙子和S中的小米一样多

B. R中的沙子比S中的小米少

C. R中的沙子比S中的小米多

D. 无法判断

10. 假定抛出的硬币落地之后正反两面出现的概率分别是1/2。那么抛10次和100次硬币

(分别称为T10和T100)相比,以下说法正确的是 。

A. T100出现一半的正面比T10出现一半正面的概率更大

B. T100前3次都是正面的概率比T10前3次都是正面的可能性大

C. T100正面次数的方差小于T10出现正面次数的方差

D. T100出现正面的比例比T10出现正面的比例在(0.45,0.55)区间中的可能性更大。

11. 某福彩机构推出了一款简单的猜谜游戏:游戏玩家只需交纳n元,赌红或者黑。如果开

奖结果与游戏玩家所赌的颜色相同,则玩家除得到交纳的n元赌资外,还可以获得n元作为

奖励;否则该玩家失去交纳的n元赌资。为了游戏公平,开奖是红或者黑的概率均为1/2。

某游戏玩家想出了一个玩法:开始出100元参与赌博,然后按照如下规则进行游戏,如果输

掉,并且赌资充足,就把已经输了的总钱数翻倍作为赌资进行赌博;否则,就停止该游戏。

假定该机构赌资无限,而玩家的赌资比较有限,以下关于该玩家退出游戏时的情形的评论中

合理的是: 。

A. 该玩家的策略可以保证游戏结束时赢钱数的期望为正数

B. 该福彩机构长期会赔钱

C. 该玩家会有一定概率在游戏结束时输钱,但输得不多

D. 该玩家赢的可能性比输的可能性大

12. 有16瓶水,其中只有一瓶水有毒,小白鼠喝一滴之后一小时会死。请问最少用小白鼠,在1小时内一定可以找出至少14瓶无毒的水?

A. 1只

B. 3只

C. 4只

D. 16只

13. 有一台4核CPU的服务器,上面运行着1种在线服务。如果该在线服务处理一个请求

在非独占IO上的等待时间和CPU计算上消耗的时间比为2:1,假定IO带宽充足,那么至

少开 个线程能最大化性能地使用该服务器?

A. 4 B. 8 C. 12 D. 线程越多越好

14. 有一种语言称为lua,里面的数字只有一种类型(number),实际上是双精度浮点数。没

有各种位数的整数,如32位、64位整数等。那么关于该语言的说法错误的是 。

A. 该语言可以用number类型的变量作为数组下标

B. 该语言可以表示任意32位数字整数的数字ID

C. 该语言无法实现32位数字整数的按位与、或、异或运算

D. 该语言可以正常进行双精度浮点数运算

15. 一个在线服务通常需要读取存储着海量数据的数据库。为了提高服务的处理速度,通常

需要加cache(缓存)。以下场景中不合适使用cache的是 。

A. 数据库中每条数据被访问到的概率近似相等,且独立

B. 使用了多线程机制的服务

C. 单条数据尺寸大小的数据

D. 有着大量访问的服务

16. 如下一段神奇的代码实现的功能是

int miracle(unsigned int n)

{

int m=n==0 ? 0:1;

while (n=(n&(n-1)))

{

m++;

}

return m;

}

A. n的二进制表示中“0”的个数

B. n的二进制表示的倒序值

C. n的二进制表示中“1”的个数

D. 一个均匀的哈希函数

17. 有1023个两两不同的整数,取值范围是1到1024,其按位异或的结果的取值范围是

A. 0到1024

B. 0,1025到2047

C. 1到1024

D. 2到2048之前的全部偶数

18. 七夕节n恋人(n>=2)围成一圈举行篝火晚会。晚会的规则是:男女相同,且每对恋人

处在相邻的位置上。请问有多少种不同的圈子?

A. (2n-1)!/2 B. 2(n-1)! C. 2n(n-1)! D. (2n)!

19. 星期天有10个朋友约好一起郊游,在车站的集合时间是早晨9:50:00到10:00:00。已知

每个人到达车站的时间是9:50:00到10:00:00内的均匀分布,且彼此独立。那么最后一人最

可能到达的时间是 (精确到分钟,向下取整)。

A. 各个分钟概率相等 B. 9:57 C. 9:58 D. 9:59

20. 已知某国家每年出生人口数每年递增3%,且男女比例为1:1。如果每个男性都希望找比

自己小0.5到 3岁的女性结婚,且每个女性都希望找比自己大0.5到3岁的男性结婚,适婚

年龄为20到30岁,那么对该国适婚男女婚配方面的说法正确的是 。

A. 男女会比较均衡

B. 会产生较多剩女

C. 会产生较多剩男

D. 信息不足,无法判断

第二部分 不定向选项(4题,每题5分。每题有1-5个正确选项,完全正确计5

分,漏选计2分,不选计0分,多选、错选计-2分)

21. 要提高多线程程序的效率,对锁的控制策略非常重要。一种策略是在锁的个数不太多、

控制结构不太复杂的情况下,尽可能降低加锁的粒度;另一种策略是在合适的条件下取消用

锁。以下情况中不可能取消锁的是 。

A. 多线程写一个共同的数据结构,且写操作是原子操作

B. 多线程写一个共同的数据结构,且写操作不是原子操作

C. 多线程读一个共同的数据结构,且读操作不是原子操作

D. 一个线程写,多个线程读一个共同的数据结构,写操作是原子操作,读操作不是原 子操作

E. 一个线程写、多个线程读一个共同的数据结构,写操作不是原子操作,读操作是原

子操作

22. 一颗非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树可能是。

A. 所有的结点均无右孩子

B. 只有一个叶子结点

C. 是一颗二叉树索树

D. 所有的结点均无左孩子

23. 以下数字在表示为double(8字节的双精度浮点数)时存在舍入误差的有

A. 2 B. 10的30次方 C. 0.1 D. 0.5 E. 100

24. 给定如下C程序:

typedef struct node_s{

int item;

struct node_s* next;

}node_t;

void reverse_list(node_t* head)

{

node_t* n=head;

head=NULL;

while(n){

}

return head;

}

以下哪项能实现该函数的功能

A. node_t* m=head; head=n; head->next=m; n=n->next;

B. node_t* m=n; n=n->next; m->next=head; head=m;

C. node_t* m=n->next; n->next=head; n=m; head=n;

D. head=n->next; head->next=n; n=n->next;

第三部分 填空与问答(5题,共30分)

25. (4分)某无聊的程序员在玩Windows上的记事本程序,不用鼠标,每次可以按以下键或组合之一:A、Ctrl+A(全选)、Ctrl+C(拷贝)、Ctrl+V(粘贴),那么在10次按键只能可以制造的最长文本长度为 。

26. (4分)若初始序列为gbfcdae,那么只会少需要次两两交换,才能使该序列变为abcdefg。任给一个自由a--g这7个字母组成的排列,最坏的情况下需要至少 次两两交换,才能使序列变为abcdefg。

27. (5分)在某恶劣天气,若地图上S点到T点的交通网如下图所示,其中每条边表示一条双向通道,其上的数字为该通路可通行的概率,且该概率两两独立。求S到T的可通行概率 。

1/3

1/2

1/2

1/2

1/2

1/3

28. (8分)6度分离假说的含义是,世界上任何两个人要么是朋友,要么是朋友的朋友,或者更高阶的朋友的朋友(如朋友的朋友的朋友),改论断中“朋友”一词出现的次数为两人之间的距离,那么该距离小于等于6。如果某SNS(如QQ、旺旺等),有100万用户,其人际关系网咯符合以下两个假设:

1) 朋友关系是一种对称关系(如A和B是朋友,那么B和A也是朋友)

2) 符合2度分离假说

3) 第i个人拥有的朋友的个数为ni ,所有ni 中最大值为n

试估算n的最小值 。

29. (9分)某电子商务网站进行A、B两种推荐算法的效果对比测试,对用户的访问请求按照1:9的比例随机分配给A和B两种算法处理。产生推荐结果后,按照两种指标对比两种算法产生的结果好坏:第一种指标是CTRPV=该算法下用户的点击展现次数/该算法下所有的展现次数,第二种指标是CTRUV=该算法下有点击的用户数/该算法下所有的用户数。假定每个用户会对该推荐服务2次访问,如果A和B的CTRPV持平(假设为0.01)。那么CTRUV哪个大,大的比小的大百分之多少 。

第四部分:附加题

1. 一个10亿条记录的文本文件,已按照关键字排好字存储,请设计方法,可以快速的从文件中查找指字关键字的记录:

2.请描述一下TCP建立连接三次握手的过程。

3.

阅读详情:http://www.wenku1.com/news/EF5ADFFC00B6044D.html

范文九:阿里巴巴公司DBA笔试题

一:SQL tuning 类 1:列举几种表连接方式 2:不借助第三方工具,怎样查看 sql 的执行计划 3:如何使用 CBO,CBO 与 RULE 的区别 4:如何定位重要(消耗资源多)的 SQL 5:如何跟踪某个 session 的 SQL 6:SQL 调整最关注的是什么 7:说说你对索引的认识(索引的结构、对 dml 影响、对查询影响、为什么提高查询性能) 8:使用索引查询一定能提高查询的性能吗?为什么 9:绑定变量是什么?绑定变量有什么优缺点? 10:如何稳定(固定)执行计划 11:和排序相关的内存在 8i 和 9i 分别怎样调整,临时表空间的作用是什么 12:存在表 T(a,b,c,d),要根据字段 c 排序后取第 21—30 条记录显示,请给出 sql 二:数据库基本概念类 数据库基本概念类 1:pctused and pctfree 表示什么含义有什么作用 2:简单描述 table / segment / extent / block 之间的关系 3:描述 tablespace 和 datafile 之间的关系 4:本地管理表空间和字典管理表空间的特点,ASSM 有什么特点 5:回滚段的作用是什么 6:日志的作用是什么 7:SGA 主要有那些部分,主要作用是什么 8racle 系统进程主要有哪些,作用是什么 三:备份恢复类 备份恢复类 1:备份如何分类 2:归档是什么含义 3:如果一个表在 2004-08-04 10:30:00 被 drop,在有完善的归档和备份的情况下,如 何恢复 4:rman 是什么,有何特点 5:standby 的特点 6:对于一个要求恢复时间比较短的系统(数据库 50G,每天归档 5G),你如何设计备份策 略 四:系统管理类 系统管理类 1:对于一个存在系统性能的系统,说出你的诊断处理思路 2:列举几种诊断 IO、CPU、性能状况的方法 3:对 statspack 有何认识 4:如果系统现在需要在一个很大的表上创建一个索引,你会考虑那些因素,如何做以尽 量减小对应用的影响

5:对 raid10 和 raid5 有何认识 五:综合随意类 综合随意类 1:你最擅长的是 oracle 哪部分? 2:喜欢 oracle 吗?喜欢上论坛吗?或者偏好 oracle 的哪一部分? 3:随意说说你觉得 oracle 最有意思的部分或者最困难的部分 4:为何要选择做 DBA 呢? 来源:考试大-Oracle 认证考试

参考解答: 参考解答: 一:SQL tuning 类 1:列举几种表连接方式 列举几种表连接方式hash join/merge join/nest loop(cluster join)/index join2:不借助第三方工具,怎样查看 sql 的执行计划 不借助第三方工具, 不借助第三方工具set autot on explain plan set statement_id = &item_id for &sql; select * from table(dbms_xplan.display); http://download-west.oracle.com/ ... /b10752/ex_plan.htm3:如何使用 CBO,CBO 与 RULE 的区别 如何使用 在 optimizer_mode=choose 时,如果表有统计信息(分区表外),优化器将选择 CBO,否则 选 RBO。RBO 遵循简单的分级方法学,使用 15 种级别要点,当接收到查询,优化器将评估 使用到的要点数目, 然后选择最佳级别(最少的数量)的执行路径来运行查询。 CBO 尝试找到最低成本的访问数据的方法,为了最大的吞吐量或最快的初始响应时间, 计算使用不同的执行计划的成本,并选择成本最低的一个,关于表的数据内容的统计被用于 确定执行计划。 4:如何定位重要 消耗资源多 的 SQL 如何定位重要(消耗资源多 如何定位重要 消耗资源多)的select sql_text from v$sql where disk_reads> 1000 or (executions > 0 and buffer_gets/executions > 30000);5:如何跟踪某个 session 的 SQL 如何跟踪某个exec dbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace); select sid,serial# from v$session where sid = (select sid from v$mystat where rownum = 1); exec dbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,'');6:SQL 调整最关注的是什么 查看该 SQL 的 response time(db block gets/consistent gets/physical reads/sorts (disk))

7:说说你对索引的认识 索引的结构、对 dml 影响、为什么提高查询性能 说说你对索引的认识(索引的结构 影响、为什么提高查询性能) 说说你对索引的认识 索引的结构、 b-tree index/bitmap index/function index/patitional index(local/global) 索引通常能提 高 select/update/delete 的性能,会降低 insert 的速度, 8:使用索引查询一定能提高查询的性能吗 为什么 使用索引查询一定能提高查询的性能吗?为什么 使用索引查询一定能提高查询的性能吗 索引就是为了提高查询性能而存在的, 如果在查询中索引没有提高性能, 只能说是用 错了索引,或者讲是场合不同 9:绑定变量是什么 绑定变量有什么优缺点 绑定变量是什么?绑定变量有什么优缺点 绑定变量是什么 绑定变量有什么优缺点? 绑定变量是相对文本变量来讲的,所谓文本变量是指在 SQL 直接书写查询条件, 这样的 SQL 在不同条件下需要反复解析,绑定变量是指使用变量来代替直接书写条件,查询 bind value 在运行时传递, 然后绑定执行。 优点是减少硬解析,降低 CPU 的争用,节省 shared_pool ; 缺点是不能使用 histogram,sql 优化比较困难 10:如何稳定 固定 执行计划 如何稳定(固定 如何稳定 固定)执行计划query_rewrite_enabled = true star_transformation_enabled = true optimizer_features_enable = 9.2.0创建并使用 stored outline 11:和排序相关的内存在 8i 和 9i 分别怎样调整,临时表空间的作用是什么 和排序相关的内存在 分别怎样调整, 8i 中 sort_area_size/sort_area_retained_size 决定了排序所需要的内存 如果排序操作不能在 sort_area_size 中完成,就会用到 temp 表空间 9i 中如果 workarea_size_policy=auto 时, 排序在 pga 内进行,通常 pga_aggregate_target 的 1/20 可以用来进行 disk sort; 如果 workarea_size_policy=manual 时,排序需要的内存由 sort_area_size 决定 在执行 order by/group by/distinct/union/create index/index rebuild/minus 等操作时, 如果在 pga 或 sort_area_size 中不能完成,排序将在临时表空间进行(disk sort), 临时表空间主要作用就是完成系统中的 disk sort. 12:存在表 T(a,b,c,d),要根据字段 c 排序后取第 21—30 条记录显示,请给出 sql 存在表 条记录显示, 要根据字段

create table t(a number(,b number(,c number(,d number(); / begin for i in 1 .. 300 loop insert into t values(mod(i,2),i/2,dbms_random.value(1,300),i/4); end loop; end; / select * from (select c.*,rownum as rn from (select * from t order by c desc) c) where rn between 21 and 30; / select * from (select * from test order by c desc) x where rownum

tablespace 是逻辑上的概念,datafile 则在物理上储存了数据库的种种对象。 4:本地管理表空间和字典管理表空间的特点,ASSM 有什么特点 本地管理表空间和字典管理表空间的特点, 本地管理表空间和字典管理表空间的特点 本地管理表空间(Locally Managed Tablespace 简称 LMT) 8i 以后出现的一种新的表空间的管理模式,通过位图来管理表空间的空间使用。 字典管理表空间(Dictionary-Managed Tablespace 简称 DMT) 8i 以前包括以后都还可以使用的一种表空间管理模式, 通过数据字典管理表空间的空间 使用。 动段空间管理(ASSM), 它首次出现在 Oracle920 里有了 ASSM,链接列表 freelist 被位图所取代,它是一个二 进制的数组, 能够迅速有效地管理存储扩展和剩余区块(free block),因此能够改善分段存储本质, ASSM 表空间上创建的段还有另外一个称呼叫 Bitmap Managed Segments(BMB 段)。 5:回滚段的作用是什么 回滚段的作用是什么 事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段 中, 当用户回滚事务(ROLLBACK)时,ORACLE 将会利用回滚段中的数据前影像来将修改 的数据恢复到原来的值。 事务恢复:当事务正在处理的时候,例程失败,回滚段的信息保存在 undo 表空间中, ORACLE 将在下次打开数据库时利用回滚来恢复未提交的数据。 读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。 当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改(语句级 读一致性) 当 ORACLE 执行 SELECT 语句时,ORACLE 依照当前的系统改变号(SYSTEM CHANGE NUMBER-SCN) 来保证任何前于当前 SCN 的未提交的改变不被该语句处理。可以想象:当一个长时间 的查询正在执行时,

若其他会话改变了该查询要查询的某个数据块,ORACLE 将利用回滚段的数据前影像 来构造一个读一致性视图。 6:日志的作用是什么 日志的作用是什么 记录数据库事务,最大限度地保证数据的一致性与安全性 重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复,一 个数据库至少需要两个重做日志文件 归档日志文件: 是重做日志文件的脱机副本, 这些副本可能对于从介质失败中进行恢复 很必要。 7:SGA 主要有那些部分,主要作用是什么 主要有那些部分,SGA:db_cache/shared_pool/large_pool/java_pool db_cache:数据库缓存(Block Buffer)对于 Oracle 数据库的运转和性能起着非常关键的作用, 它占据 Oracle 数据库 SGA(系统共享内存区)的主要部分。 Oracle 数据库通过使用 LRU 算法,将最近访问的数据块存放到缓存中,从而优化对磁盘数据的访问. shared_pool: 共享池的大小对于 Oracle 性能来说都是很重要的。 共享池中保存数据字典高速缓冲和完全解析或编译的的 PL/SQL 块和 SQL 语句及控 制结构 large_pool: 使用 MTS 配置时, 因为要在 SGA 中分配 UGA 来保持用户的会话, 就是用 Large_pool 来保持这个会话内存 使用 RMAN 做备份的时候,要使用 Large_pool 这个内存结构来做磁盘 I/O 缓存器 java_pool: 为 java procedure 预备的内存区域,如果没有使用 java proc,java_pool 不是必须的 8 Oracle 系统进程主要有哪些,作用是什么 系统进程主要有哪些,

数据写进程(dbwr):负责将更改的数据从数据库缓冲区高速缓存写入数据文件 日志写进程(lgwr):将重做日志缓冲区中的更改写入在线重做日志文件 系统监控(smon) :检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢 复 进程监控(pmon) :负责在一个 Oracle 进程失败时清理资源 检查点进程(chpt): 负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新 控制文件和数据文件中的数据库状态信息。 归档进程(arcn) :在每次日志切换时把已满的日志组进行备份或归档 作业调度器(cjq) :负责将调度与执行系统中已定义好的 job,完成一些预定义的工作. 恢复进程(reco) :保证分布式事务的一致性,在分布式事务中,要么同时 commit,要么同时 rollback; 备份恢复类 1:备份如何分类 备份如何分类 逻辑备份:exp/imp 物理备份: RMAN 备份 full backup/incremental backup(累积/差异) 热备份:altertablespace begin/end backup; 冷备份:脱机备份(database shutdown) 2:归档是什么含义 归档是什么含义 关于归档日志:Oracle 要将填满的在线日志文件组归档时,则要建立归档日志(archived redo log)。 其对数据库备份和恢复有下列用处: 数据库后备以及在线和归档日志文件, 在操作系统和磁盘故障中可保证全部提交的事物 可被恢复。 在数据库打开和正常系统使用下, 如果归档日志是永久保存, 在线后备可以进行和使用。 数据库可运行在两种不同方式下: NOARCHIVELOG 方式或 ARCHIVELOG 方式数据库在 NOARCHIVELOG 方式下使 用时,不能进行在线日志的归档,如果数据库在 ARCHIVELOG 方式下运行,可实施在线日

志的归档。3:如果一个表在 2004-08-04 10:30:00 被 drop,在有完善的归档和备份的情况 下,如何恢复? 手工拷贝回所有备份的数据文件startup mount; sql alter database recover automatic until time '2004-08-04:10:30:00'; alter database open resetlogs;4:rman 是什么 有何特点 是什么,有何特点 有何特点? RMAN(Recovery Manager)是 DBA 的一个重要工具,用于备份、还原和恢复 oracle 数 据库, RMAN 可以用来备份和恢复数据库文件、归档日志、控制文件、系统参数文件,也可 以用来执行完全或不完全的数据库恢复。RMAN 有三种不同的用户接口: COMMAND LINE 方式、GUI 方式(集成在 OEM 中的备份管理器)、API 方式(用于集 成到第三方的备份软件中)。 具有如下特点: 1)功能类似物理备份,但比物理备份强大 N 倍; 2)可以压缩空块; 3)可以在块水平上实现增量; 4)可以把备份的输出打包成备份集,也可以按固定大小分割备份集; 5)备份与恢复的过程可以自动管理; 6)可以使用脚本(存在 Recovery catalog 中) 7)可以做坏块监测 5:standby 的特点 备用数据库(standby database):ORACLE 推出的一种高可用性(HIGH AVAILABLE) 数据库方案, 在主节点与备用节点间通过日志同步来保证数据的同步,备用节点作为主节点的备份 可以实现快速切换与灾难性恢复,从 920 开始,还开始支持物理与逻辑备用服务器。 9i 中的三种数据保护模式分别是: 1)、MAXIMIZE PROTECTION :最大数据保护与无数据分歧,LGWR 将同时传送到 备用节点,

在主节点事务确认之前,备用节点也必须完全收到日志数据。如果网络不好,引起 LGWR 不能传送数据,将引起严重的性能问题,导致主节点 DOWN 机。 2)、MAXIMIZE AVAILABILITY :无数据丢失模式,允许数据分歧,允许异步传送。 正常情况下运行在最大保护模式, 在主节点与备用节点的网络断开或连接不正常时, 自 动切换到最大性能模式, 主节点的操作还是可以继续的。在网络不好的情况下有较大的性能影响。 3)、MAXIMIZE PERFORMANCE:这种模式应当可以说是从 8i 继承过来的备用服务 器模式,异步传送, 无数据同步检查,可能丢失数据,但是能获得主节点的最大性能。9i 在配置 DATA GUARD 的时候默认就是 MAXIMIZE PERFORMANCE 6:对于一个要求恢复时间比较短的系统 数据库 50G,每天归档 5G),你如何设计备份策 对于一个要求恢复时间比较短的系统(数据库 对于一个要求恢复时间比较短的系统 每天归档 , 略 rman/每月一号 level 0 每周末/周三 level 1 其它每天 level 2 来源:考试大-Oracle 认证 考试 四:系统管理类 对于一个存在系统性能的系统, 对于一个存在系统性能的系统,说出你的诊断处理思路 1 做 statspack 收集系统相关信息 了解系统大致情况/确定是否存在参数设置不合适的地方/查看 top 5 event/查看 top sql 等 2 查 v$system_event/v$session_event/v$session_wait 从 v$system_event 开始,确定需要什么资源(db file sequential read)等 深入研究 v$session_event,确定等待事件涉及的会话 从 v$session_wait 确定详细的资源争用情况(p1-p3 的值:file_id/block_id/blocks 等) 3 通过 v$sql/v$sqltext/v$sqlarea 表确定 disk_reads、(buffer_gets/executions)值较大 的 SQL 2:列举几种诊断 IO、CPU、性能状况的方法 列举几种诊断 、 、 top/vmstat

statspack

sql_trace/tkprof

查v$system_event/v$session_event/v$session_wait

查v$sqlarea(disk_reads或buffer_gets/executions较大的SQL)

3:对statspack有何认识

StapSpack是Oracle公司提供的一个收集数据库运行性能指标的软件包,该软件包从8i起,在9i、10g都有显著的增强。该软件包的辅助表(存储相关参数与收集的性能指标的表)由最初的25个增长到43个。收集级别参数由原来的3个(0、5、10)增加到5个(0、5、6、7、10)通过分析收集的性能指标,数据库管理员可以详细地了解数据库目前的运行情况,对数据库实例、等待事件、SQL等进行优化调整。利用statspack收集的snapshot,可以统计制作数据库的各种性能指标的统计趋势图表。

4:如果系统现在需要在一个很大的表上创建一个索引,你会考虑那些因素,如何做以尽量减小对应用的影响

在系统比较空闲时;nologging选项(如果有dataguard则不可以使用nologging)大的sort_ared_size或pga_aggregate_target较大

5:对raid1+0 和raid5有何认识

RAID 10(或称RAID 1+0)与RAID 0+1不同,它是用硬盘驱动器先组成RAID 1阵列,然后在RAID 1阵列之间再组成RAID 0阵列。RAID 10模式同RAID 0+1模式一样具有良好的数据传输性能,但却比RAID 0+1具有更高的可靠性。RAID 10阵列的实际容量为M×n/2,磁盘利用率为50%。RAID 10也需要至少4个硬盘驱动器构成,因而价格昂贵。 RAID 10的可靠性同RAID 1一样,但由于RAID 10硬盘驱动器之间有数据分割,因而数据传输性能优良。RAID 5与RAID 3很相似,不同之处在于RAID 5的奇偶校验信息也同数据一样被分割保存到所有的硬盘驱动器,而不是写入一个指定的硬盘驱动器,从而消除了单个奇偶校验硬盘驱动器的瓶颈问题。RAID 5磁盘阵列的性能比RAID 3有所提高,但仍然需要至少3块硬盘驱动器。其实际容量为M×(n-1),磁盘利用率为(n-1)/n 。

来源:考试大-Oracle认证考试

阅读详情:http://www.wenku1.com/news/C966FF84A3BBC88E.html

范文十:阿里巴巴公司DBA笔试题

阿里巴巴公司DBA笔试题

参考解答:

一:SQL tuning 类

1:列举几种表连接方式 hash join/merge join/nest loop(cluster join)/index join

2:不借助第三方工具,怎样查看sql的执行计划 set autot on

explain plan set statement_id = &item_id for &sql;

select * from table(dbms_xplan.display);

http://download-west.oracle.com/ ... /b10752/ex_plan.htm

3:如何使用CBO,CBO与RULE的区别

在optimizer_mode=choose时,如果表有统计信息(分区表外),优化器将选择CBO,否则选RBO。RBO遵循简单的分级方法学,使用15种级别要点,当接收到查询,优化器将评估使用到的要点数目, 然后选择最佳级别(最少的数量)的执行路径来运行查询。

CBO尝试找到最低成本的访问数据的方法,为了最大的吞吐量或最快的初始响应时间,计算使用不同 的执行计划的成本,并选择成本最低的一个,关于表的数据内容的统计被用于确定执行计划。

4:如何定位重要(消耗资源多)的SQL

select sql_text

from v$sql

where disk_reads > 1000 or (executions > 0 and buffer_gets/executions > 30000);

5:如何跟踪某个session的SQL

exec dbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);

select sid,serial# from v$session where sid = (select sid from v$mystat where rownum = 1);

exec

dbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,''); 6:SQL调整最关注的是什么

查看该SQL的response time(db block gets/consistent gets/physical reads/sorts (disk))

7:说说你对索引的认识(索引的结构、对dml影响、为什么提高查询性能)

b-tree index/bitmap index/function index/patitional index(local/global) 索引通常能提高select/update/delete的性能,会降低insert的速度,

8:使用索引查询一定能提高查询的性能吗?为什么

索引就是为了提高查询性能而存在的, 如果在查询中索引没有提高性能, 只能说是用错了索引,或者讲是场合不同

9:绑定变量是什么?绑定变量有什么优缺点?

绑定变量是相对文本变量来讲的,所谓文本变量是指在SQL直接书写查询条件,这样的SQL在不同条件下需要反复解析,绑定变量是指使用变量来代替直接书写条件,查询bind value在运行时传递,然后绑定执行。优点是减少硬解析,降低CPU的争用,节省shared_pool ;缺点是不能使用histogram,sql优化比较困难

10:如何稳定(固定)执行计划 query_rewrite_enabled = true

star_transformation_enabled = true

optimizer_features_enable = 9.2.0

创建并使用stored outline

http://download-west.oracle.com/ ... /outlines.htm#26854

11:和排序相关的内存在8i和9i分别怎样调整,临时表空间的作用是什么

8i中sort_area_size/sort_area_retained_size决定了排序所需要的内存

如果排序操作不能在sort_area_size中完成,就会用到temp表空间

9i中如果workarea_size_policy=auto时,

排序在pga内进行,通常pga_aggregate_target的1/20可以用来进行disk sort; 如果workarea_size_policy=manual时,排序需要的内存由sort_area_size决定

在执行order by/group by/distinct/union/create index/index rebuild/minus等操作时, 如果在pga或sort_area_size中不能完成,排序将在临时表空间进行(disk sort), 临时表空间主要作用就是完成系统中的disk sort.

12:存在表T(a,b,c,d),要根据字段c排序后取第21—30条记录显示,请给出sql create table t(a number(,b number(,c number(,d number();

/

begin

for i in 1 .. 300 loop

insert into t values(mod(i,2),i/2,dbms_random.value(1,300),i/4);

end loop;

end;

/

select * from (select c.*,rownum as rn from (select * from t order by c desc) c) where rn between 21 and 30; /

select * from (select * from test order by c desc) x where rownum

minus

select * from (select * from test order by c desc) y where rownum

数据库基本概念类

1:pctused and pctfree 表示什么含义有什么作用

pctused与pctfree控制数据块是否出现在freelist中,

pctfree控制数据块中保留用于update的空间,当数据块中的free space小于pctfree设置的空间时,

该数据块从freelist中去掉,当块由于dml操作free space大于pct_used设置的空间时,该数据库块将

被添加在freelist链表中。

2:简单描述table / segment / extent / block之间的关系

table创建时,默认创建了一个data segment,

每个data segment含有min extents指定的extents数,

每个extent据据表空间的存储参数分配一定数量的blocks

3:描述tablespace和datafile之间的关系

一个tablespace可以有一个或多个datafile,每个datafile只能在一个tablespace内, table中的数据,通过hash算法分布在tablespace中的各个datafile中,

tablespace是逻辑上的概念,datafile则在物理上储存了数据库的种种对象。

4:本地管理表空间和字典管理表空间的特点,ASSM有什么特点

本地管理表空间(Locally Managed Tablespace简称LMT)

8i以后出现的一种新的表空间的管理模式,通过位图来管理表空间的空间使用。

字典管理表空间(Dictionary-Managed Tablespace简称DMT)

8i以前包括以后都还可以使用的一种表空间管理模式,通过数据字典管理表空间的空间使用。

动段空间管理(ASSM),

它首次出现在Oracle920里有了ASSM,链接列表freelist被位图所取代,它是一个二进制的数组,

能够迅速有效地管理存储扩展和剩余区块(free block),因此能够改善分段存储本质, ASSM表空间上创建的段还有另外一个称呼叫Bitmap Managed Segments(BMB 段)。 5:回滚段的作用是什么

事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,

当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。

事务恢复:当事务正在处理的时候,例程失败,回滚段的信息保存在undo表空间中, ORACLE将在下次打开数据库时利用回滚来恢复未提交的数据。

读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。 当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改(语句级读一致性)

当ORACLE执行SELECT语句时,ORACLE依照当前的系统改变号(SYSTEM CHANGE NUMBER-SCN)

来保证任何前于当前SCN的未提交的改变不被该语句处理。可以想象:当一个长时间的查询正在执行时,

若其他会话改变了该查询要查询的某个数据块,ORACLE将利用回滚段的数据前影像来构造一个读一致性视图。

6:日志的作用是什么

记录数据库事务,最大限度地保证数据的一致性与安全性

重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复,一个数据库至少需要两个重做日志文件

归档日志文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。

7:SGA主要有那些部分,主要作用是什么 SGA:db_cache/shared_pool/large_pool/java_pool

db_cache:

数据库缓存(Block Buffer)对于Oracle数据库的运转和性能起着非常关键的作用,

它占据Oracle数据库SGA(系统共享内存区)的主要部分。Oracle数据库通过使用LRU 算法,将最近访问的数据块存放到缓存中,从而优化对磁盘数据的访问.

shared_pool:

共享池的大小对于Oracle 性能来说都是很重要的。

共享池中保存数据字典高速缓冲和完全解析或编译的的PL/SQL 块和SQL 语句及控制结构

large_pool:

使用MTS配置时,因为要在SGA中分配UGA来保持用户的会话,就是用Large_pool来保持这个会话内存

使用RMAN做备份的时候,要使用Large_pool这个内存结构来做磁盘I/O缓存器 java_pool:

为java procedure预备的内存区域,如果没有使用java proc,java_pool不是必须的 8 Oracle系统进程主要有哪些,作用是什么

 数据写进程(dbwr):负责将更改的数据从数据库缓冲区高速缓存写入数据文件 日志写进程(lgwr):将重做日志缓冲区中的更改写入在线重做日志文件 系统监控(smon) :检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复 进程监控(pmon) :负责在一个Oracle 进程失败时清理资源 检查点进程(chpt):负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制

文件和数据文件中的数据库状态信息。

 归档进程(arcn) :在每次日志切换时把已满的日志组进行备份或归档 作业调度器(cjq) :负责将调度与执行系统中已定义好的job,完成一些预定义的工作. 恢复进程(reco) :保证分布式事务的一致性,在分布式事务中,要么同时commit,要么同时

rollback;

备份恢复类

1:备份如何分类

逻辑备份:exp/imp

物理备份:

RMAN备份

full backup/incremental backup(累积/差异)

热备份:alter tablespace begin/end backup;

冷备份:脱机备份(database shutdown)

2:归档是什么含义

关于归档日志:Oracle要将填满的在线日志文件组归档时,则要建立归档日志(archived redo log)。

其对数据库备份和恢复有下列用处:

数据库后备以及在线和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事物可被恢复。

在数据库打开和正常系统使用下,如果归档日志是永久保存,在线后备可以进行和使用。 数据库可运行在两种不同方式下:

NOARCHIVELOG方式或ARCHIVELOG 方式数据库在NOARCHIVELOG方式下使用时,不能进行在线日志的归档,如果数据库在ARCHIVELOG方式下运行,可实施在线日志的归档。3:如果一个表在2004-08-04 10:30:00 被drop,在有完善的归档和备份的情况下,如何恢复?

手工拷贝回所有备份的数据文件 startup mount;

sql alter database recover automatic until time '2004-08-04:10:30:00';

alter database open resetlogs;

4:rman是什么,有何特点?

RMAN(Recovery Manager)是DBA的一个重要工具,用于备份、还原和恢复oracle数据库, RMAN 可以用来备份和恢复数据库文件、归档日志、控制文件、系统参数文件,也可以用来执行完全或不完全的数据库恢复。RMAN有三种不同的用户接口:

COMMAND LINE方式、GUI 方式(集成在OEM 中的备份管理器)、API 方式(用于集成到第三方的备份软件中)。

具有如下特点:

 1)功能类似物理备份,但比物理备份强大N倍; 2)可以压缩空块; 3)可以在块水平上实现增量; 4)可以把备份的输出打包成备份集,也可以按固定大小分割备份集; 5)备份与恢复的过程可以自动管理; 6)可以使用脚本(存在Recovery catalog 中) 7)可以做坏块监测

5:standby的特点

备用数据库(standby database):ORACLE推出的一种高可用性(HIGH AVAILABLE)数据库方案,

在主节点与备用节点间通过日志同步来保证数据的同步,备用节点作为主节点的备份 可以实现快速切换与灾难性恢复,从920开始,还开始支持物理与逻辑备用服务器。 9i中的三种数据保护模式分别是:

1)、MAXIMIZE PROTECTION :最大数据保护与无数据分歧,LGWR将同时传送到备用节点,

在主节点事务确认之前,备用节点也必须完全收到日志数据。如果网络不好,引起LGWR不能传送数据,将引起严重的性能问题,导致主节点DOWN机。

2)、MAXIMIZE AVAILABILITY :无数据丢失模式,允许数据分歧,允许异步传送。 正常情况下运行在最大保护模式,在主节点与备用节点的网络断开或连接不正常时,自动切换到最大性能模式,

主节点的操作还是可以继续的。在网络不好的情况下有较大的性能影响。

3)、MAXIMIZE PERFORMANCE:这种模式应当可以说是从8i继承过来的备用服务器模式,异步传送,

无数据同步检查,可能丢失数据,但是能获得主节点的最大性能。9i在配置DATA GUARD的时候默认就是MAXIMIZE PERFORMANCE

6:对于一个要求恢复时间比较短的系统(数据库50G,每天归档5G),你如何设计备份策略

rman/每月一号 level 0 每周末/周三 level 1 其它每天level 2

四:系统管理类

对于一个存在系统性能的系统,说出你的诊断处理思路

1 做statspack收集系统相关信息

了解系统大致情况/确定是否存在参数设置不合适的地方/查看top 5 event/查看top sql等

2 查v$system_event/v$session_event/v$session_wait

从v$system_event开始,确定需要什么资源(db file sequential read)等

深入研究v$session_event,确定等待事件涉及的会话

从v$session_wait确定详细的资源争用情况(p1-p3的值:file_id/block_id/blocks等) 3 通过v$sql/v$sqltext/v$sqlarea表确定disk_reads、(buffer_gets/executions)值较大的SQL

2:列举几种诊断IO、CPU、性能状况的方法

top/vmstat

statspack

sql_trace/tkprof

查v$system_event/v$session_event/v$session_wait

查v$sqlarea(disk_reads或buffer_gets/executions较大的SQL)

3:对statspack有何认识

StapSpack是Oracle公司提供的一个收集数据库运行性能指标的软件包,该软件包从8i起,在9i、10g都有显著的增强 。该软件包的辅助表(存储相关参数与收集的性能指标的表)由最初的25个增长到43个。收集级别参数由原来的3个(0、5、10)增加到5个(0、5、6、7、10)通过分析收集的性能指标,数据库管理员可以详细地了解数据库目前的运行情况,对数据库实例、等待事件、SQL等进行优化调整。利用statspack收集的snapshot,可以统计制作数据库的各种性能指标的统计趋势图表。

4:如果系统现在需要在一个很大的表上创建一个索引,你会考虑那些因素,如何做以尽量减小对应用的影响

在系统比较空闲时;nologging选项(如果有dataguard则不可以使用nologging)大的sort_ared_size或pga_aggregate_target较大

5:对raid1+0 和raid5有何认识

RAID 10(或称RAID 1+0)与RAID 0+1不同,它是用硬盘驱动器先组成RAID 1阵列,然后在RAID 1阵列之间再组成RAID 0阵列。RAID 10模式同RAID 0+1模式一样具有良好的数据传输性能,但却比RAID 0+1具有更高的可靠性。RAID 10阵列的实际容量为M×n/2,磁盘利用率为50%。RAID 10也需要至少4个硬盘驱动器构成,因而价格昂贵。 RAID 10的可靠性同RAID 1一样,但由于RAID 10硬盘驱动器之间有数据分割,因而数据传输性能优良。RAID 5与RAID 3很相似,不同之处在于RAID 5的奇偶校验信息也同数据一样被分割保存到所有的硬盘驱动器,而不是写入一个指定的硬盘驱动器,从而消除了单个奇偶校验硬盘驱动器的瓶颈问题。RAID 5磁盘阵列的性能比RAID 3有所提高,但仍然需要至少3块硬盘驱动器。其实际容量为M×(n-1),磁盘利用率为(n-1)/n 。

阅读详情:http://www.wenku1.com/news/F74D9C11D7F758EC.html