C#.NET高级笔试题 架构 优化 性能提升 2024 金九银十 最新 资深 八股文

C#.NET高级笔试题 架构 优化 性能提升 2024 金九银十 最新 资深 八股文

有坑哦

题库目录

1.C# Params 是什么含义?有何用途?
2. 如何提高 .NET 的性能 ?
3. 说说对 http 301 302 303 304 400 405 415 状态码的认识;
4. 请使用 C# 的相关知识,封装一个泛型的数据库访问查询方法;
5. 什么是异步编程?
6. 什么是并行编程( Parallel Programming )?在 .NET 中如何实现并行编程?
7. 请解释一下 .NET 中的 GC Garbage Collector )是什么以及它的作用。
8. 什么是属性( Property )?在 .NET 中如何定义和使用属性?
9. 请解释一下 .NET 中的 GAC Global Assembly Cache )是什么以及它的作用。
10. 请解释一下 .NET 中的 AOP Aspect-Oriented Programming )是什么以及它的作用。
11. 什么是 C# ?它与 .NET 有什么关系?
12. 请解释一下 .NET 中的 LINQ Language Integrated Query )是什么以及它的作用。
13. 什么是性能优化( Performance Optimization )?在 .NET 中如何进行性能优化?
14. 什么是 Azure ?在 .NET 中如何使用 Azure 进行云开发?
15. 什么是微服务架构( Microservices Architecture )?在 .NET 中如何实现微服务架构?
16.CTS CLS CLR 分别作何解释?
17.PDB 是什么东西 ? 在调试中它应该放在哪里?
18. 架构模式 (Architectural Pattern) 设计模式 (Design Pattern) 代码模式 (Coding Pattern) 的区别是什么?
19. 软件架构的目标是什么?
20. 说说什么是架构模式。
21. 架构的 5 大要素是哪 5 大要素?
22. 说说什么事集群,什么是分布式。
23. 说说对 Redis 的理解
24. 你所了解的 NoSql 除了 Redis 还有哪些?
25. 谈谈对消息队列的理解
26. 说说你对数据库读写分离的理解
27. 如果你的系统功能中出现性能问题,说说你的排查计划。
28. 请列出常见的缓存方式,并简要概述其优缺点。
29 谈谈对通信加密解密的理解。
30. 什么是迪米特法则?
31. 解释一下里氏替换原则?
32. 什么是依赖倒转 IOC 原则?
33. 为何说基于 SOAP 的服务是重量级的服务, Rest 是轻量级的?
34. 基于 REST 和基于 SOAP 的服务的区别是什么?
35. 工厂模式 , 简单工厂模式 , 抽象工厂模式三者有什么区别
36.Session 有什么重大 BUG ,微软提出了什么方法加以解决?
37.NET 下内存分配机制是什么?
38. 网站优化:网站运行慢,如何定位问题?发现问题如何解决?
39.IEnumerable IQueryable 两接口的区别
40.lock 为什么要锁定一个参数,可不可锁定一个值类型?这个参数有什么要求?
41. 如何在 C# 中创建和启动新线程?有哪些方法可以实现多线程并发?
42. 什么是线程安全?如何在 C# 中实现线程安全?
43.C# 5 引入的 async/await 关键字是用来做什么的?它与传统的多线程编程有什么不同?
44. 什么是扩展方法( Extension Methods )?如何定义和使用扩展方法?
45. C# 中如何进行内存管理?有哪些方法可以避免内存泄漏?
46. 什么是延迟加载( Lazy Loading )?它在性能优化中的作用是什么?
47. 如果你有无穷多的水,一个 3 公升的提捅,一个 5 公升的提捅,两只提捅形状上下都不均匀,问你如何才 能准确称出4 公升的水 ?
48. 在一天的 24 小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你 怎样算出来的?
49. 一张长方形的桌面上放 n 个一样大小的圆形硬币。这些硬币中可能有一些不完全在桌面内,也可能有一 些彼此重叠;当再多放一个硬币而它的圆心在桌面内时,新放的硬币便必定与原先某些硬币重叠。请证明 整个桌面可以用4n 个硬币完全覆盖 50. 三名传教士和三个野蛮人同在一个小河渡口,渡口上只有一条可容两人的小船。问题的目标是要用这条
小船把这六个人全部渡到对岸去,条件是在渡河的过程中,河两岸随时都保持传教士人数不少于野蛮人的 人数,否则野蛮人会把处于少数的传教士吃掉。这六个人怎样才能安全渡过去?

