2015年10月15号到24号.net工程师面试题

第一家公司

因SQL语言忘记第一大题没有做PASS

一SQL

表Test结构如下:

姓名

时间

电话

结果

张三

11-01 08:30

111

未接通

李四

12-01 08:31

222

接通

王五

11-02 08:32

333

未接通

张三

12-04 09:25

111

接通

张三

12-10 09:31

111

接通

……

 

 

 

…….

 

 

 

1,  请写出查询以下结果的sql命令

姓名  接通量  未接通量

张三   2         0

李四    1        0

王五    0         0

………

Select 姓名,sum(Case  when  结果=‘接通’then 1  Else 0  end)as 接通量,sum(Case  when  结果=‘未接通’then 1  Else 0  end)未接通量

From  Test  group by 姓名

2,  如记录数是百万级,有何优化方法?

尽量避免全表扫描,可以在order by 涉及的列上建立索引

大家有其他方法,各抒己见

二、数据如下1,1,2,3,5,8,13,21……求第30位数据是多少

这个是斐波那契数列,别的不多说了

Int   shu (int n){

If(n<=2)

Return 1;

Else

Return shu(n-1)+shu(n-2)

}

第二家公司

 

1.      Union all 与union的区别?truncate 与delete的区别?having如何使用

(1)      union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。

(2)      TRUNCATE TABLE 在功能上与不带 WHERE子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

(3)      在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用,它可以和合计函数一起使用

 

2.      对聚集索引和非聚集索引的理解

 

聚集索引时物理排序(效率高,但只有一个)   非聚集索引是按照物理和逻辑排序(不高,可频繁操作) 你可以把索引理解为字典   聚集索引直接查询到子   非聚集索引则需要先查偏旁或者拼音再查字

 

3.      下面这个sql 会引起索引吗?

 

Select name from awhere name like ‘%a’(1)不会,全表扫描

Select name from awhere name like ‘a%’(2)会

 

4.sql如何实现分页查询,简单写一个分页

 

Select  top  页大小  id from  a 

Where (id  not  in

  (select  top  页大小*页数  id

     From  a   order  by  id

)order   by  id

 

 

5.  表A

Id

name

Sex

1

li

2

3

Wu

4

An

5

Ce

6

Cao

查询性别为男女根据id排序的最前的两条数据

查询结果如下

Id

name

Sex

1

li

4

An

Select *from  A where  id  in  (select  min(id) from  A  group  by  sex)

第三家公司

1、  某网页一块HTML代码如下

<table id=”td”><tr><td>1</td><td>2</td></tr></table>

请在网页里面添加一个脚本,使当单击表格的时候,用alert()弹出一个框,把<td>内容提取出来

把jquery引入

<script type="text/javascript">

$(function(){

            $("#td1td").click(function () {

               alert($(this).text());

            })

        });

</script>

 

2 ,数据库中有张学生成绩表score,4个字段,id  int 主键 stid  int 学生表的主键

socre  int 分数  recorddate                                           分数录入时间

 

学生表student

stid  in  主键 ;  sname nvarchar(50)  姓名

已知每个学生在同一时间只能录入一条成绩的记录

(1)      请写出sql 语句查询出每个学生最后一次录入系统时间对应的记录:姓名,录入时间,分数

(2)      请写出sql 语句查询每个学生分数最高分的记录:姓名,录入时间,分数

select  student.sname,score.

 

3,快速查询方法排序

 

static void QuickSort(ref List<int> nums, int left, int right)

        {

            if (left <right)

            {

                int i = left;

                int j = right- 1;

                int middle =nums[(left + right) / 2];

                while (true)

                {

                    while (i< right && nums[i] < middle) { i++; };

                    while (j> 0 && nums[j] > middle) { j--; };

                    if (i ==j) break;

                    nums[i] =nums[i] + nums[j];

                    nums[j] =nums[i] - nums[j];

                    nums[i] =nums[i] - nums[j];

                    if(nums[i] == nums[j]) j--;

                }

                QuickSort(refnums, left, i);

                QuickSort(refnums, i + 1, right);

            }

 

 

        }

面试大题

 

1、  每一行都有一个IP地址,这些IP地址可能在文件中多次出现,请找到出现次数最多的前10条记录

 

在数据库中查询如下

 --查询重复数据所有

select * from FileRepeat where id in (select id from FileRepeatgroup by id having COUNT(*)>2 )

 

select  id ,COUNT(id)次数 fromFileRepeat where id in (select id from FileRepeat group by id havingCOUNT(*)>2 ) group by id

 

--查询重复数据,仅仅展示出来

select top 3 id ,COUNT(id)次数 fromFileRepeat where id in (select id from FileRepeat group by id havingCOUNT(*)>2 ) group by id order by COUNT(id) desc

 

2、  有一个四位数a1 a2a3 a4,每一位数都是0到9之间的一个数字,要求这四位数满足下面两个条件:(1)a1+a2+a3+a4=20;a1<a2<a3<a4,请找出所有这些数

            for (int i = 1200; i < 9999;i++)

            {

                a1 = i / 1000;

                a2 = (i %1000) / 100;

                a3 = (i %1000) % 100 / 10;

                a4 = i % 10;

                if (((a3 + a2+ a1 + a4) == 20) && a1 < a2 && a2 < a3 && a3< a4)

                //if (((a3 +a2 + a1 + a4) == 20))

                {

                   Console.WriteLine(i);

                }

            }

(2)如果a1+a2+a3+a4=m;这个是你你必须要优化i的取值范围(大家自己找方法吧)

 


 未完

猜你喜欢

转载自blog.csdn.net/qwasdf_123/article/details/49431159
今日推荐