面试都问了些什么及解答

—恢复内容开始—

一,大数据类:

  问:一亿条字符串,固定长度,其中有重复的两条数据,如何找到(不限制方法)

  1.linux系统下一条命令

  2.导入数据库添加非聚焦索引,一条select 命令

  3.文件流写成1000个文件,并计算hash值 % 100 这样就有100个文件,开多线程并行计算hashset 

 

   问:一亿条int类型的整数如何找到重复的

   申请长为1亿的bitarray,根据比如这样的数组{1,2,5,3,6} 可以用bitarray这样表示0111011 ,第几位存在就标示为1,不存在则记为0,直接扫描bitarray就可以确定需要添加的数是否存在了。

 

二,在你看来,数据库优化要注意哪些内容?

 

 

基础知识准备: SQL server 的数据存储都是B树来存放

 

1.聚集索引的原则是放在那些高频,唯一的属性列上,当表没有建立聚焦索引的时候,那时的表的存储顺序就是以堆的方式存在,是没有顺序可言的。

表的顺序上的连续是非常的重要的

 

尽量在唯一性高的字段上创建索引,不要在性别这种唯一性很低的字段上创建索引;

 

2.非聚焦索引 

 

3.联合索引  注意顺序

 

4.索引的碎片化,需要rebuild索引。

 

5.填充因子

 

6.学会看查询计划

T-SQL的优化:

1.在Where条件中尽量不要在=号左边进行函数、运算符、或表达式计算,如Where DATEDIFF(DD,StartTime,GetDate())=6  ;或Where Num/2=100;

2.在Where中尽量避免出现!=或<>操作符;

3.在Where中尽量避免对字段进行null值判定;

4.使用Like关键字进行模糊查找时,不要使用前置百分号,如Like ‘%123%’;

5.数据库字段的长度尽量的小(保证应用的前提下);

6.不要使用Selecte*,不要使用*号来查询数据;

7.尽量避免使用游标,游标的效率是很差的,可以使用While循环来代替;

8.尽量避免返回大量数据(查询数据(Select)优化,分页处理等);

9.使用Exists代替in和not in

10.注意是否使用脏读,with(nolock)

 

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据