搜房口试

搜房面试

1、不使用数据库,如何通过程序实现快速的排重计算?

2、Union all与union的区别?Truncate与delete的区别?Having如何使用?

      Union all与union的区别

      Truncate与delete的区别

      Having如何使用

3、对于1000万数据量的表来说,对于唯一的ID列创建索引与不创建索引,查询速度有多大区别?

4、Guid的哈希值是否会重复?同一个字符串,在不同的程序和两个不同的服务器中,哈希值是否一样?

        全局唯一标识符,简称GUID,是一种由算法生成的唯一标识。GUID的主要目的是产生完全唯一的数字。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。随机生成两个相同GUID的可能性是非常小的,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。

        哈希算法一样,哈希值应该不一样。

5、对聚集索引和非聚集索引的理解?

      区别与理解

6、

Select * from  test  where name like  ‘a%’;
Select name from  test  where name =  ‘a%’;

    当name上有非聚集索引时上述两种情况的查询差异?

    当name上有聚集索引时上述两种情况的查询差异?

7、sql如何实现查询分页?

8、Sql查询

搜房口试
查询性别男女根据id排序的前两条数据。

解答:

Oracle版:

SELECT * 
FROM 
( 
SELECT ROW_NUMBER() OVER(PARTITION BY sex ORDER BY ID) AS rnk,NAME,sex
FROM testsf 
) 
WHERE rnk<=2

效果如下:

搜房口试

Sql Server版:

select *
from
testsf a
where a.id in(select top 2 id
   from testsf
   where SEX=a.SEX 
   --group by id
   order by id asc)

效果如下:

搜房口试

9、override与重载的区别?

        重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同。这样才能通过传递不同的参数来决定到底调用哪一个。而返回值类型不同是不能构成重载的。
        重写:继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的。例如:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.

理解:
        重载必须发生在一个类中,函数名相同,参数类型或者个数可以不同,返回值类型可以不同。根据参数选择调用方法。重载就是让类以统一的方式处理不同的数据,在同一个类中多个方法可以用同一个名字就叫做方法重载。
        重写override一般用于接口实现和继承类的方法改写,要注意:
                覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
                覆盖的方法的返回值必须和被覆盖的方法的返回一致;
                覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
                被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
                可以说,override是一个非常智能的东西,它可以动态决定究竟是采用父类还是子类的方法。

10、Json与xml两个数据结构的优劣比较?

         知乎争论

11、什么是HTTPS?

          百科解读

12、假如让你做一个分页,需要注意哪些点?

13、生产消费者模式的应用场景?

         生产者消费者模式浅析

14、简述MVC开发的几个主要组成部分及作用?

         MVC框架

         MVC拓展

15、简述cookie、session、application、静态字段的作用域区别?

         参考一

        参考二

16、Webform是如何做身份认证的?

        参考一

17、什么是Sql注入?如何防止?

        sql注入百科

        如何防止参考一

18、对称加密、非对称加密、MD5区别是什么?哪个适合做URL安全验证,如何使用?

        对称加密

        非对称加密

        MD5

19、当使用new b()创建b的实例的时候,产生输出什么?

using system;
class a 
{
	public a()
	{
		test();
	}
	public virtual  void test();
}
class b:a
{
	int x=1;
	int y;
	public b()
	{
		y=-1;
	}
	public override void test()
	{
		console.writeline("x={0},y={1}",x,y);
	}
}

输出:x=1,y=0

小注:

        本人主要做WinForm开发,Web甚少涉及,有不对的或者好的答案,希望大家留下言,谢谢。