26、Asp.Net在页面上的传值方式
(1)、使用QueryString, 如....?id=1; response. Redirect()....
(2)、使用Session变量
(3)、使用Server.Transfer
(4)、使Cookie传值
QueryString 传递一个或多个安全性要求不高或是结构简单的数值。但是对于传递数组或对象的话,就不能用这个方法了
session(viewstate) 简单,但易丢失 作用于用户个人,过量的存储会导致服务器内存资源的耗尽。
application 对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock
cookie 简单,但可能不支持,可能被伪造 Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用
input type="hidden" 简单,可能被伪造
url参数简单,显示于地址栏,长度有限
Server.Transfer 把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流
数据库稳定,安全,但性能相对弱
27、什么是Viewstate?它有什么作用?
ViewState用来保存页面状态,就是说提交之后我们还可以看到文本框里面的内容就是ViewState保存的功劳。
ViewState只维护当前页面的状态,不同页面之间不能共享,Session可以。
ViewState你可以理解为一个隐藏控件。
28、ASP.Net页面生命周期
每个页面的生命周期为用户的每一次访问,也就是说每一次客户端与服务器之间的一个往返过程.全局变量的生命周期在此之间.
1. Page_Init();
2. Load ViewState and Postback data;
3. Page_Load();
4. Handle control events;
5. Page_PreRender();
6. Page_Render();
7. Unload event;
8. Dispose method called;
29、ADO.net中常用的对象有哪些?分别描述一下。
Connection 打开数据库连接
Command 执行数据库命令
DataAdapter 连接数据,执行数据库命令,填充DataSet
DataSet 数据在内存中的缓存,数据结构
DataReader 只读向前的读取数据库
30、DataReader和DataSet的异同
DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...
31、.Net读取数据库用到的类:
DataSet:数据集。
DataCommand:执行语句命令。
DataAdapter:数据的集合,用于填充。
DataReader:数据只读器
32、ASP.Net的身份验证方式:
Windows(默认)用IIS控制
From(窗体)用帐户
Passport(密钥)
33、Code-Behind技术:
代码后置
34、&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).
35、<%# %>,<% %>,<%-- --%>区别:
<%# %>表示绑定的数据源,<% %>是服务器端代码块,<%--注释--%>注释
36、在C#中,string str = null 与 string str = " " 请尽量使用文字或图象说明其中的区别。
null:表示不占内存空间, " " 表示分配了一个长度为空字符串的内存空间。
37、GET与POST的区别
在FORM提交的时候,如果不指定Method,则默认为GET请求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;
在使用 POST 方法的情况下,传输数据时不会将数据作为 URL 的一部分;它们会作为一个独立的实体来传输。因此,POST 方法更安全,你也可以用这个方法传输更多的数据。而且用 POST 传输的数据不一定要是文本,用 GET 方法传输的却一定要是文本。
(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为好。
38、分析以下代码,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i,j的值?
i=14,j=10
39、分页
40、冒泡排序
int[] array = { 1, 2, 3, 4, 6, 8, 12, 5,9};//定义一个数组
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;
}
}
}
//输出新数组中的每一个元素的值
foreach (int a in array)
{
Console.WriteLine(a);
}
41、一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第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);
}
42、请将字符串"I am a student"按单词逆序输出 如"student a am I"
string S = "I am a student";
char[] C = new char[] { ' '};
string[] n =S.Split(C);
int length = n.Length;//n的长度;
for (int i =length-1 ; i >=0; i--)
{
Console.Write(n[i]);
if (i != 0)
{
Console.Write(" ");
}
}
C#字符串倒序输出的多种写法:
class Program
{
static void Main(string[] args)
{
string str = Console.ReadLine();
Console.WriteLine(ReverseA(str));
Console.WriteLine(ReverseB(str));
Console.WriteLine(ReverseC(str));
Console.WriteLine(ReverseD(str));
Console.WriteLine(ReverseE(str));
Console.ReadKey();
}
//方法一:
public static string ReverseA(string zfc)
{
char[] cArray = zfc.ToCharArray();
string reverse = String.Empty;
for (int i = cArray.Length - 1; i > -1; i--)
{
reverse += cArray[i];
}
return reverse;
}
//方法二:
public static string ReverseB(string zfc)
{
char[] cArray = zfc.ToCharArray();
Array.Reverse(cArray);//Reverse 翻转整个一位数组的顺序
return new string(cArray);
}
//方法三:Push/Pop Stack<>
public static string ReverseC(string zfc)
{
Stack resultStack = new Stack();//Stack表示对象的后进先出的非泛型集合
foreach (char c in zfc)
{
resultStack.Push(c);
}
StringBuilder sb = new StringBuilder();
while (resultStack.Count > 0)
{
sb.Append(resultStack.Pop());
}
return sb.ToString();
}
//方法四:LINQ
public static string ReverseD(string zfc)
{
return new string(zfc.ToCharArray().Reverse().ToArray());
}
//方法五:StringBuilder
public static string ReverseE(string zfc)
{
char[] cArray = zfc.ToCharArray();
StringBuilder sb = new StringBuilder();
for (int i = cArray.Length - 1; i > -1; i--)
{
sb.Append(cArray[i]);
}
return sb.ToString();
}
}
43、Visual Studio 和.NET Framework的关系
Visual Studio 是微软提供的编程(开发)工具,是一种集成开发环境。
.NET Framwork 是C#编程语言提供的类库,目的是为了方便快捷的开发,也是一些软件所必须安装的系统组件(一些软件只有安装了.NET Framwork 才能正常的安装)。
.NET Framwork 是以一种采用虚拟机运行的编程平台,以通用的语言运行库CLR为基础,支持多种语言(如C#、VB、C++、Python等)的开发。同时.NET也为应用程序开发接口(API)提供了新功能和开发工具。
C#是在.NET平台上使用的一种编程语言。ASP.NET是.NET的一种,ADO.NET又是ASP.NET里边访问数据库的一种技术。
44、WinForm之间的传值方式
45、Session,Cookie
46、foreach 和 for
47、Response, Request
48、单例模式
49、Javascript,Ajax,Json,XML优点缺点
50、配置文件 |