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