1、在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。 回答要点:说明详细的空间分配。(10分) 答:string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间. 2、请详述在dotnet中类(class)与结构(struct)的异同:(10分) 答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. 3、根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:(10) namespace test { public delegate void OnDBOperate(); public class UserControlBase : System.Windows.Forms.UserControl { public event OnDBOperate OnNew; privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e) { if(e.Button.Equals(BtnNew)) { //请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。 } } } 答:if( OnNew != null ) OnNew( this, e ); 4、分析以下代码,完成填空(10分) string strTmp = "abcdefg某某某"; int i= System.Text.Encoding.Default.GetBytes(strTmp).Length; 
int j= strTmp.Length; 以上代码执行完后,i= j= 答:i=13,j=10 5、SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。(10) 答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1) 6、根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。(10分) public void test(int i) { lock(this) { if (i>10) { i--; test(i); } } } 答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生) 7、分析以下代码。(10) public static void test(string ConnectString) { System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.ConnectionString = ConnectString; try { conn.Open(); ……. }catch(Exception Ex) { MessageBox.Show(Ex.ToString()); }finally { if (!conn.State.Equals(ConnectionState.Closed)) conn.Close(); } 请问 1)以上代码可以正确使用连接池吗? 答:回答:如果传入的connectionString是一模一样的话,可以正确使用连接池。不过一模一样的意思是,连字符的空格数,顺序完全一致。 2)以上代码所使用的异常处理方法,是否所有在test方法内的异常都可以被捕捉并显示出来? 答:只可以捕捉数据库连接中的异常吧. (finally中,catch中,如果有别的可能引发异常的操作,也应该用try,catch。所以理论上并非所有异常都会被捕捉。) 8、简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。(10) 答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。 9、公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路:(10) 答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中 10、给定以下XML文件,完成算法流程图。(10) <FileSystem> < DriverC > <Dir DirName=”MSDOS622”> <File FileName =” Command.com” ></File> </Dir> <File FileName =”MSDOS.SYS” ></File> <File FileName =” IO.SYS” ></File> </DriverC> </FileSystem> 请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。 答: void FindFile( Directory d ) { FileOrFolders = d.GetFileOrFolders(); foreach( FileOrFolder fof in FileOrFolders ) { if( fof is File ) You Found a file; else if ( fof is Directory ) FindFile( fof ); } } 简单的说就是从根节点开始遍历

