今天继续的是去那几家面试公司的一些面试题目,适合刚出来或者两三年经验的,大牛能够适量吐槽下,找工做的能够补补基础。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>(); }