68说出一些常用的类、接口,请各举5个
要让人家感觉你对.Net开发很熟,所以,不能仅仅只列谁都能想到的那些东西,要多列你在做项目中涉及的那些东西。就写你最近写的那些程序中涉及的那些类。
常用的类:StreamReader、WebClient、Dictionary
常用的接口:IDisposable、IEnumerable、IDbConnection、IComparable、ICollection、IList、IDictionary
要出乎意料!不要仅仅完成任务!
69、BS与CS的联系与区别。
C/S是Client/Server的缩写。客户端需要安装专用的客户端软件。
B/S是Brower/Server的缩写,客户机上只要安装一个浏览器。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。
C/S 与 B/S 区别:
1).硬件环境不同:
C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
2).对安全要求不同
C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.
B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。
3).处理问题不同
C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统。C/S的客户端由于是本地程序,因此和本地硬件、程序的交互性很强,比如可以控制本机的其他程序、可以读写本地磁盘文件、可以与硬件交互。
B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小,正应为如此B/S很难和本地硬件、程序、文件进行交互,比如很难控制本机的其他程序、很难读写本地磁盘文件、很难与硬件交互,当然可以用ActiveX技术解决,比如网银等就是这么解决的,这样做的问题就是可能会被客户拒绝,而且只局限于Windows操作系统。
C/S也分为两层架构和三层架构。两层架构:客户端程序程序直连数据库;三层架构:客户端访问服务端的服务,主要逻辑代码写在服务端的服务中,然后服务端服务再去访问数据库,Oracle版分布式呼叫中心,WCF。
70、编写一个单例(Singleton)类。
参考复习ppt。
把构造函数设置为private,设置一个public、static的对象实例
public FileManager
{
private FileManager(){}
public static FileManager Instance = new FileManager();
}
扩展:搜“C# Singleton”
71、什么是sql注入?如何避免sql注入?
用户根据系统的程序构造非法的参数从而导致程序执行不是程序员期望的恶意SQL语句。使用参数化的SQL就可以避免SQL注入。
详细参考复习ppt。举例子,摆事实!
1′ or 1=1
72、数据库三范式是什么?
第二范式:表必须有主键。
第三范式:表引用其他的表必须通过主键引用。
73、说出一些数据库优化方面的经验?
索引内部原理:想象成Dictionary,插入、删除、更新的速度慢了,加上索引也多占用了空间,查询的速度快了。加上索引以后速度提升非常明显。
(1)在经常检索的字段上(select * from Person where Name=@Name)使用索引提高查询速度。(2)select中只列出必要的字段,而不是*。(3)避免隐式类型转换造成的全表扫描,在索引上使用函数也会造成全表扫描(因为索引只是为字段建立的,一旦使用表达式或者函数,那么索引就是失效了,当然也可以使用“函数索引”、“表达式索引”解决这个问题),使用索引不一定能提高查询速度。(4)避免在索引列上使用计算(where Name+’A’=@MyName)
加分的回答:不进行无意义优化,根据性能查看器的报表,对最耗时的SQL进行优化。
74、什么是数据库事务?
事务三个特性:一致性、原子性、隔离性。
几个SQL语句,要么全部执行成功,要么全部执行失败。举例就用最经典的银行转账的例子就行,然后再举一个项目中用的例子:批量导入客户数据的时候要么全部导入成功,要么全部导入失败。事务的三个操作:Begin、Commit、RollBack。
取刚插入数据的id值,就要用事务来隔离:Insert 和select top 1 id from ….
75、谈谈你对设计模式的理解
世界上本没有模式,用的人多了,也就有了模式。不用刻意记每种模式的名字,手中无模式,心中有模式。
大部分设计模式就是接口、抽象类的一个组合。ADO.Net基于接口编程,SafeDbCommand、SafeConnection。SettingsProvider。没必要记模式的名字。
举例:SettingsProvider、第三方支付的例子。
76、谈谈ViewState。谈谈对ASP.Net原理的理解。谈谈ASP.Net生命周期。
Label、Textbox在禁用ViewState的时候自增的不同表现
Http是无状态的,WebForm为了实现基于http的“有状态”从而简化开发,ViewState用来在两次请求间保持状态。页面返回前将界面的状态序列化到ViewState中,这样就将状态保存在了浏览器中,下次页面提交的时候会顺便再将ViewState提交到服务器,这样服务器就根据ViewState还原了状态,这样WebForm开发就像有状态一样了。谈谈自定义AutoInc控件。
77、post、get的区别
get的参数会显示在浏览器地址栏中,而post的参数不会显示在浏览器地址栏中;
使用post提交的页面在点击【刷新】按钮的时候浏览器一般会提示“是否重新提交”,而get则不会;
用get的页面可以被搜索引擎抓取,而用post的则不可以;
用post可以提交的数据量非常大,而用get可以提交的数据量则非常小(2k),受限于网页地址的长度。
用post可以进行文件的提交,而用get则不可以。
参考阅读:http://www.cnblogs.com/skynet/archive/2010/05/18/1738301.html
78、下面的程序执行结果是什么?
class Person
{
public int Age { get; set; }
}
int i1 = 20;
int i2 = i1;
i1++;
Console.WriteLine(i2);
Person p1 = new Person();
p1.Age = 20;
Person p2 = p1;
p1.Age++;
Console.WriteLine(p2.Age);
答案:
20
21
解释:引用类型和值类型的区别。
79、Http默认的端口号是(80)、Ftp默认的端口号是(21)、SQLServer的默认端口号是(1433)
80、运算符++a表示(先将a加1,然后表达式的值为a加1后的值),i++表示(表达式的值为a,然后a加1)。
81、下面程序的执行结果是什么?
int i = 10;
Console.WriteLine(i++);
Console.WriteLine(++i);
Console.WriteLine(i=20);
答案:
10
12
20
解答:前两个参考第80题,i++表达式的值为i自增之前的值,所以打印10,执行完成后i变成11,执行++i的时候表达式的值为自增以后的值12。C#中赋值表达式的值为变量被赋值的值,因此最后一个就输出i赋值后的值20
while((line=reader.ReadLine())!=null)
{
}
82、如果不用VisualStudio,用哪个命令行编译C#程序?(*)
答:csc.exe。
83、下列哪个名词和WebService不直接相关?(B)
A、UDDI
B、GUID
C、WSDL
D、SOAP
SOAP和HTTP的关系:SOAP基于Http协议的,和普通网页不同的是网页返回HTML,SOAP则是符合SOAP协议的XML数据。



