面試總結

    終於找到了工作,不能說和自己的初衷完全一致,但還是比較合適的一份工作。期間經歷最多的就是面試了,所以這裏希望分享我做的一些面試題目。

    面試題分爲三大類:C#、數據庫、Javascript,其他可能還有一些智力問答題。其中很多面試題就是考察概念,所以即使你有多年工作經驗也不要太過自信,可能一些概念性的問題,你並不清楚。比如這樣一道javascript題:

    fn = function () { alert('****') };
    function foo() {
        foo.fn = function () { alert('@@@@') }
        this.fn = function () { alert('####') }
        fn = function () { alert('&&&&') };
        var fn = function () { alert('$$$$$$') }
    }
    foo.prototype.fn = function () { alert('1111'); }
    foo.fn = function () { alert('2222');
    var f = new foo();
    f.fn();    //問題1     
    foo.fn();  //問題2     
    fn();      //問題3


 

請問:最後三個輸出結果是什麼?你是否已暈?有的人可能連prototype都不太清楚吧。這也是我當初的狀態。所以千萬不要太過自信。好了,現在我們先說C#的考題。

=========================C# 題============================

1.      概念題:

1)    請描述.net中值類型和引用類型的區別?

2)    請寫出C#語言中可以修飾一個方法的所有關鍵字以及用法?

3)    請描述C#語言中定義方法參數的三種方式ref,out,params之間的區別?

4)    請描述C#中Dictionary<,>和Hashtable的區別,用Key取值時需要注意的地方?

5)    請描述Cookie,Cache,Application,Session,Viewstate的特點及相互之間的區別

6)    Httphandler和HttpModule之類的區別

7)    靜態構造函數和實例構造函數的區別

8)    StringBuilder和string在性能方面的差異

9)    List<string>和List<int>的父類是什麼?

怎麼樣?是不是有些問題,自己好像知道點又不完全清楚。那就趕快百度把它弄的清清楚。

10)  求運算結果:

class Test1
    {
        public int num;
        private string name;
        public string Name
        {
            set
            {
                this.name = value;
            }
            get
            {
                return this.name;
            }
        }

        public Test1()
        {
            name = "Test1";
        }

        public virtual void Output1()
        {
            Console.WriteLine("Test1.Output1 : Name is " + Name);
        }

        public void Output2(ref int n)
        {
            num = n;
            Console.WriteLine("Test1.Output2 : Name is " + name);
        }
    }

    class Test2 : Test1
    {
        public string name;
        public Test2()
        {
            name = "Test2";
        }

        public override void Output1()
        {
            Console.WriteLine("Test2.Output1 : Name is " + Name);
        }

        public void Output2()
        {
            num = 20;
            Console.WriteLine("Test2.Output2 : Name is " + name);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Test1 t1 = new Test2();
            t1.Output1();//輸出1  test1
            int n = 10;
            t1.Output2(ref n);//輸出2 teset1
            Test2 t2 = new Test2();
            Console.WriteLine(t2.Name);//輸出3 test1
            Console.WriteLine(t2.name);//輸出4 
            Console.WriteLine(t2.num);//輸出5 0
            t2.Output2();//輸出6 test2
        }
    }

 

這個已囊括很多類似題,自己可以在VS裏測試一下,注意瞭解重寫和覆蓋的區別

 

2.      算法題:

算法題是非常重要的。即使你不完全清楚也要把思路寫出來,千萬可不能空白!經常遇到的算法題:

1)    冒泡排序

答案:百度。

2)    在字符串內找到所有不重複的字符,比如“BWABSDWD”,找出“S”、“A”,注意程序的執行效率和空間複雜度。(請用C#或者javascript實現。)

答案:較簡單,有多種算法,自己想。

3)    設計一個大整形數(大於float長度)相加的算法。如:

1111111111111111111111111111111111111111111111111111

2222222222222222222222222222222222222222222222222222等於

3333333333333333333333333333333333333333333333333333

答案:

Public string Add(stringa,string b)

{

       這裏只說思路,自己可實踐。算法中肯定是先拆分然後再計算。具體先把參數轉化成int[]然後從後向前加,結果保留在另外一個數組中,注意向前進位。最後再把數組轉化成字符串就哦了。

}

4)    菲波納奇數,如1、2、3、5、8、13、21、34、55、89、144 求第30位數字。

public int FBNJ(int num)
        {
            if (num <= 1)
                return 1;
            else if (num == 2)
                return 2;
            else
                return FBNJ(num - 2) + FBNJ(num - 1);
        }

 

=========================Javascript============================

 

1        javascript找出頁面上所有的<input type=”text”>,並將值設置爲空。

 

function Fun() {
        var objs = document.getElementsByTagName("input");
        alert(objs.length);
        for (var i = 0; i < objs.length; i++) {
            if (objs[i].type == "text") {
                objs[i].value = "";
            }
        }
    }

 

2        var a = new object();

a.companyname= “Microsoft”;

a[“companyname”]= “Microsoft”;

是否有區別?

   一個是對象、一個是數組

 

3        瞭解prototype的用法

4        有時候會問到js中的閉包

5        瞭解Jquery的用法

 

=========================SQL============================

1      瞭解left join、right join、inner join的區別

2      瞭解存儲過程、函數、觸發器、索引(聚集、非聚集)的概念

3      有以下表結構(表名Employee),對於name相同的記錄只用保留一條,請將多餘的name相同的記錄刪除。

 

Id

Name

Sex

Birthday

1

張三

1989-01-01

2

張三

1990-01-01

3

張三

1989-01-21

4

李四

1989-11-01

5

李四

1989-01-31

delete  emplyee whereid not in(selectmax(id)from employeegroup by name)

4      有一表如下:

Uday 表示星期幾

用SQL語句查詢,結果如下圖:

select uname,

    '星期一'=count(casewhen uday=1 then udayend),

    '星期二'=count(casewhen uday=2 then udayend),

    '星期三'=count(casewhen uday=3 then udayend),

    '星期四'=count(casewhen uday=4 then udayend),

    '星期五'=count(casewhen uday=5 then udayend),

    '星期六'=count(casewhen uday=6 then udayend),

    '星期日'=count(casewhen uday=7 then udayend)

from difsql

group by uname

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章