一些面試題

   一.手寫SQLHelper面試

複製代碼
 public static class SQLHelper { //獲取鏈接字符串 //屬於靜態變量且只讀,項目中全部文檔能夠直接使用,但不能修改 private static readonly string connection = ConfigurationManager.ConnectionStrings["sql"].ToString(); public static int ExecuteNonQuery(string sql, CommandType cType, params SqlParameter[] parms) { //建立鏈接 using (SqlConnection conn = new SqlConnection(connection)) { //打開鏈接  conn.Open(); //建立command對象 using (SqlCommand cmd = new SqlCommand()) { //鏈接數據庫 cmd.Connection = conn; //執行sql語句 cmd.CommandText = sql; //判斷執行的是sql語句仍是存儲過程 cmd.CommandType = cType; //sql語句中的參數  cmd.Parameters.Add(parms); //延遲加載時間是5s cmd.CommandTimeout = 5; //返回受影響的行數 return cmd.ExecuteNonQuery(); } } } public static int ExecuteScalar(string sql, CommandType cType, params SqlParameter[] parms) { //建立鏈接 using (SqlConnection conn = new SqlConnection(connection)) { //打開鏈接  conn.Open(); //建立command對象 using (SqlCommand cmd = new SqlCommand()) { //鏈接數據庫 cmd.Connection = conn; //執行sql語句 cmd.CommandText = sql; //判斷執行的是sql語句仍是存儲過程 cmd.CommandType = cType; //sql語句中的參數  cmd.Parameters.Add(parms); //延遲加載時間是5s cmd.CommandTimeout = 5; //返回首行首列的值 return Convert.ToInt32(cmd.ExecuteScalar()); } } } public static DataTable ExecuteDataTable(string sql, CommandType cType, params SqlParameter[] parms) { //建立鏈接 using (SqlConnection conn = new SqlConnection(connection)) { //打開鏈接  conn.Open(); //建立command對象 using (SqlCommand cmd = new SqlCommand()) { //鏈接數據庫 cmd.Connection = conn; //執行sql語句 cmd.CommandText = sql; //判斷執行的是sql語句仍是存儲過程 cmd.CommandType = cType; //sql語句中的參數  cmd.Parameters.Add(parms); //延遲加載時間是5s cmd.CommandTimeout = 5; DataTable dt = new DataTable(); //建立適配器對象 using (SqlDataAdapter adapter = new SqlDataAdapter()) { adapter.Fill(dt); return dt; } } } } public static SqlDataReader ExecuteReader(string sql, CommandType cType, params SqlParameter[] parms) { //建立鏈接 SqlConnection conn = new SqlConnection(connection); //打開鏈接  conn.Open(); //建立command對象 using (SqlCommand cmd = new SqlCommand()) { //鏈接數據庫 cmd.Connection = conn; //執行sql語句 cmd.CommandText = sql; //判斷執行的是sql語句仍是存儲過程 cmd.CommandType = cType; //sql語句中的參數  cmd.Parameters.Add(parms); //延遲加載時間是5s cmd.CommandTimeout = 5; //返回讀取的數據,在這裏因爲reader是一條一條數據的讀取,並且獨佔一鏈接,當咱們讀取完數據時間要斷開連接 return cmd.ExecuteReader(CommandBehavior.CloseConnection); } } }
複製代碼

                       雖然以前也寫過好屢次的,可是我那時間只是一味的實現其功能,甚至註釋的都沒有寫,也多是不注重在這方面的更多的練習吧,今天我只是想可以更加深刻的理解SQLHelper中的方法以及實現了那些功能。                          二.冒泡排序sql

複製代碼
 public static void BubbleSortt(this int[] arr) { for (int i = 0; i < arr.Length; i++) { for (int j = 0; j < arr.Length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { //比較兩個數 int temp = arr[j + 1]; //此時temp爲較小的值 arr[j + 1] = arr[j]; //把最大的值放在後面的一位上面 arr[j] = temp; //a=b;b=c;c=a;  } } } } static void Main(string[] args) { int[] arry = new int[] { 1, 2, 3, 4, 1, -1 }; //調用擴展方法  arry.Bubble(); //遍歷輸出排序後的數組 for (int i = 0; i < arry.Length; i++) { Console.Write("\t" + arry[i]); } Console.Read(); }
複製代碼

                       嘿嘿,寫到冒泡排序,不得不說一下我學習擴展方法的心理,剛開始學習時間就是感受蠻神奇的,本身還能夠在微軟提供好的代碼下增長一些方法,可是後來感受非常不適應的,如今能夠說前幾天就是看到友友寫的冒泡排序我拿過來使用居然沒看出來是擴展方法直接像普通的方法同樣調用,忽略了this,那時間還問友友他是否是調用方法使用新的語法,後來才知道我居然忘記了,因而又從新學習了一下擴展方法感受甚是簡單,也多是本身實現的功能簡單,可是從根本上面我終於理解了擴展方法,仍是蠻激動的。數據庫

            三.使用三層架構實現增刪改查數組

複製代碼
[TestClass]
    public class UnitTest1 { private PersonDal dal; public UnitTest1() { //查詢數據 dal = new PersonDal(); } [TestMethod] public void AddPersonTest() { //添加數據 Person p = new Person() { Name="lala", Age=22 }; bool result = dal.AddPersonMes(p); Assert.IsTrue(result); } [TestMethod] public void DeletePersonTest() { //刪除數據 bool result = dal.DelPersonMes(2); Assert.IsTrue(result); } [TestMethod] public void UpdateTest() { //修改數據 Person p = new Person() {ID=1, Name = "xixi", Age = 23}; bool result = dal.UpdPersonMes(p); Assert.IsTrue(result); } }
複製代碼

 

複製代碼
public class PersonBll { private DAL.PersonDal dal; public PersonBll() { dal = new PersonDal(); } /// <summary> /// 添加人 /// </summary> /// <param name="p"></param> /// <returns></returns> public bool AddPersonMes(Person p) { return dal.AddPersonMes(p); } /// <summary> /// 刪除 /// </summary> /// <param name="id"></param> /// <returns></returns> public bool DelPersonMes(int id) { return dal.DelPersonMes(id); } /// <summary> /// 修改 /// </summary> /// <param name="p"></param> /// <returns></returns> public bool UpdPersonMes(Person p) { return dal.UpdPersonMes(p); } /// <summary> /// 查詢全部人 /// </summary> /// <returns></returns> public DataTable GetPersonMes() { return dal.GetPersonMes(); } }
複製代碼

 

複製代碼
public class PersonDal { /// <summary> /// 添加 /// </summary> /// <param name="model">實體類</param> /// <returns></returns> public bool AddPersonMes(Person model) { string sql = "insert into TB_Person values(@Name,@Age)"; SqlParameter[] parms = { new SqlParameter("@Name",model.Name), new SqlParameter("@Age",model.Age) }; return SQLHelper.ExecuteNonQuery(sql,CommandType.Text, parms) > 0; } /// <summary> /// 刪除 /// </summary> /// <param name="id"></param> /// <returns></returns> public bool DelPersonMes(int id) { string sql = "delete from tb_person where id=@id"; SqlParameter parms = new SqlParameter("@id", id); return SQLHelper.ExecuteNonQuery(sql, CommandType.Text, parms) > 0; } /// <summary> /// 修改 /// </summary> /// <param name="model"></param> /// <returns></returns> public bool UpdPersonMes(Person model) { string sql = "update tb_person set name=@name,age=@age where id=@id"; SqlParameter[] parms = { new SqlParameter("@Name",model.Name), new SqlParameter("@Age",model.Age), new SqlParameter("@id",model.ID) }; return SQLHelper.ExecuteNonQuery(sql, CommandType.Text, parms) > 0; } /// <summary> /// 查詢全部人 /// </summary> /// <returns></returns> public DataTable GetPersonMes() { string sql = "select id,name,age from tb_person ;"; return SQLHelper.ExecuteDataTable(sql).Tables[0]; } }
複製代碼

         嘿嘿,上面就是使用三成架構實現的增刪改查,其實剛開始一直在使用WebForm實現三層,這樣想要在一個小時內寫完這個我沒能完成,固然使用EF就簡單的多啦,能夠說五倍的效率,可是若是讓使用ADO.net實現時間,最好使用單元測試就能夠節約時間啦,不用爲拖拉服務器端控件而浪費時間,這樣咱們在面試時間也能夠有更多的時間回答其餘的題啦,好啦今天就寫到這裏,加油加油!時間僅僅剩下15天,能夠說倒計時就要面臨面試,我會努力的。服務器

/ \`\          __      |  \ `\      /`/ \      \_/`\  \-"-/` /\  \           |       |  \  |           (d     b)   \_/           /       \        ,".|.'.\_/.'.|.",      /   /\' _|_ '/\   \      |  /  '-`"`-'  \  |      | |             | |      | \    \   /    / |       \ \    \ /    / /        `"`\   :   /'"`            `""`""`    快快樂樂大兔子~☺
相關文章
相關標籤/搜索