首页 > 技术文章 > 2020年最新 C# .net 面试题,月薪20K+中高级/架构师必看(二)

zoro-zero 2020-08-12 16:55 原文

二十六、public static const int A=1这段代码有错误么?是什么?

const不能被修饰为static ;因为定义为常量 (const )后就是静态的(static )。

二十七、string 和stringbuilder的区别?

1. string 对象时恒定不变的,stringBuider对象表示的字符串是可变的。stringBuilder是.net提供的动态创建string的高效方式,以克服string对象恒定性带来的性能影响。

2. 对于简单的字符串连接操作,在性能上stringBuilder并不一定总是优于string。

因为stringBuider对象创建代价较大,在字符串目标连接较少的情况下,过度滥用stringBuilder会导致性能的浪费,只有大量的或者无法预知次数的字符串操作,才考虑stringBuilder来实现。

事实上,一般连接次数设置100次以内,根本看不出两者的性能差别。

3. 当修改字符串信息时,此时不许创建对象,可以使用stringBuilder对象。

String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。

二十八、聚集索引和非聚集索引的区别?

1、聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

2、聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。

3、聚集索引:物理存储按照索引排序;聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序。

4、非聚集索引:物理存储不按照索引排序;非聚集索引则就是普通索引了,仅仅只是对数据列创建响应的索引,不影响整个表的物理存储顺序。

5、索引是通过二叉树的数据结构来描述的,我们可以这么理解聚集索引:索引的叶节点就是数据节点,而非聚集索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。

https://www.cnblogs.com/qwg123/p/4572253.html

二十九、复合索引?

https://www.cnblogs.com/zjdxr-up/p/8319881.html

三十、值类型与引用类型的区别?

1、值类型的数据存放在内存的栈中,引用类型的数据存放在内存的堆中

2、值类型存取速度快,引用类型存取速度慢

3、值类型表示实际数据,引用类型表示指向存储在内存堆中的数据指针或引用

4、值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址即对象的引用

5、值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而数据保存在堆中,

三十一、前端闭包的概念?

https://www.cnblogs.com/hgmyz/p/12350924.html

三十二、储存过程到底是对数据库做了优化,还是没有优化?

三十三、EF和dapper的区别,EF有哪些缺点。

https://www.cnblogs.com/shy1766IT/p/5533320.html

三十四、接口不能随便给外界访问,认证方式用的哪些?

https://www.cnblogs.com/huie/p/13098630.html

三十五、Redis的持久性?

https://www.cnblogs.com/cangqinglang/p/10599418.html

三十六、测试框架有哪些,测试用例的好处有哪些,测试用例有哪些指标

  1. Junit
  2. Selenium
  3. TestNG
  4. Cucumber
  5. pytest
  6. Appium
  7. ATX

1、Junit是一个面向Java编程语言的单元测试框架。

单元测试:针对最小的功能单元编写测试代码。Java程序最小的功能单元是方法,对Java编程语言进行单元测试,说白了就是对Java的方法进行测试。

用 Junit 编写单元测试的好处有:

  • 非常简单地组织测试代码,并随时运行它们。
  • 可以自动生成测试报告,收集成功的测试用例和失败的测试用例,统计测试成功率和代码覆盖率。
  • 几乎所有的IDE工具都集成了Junit。

任何Java开发者都应当学习并使用Junit编写单元测试;同时,Java 技术栈的测试或者测试开发工程师,也可以学习 Junit 来作为自动化测试底层框架。

2、Selenium 是使用最为广泛的 Web 自动化测试(UI自动化)框架之一。

Selenium 可以完全模拟用户对主流浏览器进行操作,主要包括鼠标事件和键盘事件。

  • 鼠标事件:右击、双击、拖动、悬停。
  • 键盘事件:Keys()类提供了键盘上几乎所有按键的方法,可以模拟各种键盘输入。

3、TestNG 是 Java中一个很流行实用的单元测试框架。

它的灵感来源于 Junit ( java 的单元测试框架) 和 Nunit ( .net 的单元测试框架)。

但是它又在此基础上引入了新的东西,使得它更加强大。

详情介绍请点击:

https://zhuanlan.zhihu.com/p/370260353

三十七、单元测试用的什么测试框架?

Unittesting+moq做单元测试

三十八、你对ABP框架有所了解吗?

目前.NET上有不少开源框架。比如Apworks和ABP。其中Apworks是中国人写的一套开源框架。

它是一个全功能的,不仅可以写分布式应用,也可以写桌面应用。ABP的全称是Asp.net boilerplate project(asp.net样板工程)。

是github上非常活跃的一个开源项目。它并没有使用任何新的技术,只是由两名架构师将asp.net开发中常用的一些工具整合到了一起,并且部分实现了DDD的概念。

是一个开箱即用的框架,可以作为asp.net分布式应用的一个良好起点。

三十九、常见的设计模式有哪些?有用到项目中吗?

https://www.cnblogs.com/BounceGuo/p/10183363.html

https://www.cnblogs.com/yssjun/p/11102162.html

 

四十、什么是反射?应用场景?

https://www.cnblogs.com/zoro-zero/p/16225682.html

四十一、async和await是什么函数,有哪些优点,知道他们的内部机制吗?

https://www.cnblogs.com/zhaoshujie/p/11192036.html

四十二、你对多线程有了解吗?

https://www.cnblogs.com/yougewe/p/11408151.html

四十三、程序第一次发布的时候访问很慢,第二次就快了是什么原因?

第一次访问网站,系统会讲网站的图片动画信息等内容保存在电脑根目录的用户文件夹那里,第二次访问的时候就从减少了加载图片动画等信息的时间,所有速度就快了。
 

四十四、.Net Core中如何捕获全局异常?

https://www.cnblogs.com/zoro-zero/p/13491061.html

四十五、.net core服务注册中的3种方式的区别?

https://www.cnblogs.com/cheesebar/p/7675214.html

四十六、Memcached、MogoDB、Redis的区别以及优缺点?

https://www.cnblogs.com/robot-python/p/11775164.html

四十七、什么是微服务、搭建微服务架构的全过程、微服务如何让数据库保持一致性?

四十八、不管是用全文搜索引擎还是缓存保存数据,如何更新最新的数据,保证数据的一致性?

四十九、什么是Devops(CI、CD),如何实现的?

五十、什么是泛型?

1、代码复用
2、降低了耦合性
3、更好的可读性
4、更高的安全性

https://www.cnblogs.com/nm666/p/11324345.html

推荐阅读