解决方案 »

  1.   

    雅虎公司的c#面试题(面试题只有此部分属于C#面试题)
    Question 31. (单选)
    根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?
    public void test(int i) 

    lock(this) 

    if (i>10) 

    i--; 
    test(i); 


    }
    1. 会锁死
    2. 不会锁死Question 32. (单选)
    以下描述错误的是()
    1. 在C++中支持抽象类而在C#中不支持抽象类。
    2. C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
    3. 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
    4. 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
    Question 33. (单选)
    int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是()。
    1. 9
    2. 2
    3. 6
    4. 越界Question 34. (单选)
    在C#中利用Socket进行网络通信编程的一般步骤是:建立Socket侦听、( )、利用Socket接收和发送数据。
    1. 建立Socket连接
    2. 获得端口号;
    3. 获得IP地址;
    4. 获得主机名;Question 35. (单选)
    如果设treeView1=new TreeView(),TreeNode node=new TreeNode("根结点" ),则treeView1.Nodes.Add(node)返回的是一个 ()类型的值。
    1. TreeNode;
    2. int;
    3. string;
    4. TreeView;Question 36. (单选)
    声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是
    1. void myCallBack(int x)
    2. int receive(int num)
    3. string receive(int x)
    4. 不确定的Question 37. (单选)
    关于ASP.NET中的代码隐藏文件的描述正确的是
    1. Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件
    2. 项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件
    3. 项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件
    4. 以上都不正确Question 38. (单选)
    What compiler switch creates an xml file from the xml comments in the files in an assembly?
    1. /text
    2. /doc
    3. /xml
    4. /helpQuestion 39. (单选)
    下面的代码实现了设计模式中的什么模式
    public class A {
    private A instance;
    private A() {
    }
    public static A Instance {
    get
    {
    if ( A == null )
    A = new A();
    return instance;
    }
    }
    }
    1. Factory
    2. Abstract Factory
    3. Singleton
    4. BuilderQuestion 40. (单选)
    class Class1
    {
    public static int Count = 0;
    static Class1()
    {
    Count++;
    }
    public Class1()
    {
    Count++;
    }
    }
    Class1 o1 = new Class1();
    Class1 o2 = new Class1();
    请问,Class1.Count的值是多少?( )
    1. 1
    2. 2
    3. 3
    4. 4Question 41. (单选)
    abstract class BaseClass
    {
    public virtual void MethodA()
    {
    Console.WriteLine("BaseClass");
    }
    public virtual void MethodB()
    {
    }
    }
    class Class1: BaseClass
    {
    public void MethodA()
    {
    Console.WriteLine("Class1");
    }
    public override void MethodB()
    {
    }
    }
    class Class2: Class1
    {
    new public void MethodB()
    {
    }
    }
    class MainClass
    {
    public static void Main(string[] args)
    {
    Class2 o = new Class2();
    o.MethodA(); 
    }
    }
    请问,此程序输出结果是:
    1. BaseClass
    2. BassClass Class1
    3. Class1
    4. Class1 BassClassQuestion 42. (单选)
    public static void Main(string[] args)
    {
    int i = 2000;
    object o = i;
    i = 2001;
    int j =(int) o;
    Console.WriteLine("i={0},o={1}, j={2}",i,o,j);
    }
    1. i=2001,o=2000,j=2000
    2. i=2001,o=2001,,j=2001
    3. i=2000,o=2001,,j=2000
    4. i=2001,o=2000,j=2001Question 43. (多选)
    您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)
    1. 在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。
    2. 在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。
    3. 在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。
    4. 在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。Question 44. (单选)
    如下程序的运行结果是:public abstract class A 

    public A() 

    Console.WriteLine('A'); 

    public virtual void Fun() 

    Console.WriteLine("A.Fun()"); 

    }
    public class B: A 

    public B() 

    Console.WriteLine('B'); 
    }
    public new void Fun() 

    Console.WriteLine("B.Fun()"); 
    }
    public static void Main() 

    A a = new B(); 
    a.Fun(); 

    }
    1. A B A.Fun() 
    2. A B B.Fun()
    3. B A A.Fun()
    4. B A B.Fun()Question 45. (单选)
    Which of these string definitions will prevent escaping on
    backslashes in C#?*
    1. string s = #”n Test string”;
    2. string s = “’n Test string”;
    3. string s = @”n Test string”;
    4. string s = “n Test string”;Question 46. (单选)
    Which of the following operations can you NOT perform on an ADO.NET DataSet?
    1. A DataSet can be synchronised with a RecordSet.
    2. A DataSet can be synchronised with the database.
    3. A DataSet can be converted to XML.
    4. You can infer the schema from a DataSetQuestion 47. (单选)
    In Object oriented Programming, how would you describe encapsulation?
    1. The conversion of one type of object to another.
    2. The runtime resolution of method calls.
    3. The exposition of data.
    4. The separation of interface and implementation.Question 48. (单选)
    How does assembly versioning in .NET prevent DLL Hell?
    1. The runtime checks to see that only one version of an assembly is on the machine at any one time.
    2. .NET allows assemblies to specify the name AND the version of any assemblies they need to run.
    3. The compiler offers compile time checking for backward compatibility.
    4. It doesn’t.Question 49. (单选)
    三种常用的字符串判空串方法:
    1: bool isEmpty = (str.Length == 0); 
    2: bool isEmpty = (str == String.Empty); 
    3: bool isEmpty = (str == "");
    哪种方法最快?
    1. 1
    2. 2
    3. 3Question 50. (单选)
    public sealed class SampleSingleton1
    {
    private int m_Counter = 0;
    private SampleSingleton1()
    {
    Console.WriteLine(""初始化SampleSingleton1。"");
    }
    public static readonly SampleSingleton1 Singleton = new SampleSingleton1();
    public void Counter()
    {
    m_Counter ++;
    }
    }
    以上代码实现了设计模式中的哪种模式?
    1. 原型
    2. 抽象工厂
    3. 单键
    4. 生成器
    下边是微软软件开发培训讲师李建忠老师对C#编程语言进行的几个层次划分。
    不妨对照,你的C#开发水平介于下边C#语言的哪几个层次。
    C#语言的几个层次
    不谈具体领域(比如搜索,视频,网络等),单就C#编程语言这个垂直方向,我大体上对它有一个如下的层次划分。1. 基本运用C#语法,在各种工具和示例代码的支持下,完成一些基本程序任务2. 熟练掌握面向对象与组件构造,知其然亦知其所以然,完成一般小规模信息管理类软件项目开发任务3. 深入理解CLR内核机制,对各种类型与.NET平台机制的优缺点、适用场合、效率有清晰把握,能够完成技术复杂度比较高的项目。4. 能够游刃有余把握松耦合原则,精准运用各种语言构造,架构大型软件项目。5. 能够站在计算机抽象、系统和历史发展的高度来理解和把握编程语言我判断你现在大致介于2-3之间的位置,当然在这些方向上的成长,有些部分是培训能够大幅度帮助大家的,有些部分培训只能起辅助作用,经验和对技术的追求态度才更为重要……说实话,编程语言本来不该这么重要,但是现在接近两年的培训经验下来,接触的培训学员林林总总,从最底端几乎没有什么编程经验的,到高端的在企业担任关键开发任务的。发现在中国,编程语言事实上是大多数开发人员的硬伤,大部分程序员介于1-2之间——原因就不多说了,中国大学的计算机教育只有在一个人彻底理解了计算机之后才会深刻体认到它是多么的荒谬和失败。