面试题(C#基础)

时间:2022-11-13 03:12:54

1>构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

2>string[] ss=Enum.GetNames(typeof(Color));
byte[]   bb=Enum.GetValues(typeof(Color));

3>asp.net服务端缓存
1页面缓存  2数据源缓存  3自定义缓存 后台Cache[""]
缓存依赖:
1文件缓存依赖 的摧毁依赖于文件的改变
2数据库缓存依赖 轮询机制framework检查  通知机制sqlserver通知

1 你在哪里用到过反射,为什么需要用它,举例说明?
服务器软件,访问动态页面的时候,根据路径,推断类名,反射类的对象,调用对象的方法 IHTTPHandler page pageobj as IHTTPHandler 各个动态页面都实现IHTTPHandler接口,就可以动态访问每个动态页面,而不需在程序中写死,用到了多态
动态菜单
实体类与xml转换的时候,PropertyInfo[]获得实体类的类型
  private static List<T> XmlToObjList<T>(string xml, string headtag)
        where T : new()
    {
        List<T> list = new List<T>();
        XmlDocument doc = new XmlDocument();
        PropertyInfo[] propinfos = null;
        doc.LoadXml(xml);
        //XmlNodeList nodelist = doc.SelectNodes(headtag);
        XmlNodeList nodelist = doc.GetElementsByTagName(headtag);
        foreach (XmlNode node in nodelist)
        {
            T entity = new T();
            //初始化propertyinfo
            if (propinfos == null)
            {
                Type objtype = entity.GetType();
                propinfos = objtype.GetProperties();
            }
            //填充entity类的属性
            foreach (PropertyInfo propinfo in propinfos)
            {
                //实体类字段首字母变成小写的
                string name = propinfo.Name.Substring(0, 1) + propinfo.Name.Substring(1, propinfo.Name.Length - 1);
                XmlNode cnode = node.SelectSingleNode(name);
                string v = cnode.InnerText;
                if (v != null)
                    propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);
            }
            list.Add(entity);

}
        return list;
    }

2你知道异常怎么处理么?
public myException(string msg):base(msg){}自定义异常类
catch得时候浪费性能,后面的代码继续执行, new Exception给上层接收,后面的代码不执行

3你知道网页为什么要用base64传输么?
1.加密:加密的目的不是让用户发送非常安全的Email。这种加密方式主要就是“防君子不防小人”。即达到一眼望去完全看不出内容即可。
2.算法的复杂程度和效率:基于1中的目的加密算法的复杂程度和效率也就不能太大和太低。和上一个理由类似,MIME协议等用于发送Email的协议解决的是如何收发Email,而并不是如何安全的收发Email。因此算法的复杂程度要小,效率要高,否则因为发送Email而大量占用资源,路就有点走歪了。
3.网络传输:在网络数据传送过程中,由于历史原因,只被允许传送ASCII字符,即一个8位字节的低7位。因此,如果您发送了一封带有非ASCII字符(即字节的最高位是1)通过有“历史问题”的网关时就可能会出现问题。网关可能会把最高位置为0!很明显,问题就这样产生了!因此,为了能够正常的传送Email,这个问题就必须考虑!

4你知道asp.net页面启动时加载javascript,一级后台调用javascript,前台调用后台代码么?
后台写javascript:
Page.ClientScript.RegisterStartupScript(this.GetType(), "a", "function aa(){<script>alert('!');</script>}", true);
Page.ClientScript.RegisterStartupScript(this.GetType(), "a", "<script>alert('!');</script>", true);
Button1.Attributes["a"] = "aa()";

Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptBlock 之间的区别
RegisterStartupScript 方法是将 JavaScript 嵌入到 ASP.NET 页面的底部,恰好位于关闭元素 </form> 的前面。RegisterClientScriptBlock 方法是将 JavaScript 嵌入到页面中开启元素 <form> 的紧后面

异步线程,后台线程
线程间调用
有几种反射调用方式
服务器控件都生成viewstate么
Jquery声明事件的方式
很多个多线程会带来什么问题,如何解决
多线程间怎么调用
event.traget
bind

多语言 membercach

福田项目的wcf workflow mvc设计模式

OA的在线聊天