今天繼續的是去那幾家面試公司的一些面試題目,適合剛出來或者兩三年經驗的,大牛能夠適量吐槽下,找工做的能夠補補基礎。html
這系列文章請查看這裏:web
回答1:接口能夠繼承接口,並且能夠繼承多個接口,用「,」進行分割,接口不容許直接或間接地從自身繼承。和類的繼承類似,接口的繼承也造成接口之間的層次結構面試
回答2:抽象類是能夠實現接口的,抽象類裏能夠有抽象方法,也能夠有具體的實現方法,也就是說繼承了接口後也是能夠實現接口裏定義的方法
參考文章:sql
修飾訪問符這個算是挺基礎的了,不過也不能忘記哦數據庫
參考文章:
1.訪問修飾符(C# 編程指南)編程
全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域, 未初始化的全局變量和未初始化的靜態變量在相鄰的另外一塊區域。 當類首次被加載時static定義的變量被分配空間,程序結束後由系統釋放.
若是在一個程序裏過多的使用static定義的成員,確實很佔內存,由於他的生命週期是整個程序,程序運行時沒法被gc所回收,直到程序結束,釋放內存.設計模式
參考文章:api
這題我tm面試的幾間都有啊,公司得有多懶架構
答案:會執行,在return後執行
參考文章:
this 關鍵字引用類的當前實例,還可用做擴展方法的第一個參數的修飾符。
用途:
public Employee(string name, string alias) { // Use this to qualify the fields, name and alias: this.name = name; this.alias = alias; }
CalcTax(this);
public int this[int param] { get { return array[param]; } set { array[param] = value; } }
參考文章:
this(C# 參考)
這個要詳細講的話得要一本書吧,我就說大概。ASP.NET MVC包含了三部分,Model,View和Controller。Controller負責後臺邏輯代碼,View是純淨的HTML頁面,Model是中間數據層。
前提固然是要搞懂這二者的聯繫了
三層架構是最基本的項目分層結果,而MVC則是三層架構的一個變體,MVC是一種好的開發模式。
首先你要明白MVC分別表明的是什麼意思.
三層:UI 界面層 BLL 業務邏輯層,DAL數據訪問層,Model 實體層
MVC中的的M 不是三層中的Model(實體層),他其實包括三層中的 BLL,DAL,Model,這是很是要注意的,這也是他們之間的區別的關鍵所在
三層是基於業務邏輯來分的,而mvc是基於頁面來分的
MVC是 Model-View-Controller,嚴格說這三個加起來之後纔是三層架構中的WEB層,也就是說,MVC把三層架構中的WEB層再度進行了分化,分紅了控制器、視圖、實體三個部分,控制器完成頁面邏輯,經過實體來與界面層完成通話;而C層直接與三層中的BLL進行對話
參考文章:
關於AOP,它面向的是一個切面,可以把公共的功能抽出來,獨立開發,而後將公共部分實現,在開發人員不知情的狀況下,添加進去。而在MVC前臺框架中,MVC中Controller中的Filter能夠將公共的代碼抽離出來。
Asp.Net MVC提供瞭如下幾種默認的Filter:
Filter Type | 實現接口 | 執行時間 | Default Implementation |
---|---|---|---|
Authorization filter | IAuthorizationFilter | 在全部Filter和Action執行以前執行 | AuthorizeAttribute |
Action filter | IActionFilter | 分別在Action執行以前和以後執行。 | ActionFilterAttribute |
Result filter | IResultFilter | 分別在Action Result執行以後和以前 | ResultFilterAttribute |
Exception filter | IExceptionFilter | 只有在filter,或者 action method, 或者 action result 拋出一個異常時候執行 | HandleErrorAttribute |
參考文章:
微軟官方提供的ORM工具,ORM讓開發人員節省數據庫訪問的代碼時間,將更多的時間放到業務邏輯層代碼上。EF提供變動跟蹤、惟一性約束、惰性加載、查詢事物等。開發人員使用Linq語言,對數據庫操做如同操做Object對象同樣省事。
EF有三種使用場景,
ORM 是將數據存儲從域對象自動映射到關係型數據庫的工具。ORM主要包括3個部分:域對象、關係數據庫對象、映射關係。ORM使類提供自動化CRUD,使開發人員從數據庫API和SQL中解放出來。
DbContext是EntityFramework很重要的部分,鏈接域模型與數據庫的橋樑,是與數據庫通訊的主要類。
DbContext主要負責如下活動:
參考文章:
有三種方式:Code First、DBFirst、Model First
//Querying with LINQ to Entities using (var context = newSchoolDBEntities()) { var L2EQuery = context.Students.where(s => s.StudentName == "Bill"); var student = L2EQuery.FirstOrDefault<Student>(); } LINQ Query syntax: using (var context = new SchoolDBEntities()) { var L2EQuery = from st in context.Students where st.StudentName == "Bill"select st; var student = L2EQuery.FirstOrDefault<Student>(); }
//Querying with Object Services and Entity SQL string sqlString = "SELECT VALUE st FROM SchoolDBEntities.Students " + "AS st WHERE st.StudentName == 'Bill'"; var objctx = (ctx as IObjectContextAdapter).ObjectContext; ObjectQuery<Student> student = objctx.CreateQuery<Student>(sqlString); Student newStudent = student.First<Student>(); //使用EntityDataReader using (var con = newEntityConnection("name=SchoolDBEntities")) { con.Open(); EntityCommand cmd = con.CreateCommand(); cmd.CommandText = "SELECT VALUE st FROM SchoolDBEntities.Students as st where st.StudentName='Bill'"; Dictionary<int, string> dict = newDictionary<int, string>(); using (EntityDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.CloseConnection)) { while (rdr.Read()) { int a = rdr.GetInt32(0); var b = rdr.GetString(1); dict.Add(a, b); } } }
using (var ctx = newSchoolDBEntities()) { var studentName = ctx.Students.SqlQuery("Select studentid, studentname, standardId from Student where studentname='Bill'").FirstOrDefault<Student>(); }