zoukankan      html  css  js  c++  java
  • C#面试题

    问题(21):C#是一门托管语言,那么是不是说明只要用C#,就能保证不会出现内存泄露和其他资源泄漏?如果不是,在哪些情况下可能会出现泄漏?

    答案:C#不能保证没有资源泄漏。比如如下几种情况可能会造成资源泄漏:(1) 调用Nativecode,比如用P/Invoke或者调用COM;(2) 读写文件时的,没有及时closestream, 或者ADO.NET连数据库时,没有及时关闭连接,也算资源泄漏?(3)注册事件后没有remove,导致publisher和subscriber的强依 赖,垃圾回收可能会被推迟;(4).NET还定义了一些方法直接申请非托管内存,比如Marshal.AllocHGlobal和Marshal.AllocCoTaskMem。通过这种方式得到的内存,如果没有及时释放,也会造成内存泄露。

    问题(22):下面的两段C#有哪些不同?---考察异常捕获

    static void CatchException1()  
    1. {  
    2.     try  
    3.     {  
    4.         Function();  
    5.     }  
    6.     catch  
    7.     {  
    8.         throw;  
    9.     }  
    10. }  
    11.   
    12. static void CatchException2()  
    13. {  
    14.     try  
    15.     {  
    16.         Function();  
    17.     }  
    18.     catch (Exception e)  
    19.     {  
    20.         throw e;  
    21.     }  

    }  

     

    问题(24):运行下面的C#代码,打印出来的结果是什么?----考察数据类型

     
    1. struct Person  
    2. {  
    3.     public string Name;  
    •   
    •     public override string ToString()  
    •     {  
    •         return Name;  
    •     }  
    • }  
    •   
    • class Program  
    • {  
    •     static void Main(string[]args)  
    •     {  
    •         ArrayListarray = new ArrayList();  
    •         Personjim = new Person(){Name = "Jim"};  
    •         array.Add(jim);  
    •   
    •         Personfirst = (Person)array[0];  
    •         first.Name = "Peter";  
    •   
    •         Console.WriteLine(array[0].ToString());  
    •     }  
    • }  

    答案:Person的定义是一个struct,因此是一个值类型。在运行到语句Person first =(Person)array[0]的时候,first是array[0]的一个拷贝,first和array[0]不是一个实例。因此修改first对array[0]没有影响。

    答案:两个函数的catch都是重新抛出截获的exception,但抛出的exception的callstack是不一样的。对于第一种方法,exception的callstack是从最开始的抛出地点开始的。对于第二种方法,exception的callstack是从CatchException2开始的,最初抛出的地方相关的信息被隐藏了。

    网络转载请注明出处http://blog.csdn.net/cadcisdhht

  • 相关阅读:
    android自定义视图
    CISCO PVST+配置和结果验证 per vlan spanning tree(51cto 实验10)
    读入a,b当a,b不同时为零时结束
    跨交换机VLAN 配置和结果验证(51cto :实验9)
    单交换机VLAN 配置和结果验证(51cto-o8)
    cocos2d(1)
    servlet-session
    Servlet-servletContext
    mysql数据库从windows迁移到linux,或者linux迁移到windows教程
    linux (centos) 安装MySql详细教程!!实战详解
  • 原文地址:https://www.cnblogs.com/zhangxiaolin/p/2151998.html
Copyright © 2011-2022 走看看