2020年最新 C# .net 面试题,月薪20K+中高级/架构师

家电维修 2023-07-16 19:17www.caominkang.com家电维修技术

笔者近几年前前后后面试了50+公司左右,怎么讲呢,每个面试官的风格都不一样,要问的问题也不尽相同。面试是需要技巧的,提前准备工作以及如何把简历写得让人眼前一亮是很有必要的,关于这一块将在其它篇幅作介绍。话不多说,先出面试遇到的主流面试题,将分8篇文章,每篇25道,几乎涵盖90%以上的面试知识点,适用于中高级、架构师去复习,暂时还那么多时间把答案写出来,后续会加上,如果大家有好的答案也可以在评论区写出来,谢谢大家。

201、简述 private、 protected、 public、 internal 修饰符的访问权限

private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。 
internal: 当前程序集内可以访问。

202、属性和public字段的区别是什么?调用set方法为一个属性设值,然后用get方法读取出来的值一定是set进去的值吗?

属性可以对设值、取值的过程进行非法值控制,比如年龄禁止设值负数,而字段则不能进行这样的设置。虽然一般情况下get读取的值就是set设置的值,可以让get读取的值不是set设置的值的,极端的例子。Public Age{get{return 100;}set{}}。加分的补充回答用reflector反编译可以看出,属性内部本质上就是set_、get_方法

    class Person

    {

        public int Age

        {

            get

            {

                return 3;

            }

            set

            {

            }

        }

    }

            Person p1 = ne Person();

            p1.Age = 30;

            p1.Age++;

            Console.Write(p1.Age);//输出3

必须手写掌握的代码(既包含拿电脑写,拿笔写)

  1. 手写三层架构
  2. 手写冒泡排序
  3. 手写AJAXXMLHttpRequest
  4. 手写增删改查、SQLHelper

203、关于三层架构

通常意义上的三层架构就是将整个业务应用划分为表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。表现层(UI)通俗讲就是展现给用户的界面,即用户在使用一个系统的时候的所见所得。业务逻辑层(BLL)针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。数据访问层(DAL)该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等每层之间是一种垂直的关系。三层结构是N层结构的一种,,层次之间是向下依赖的,下层代码未确定其接口(契约)前,上层代码是无法开发的,下层代码接口(契约)的变化将使上层的代码一起变化。

优点 分工明确,条理清晰,易于调试,而且具有可扩展性。

缺点 增加成本。

204、说说在软件设计中你遇到的以空间换时间的例子?

参考回答谈Cache(缓存)、索引这些例子。用额外的磁盘、内存空间的消耗来提高执行速度。Lucene.Net也是一个例子。

205、asp.中的错误机制。(常考)

参考

定制错误页来将显示一个友好的报错页面。

页面中未捕获一样会触发Page_Error(不常用),应用程序中的未捕获异常会触发Application_Error。通过HttpContext.Current.Server.GetLastError()、HttpContext.Current.Error;拿到未捕捉异常,记录到Log4Net日志中。

206、介绍几个使用过的开源的项目

Lucien.、NPOI、JQuery、ASP.Net AJAX  toolkit、Quartz.Net、JqueryUI、ASP.Net MVC。在CodePlex、SourceFe等网站上有更多的开源项目

 

207、数据访问通过aspx页面和DB层会很慢,有什么解决方法

(1)浏览器使用缓存;(2)使用压缩的JS和CSS(3)减少发送HTTP请求的次数;(4)后台,对于一些不经常变化的数据进行Cache;(5)对可能的低效率的SQL语句进行优化;(6)进行服务器负载均衡

208、关于网络结构

209、关于反向代理

210、如何搭建一个大型网站架构,需要考虑哪些因素?

211、C#中的扩展方法是什么?

212、什么是局部类?

213、【软件架构】SOLID代表什么?它的原理是什么?

214、【软件架构】KISS原则是什么意思?

215、【设计模式】“编程为接口而不是实现”是什么意思?

216、【DevOps】持续集成,持续交付和持续部署之间有什么区别?

217、【软件架构】什么是故障转移?

218、【软件架构】系统的ACID属性是什么?

219、【设计模式】解释下内聚和耦合?

220、SOLID是设计模式吗?

否,设计模式是针对软件编程中常见问题的可重用解决方案,而SOLID是一组原则,我们可以称其为准则,它使我们可以创建一个系统,在该系统中,每个零件都将松散地连接到其他零件上。

221、什么是CQRS设计模式?

222、什么是算法?

223、你所了解的敏捷开发是什么?它跟瀑布式有什么区别?

224、在LINQ中,IEnumerable接口与IQueryable有何不同?

225、Git跟SVN有什么区别,如何设置Git的权限?

Copyright © 2016-2025 www.jianfeikang.com 建飞家电维修 版权所有 Power by