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