C#面试题——附答案
生活随笔
收集整理的這篇文章主要介紹了
C#面试题——附答案
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
下午隨便在幾個(gè)網(wǎng)站上轉(zhuǎn)了轉(zhuǎn),發(fā)現(xiàn)了些C#的面試題,以csdn的一篇帖子收集最全,但是,沒(méi)有答案,就自己做了一下,發(fā)上來(lái),后續(xù)一些關(guān)于概念機(jī)制的題目,我繼續(xù)做,先發(fā)點(diǎn)程序的,都是通過(guò)了編譯并運(yùn)行的,但理解上難免還有不到位之處,歡迎指正。 1、以下代碼能否通過(guò)編譯?如果不能,請(qǐng)改成正確代碼,并說(shuō)明原因。
<html>
?? <%
?????? int subtract(int num1, int num2) {
????????? return num1-num2;
?????? }
?? %>
?? <body>
????? <%
???????? int number = 100;
???????? while (number > 0) {
??????????? Response.Write("value: " + number + "<br/>");
??????????? number = subtract(number, 1);
???????? }
????? %>
?? </body>
</html>
未通過(guò)編譯:CS1519: 類、結(jié)構(gòu)或接口成員聲明中的標(biāo)記“while”無(wú)效——為什么是這個(gè) 錯(cuò)誤呢?不清楚了。
改正:將subtract放在<script runat="server"></script>之間。
<script runat="server">
??? int subtract(int num1, int num2)
??? {
??????? return num1 - num2;
??? }
</script>
2、float f=-123.567F;
?? int i=(int)f;?? i的值現(xiàn)在是_____?
?? 答案:-123? (float f=123.567F時(shí),是123)
3、下面的代碼中有什么錯(cuò)誤嗎?_______
???? using System;
???? class A
???? {
????????? public virtual void F(){
????????????? Console.WriteLine("A.F");
?????????? }
????? }
????? abstract class B:A
?????? {
?????????? public abstract override void F();
?????? }
?? ——編譯通過(guò)
4、當(dāng)類T只聲明了私有實(shí)例構(gòu)造函數(shù)時(shí),則在T的程序文本外部,_不可以_____(可以 or 不可以)從T派生出新的類,____(可以 or 不可以)直接創(chuàng)建T的任何實(shí)例。(答案:均受保護(hù)級(jí)別限制,不可以)
5、下面這段代碼有錯(cuò)誤么?
??? switch (i){
??? case():
??????? CaseZero();
??????? break;
??? case 1:
??????? CaseOne();
??????? break;
??? case 2:
??? default:
??????? CaseTwo();
??????? break;
?? }
——原題目的default那行是:“dufault;”,我想應(yīng)該是筆誤吧,改為default:后無(wú)錯(cuò),當(dāng)i為2和其他值時(shí),執(zhí)行CaseTwo()。
6、在下面的例子里
???? using System;
???? class A
???? {
????????? public A(){
??????????????? PrintFields();
?????????? }
????????? public virtual void PrintFields(){}
????? }
????? class B:A
????? {
?????????? int x=1;
?????????? int y;
?????????? public B(){
?????????????? y=-1;
?????????? }
?????????? public override void PrintFields(){
?????????????? Console.WriteLine("x={0},y={1}",x,y);
?????????? }
當(dāng)使用new B()創(chuàng)建B的實(shí)例時(shí),產(chǎn)生什么輸出?
答案:輸出為x=1,y=0(繼承的子類在new時(shí),先new父類對(duì)象,然后new自身私有成員,當(dāng)調(diào)用b.PrintFields()時(shí),則輸出x=1,y=-1)
7、下面的例子中
???? using System;
???? class A
???? {
????????? public static int X;
????????? static A(){
?????????????? X=B.Y+1;
????????? }
????? }
????? class B
????? {
?????????? public static int Y=A.X+1;
?????????? static B(){}
?????????? static void Main(){
??????????????? Console.WriteLine("X={0},Y={1}",A.X,B.Y);
?????????? }
?????? }
產(chǎn)生的輸出結(jié)果是什么? X=1,Y=2
8、下面這段代碼輸出什么?為什么?
???? int i=5;
???? int j=5;
???? if (Object.ReferenceEquals(i,j))
????????? Console.WriteLine("Equal");
???? else
????????? Console.WriteLine("Not Equal");
答案:Not Equal——進(jìn)行了裝箱操作。
<html>
?? <%
?????? int subtract(int num1, int num2) {
????????? return num1-num2;
?????? }
?? %>
?? <body>
????? <%
???????? int number = 100;
???????? while (number > 0) {
??????????? Response.Write("value: " + number + "<br/>");
??????????? number = subtract(number, 1);
???????? }
????? %>
?? </body>
</html>
未通過(guò)編譯:CS1519: 類、結(jié)構(gòu)或接口成員聲明中的標(biāo)記“while”無(wú)效——為什么是這個(gè) 錯(cuò)誤呢?不清楚了。
改正:將subtract放在<script runat="server"></script>之間。
<script runat="server">
??? int subtract(int num1, int num2)
??? {
??????? return num1 - num2;
??? }
</script>
2、float f=-123.567F;
?? int i=(int)f;?? i的值現(xiàn)在是_____?
?? 答案:-123? (float f=123.567F時(shí),是123)
3、下面的代碼中有什么錯(cuò)誤嗎?_______
???? using System;
???? class A
???? {
????????? public virtual void F(){
????????????? Console.WriteLine("A.F");
?????????? }
????? }
????? abstract class B:A
?????? {
?????????? public abstract override void F();
?????? }
?? ——編譯通過(guò)
4、當(dāng)類T只聲明了私有實(shí)例構(gòu)造函數(shù)時(shí),則在T的程序文本外部,_不可以_____(可以 or 不可以)從T派生出新的類,____(可以 or 不可以)直接創(chuàng)建T的任何實(shí)例。(答案:均受保護(hù)級(jí)別限制,不可以)
5、下面這段代碼有錯(cuò)誤么?
??? switch (i){
??? case():
??????? CaseZero();
??????? break;
??? case 1:
??????? CaseOne();
??????? break;
??? case 2:
??? default:
??????? CaseTwo();
??????? break;
?? }
——原題目的default那行是:“dufault;”,我想應(yīng)該是筆誤吧,改為default:后無(wú)錯(cuò),當(dāng)i為2和其他值時(shí),執(zhí)行CaseTwo()。
6、在下面的例子里
???? using System;
???? class A
???? {
????????? public A(){
??????????????? PrintFields();
?????????? }
????????? public virtual void PrintFields(){}
????? }
????? class B:A
????? {
?????????? int x=1;
?????????? int y;
?????????? public B(){
?????????????? y=-1;
?????????? }
?????????? public override void PrintFields(){
?????????????? Console.WriteLine("x={0},y={1}",x,y);
?????????? }
當(dāng)使用new B()創(chuàng)建B的實(shí)例時(shí),產(chǎn)生什么輸出?
答案:輸出為x=1,y=0(繼承的子類在new時(shí),先new父類對(duì)象,然后new自身私有成員,當(dāng)調(diào)用b.PrintFields()時(shí),則輸出x=1,y=-1)
7、下面的例子中
???? using System;
???? class A
???? {
????????? public static int X;
????????? static A(){
?????????????? X=B.Y+1;
????????? }
????? }
????? class B
????? {
?????????? public static int Y=A.X+1;
?????????? static B(){}
?????????? static void Main(){
??????????????? Console.WriteLine("X={0},Y={1}",A.X,B.Y);
?????????? }
?????? }
產(chǎn)生的輸出結(jié)果是什么? X=1,Y=2
8、下面這段代碼輸出什么?為什么?
???? int i=5;
???? int j=5;
???? if (Object.ReferenceEquals(i,j))
????????? Console.WriteLine("Equal");
???? else
????????? Console.WriteLine("Not Equal");
答案:Not Equal——進(jìn)行了裝箱操作。
轉(zhuǎn)載于:https://blog.51cto.com/august/11436
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的C#面试题——附答案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 最近老梦到同一个人是怎么回事
- 下一篇: 将人民币的数字表示转化成大写表示(C#版