Net面接問題_コード#コード#

11193 ワード

///////////////
1.子の親override書き換えメソッド呼び出し(親のメソッドも上書きされます)書き換えの親メソッドには、修飾子abstract、virtual、またはoverrideを付ける必要があります.
using System;using System.Collections.Generic;using System.Text;
namespace ConsoleApplication1{ class Program { static void Main(string[] args) { Father dd= new son(); dd.write();
Console.ReadLine(); } }
class Father { public Father() { write(); }
public virtual void write() { }
}
class son : Father { public int x; public int y;
public son() { x = -1; y = -1;//write(); }
public override void write() { Console.WriteLine("x={0},y={1}",x,y);
}
 
}}
 
x=0,y=0
x=-1,y=-1
new son()という文は、まずベースクラス構築関数のコードwrite()を初期化する必要があります.この場合、son()はまだ初期化されていませんので、デフォルトx=0、y=0.//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2.new新規インスタンスまたは親メソッドを非表示にする例:public class A{public A{}public write(){Console.WriteLine("A.write()})}
}
public class B:A{
public B{} new public write(){Consolw.WriteLine("B.write()")}}
B b=new B(); b.write();//出力B.write();A a=b; a.write();//出力A.write()
 
 
68.1つの文字列に対する処理を実現するには、まずその文字列の先頭と末尾のスペースを削除し、文字列の間に連続するスペースがある場合は、1つのスペースのみを保持する、すなわち文字列の間に複数のスペースがあることを許可するが、連続するスペース数は1つを超えてはならない.
回答:
string abc = "sdf sdfsd sdfsdfsdff sdfdsf";//abc = Regex.Replace(abc, "\\s+", ""); abc = Regex.Replace(abc, "+", "");
69.2つのobjectがequalsであるか否かを比較する
object.equals(objectA,objectB)
70.SingleTonClassキー:static、コンストラクション関数プライベート
class SingleTonClass { private static SingleTonClass sa; private SingleTonClass() {
}
public static SingleTonClass GetSingleTonClass(){if(sa==null){sa=new SingleTonClass();Console.WriteLine("初期化されていない");Else{Console.WriteLine(「初期化済み」);
} return sa; }
}
//呼び出し
class Program { static void Main(string[] args) {
SingleTonClass.GetSingleTonClass();//出力は初期化されていませんSingleTonClass.GetSingleTonClass();//出力はSingleTonClassに初期化する.GetSingleTonClass();//出力はSingleTonClassに初期化する.GetSingleTonClass();//出力が初期化されました}
 
 
 
94.次のコードに何か間違いがありますか?
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F(); 答え:abstract overrideは一緒に修飾することはできません.
}
 
 
95.特定の地域の通貨、例えばfloatの値が米国の通貨として表示される
 
System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US");
//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB");イギリスの通貨タイプen-GBのためにmsdnで特定の国の
decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,"My amount = {0:c}",y); {0:c}//cは通貨
 
 
109.HTMLページを作成し、以下の機能を実現し、左クリックで「こんにちは」、右クリックで「右クリック禁止」を表示する.2分後に自動的にページを閉じます.
答:
setTimeout('window.close();',3000);
function show()
{
if (window.event.button == 1)
{
alert(「左」);
}
else if (window.event.button == 2)
{
alert(「右」);
}
}

 
 
 
11.hashtable、hashmapはkey/valueであり、keyは同じではない.mapはスレッドセキュリティを実現しておらず、keyはnullであってもよい.
Hashtable ht = new Hashtable(); ht.Add("1", "2"); ht.Add("2","2");
 
 
12. sql:ユーザーのオンライン時間を統計します.
onlineテーブル、username、operate、timeがあります
テーブルにデータがあるとします.
lizi,login,2013/1/1 12:00:33
mike,login,2013/1/1 14:33:45
lizi,exit,2013/1/1 19:33:55
mike,exit,2012/1/1  23:33:44
 
lizi,4:33:12(オンライン時間4時間,33分,12秒)
 
 
コード:
 
select a.[username],a.time as login_time,b.time as exit_time
,cast((floor(datediff(ss,a.time,b.time)/3600))as nvarchar//取得時間数,datediff(hh/mi/ss,starttime,endtime)
+':'+cast((floor(datediff(ss,a.time,b.time)%3600/60)as nvarchar)/整数時間減算後、分数を取得
+':'+cast(floor( datediff(ss,a.time,b.time))%3600%60 as nvarchar)
as totaltime from
online as a , online as b where a.[username]=b.[username] and a.operate='login' and b.operate='exit'
 
 
13.配列100個の整数を1から10000まで生成する.サイズ別に並べます.
 1  static void Main(string[] args)

 2         {

 3             List<int> list = new List<int>();

 4             Random r = new Random();

 5             int[] array = new int[100];

 6             int temp = 0;

 7             while (list.Count < 100)

 8             {

 9                 temp = r.Next(1, 10001);

10                 if (!list.Contains(temp))

11                 {

12                     list.Add(temp);

13                 }

14 

15 

16             }

17 

18             list.Sort();

19             array = list.ToArray();

20 

21             foreach (int i in array)

22             {

23                 Console.WriteLine(i.ToString());

24             }

25             Console.Read();

26         }

結果は小さいものから大きいものに並べられた.
//大から小へ並ぶ
 
class Program

    {

        static void Main(string[] args)

        {

            List<int> list = new List<int>();

            Random r = new Random();

            int[] array = new int[100];

            int temp = 0;

            while (list.Count < 100)

            {

                temp = r.Next(1, 10001);

                if (!list.Contains(temp))

                {

                    list.Add(temp);

                }





            }



            //list.Sort(); // 

      //   Console.WriteLine(   Comparer<int>.Default.ToString());

            //System.Collections.Generic.GenericComparer`1[System.Int32]  



            list.Sort(FromMaxToMin);

            

            array = list.ToArray();



            foreach (int i in array)

            {

                Console.WriteLine(i.ToString());

            }

            Console.Read();

        }





        // 

        public static int FromMaxToMin(int a,int b)

        {

            if (a > b) return -1;

            else if (a == b) return 0;

            else return 1;

        }

    }