1 string str = "abc123中文汉字"; 2 3 int i = System.Text.Encoding.Default.GetBytes(str).Length; 4 5 int j = str.Length; 6 7 Console.WriteLine(i); 8 9 Console.WriteLine(j);
答案:i=14;i=10;html
2.请输出B.test()的输出结果vue
1 class A 2 { 3 int i = 1; 4 public virtual void M1() 5 { 6 Console.WriteLine(" i am A "); 7 } 8 public void M2() 9 { 10 Console.WriteLine(" i ={0} ",i); 11 } 12 } 13 14 class B:A 15 { 16 int i = 2; 17 public override void M1() 18 { 19 Console.WriteLine(" i am B "); 20 } 21 public new void M2() 22 { 23 Console.WriteLine(" i ={0} ", i); 24 } 25 } 26 27 static void Main(string[] args) 28 29 { 30 31 B b = new B(); 32 A a = b; 33 a.M1(); 34 b.M1(); 35 a.M2(); 36 b.M2(); 37 38 }
答案: i am B;node
i am B;web
1;ajax
2;算法
3.有序集合seqList{1,1,2,3,5,8,13,21,34.........}请查找集合中第一个大于2147483647的数。数据库
答案:此函数是有名的斐波那契数。实现此函数的方法为编程
1 //递归写法 2 public int foo(int n) 3 { 4 if(n<2) return 1; 5 else return foo(n-2)+foo(n-1) 6 } 7 8 //循环写法 9 public int[] foo2(int n) 10 { 11 if(n==1) return new int{1}; 12 else if(n==2) return new int{1,1}; 13 else 14 { 15 int rel[]=new rel[n]; 16 rel[0]=1; 17 rel[1]=1; 18 for(int i=2;i<n;i++) 19 { 20 rel[i]=rel[i-2]+rel[i-1]; 21 } 22 } 23 }
查找大于2147483647的数用二分法查找。json
private static int FibonacciSearch(int[] array, int key) { int length = array.Length; int low = 0, high = length - 1, mid, k = 0; mid=(low+high )/2 while(mid<high) { if(array[mid]==key){return mid;break;} else if(array[mid]>key){high=mid;mid=(low+high )/2;} else if(array[mid]<key){low=mid;mid=(low+high )/2;} } }
4.简述如下词在C#语言中的做用c#
volatile:(建立单例模式时会使用,懒汉模式)就像你们更熟悉的const同样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不一样线程访问和修改的变量。若是不加入volatile,基本上会致使这样的结果:要么没法编写多线程程序,要么编译器失去大量优化的机会。做为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.,简单地说就是防止编译器对代码进行优化.好比以下程序:
1
2
3
4
|
XBYTE[2]=0x55;
XBYTE[2]=0x56;
XBYTE[2]=0x57;
XBYTE[2]=0x58;
|
1 //第一种 2 <input id="tea_Name" name="tea.Name" type="text" value="马老师"/> 3 //第二种 4 @Html.TextBox("tea.Name",Model.tea.Name) 5 //第三种 6 @Html.TextBoxFor(m=>m.tea.Name) 7 //第四种 8 @Html.TextEditorFor(m=>m.tea.Name)
6.用一条SQL语句 查询出每门功课都大于80分的学生姓名,表结构以下
姓名 | 课程 | 分数 |
张三 | 语文 | 81 |
张三 | 数学 | 75 |
张三 | 英语 | 82 |
李四 | 语文 | 76 |
李四 | 数学 | 90 |
李四 | 英语 | 82 |
王五 | 语文 | 81 |
王五 | 数学 | 100 |
王五 | 英语 | 92 |
答案一:select 姓名 from 表 where 姓名 not in (select 姓名 from 表 where 分数<=80)
答案二(推荐):select 姓名 from 表 group by 姓名 having min(分数)>80
7.简述Vue中methods、computed以及watch的用法及区别。
1#computed:计算属性将被混入到 Vue 实例中。全部 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例。
2#methods:methods 将被混入到 Vue 实例中。能够直接经过 VM 实例访问这些方法,或者在指令表达式中使用。方法中的 this 自动绑定为 Vue 实例。
3#watch:是一种更通用的方式来观察和响应 Vue 实例上的数据变更。一个对象,键是须要观察的表达式,值是对应回调函数。值也能够是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每个属性。
官方API地址:https://cn.vuejs.org/v2/api/#computed
我的博客:https://blog.csdn.net/smartdt/article/details/75557369
8.现有一个业务系统有4万用户,全部用户天天产生6千万数据,系统要求快速查询60天数据,请给出你的实现方案。
9.描述你曾经或者正在使用的大型项目解决方案。
10.什么时候必须声明一个类为抽象类?
答案:当这个类中包含抽象方法时,或是该类并无彻底实现父类的抽象方法时。
11.MVC框架中,ActionResult,JsonResult,ContentResult哪一个能够return view()?
答案:ActionResult。
12.Aspx页面中,updatepanel的做用是什么?
答案:UpdatePanel控制页面的局部更新。(局部更新控件)、
13.MVC框架中,当使用Get方法访问JsonResult时,可否直接采用如下写法:return json(obj).为何?
答案:不能,要使用 res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;//容许使用GET方式获取,不然用GET获取是会报错。
14.能够采用foreach迭代的类的对象必须知足什么条件?
答案:须要实现IEnumerable接口或声明GetEnumerator方法的类型。注:不必定要实现IEnumerable接口,但必定要实现GetEnumrator方法。
15.在dotnet环境下,如何把数据库数据转换为XML格式输出?
将数据库的内容读取到dataTable或dataSet中,dataTable或dataSet转为xml。
private string ConvertDataTableToXML(DataTable xmlDS) //DataTable可改用dataset { MemoryStream stream = null; XmlTextWriter writer = null; try { stream = new MemoryStream(); writer = new XmlTextWriter(stream, Encoding.Default); xmlDS.WriteXml(writer); int count = (int)stream.Length; byte[] arr = new byte[count]; stream.Seek(0, SeekOrigin.Begin); stream.Read(arr, 0, count); UTF8Encoding utf = new UTF8Encoding(); return utf.GetString(arr).Trim(); } catch { return String.Empty; } finally { if (writer != null) writer.Close(); } }
16.Html页面上,有以下代码<input type="button" name ="btndel" onclick="Del()"/>.如今要求用户点击删除后,弹出删除确认的对话框,并在点击肯定后弹出对话框“”“删除完毕”,用JS如何实现。
答案:
1 function Del() 2 { 3 if(confirm("肯定删除")) 4 alert("删除成功") 5 }
17.请写出一个json的例子。
答案:[{"id":"123","name":"huawei"}]
18.List<Domain1> Alist 中有100个Domain1元素,且每一个Domain1元素都有属性string typStr,如今须要取出AList中全部typeStr="Atype"的元素,并组成新的List,该如何实现。
答案:
1 List<string> BList=new List<string>(); 2 foreach(var a in AList) 3 { 4 if(a.typeStr=="Atype") 5 Blist.add(a.typeStr); 6 }
19.EF框架中,使用DBFirst时数据库中的表A没有主键,可否经过“从数据库更新模型“操做,将表A导入到EF框架中。
答案:不能,表必需要有主键,不然会报错。
savechange()方法返回0,而不是正常的大于0的书。切记设置主键。
返回错误InnerException = {"没法更新 EntitySet“t_Customer”,由于它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操做的 <InsertFunction> 元素。"}。
在发现错误后要吧原有的数据库的表删除,从新更新。若是不删除的话,没法更新,而且要从新生成解决方案。
20.foreach和for循环谁的效率高?switch和if呢?
答案:foreach高,for 循环每次都要进行判断i的大小,foreach 依赖 IEnumerable.第一次 var a in GetList() 时 调用 GetEnumerator 返回第一个对象 并 赋给a,之后每次再执 行 var a in GetList() 的时候 调用 MoveNext.直到循环结束。期间GetList()方法只执行一次.
一样的道理:当有多个判断时,switch更快。
21.WebService基于什么协议?
答案:soap协议,而Soap创建在http上的。
22.WebService和WebAPI 有什么不一样。
一、webservice是基于SOAP协议的,数据格式是XML,webapi遵循的http协议,它的Response能够被而Web API的MediaTypeFormatter转换成Json、XML 或者任何你想转换的格式。
二、webservice它只能部署在IIS上,而webapi能够寄宿在不一样的宿主上(寄宿的本质就是利用一个具体的应用程序为Web Api提供一个运行的环境,并解决请求的接收和响应的回复),如Web Host,Self Host方式
三、webservice 也能够经过ajax访问。
四、webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操做,而且对限制带宽的设备,好比智能手机等支持的很好。
这样对比的话webservice貌似并很差用。可是咱们为何要用它呢,理由以下:
一、很好的跨编程语言和跨操做系统
二、可移植性:传统的WebService只是利用了HTTP通道,进行独立的交互,可是这个交互协议能够移植到其余协议下运做
23.C#是否支持多重继承?
答案:不支持。多重继承指的是一个类能够同时继承多个类,好比A类继承自B类和C类,这就是多重继承。C#只能继承一个类,可是能够继承多个接口。
24.修饰符protected internal 的意思?
internal修饰的b在同一个项目中哪里均可以访问,而在另一个项目中就不能访问,说明“同一程序集”指的是同一个项目;对于protected internal修饰的a在同一项目中哪里均可以访问,而在其它项目中只有在派生类能够访问,因此protected internal 修饰的成员变量是同一程序集或者派生类能够访问,也就是protected跟internal的并集,而不是交集。(被protected internal修饰的属性/方法只能在它的在同一个程序集(Assembly)中的子类被访问)查资料找到了两种说法,不知道哪一种是对的,我的觉得是第一种是对的。
25.bs架构下,能否声明一个静态的数据库链接对象,全部的业务类都引用该静态链接对象去访问数据库?
答案:一个静态的Sqlconnection来管理项目内全部的数据库链接在绝大部分场景是不合理的
(没说绝对不可行,在winform单线程项目中,这样作是没有问题的,由于操做者是一个用户,每一个用户都有一份程序副本)
若是是多个用户提交的请求是
同一个AppDomain中的函数,方法(这种说话不严谨,不过我暂时找不到更好的表达方式)
来处理时.都是用同一个静态的Sqlconnection对象是不行的.
会引发并发问题,会引发相互干扰.还须要加锁lock才能操做.
26.C#提供了一个默认的无参数构造函数,当我实现了另一个有一个参数的构造函数的时候,还想保留这个无参数的构造函数。这样我应该写几个构造函数?
答案:两个。
27.可以阻止某一个类被其余类继承么?可以实现容许某个类被继承,但不容许其中某个方法被覆写吗?
答案:(1)当对一个类应用 sealed 修饰符时,此修饰符会阻止其余类从该类继承,(2)能够,标记这个类为public,并标记这个方法为sealed.
28.什么是强类型?C#是强类型吗,JS呢?
答案:强类型指的是程序中表达的任何对象所从属的类型都必须能在编译时刻肯定。常见的强类型语言有C++、Java、Apex和Python等,C#是强类型,JS不是。
29.金额等精确的数值声明为何类型?
答案:float,double,decimal
30.读写数据库都须要哪些对象,简要说明其做用。
答案一、 Connection:与数据源创建链接。
二、 Command:对数据源执行SQL命令并返回结果。
三、 DataReader:读取数据源的数据,只容许对将数据源以只读、顺向的方式查看其中所存储的数据。其经常使用于检索大量数据,DataReader对象仍是一种很是节省资源的数据对象。
四、 DataAdapter:对数据源执行操做并返回结果,在DataSet与数据源之间创建通讯,将数据源中的数据写入DataSet中,或根据DataSet中的数据绑定数据源。
五、 DataSet:内存中的数据库,是数据表的集合,它能够包含任意多个数据表。
31.经过程序控制GC的强制回收是否能够提升效率?
答案:我的觉得是能够的(在网上没找到答案),GC是循环遍历全部资源的,若是你已经强制回收了,那么遍历的就会少,从而提升效率。
32.int?和int的区别。
答案:int?为可空类型,能够是null,他是经过把int装箱为引用类型实现的。
33.求数列(1,1,2,3,5,8,13。。。。)的和。
答案:见第三题的循环写法,定义一个变量为sum,sum+=arr[I]
34.BS架构下,在session中存储了一个datatable的对象y,y在何时会被GC回收?这种存储数据的方式是否合理?若是Application增长了对y的引用,何时会被GC回收?
答案:在session的生命周期结束以后回收,不合理,每一个session储存在服务器端的内存里,每一个用户都会有一个独立的session,若是session的内容过于复杂,当大量的用户访问的时候会致使内存溢出。Application是全部用户共有的,因此应该不会被回收(我的理解)。
35.string和stringbuilder的区别。
答案:System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法
36.举例写一个单例模式
1 public class Singleton 2 { 3 private static Singleton _Singleton = null; 4 private static object Singleton_Lock = new object(); 5 public static Singleton CreateInstance() 6 { 7 if (_Singleton == null) //双if +lock 8 { 9 lock (Singleton_Lock) 10 { 11 Console.WriteLine("路过。"); 12 if (_Singleton == null) 13 { 14 Console.WriteLine("被建立。"); 15 _Singleton = new Singleton(); 16 } 17 } 18 } 19 return _Singleton; 20 } 21 }
37.描述一下virtual、sealed、override和abstract的区别。
答案:
virtual申明虚方法的关键字,说明该方法能够被重写
sealed说明该类不可被继承
override重写基类的方法
abstract申明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。
38.List<int> listNumber,其中存储了从1到100的数字,现须要将ListNumber按照形如“1,2,3,4.。。”输出,请写出相应的代码。
1 foreach(var a in listNumber.sort()) 2 { 3 Console.WriteLine(a); 4 }
39.int,string,hashtable,datetime,datatable中哪些是引用类型?
答案:string,hashtable,datatable
40.一棵二叉查找树(Binary Seach Tree)具备如下特色,树中的任一节点,若是左子树不为空,则左子树的全部节点的值都小于该节点的值,若是右子树不为空,那么右子树全部节点的值都大于该节点的值;任一个节点的左右子树都是二叉查找树,示意图以下
假设二叉查找树的节点定义以下:
1 Class BSTreeNode{ 2 int value; 3 BSTreeNode leftChild; 4 BSTreeNode rightChild; 5 }
要实现一个方法printRang:按从小到大的顺序输出范围在【min,max】之间的全部值。请写出你认为最高效的代码。
1 void printRang(BSTreeNode btsnode,int min,int max) 2 { 3 //中序遍历,大于min的输出,小于max的不输出 5 //循环这里使用栈辅助进行遍历 6 System.Collections.Generic.Stack<Tree> stack = new System.Collections.Generic.Stack<Tree>(); 7 while(btsnode != null || stack.Any()) 8 { 9 if(btsnode.value>max)break; 10 else if (btsnode != null) 11 { 12 stack.Push(btsnode); 13 btsnode = btsnode.Left; 14 } 15 else 16 { 17 var item = stack.Pop(); 18 if(item.Value>=min&&item.Value<=max) 19 Console.WriteLine(item.Value); 20 btsnode = item.Right; 21 } 23 } 24 }
41.请写出一段在多线程运行时有可能产生死锁(不须要必定产生)的代码。
1 int string a="aaaa",b="bbbb"; 2 public void Seta(){ 3 lock(b) 4 { 5 a="bbbb"; 6 } 7 } 8 public void Setb(){ 9 lock(a) 10 { 11 b="aaaa"; 12 } 13 } 14 15 Thread t = new Thread(Seta); 16 Thread.Sleep(5000); 17 t.Start(); 18 Thread t2 = new Thread(Setb); 19 Thread.Sleep(5000); 20 t2.Start();
42.假设你的编程语言提供这样的异步机制,把一个任务放在一个线程池中执行,当前线程继续执行,直到调用这个任务取返回值的方法时才阻塞并等待任务完成拿到返回值。
如今有这样一个场景,收到一个客户端的订单请求要检查商品的库存可否知足,查询该客户按照当前的价格策略可否享受订单的折扣才能接受订单,而这两个检查都是很是耗时的操做。原来的代码是这样的:
1 public booleanprocessOrder(Order order) 2 { 3 if(!checkCustomerprice(order)) 4 return false; 5 if(!checkInventory(order)) 6 return false; 7 //订单逻辑代码不须要关注 8 return true; 9 }
请用上述的异步机制改写这段代码,减少这个方法的响应延迟。
1 //这里使用task 2 Task<bool> task = new Task<bool>(() => checkCustomerprice()); 3 task.Start(); 4 bool result = task.Result; 5 6 Task<bool> task2 = new Task<bool>(() => checkInventory()); 7 task2.Start(); 8 bool result2 = task2.Result; 9 10 if(result&&result2) 11 return true; 12 else 13 return false; 14 15 //本身研究写的,不知道对不对,仅供参考
43.简述private,protected,public,internal修饰符的访问权限。
public(公共的) 彻底公开,访问不受限制。
protected(保护的) 访问仅限于包含类或从包含类派生的类型。该类内部和继承类中能够访问。
internal(内部的) 访问仅限于当前程序集。在同一命名空间内能够访问。
protected internal(内部保护的) 访问仅限于从包含类派生的当前程序集或类型(待肯定)。
private(私有的) 访问仅限于包含类型。在类的内部才能够访问
44.ado.net的五个主要对象。答案见第30题。
45.列举asp.net页面之间传值的几种方式。
答案:
Request.Form["SourceData2"].ToString();
Request.QueryString["parameter1"].ToString();
Context.Items["value"].ToString();还有cookie,session,application
46.C#中委托是什么?事件是否是一种委托?事件和委托的关系。
答案:委托是指向事件的一种函数指针,把事件转换为了一种引用类型的变量,可让其余函数调用。(纯纯的我的理解,网上有不一样答案,我也不知道哪一个是对的,建议找出版的资料。)
47.override(重写)与重载overload的区别。
答案:override是重写(覆盖)了一个方法,以实现不一样的功能。通常是用于子类在继承父类时,重写(从新实现)父类中的方法,
重载,通常是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不一样。
48.MVC模式。(我并无彻底GET到这个考点)
答案:MVC 模式表明 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。
49.什么是装箱和拆箱?
答案:值类型转换为引用类型是装箱,引用类型装换为值类型是拆箱。
50.什么叫应用程序域AppDomain。
答案: "域",就是范围,环境,边界的意思,那么什么是应用程序域,官方给出的是这样的解释:操做系统和运行库环境一般会
在应用程序间提供某种形式的隔离.
应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域一般由运行库宿主建立,
运行库宿主负责在运行应用程序以前引导公共语言运行库。
应用程序域本质上就就是一种隔离,目的也就是使应用程序中运行的代码不能直接访问其余应用程序中的代码或资
源若是你须要访问其余应用程序中的对象时你就能够复制这些对象,或经过代理访问这些对象.
51.堆和栈的区别。
答案:heap:是由malloc之类函数分配的空间所在地。地址是由低向高增加的,引用类型储存在这。
stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减小的,值类型存储在这。
52.GC是什么,为何要有GC?
答案;垃圾回收器,若是没有GC,那么一个系统随着运行时间的增加,占用内存会愈来愈大,若是咱们没有主动释放的话。
53。值类型和引用类型的区别。
答案:
1. 值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的
地址。
2. 值类型存取速度快,引用类型存取速度慢。
3. 值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用
4. 值类型继承自System.ValueType,引用类型继承自System.Object
5. 栈的内存分配是自动释放;而堆在.NET中会有GC来释放
6. 值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。
7. 值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际数据则保存在堆中。
54.C#中的接口和类有什么异同。
不一样点:
不能直接实例化接口。
接口不包含方法的实现。
接口能够多继承,类只能单继承。
类定义能够在不一样的源文件之间进行拆分。
相同点:
接口、类和结构均可以从多个接口继承。
接口相似于抽象基类:继承接口的任何非抽象类型都必须实现接口的全部成员。
接口和类均可以包含事件、索引器、属性。
54.try{}里有一个return语句,那么紧跟在这个try后面的finally{}里的code会不会被执行。何时执行?
答案;会,在return 以前执行。
55.描述线程与进程的区别。
1.进程有本身独立的地址空间;而线程共享进程的地址空间;
2.一个程序至少有一个进程,一个进程至少有一个线程;
3.线程是处理器调度的基本单位,但进程不是;
4.两者都可并发执行
56.什么是反射?
答案:动态获取程序集信息,动态获取类的属性和方法。
57.什么是匿名方法?请写一段代码。
delegate(int i) { return i > 0; }
58.写出几种工做流产品或框架,并简要的对比他们的差别。
59.写出你所了解的设计模式,说一说使用设计模式带来的好处,并尝试用代码写出一个例子。
60.接受一个数组,找出两个数的索引,这两个数组相加之和等于指定的数字。找出一组便可,同一元素不可以使用两次。
好比:nums=[2,7,11,15],目标数字是9,由于nums【0】+nums【1】=9,因此返回【0,1】
答案:最简单的方法是使用两个for循环,此种方法不给出代码了,下面是第二种算法,须要先进行排序,排序算法略。
1 int[] getindex(int n) 2 { 3 int i=0,j=nums.length-1 4 while(i>j) 5 { 6 if(nums[i]+nums[j]==n)break; 7 else if(nums[i]+nums[j]>n)j--; 8 else i++; 9 } 10 int[] a=new int[]{i,j} 11 return a; 12 }
61.
SELECT * FROM 表 /*数据源*/ AS P PIVOT ( SUM(Amount/*行转列后 列的值*/) FOR p.Month/*须要行转列的列*/ IN (1,2,3,4/*列的值*/) ) AS T
附注:列转行语句。测试语句
1 CREATE TABLE ProgrectDetail 2 ( 3 ProgrectName NVARCHAR(20), --工程名称 4 OverseaSupply INT, --海外供应商供给数量 5 NativeSupply INT, --国内供应商供给数量 6 SouthSupply INT, --南方供应商供给数量 7 NorthSupply INT --北方供应商供给数量 8 ) 9 10 INSERT INTO ProgrectDetail 11 SELECT 'A', 100, 200, 50, 50 12 UNION ALL 13 SELECT 'B', 200, 300, 150, 150 14 UNION ALL 15 SELECT 'C', 159, 400, 20, 320 16 UNION ALL
1 SELECT P.ProgrectName,P.Supplier,P.SupplyNum 2 FROM 3 ( 4 SELECT ProgrectName, OverseaSupply, NativeSupply, 5 SouthSupply, NorthSupply 6 FROM ProgrectDetail 7 )T 8 UNPIVOT 9 ( 10 SupplyNum FOR Supplier IN 11 (OverseaSupply, NativeSupply, SouthSupply, NorthSupply ) 12 ) P
执行结果:
62.描述new有两种用法
第一种:new Class():建立对象
第二种:覆盖方法
public new XXXX(){}
63.传入某个属性的set方法的隐含参数的名称是什么?
value,它的类型和属性所声名的类型相同。
64.下面的代码中有什么错误吗?_______
1 using System; 2 class A 3 { 4 public virtual void F(){ 5 Console.WriteLine("A.F"); 6 } 7 } 8 abstract class B:A 9 { 10 public abstract override void F(); 11 12 //答:abstract override 是不能够一块儿修饰. 13 } // new public abstract void F();
65.net的错误处理机制是什么?
答:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
66.如何在C#中实现继承?也就是继承的格式
在类名后加上一个冒号,再加上基类的名称。
67.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:不是。能够用任意类型.http://www.javashuo.com/article/p-baoxdbks-cs.html
68.私有成员会被继承么?
会,可是不能被访问。因此看上去他们彷佛是不能被继承的,但实际上确实被继承了.
69.C#中全部对象共同的基类是什么?
System.Object
70.在方法定义中,virtual有什么含意?
被virtual修饰的方法能够被子类覆写.
71.可以将非静态的方法覆写成静态方法么?
不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改成override
72.能够覆写私有的虚方法么?
不能够,甚至子类中没法访问父类中的私有方法
73.什么是抽象类(abstract class)?
一种不能够被实例化的类。抽象类中通常含有抽象方法,固然也可有具体实现。继承类只有实现过全部抽象类的抽象方法后才能被实例化.
74.接口(interface)是什么?
只含有公有抽象方法(public abstract method)的类。这些方法必须在子类中被实现.
75.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
答:接口能够继承接口。抽象类能够实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
76.构造器Constructor是否可被override?
答:构造器Constructor不能被继承,所以不能重写Overriding,但能够被重载Overloading。
77.是否能够继承String类?
答:String类是final类故不能够继承.
78.数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String有length()这个方法(查网上资料说有个方法,但我的实验了一下是没有的,只有Length属性).
79.成员变量和成员函数前加static的做用?
答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。好比类成员变量能够用来统计类实例的数量,类成员函数负责这种统计的动做。
80.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?using 指令 和语句 new 建立实例 new 隐藏基类中方法。
答:using 引入名称空间或者使用非托管资源
new 新建实例或者隐藏父类方法
81.什么是虚函数?什么是抽象函数?
答:虚函数:没有实现的,可由子类继承并重写的函数。抽象函数:规定其非虚子类必须实现的函数,必须被重写。
82.c#中的三元运算符是?
答:?:
83.public static const int A=1;这段代码有错误么?是什么?
答:const不能用static修饰。
84.Ref参数是引用调用,out参数是输入调用。
85.const和readonly有什么区别?
const能够用于局部常量,而readonly实际是类的initonly字段,显然不能是局部的,const是编译时常量,readonly是运行时常量。
86.虚函数的用法:
答:1)virtual指明一成员函数为虚函数,而virtual仅用于类的定义里,在类外可不加此关键字.
2)一个类的成员函数被定义为虚函数时,子类该函数仍保持虚函数特征.
3)子类覆盖此函数时,定义里可不加virtual关键字,但函数声明要和基类的彻底一致!且此声明是必须的.
4)不是纯虚函数时,父类的虚函数必需要实现; 而若将父类的虚函数设定为纯虚函数时,子类必须要覆盖之并且必需要实现之!
87.解释virtual、sealed、override和abstract的区别
virtual申明虚方法的关键字,说明该方法能够被重写
sealed说明该类不可被继承
override重写基类的方法
abstract申明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。
88.对象和类的区别是什么?
答:“类”(Class)具备相同属性和方法的一组对象的集合. 类是抽象的概念,仅仅是模板
对象是一个你可以看获得、摸得着的具体实体。
89.什么是局部变量,什么是成员变量?
答:局部变量是指一个方法中定义的变量;成员变量是指在类范围里定义的变量,也就是以前讲过的属性。
90.静态成员和实例成员的区别?
答:使用static修饰的成员称为静态成员,使用实例对象调用的成员称为实例成员
91.概述序列化
答: 序列化是将对象的状态存储到特定存储介质中的过程。
反序列化则是从特定存储介质中的数据从新构建对象的过程
92.对象可否调用静态方法 ?
答:不能。对于类内部定义的静态变量及静态方法,该类的对象均不能调用。
93为何不能指定接口中方法的修饰符?
答:接口中的方法用来定义对象之间通讯的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。
94.请详述在.net中类(class)与结构(struct)的异同:
答:Class能够被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的
95.接口和抽象类具备什么区别?
答:含有abstract修饰符的class即为抽象类,abstract 类不能建立的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法没必要是抽象的。abstract class类中定义抽象方法必须在具体子类中实现,因此,不能有抽象构造方法或抽象静态方法。若是的子类没有实现抽象父类中的全部抽象方法,那么子类也必须定义为abstract类型。
接口(interface)能够说成是抽象类的一种特例,接口中的全部方法都必须是抽象的。接口中的方法定义默认为public abstract类型
下面比较一下二者的语法区别:
1. 抽象类能够有构造方法,接口中不能有构造方法。
2. 抽象类中能够包含非抽象的普通方法,接口中的全部方法必须都是抽象的,不能有非抽象的普通方法。
3. 抽象类中抽象方法能够指定为public,接口中抽象方法不能指定任何修饰符,默认就是public
4. 一个类能够实现多个接口,但只能继承一个抽象类。
96.base关键字的做用是什么?
答:子类继承父类的过程当中,可能须要在子类中调用父类中的成员,如属性、方法或者构造方法。这个时候,可使用base关键字来完成。base的做用是用于引用父类的成员,如属性、方法或者是构造方法
97.什么是抽象类?
答:抽象类不能建立实例,它只能做为父类被继承。抽象类是从多个具体类中抽象出来的父类,它具备更高层次的抽象。从多个具备相同特征的类中抽象出一个抽象类,以这个抽象类做为其子类的模板,从而避免了子类的随意性。
98.接口和抽象类二者在应用上的区别:
答:接口更多的是在系统架构设计方法发挥做用,主要用于定义模块之间的通讯契约。而抽象类在代码实现方面发挥做用,能够实现代码的重用
99.面向对象的特征有哪些方面?
答:面向对象的编程语言有封装、继承 、抽象、多态等4个主要的特征。
封装:
封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变更影响。
抽象:
抽象就是找出一些事物的类似和共性之处,而后将这些事物归为一个类
继承:
子类继承父类成员,实现代码复用,提升了软件的可重用性和可扩展性。
多态:
不一样子类对同一个消息做出不一样的反映,提升软件灵活性
100.在C#中,string str=null string str= string.Empty与string str=“”请尽可能使用文字或图象说明其中的区别。
答: string.Empty:不分配存储空间。"":分配一个长度为空的存储空间,""和String.Empty,这两个都是表示空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的。
101.Params是什么含义?
答:Params是C#中的关键字,采用此关键字能够指定参数数目为可变;在方法声明中的params关键字以后不容许任何其余参数,而且在方法声明中只容许一个params关键字。
102.float f=-123.567F; int i=(int)f;i的值如今是_____? 答:-123
103.C#中 property(属性) 与 attribute(特性)的区别,他们各有什么用处,这种机制的好处在哪里?
答:属性:用于存取类的字段。特性:用来标识类,方法等的附加性质。
attribute:自定义属性的基类;property :类中的属性。
104.