1.C#Params是什么含义?有何用途?

Params 关键字在方法成员的参数列表中使用,为该方法提供了参数个数可变的能力
它在只能出现一次并且不能在其后再有参数定义,之前可以
实例:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
   class App
   {
       //第一个参数必须是整型,但后面的参数个数是可变的。
       //而且由于定的是object数组,所有的数据类型都可以做为参数传入
       public static void UseParams(int id, params object[] list)
       {
           Console.WriteLine(id);
           for (int i = 0; i < list.Length; i++)
           {
               Console.WriteLine(list);
           }
       }
       static void Main()
       {
           //可变参数部分传入了三个参数,都是字符串类型
           UseParams(1, "a", "b", "c");
           //可变参数部分传入了四个参数,分别为字符串、整数、浮点数和双精度浮点数数组
           UseParams(2, "d", 100, 33.33, new double[] { 1.1, 2.2 });
           Console.ReadLine();
       }
   }
}
结果:
1
a
b
c
2
d
100
33.33
System.Double[]

2.如何提高.NET的性能 ?

1 使用异步方式调用 Web 服务和远程对象
只要有可能就要避免在请求的处理过程中对 Web 服务和远程对象的同步调用,因为它占用的是的
ASP.NET 线程池中的工作线程,这将直接影响 Web 服务器响应其它请求的能力。
2 使用适当的 Caching 策略来提高性能
3 判断字符串,不要用 ”” 比较。
// 避免
if(strABC!=null && strABC!=””)
{}
// 推荐
if(!strABC.IsNullOrEmpty)
{}
4 页面优化
5 用完马上关闭数据库连接
6 尽量使用存储过程,并优化查询语句
7 只读数据访问用 SqlDataReader ,不要使用 DataSet 托管堆中
3. 说说对 http 301 302 303 304 400 405 415 状态码的认
识;
301 表示永久重定向( 301 moved permanently ),表示请求的资源分配了新 url ,以后应使用新 url
302 表示临时性重定向( 302 found ),请求的资源临时分配了新 url ,本次请求暂且使用新 url 302
301 的区别是, 302 表示临时性重定向,重定向的 url 还有可能还会改变。
303 表示请求的资源路径发生改变,使用 GET 方法请求新 url 。她与 302 的功能一样,但是明确指出使用
GET 方法请求新 url
304 not modified
客户端发送附带条件的请求时( if-matched,if-modified-since,if-none-match,if-range,if-unmodified
since 任一个)服务器端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回
304Modified (服务器端资源未改变,可直接使用客户端未过期的缓存)。 304 状态码返回时,不包含任
何响应的主体部分。 304 虽然被划分在 3xx 类别中,但是和重定向没有关系。
400 bad request
表示请求的报文中存在语法错误,比如 url 含有非法字符。提交 json 时,如果 json 格式有问题,接收端接
json ,也会出现 400 bad request ,比如常见的 json 串,数组不应该有 ", 但是有 " 了。
405 method not allowed
问题原因: 请求的方式( get post delete )方法与后台规定的方式不符合。比如: 后台方法规定的
请求方式只接受 get ,如果用 post 请求,就会出现 405 method not allowed 的提示
415
后台程序不支持提交的 content-type ,就会返回 415 spring mvc 错误信息如下
The server refused this request because the request entity is in a format not supported by the
requested resource for the requested method.
unsupported media type

4.请使用C#的相关知识,封装一个泛型的数据库访问查询方法;

public T Get<T>(int id) where T : BaseModel
      {
          string ConnectionString = "Data Source=DESKTOP-63QE7M1;
Database=CustomerDB; User ID=sa; Password=sa123;
MultipleActiveResultSets=True";
Type type = typeof(T);
          var propList = type.GetProperties().Select(p => $"[{p.Name}]");
          string props = string.Join(',', propList);  
          string tableName = type.Name;
          string StringSql = $"select {props} from [{tableName}] where id=" +
id;
          object oInstance = Activator.CreateInstance(type);
          using (SqlConnection connection = new
SqlConnection(ConnectionString))
          {
              connection.Open();
              SqlCommand sqlCommand = new SqlCommand(StringSql, connection);
              SqlDataReader reader = sqlCommand.ExecuteReader();
              reader.Read();
              foreach (var prop in
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云草桑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值