1.解释性语言与编译性语言:
asp为解释性语言,边解释边执行(由jscript活vbscript解释成中间语言之后再执行),asp.net为编译性语言,直接编译成机器码执行。
2.四种参数形式的区别:
传值参数:也就是普通参数,不改变变量的内存地址
引用参数:ref,显示定义参数,调用之前必须初始化,改变内存地址
输出参数:out,显示定义参数,调用之前只需声明,不必初始化,改变内存地址,可返回多个返回值
数组参数:params,显示定义参数,调用时可以直接赋值与参数而不必声明数组。
3.ado与ado.net
ado基于ole db接口和com
ado.net基于asp.net接口和.net体系
优势在于,离线连接数据库断开connection之后仍然可以保留数据集
强类型转换
xml支持
不再支持动态游标
不依赖com
4.new
创建对象或者调用构造函数
隐藏基类成员的继承成员
约束泛型中的参数类型
5.string str=null 和 string str=""
null是没有,没有分配内存空间
""是空,一个空的字符串
6.datagrid的datasource能够连接哪些数据源
datatable
dataview
dataset
dataviewmanage
任何实现IListSource接口的组件
任何实现IList接口的组件
7.反射与序列化
反射:解析出一个程序集(对象等)的所有信息
序列化:把对象转化为其他格式输出(如文本转化为xml),恢复对象格式则用反序列化
8.访问权限修饰符
public:可以跨类跨程序集访问
protected:只有派生类能访问基类中以protected声明的成员
interal:同一个程序集才可以访问,而且只能访问类,不能访问类成员
private:只能在同一个类的里面访问,如果不同类中想调用此类private成员的话,需要开放public方法才行。
9.密封类修饰符sealed
修饰之后此类不能派生类。
10.ado.net的主要对象
connection
command
dataadapt
datareader
dataset
trans
11.struct与class的异同
同:都是可以实现接口的,成员的类型相同。
异:struct是值类型的,值存储在堆栈或“内联”内的,不可以被继承的。没有构造,析构函数,没有protected,sealed,abtract,不初始化实例,不用new。
class是引用类型的,值存储在堆里面,其他的与上面相反。
12.remoting与webservice
remoting可以传变量的引用,效率高,但要求客户端和服务器都必须是.net环境,可以自定义协议传输,用于远程调用
webservice必须传变量的值,效率低,但可以跨平台,必须要用soap协议传输,用于消息传输的
13.三层架构
用户表现层(UI):用户界面显示
业务逻辑层(BLL):具体问题的操作和解决,业务逻辑的处理
数据业务层(DAL):数据的访问,包括insert,update,delete,select等。
优点:实现高内聚,低耦合
因为是向下依赖的,上层的改变不会影响到下层,所以程序员只需关心就该层就行了。
有利于标准化
实现代码的复用
缺点:降低性能,很多可以直接操作的业务需要通过中间层了操作。
增加了代码量。
14.三层架构与MVC异同
同:都有表现层
异:“三层”没有明确定义control,其modle是指业务逻辑层和数据访问层。
15.xml的技术及应用
保存配置
站与站之间交流
webservice
16.委托
委托可以把方法作为参数传递
相当于指针
用于定义回调函数
17.soap
简单对象访问协议,基于xml,用于分布式系统环境中交换信息和远程调用的协议。
18.sleep()和waite()
sleep()是延时后能自动恢复运行
waite()延时后必须有notify()唤醒才能运行
19.静态和非静态
1.定义不同,静态是类定义,非静态是对象定义,所以定义要先于非静态,且静态类里面只能定义静态变量和方法,但非静 态类可以定义静态方法和变量。
2.内存分配方式不同,静态时只占一份内存,页面运行时只加载一次,而非静态的类每次创建实例化对象都要增加一份内存,每次运行都要加载。
3.生命周期不同,静态是类的生命周期,且自己不能释放,所以要慎用。
4.什么时候使用静态,当其使用频率高,改动少的时候可以使用静态(如连接数据库时)。
20.seo理解
seo是搜索引擎优化,分为站内seo,站外seo,白帽seo和黑帽seo
seo优化公式:SEO=∫Clock=∫C1+L2+K3+O4
c是content:丰富的,吸引用户的文章等,非桥页。
l是链接:反向链接(站外seo,从其他网站中提供的链接),合作网站等有丰富的链接,和内容有较好的匹配性,链接到好的站点。
K是关键词:title,description,keywords.密度合理。不能堆砌,隐藏。
体验公式:SEO=用户体验+蜘蛛体验
21.值类型与引用类型的内存分配:
值类型的内存分配,分配在栈()中的变量之中,可以随意复制和替代,假如是两个变量的话,这两个变量运算结束之后就无关系了。
引用类型,对象在栈中是以地址的形式存储的,实例化对象之后,实例放于堆中,指针从栈中指向堆中。赋值的操作,入x=y的假设x已经实例化,那么x复制了一个地址给y,并指向同一个实例。
22.数据库连接字符串的理解
sa登录:constr="server=(local);database=northwild;uid=sa;pwd=sa"
windows登录:constr="server=(local);database=northwild;integrated security=sspi;persist security=false;connect timeout=300"
integrated security=sspi/true 或者 trusted_connection=false 表示使用windows登录;
persist security=false表示不保存密码信息;
23.装箱和拆箱
装箱:值类型转化为引用类型或者值类型所实现的任何接口的隐式转化。系统资源消耗大,因为要多要分配实例及指针。
拆箱:引用类型转化为值类型或从接口类型到值类型的显示转化。系统资源消耗较小,因为它只是返回实例指向的内存地址。
24.CLR(公共语言运行时)
负责内存分配和垃圾收集,受其监视的代码成为托管代码,反之则为非托管代码。
25.堆和栈(堆栈指的是栈):
栈是系统提供的功能,特点是快速高效,缺点是有限制,数据不灵活;而堆是函数库提供的功能,特点是灵活方便,数据适应面广泛,但是效率有一定降低。
栈是系统数据结构,对于进程/线程是唯一的;堆是函数库内部数据结构,不一定唯一,不同堆分配的内存无法互相操作。
栈空间分静态分配和动态分配两种。静态分配是编译器完成的,比如自动变量(auto)的分配。动态分配由alloc函数完成。栈的动态分配无需释放 (是自动的),也就没有释放函数。为可移植的程序起见,栈的动态分配操作是不被鼓励的!堆空间的分配总是动态的,虽然程序结束时所有的数据空间都会被释放 回系统,但是精确的申请内存/释放内存匹配是良好程序的基本要素。
26.lambda表达式的理解:
“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。
所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda 表达式 x => x * x 读作“x goes to x times x”。可以将此表达式分配给委托类型,如下所示:
delegate int del(int i);
del myDelegate = x => x * x;
int j = myDelegate(5); //j = 25
创建表达式目录树类型:
using System.Linq.Expressions;
// ...
Expression<del> = x => x * x;
=> 运算符具有与赋值运算符 (=) 相同的优先级,并且是右结合运算符。
Lambda 用在基于方法的 LINQ 查询中,作为诸如 Where 和 Where 等标准查询运算符方法的参数。
27.委托的理解:
相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法
用delegate定义
28.聚集索引和非聚集索引的区别和使用
聚集索引是物理索引,查询速度快,修改速度慢,适用于返回的结果集多,列中不同值少,返回一个区间的值
非聚集索引是逻辑索引,适用与上面相反加上order by 使用了该列。
29.OS的两种调度策略
1.抢先式调度策略:中断当前作业,把cpu交给其他作业
2.非抢先式策略
30.进程的四种调用方式
1.消息传递
2.同步
3.共享内存区域
3.过程调用
31.asp.net的运行机制
当一个请求从浏览器发出,到达服务器端,IIS收到该请求。IIS根据所请求资源的扩展名,将该请求转交给相应的ISAPI扩展程序来处理。那扩展名为.aspx的请求是怎么样的呢?同样也是由相应的ISAPI处理该请求,也就是aspnet_isapi.dll,但这只是第一站,aspnet_isapi 还要将该请求转交给ASP.NET来处理.
IIS运行在一个InetInfo.exe的进程中,IIS收到扩展名为.aspx请求后,加载ASP.NET ISAPI---"aspnet_isapi.dll",ASP.NET ISAPI 会启动一个名为"aspnet_wp.exe"的工作进程,“aspnet_wp.exe”启动时会加载CLR、创建appDomain,在创建对appDomain时会实例化一个名为ISAPIRuntime类,ISAPIRuntime是Asp.net与asp.net ISAPI通信的桥梁。IIS与ASP.NET ISAPI都是非托管程序,而ASP.NET HttpRuntime则是一个托管程序,ASP.NET ISAPI 通过COM的方式与ASP.NET Http Runtime基于命名管道通信。ISAPIRuntime是一个特殊的类,它实现接口IISAPIRuntime,该接口基于COM。所以说非托管程序可以以COM的方式访问。
ASP.NET ISAPI 调用 ISAPIRumtime ProcessRequest 方法的,这时就到了托管环境的天下,到ASP.NET发挥的时候了,个个“洗刷”工具开始启动。
ISAPIRuntime将处理权转交给HttpRumtime的ProcessRequestInternal方法
32.Ajax的运行机制
1.使用CSS和XHTML来表示。
2. 使用DOM模型来交互和动态显示。
3.使用XMLHttpRequest来和服务器进行异步通信。
4.使用javascript来绑定和调用。