通常C#面试题

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 );

    }

}

简单的说就是从根节点开始遍历找子节点,在从找到的子节点找它的子节点,一层层下去

时间: 2024-12-24 01:40:51

通常C#面试题的相关文章

一个面试题引发的血案

  今天去奥博的天(objectival)面试遇到了这样的 一道的机试题       题干大致如下:              有关税率的问题: 一般的商品要交的消费税,单除了 医药,书籍,食品之外 不交税,他的税率是10%, 还有的就是 进口税 ,进口税 税率是5%,  .              测试用例通过xml来存放数据,             要求 本面试题完全使用了面向对象的方式来实现. 来计算商品的税收,并且商品税收是进行舍入0.05的操作,如13.14舍入是13.15, 60

一些面试题,整理自网络,就不一一帖原址了

腾讯面试题:tcp三次握手的过程,accept发生在三次握手哪个阶段? 答accept发生在三次握手之后. 第一次握手:客户端发送syn包(syn=j)到服务器. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k). 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1). 三次握手完成后,客户端和服务器就建立了tcp连接.这时可以调用accept函数获得此连接.   const的含义及实现机制,比

教你如何迅速秒杀掉:99%的海量数据处理面试题

作者:July 出处:结构之法算法之道blog   前言    一般而言,标题含有"秒杀","99%","史上最全/最强"等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结.     毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问题.最后,

[经典面试题][谷歌]一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素

题目 一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间. 思路一 寻找重复元素,很容易想到建立哈希表来完成,遍历一遍数组就可以将每个元素映射到哈希表中.如果哈希表中已经存在这个元素则说明这就是个重复元素.这种方法可以很方便的在O(n)时间内完成对重复元素的查找.可是题目要求在O(1)的空间.因此采用哈希表这种解法肯定在空间复杂度上是不符合要求的.题目中数组中所以数字都在[0, n-1]区间范围内,因此哈希表的大小为n

[经典面试题]在O(1)时间删除链表结点

[题目] 给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下: struct ListNode {     int        value;     struct ListNode*  next; }; 函数的声明如下: void DeleteNode(ListNode* head,ListNode* node); [思路] 这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,更重要的是,还能考察我们对时间复杂度的理解. 在链表中

sql-进行遇到的一个SQL 面试题

问题描述 进行遇到的一个SQL 面试题 我现在有两张表 一个用户表:user (id name age) 一个产品表:product(id name)现在有一个需求 用户可以对产品添加任何属性: 如用户想添加产品的来源地 然后用户能够查询到该属性和原有的属性其他用户不能查到添加的属性; 请问这个表要怎么设计 可以添加任何字段和表结构; 解决方案 可以给表增加如下字段1,版本 :可以查询以前内容2,属性名称 :可以增加任意属性3,属性内容:3,用户权限:只限某个用户查询 解决方案二: 产品表:pr

[经典面试题]将字符串里的小写字母转换成大写的。 要求不通过比较

[题目] 将字符串里的小写字母转换成大写的. 要求不通过比较 --------腾讯校招 [思路] a~z的ascii码:97~122 也就是:1100001~1111010 A~Z的ascii码:65~90 也就是: 1000001~1011010 通过判断从低位数第五位是否是0,1而得到是小写字母还是大写字母 [代码] /********************************* * 日期:2014-11-21 * 作者:SJF0115 * 题目: 将字符串里的小写字母转换成大写的.

c++-一道C++面试题,不知道怎么考虑

问题描述 一道C++面试题,不知道怎么考虑 昨天去面试,有道题目不知道怎么考虑,哪位帮忙看下,指点一二? 一个超市有5个收银台,营业时间早8点晚8点,闲余时间是12:30-13:30,此时客人不用排队可以直接结账:繁忙时间16:30-19:00,此时每个收银台都是排满人的,假设买个队伍最多10人:求计算当天某个客人出现在2号收银台队伍里的第3个位置上的概率,写出过程和结果. 解决方案 12:30-13:30 结账 队伍0人 这时不可能出现在队伍第3人 概率为0 16:30-19:00 结账队伍1

【试练】某公司面试试题

该公司笔试题就1个,要求在10分钟内作完. 题目如下:用1.2.2.3.4.5这六个数字,写一个main函数,打印出所有不同的排列, 如:512234.412325等,要求:"4"不能在第三位,"3"与"5"不能相连.请问这题怎么做呢?     以前学过全排列的实现方法,但是记不太清,因为数据比较少,我用递归解决了: 答案组合很多,就不一一贴出了     代码: #include<stdio.h> #include<string

百度面试题

百度面试题,仅提供一些参考.   1 完成函数 size_t foo(unsigned int *a1, size_t al1, unsigned int* a2, size_t al2) 其中a1和a2都为无符号数组,al1和al2为数组的长度,数组的长度为偶数. 无符号数组由一对数字区间组成. 如下例: a1 为 0,1,3,6,10,20 a2 为 0,1,20,50,4,5 则 a1表示以下区间[0,1] [3,6] [10,20] a2表示以下区间[0,1] [20,50] [4,5]