技术编程题
1) 请用VB(或者c#)语言来描述一下blowfish的加密解密算法。如果不行,可以用中文+图的形式来说明。如果不了解blowfish算法,请描述一下自己比较熟悉的加密解密算法。
2) 如果你是一位软件架构师,您将如何去搭建一个符合n-tie的架构?并请描述一下您搭建的每一层的作用。(注意:请您考虑项目中有WebService的情况)
3) 请用代码简单描述一下Singleton、抽象工厂、Bridge、Composite(任选三个)的设计模式的概念。
2. web service 数据传输有什么限制? 为什么?DataTable可以作为web service参数传递么?
3. url重写有几种方式?
4. 简述.net中有哪几钟事务?
5. DataReader 和 DataSet 有什么区别?
6. Repeater控件不支持分页功能,简述如何实现它的分页功能?(说说实现思路)
7. 如何实现自定义用户控件(复合控件),自定义事件如何实现?简述委托原理.
8. 同一应用中页面间传值有哪些方式?
9. 强数据类型和弱数据类型有什么区别?
10. 简述fcl中常用到类库,分web表单,数据访问,io操作,网络应用等.
11. 项目分层有什么优缺点? 分层一般采用什么依据?
12. .net中的gc如何理解?
答案来自网友
第三题:
public class Singleton
{
//private static bool instance_flag=false;instance flag 没用了,直接判断instance是否有实例就可以解决这个问题了.
private static Singleton instance;
public string name;
private Singleton()//将singleton函数变为private,防止直接调用new来创建它.
{
name="guqi";
Console.WriteLine("你只可以看到我一次哦");
}
public static Singleton GetInstance()
{
if (instance==null)
{
//instance_flag=true;
instance=new Singleton();
return instance;
}
else return instance;
}
}
public static Singleton GetInstance()
{
if (instance==null)
{
instance=new Singleton();
}
return instance;
}
第二题:
所传输的数据必须是可序列化的。因为需要转换为 XML格式以可以穿越防火墙,做到真正的数据共享.因为 DataSet 处理 DataTable 的序列化以便进行封送处理,所以您也无法传递单个 DataTable。
第三题:
1).通过 HttpContext 类的 RewriteUrl() 方法来执行 URL 重写;
2).通过自定义HTTP Module或 HTTP Handler来重写 URL;
3).借助正则表达式来重写URL:
第四题:
1)本地事务:事务操作一个数据资源,如数据库和消息队列。在物理上表现为位于同一台计算机。分2)2)布式事务:事务跨越多个数据资源,如操作两个服务器上的数据库。
按事务处理方式划分:
1) 手动事务:使用显示指令来控制事务的开始和结束,这种方式可以处理嵌套事务。SqlServer,ADO.Net都提供手动事务处理。
2)自动事务:通过为组件声明事务特性,把组件自动置于事务环境中。使用自动事务不能处理嵌套事务。自动事务的本质是依托于COM+。
第五题:
1)DataReader要保持连接;DataSet可以离线,当取回数据后可断开连接;
2)DataReader只能快速只进读取;DataSet可以顺序逆序读取;
3)DataReader中的数据只读;DataSet数据可以修改;
4)DataReader只能保持一个二维表结构;DataSet中可以含多个二维表,且能包含复杂关系;
第六题:
分页思路:一般采取两种方式。后台分页和前台分页。
后台分页:即在业务逻辑中按照当前请求返回当页数据。
第七题:
自定义事件的实现:
1)、声明事件
如:public delegate void ValueChangedEventHandler(object sender,EventArgs e);
如果使用自定义的事件参数,还需要定义事件参数类。
2). 在引发事件的类SourceClass中定义事件;
public event ValueChangedEventHandler Changed;
3)SourceClass中在需要触发事件的位置,调用事件
private void button1_Click(object sender, System.EventArgs e)
{
if (Changed != null)
{
(Changed (this, e);
}
}
4)、在使用方DestClass关联事件,并处理
//与事件挂钩
this.sourceClassInstance.Changed += new ValueChangedEventHandler (ProcessChanged);
private void ProcessChanged(object sender, EventArgs e)
{
//处理事件
}
第八题:
1)服务端方式:Application,Session,Cache
2)客户端方式:cookie,QueryString,InputHidden,ViewState等.
第九题:
强数据类型是指在在传递时进行严格的类型检查,必须与要求的为完全一致的数据类型;C#属于强数据类型,如不能用1代表true,0代表false赋值给Bool型,编译器会报错.
弱数据类型在传递时不进行严格类型检查,编译器可能会进行隐式数据转换,但可能导致不可预见的异常;
C++属于弱数据类型,可以用1赋值给Bool型,代表true,0代表false.
第十题:
system.web.caching;
system.web.htmlconrols;
system.web.ui.webcontrols;
system.web.configuration;
system.web.util;
system.web.mail;
system.web.security;
system.data;
system.data.sqlclient;
system.xml;
system.collections;
system.collections.specified;
system.net;
system.text.
...
第十一题:
优点:1)易于分工协作;2)易于代码维护;3)易于移植;4)易于重用;5)清晰的架构;6)...
缺点:1)为效率带来影响;
分层的依据:
分层的依据主要是在满足业务需求的基础上,取得上述优缺点之间取得平衡。
不要为了分层而分层。另外分层是逻辑上的,并不一定非要独立为dll。
第十二题:
垃圾回收器。所有通过new产生的资源都由GC来统一进行回收。
当申请资源的时候在一个Heap上进行分配,由DotNet运行时来判断当前资源是否还在使用并决定合适的时机去回收资源。一般情况不需要主动调用GC。