.net 常见面试题

来源:互联网 发布:mmd 软件百科 编辑:程序博客网 时间:2024/06/06 21:42
 


SQL语句是这样select name 姓名,

  max(case subject when '语文' then result else 0 end) 语文,
  max(case subject when '数学' then result else 0 end) 数学,
  max(case subject when '物理' then result else 0 end) 物理
from tb
group by name


SELECT COUNT(*) FruitName AS 水果种类, ProductPlace AS 出产国   FROM

T_TEST_FRUITINFO   GROUP BY ProductPlace

select Member.MName as 姓名,
 语文 =  max(case F.FName when '语文' then score.Score end ),
 英语 =  max(case F.FName when '英语' then score.Score end ),
 历史 =  max(case F.FName when '历史' then score.Score end ),
 数学 =  max(case F.FName when '数学' then score.Score end )
from Member,F,score
where Member.MID = score.MID
and score.FID = F.FID
group by Member.MName

一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。

832040
public static void Main() 

Console.WriteLine(Foo(30)); 

public static int Foo(int i) 

if (i <= 0) 
return 0; 
else if(i > 0 && i <= 2) 
return 1; 
else return Foo(i -1) + Foo(i - 2); 
}


int [] array = new int;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}

 

 

datareader与dataset的区别

 答:DataSet提供一个内存中数据的关系表示形式,一整套包括一些表在内的数据(这些表包含数据、对数据进行排序并约束数据),以及表之间的关系。

DataReader提供一个来自数据库的快速、仅向前、只读数据流。

 

列举ASP.NET 页面之间传递值的几种方式。

答. 1.使用QueryString, 如....?id=1; response. Redirect()....

      2.使用Session变量

      3.使用Server.Transfer

 


}

1.mysql存储过程与普通的sql语句有什么区别
快:存储过程的执行是在服务器上,只需要传递几个简单的参数就可以,减少了网络通讯。所以比起一般程序中写的查询语句来说更快一些
安全:
 存储过程能够实现较快的执行速度

存储过程能够减少网络流量

存储过程可被作为一种安全机制来充分利用


存储过程和sql语句的优缺点

优点: 
1.提高性能,减少网络传输,节约时间 。

2.减少网络流量    存储过程位于服务器上,调用的时候只须传递存储过程的名称以及参数,不用每次访问都传递很长的sql 语句。

4.安全性     减少sql 注入式攻击。

5.可维护性高    更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。


 
2.ADO.NET的数据访问对象是以下几个:

Connection        打开数据库连接 
Command            执行数据库命令 
DataAdapter        连接数据,执行数据库命令,填充DataSet 
DataSet            数据在内存中的缓存,数据结构 
DataReader        只读向前的读取数据库 
DataView对象:用于显示DataSet中的数据

  1、Connection对象:与数据源建立连接,连接sql server7.0 或更新版本数据库用SqlConnection,连接OLEDB数据源使用OledbConnection.
  2、Command 对象:对数据源执行SQL命令并返回结果,SQL Server7.0或更新版本用SqlCommand,OLE DB数据源使用OledbCommand.
  3、DataReader对象: 读取数据源的数据,只能将数据源的数据从头到尾依次读出,Sql server7.0或以上版本使用SqlDataReader,Oledb数据源使用OledbReader 因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..
  4、DataAdapter对象:对数据源执行操作并返回结果,在DataSet与数据源之间建立通信,将数据源中的数据写入DataSet ,或根据DataSet中的数据必定数据源。Sql server7.0或以上版本使用SqlDataAdapter,Oledb 数据源使用OledbAdpater.
  5、DataSet对象:服务器内存中的数据库 DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接
  6、DataView对象:用于显示DataSet中的数据

3.string myconn="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind";
  //需要执行的SQL语句
  string mysql="select OrderID,CustomerID from Orders where CustomerID='CHOPS'";
  //打开数据库连接。
    SqlConnection myconnection=new SqlConnection(myconn);
  myconnection.Open();
    //创建SqlCommand 对象
  SqlCommand mycommand=new(mysql,myconnection);
    //通过SqlCommand的ExecuteReader()方法构造DataReader 对象。
  SqlDataReader myreader=mycommand.ExecuteReader();
  while(myreader.read()){
  Console.WriteLine(myreader.GetInt32(0)+","+myreader.GetString(1));

  }
  myreader.Close();
  myconnection.Close();

  }

  }

  }

1、开发人员可以只关注整个结构中的其中某一层; 
2、可以很容易的用新的实现来替换原有层次的实现; 
3、可以降低层与层之间的依赖; 
4、有利于标准化; 
5、利于各层逻辑的复用
                     
1.使用QueryString, 如....?id=1; response. Redirect().... 
2.使用Session变量 
3.使用Server.Transfer


ViewState只维护当前页面的状态,不同页面之间不能共享,Session可以。

委托与事件的用法 
答:public delegate void handels();//返回值是void,没有参数 
public event handels eventHandels; 
his.eventHandels = new handels(fun); 
public void fun() 
    { }

 string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。


1)get是从服务器上获取数据,post是向服务器传送数据。

(1)在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。

(2)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

(2)GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

(3)安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。


    Eval 单向绑定:数据是只读的 
    Bind 双向绑定:数据可以更改,并返回服务器端,服务器可以处理更改后的数据,如存入数据库. 
  <asp:TextBox ID="First" RunAt="Server" Text='<%# Bind("FirstName") %>' /> 
    例如:<td><%# Eval("ProductID") %></td>

.两个表,写查询语句,根据两个字段一个是升序,一个将序。 
答:select * from a,b where a.字段1 = b.字段1 order by a.字段2 asc,b.字段2 desc

select top 10 * from A where id not in (select top 30 id from A) 

 委托delegate 可序列化 [serializable] 反射 Reflection

Attributes.Add("javascript事件","javascript语句");

this.TextBox1.Attributes.Add("onblur","this.style.display='none'");


重载:就是在一个类中,方法一样,只是需要传入有参数类型不一样。

重写:就是继承某一个接口或类后,把接口或类中的方法重定,就是重新写,可以改变父类中的同一个方法中的内容。一个抽象方法,接口,标记为virtual的方法,你在派生类中去实现,或者改写他的功能,叫重写

重写:     public class C1     {         public virtual string GetName()         {             return "Name";         }     }     public class C2:C1     {         public override string GetName()         {             return "Value";         }     } C1 c1 = new C2(); label1.Text = c1.GetName();  //子类已经重写了父类,输出为子类的值Value  如果没有virtual  和override 修饰结果为:Name 因为子类仅覆盖了父类,父类的GetName方法仍在,这样调用的是父类的GetName方法,这是重写和覆盖的区别。

抽象类和接口?

接口,只能包含功能的定义。抽象类,可以包含功能的定义,但是不能包含实现。

接口支持多继承;抽象类不能实现多继承。

接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。 接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。  接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。 
字符串反向输出
string str = "abcdef";char[] charArray = str.ToCharArray();Array.Reverse(charArray);Response.Write(new string(charArray));
string[] b = {"a","b","c","d","e","f"};
            Array.Reverse(b);            foreach (string a in b)            {                Console.WriteLine(a);            }