上海某国企社招的.NET面试题,给开8K值吗?

共 8790字,需浏览 18分钟

 ·

2023-06-06 08:29

    今天我要分享的是某上海国企社招的.NET面试题。这些面试题目由网友提供,主要包括笔试题和操作题。还是先列出面试题目,大家先试做一下,然后再看后面答案。

试题

1、请解释什么是面向对象编程(OOP)?

2、请解释程序的基本结构是什么,并简要描述每个组成部分的作用。

3、列举并解释几个C#中常用的修饰符。

4、请说明接口和抽象类之间的区别,并提供一个使用场景示例。

5、请列举并解释.NET Core和.NET Framework之间的区别。

6、Program.cs中builder.Services和var app = builder.Build()的app有什么用?

7、在.NET Core中,中间件是什么?请解释它们在请求处理过程中的作用。

8、在ASP.NET Core中,如何将服务依赖注入到控制器中?

9、在.NET Core中,有哪几种服务生命周期?请简要描述每个生命周期的特点。

10、Cookies和Session有什么区别?请解释它们在Web开发中的不同用途。

操作题:

11、请用代码反转这个字符串:string strTmp= "TENTOD";

12、请用C#代码计算某年某月的最后一天是几号号?比如今年二月

解答

1、请解释什么是面向对象编程(OOP)?

答:面向对象编程(OOP)是一种编程范式,它将程序设计组织为一组对象,这些对象通过相互之间的交互来完成任务。OOP的核心思想是将现实世界中的事物抽象为对象,每个对象都具有状态(属性)和行为(方法),并且可以通过封装、继承和多态来实现代码的模块化、重用性和可扩展性。这是比较官方的说法,大家可以用自己的理解回答。

详解--> 面试必备:聊聊面向对象三大特征



2、请解释程序的基本结构是什么,并简要描述每个组成部分的作用。

答:命名空间(Namespace):组织和管理相关的类和类型。

类(Class):用于定义对象的属性和方法。

方法(Method):用于定义类中的行为和操作。

变量(Variable):用于存储和操作数据。

语句(Statement):用于控制程序的执行流程。

表达式(Expression):用于计算和生成值。

注释(Comment):用于解释和说明代码的作用和用途。

这是道基础题,如果长时间不面试可能会蒙。


3、列举并解释几个C#中常用的修饰符。

答:

public:公共修饰符,表示可以从任何位置访问。

private:私有修饰符,表示只能在当前类内部访问。

protected:受保护修饰符,表示只能在当前类及其派生类内部访问。

internal:内部修饰符,表示只能在当前程序集内部访问。

protected internal:受保护的内部修饰符,表示只能在当前程序集内部和派生类内部访问。

现在最新版的还有file修饰符,如果能回答出来是加分项

详解-->面试必备:聊聊C#中public、private、protected、internal访问修饰符作用范围?


4、请说明接口和抽象类之间的区别,并提供一个使用场景示例。

答:

接口定义了一组公共的方法和属性,但不能包含实现代码。类可以实现一个或多个接口,从而获得接口定义的行为。

抽象类是一个可以包含实现代码和抽象成员的类。抽象类可以被继承,子类可以实现抽象成员并提供具体的实现。

使用场景示例:

接口通常用于定义约定和合同,使不同的类能够以一致的方式进行交互。例如,一个日志记录接口定义了写日志的方法,多个类可以实现这个接口来提供不同的日志记录实现。

抽象类通常用于作为具有共同特征的类的基类,提供通用的实现和行为。子类可以继承抽象类并扩展或覆盖其中的方法。例如,一个动物抽象类可以定义一个通用的“移动”方法,而子类如狗、猫、鸟等可以具体实现各自的移动方式。

-->c#中抽象类(abstract)和接口(interface)的相同点与区别


5、请列举并解释.NET Core和.NET Framework之间的区别。

答:

.NET Core是一个跨平台的开源框架,支持在Windows、macOS和Linux等多个操作系统上运行。它更加轻量级、模块化,并且可以选择性地引用和使用所需的组件。

.NET Framework是一个面向Windows操作系统的框架,主要用于Windows应用程序开发。它包含了大量的类库和功能,适用于各种类型的应用程序开发。

详解--> .Net Core、 .Net FrameWork和 .Net 5对比


6、Program.cs中builder.Services和var app = builder.Build()的app有什么用?

答:在Program.cs中,builder.Services 是用于配置和注册依赖注入的服务容器,通过该容器可以向应用程序添加各种服务。而 var app = builder.Build() 是用于构建 WebHost 或 Host 对象,它代表整个应用程序的主机。


7、在.NET Core中,中间件是什么?请解释它们在请求处理过程中的作用。

答:在.NET Core中,中间件是一种组件,用于处理HTTP请求和响应。中间件在请求管道中按顺序执行,并可以修改或处理请求和响应。它们提供了一种灵活的方式来处理各种功能,例如日志记录、身份验证、路由等。

在请求处理过程中,中间件可以执行以下操作:

接收并处理传入的HTTP请求。

调用下一个中间件或终止请求处理。

修改请求或响应的内容。

执行任意自定义逻辑。

更多面试题-->必考的ASP.NET Core的中间件面试题


8、在ASP.NET Core中,如何将服务依赖注入到控制器中?

答:默认在ASP.NET Core中,可以通过构造函数注入(Constructor Injection)的方式将服务依赖注入到控制器中。通过第三方注入组件可以使用接口注入和属性注入。

        
          public class MyController : Controller
        
        
          {
        
        
              private readonly IMyService _myService;
        
        
              public MyController(IMyService myService)
        
        
              {
        
        
                  _myService = myService;
        
        
              }
        
        
              // ...
        
        
          }
        
      


详解--> 面试疑问:.NET Core依赖注入有三种方式是真的吗?


9、在.NET Core中,有哪几种服务生命周期?请简要描述每个生命周期的特点。

答:

Singleton:服务在应用程序的整个生命周期中只会创建一个实例,每次请求都会使用同一个实例。

Scoped:服务在每个请求过程中创建一个实例,同一个请求内的不同组件将共享同一个实例。

Transient:每次请求都会创建一个新的实例,每次请求都使用不同的实例。


10、Cookies和Session有什么区别?请解释它们在Web开发中的不同用途。

答:

Cookies是在客户端(浏览器)上存储数据的小型文件。它们可以通过浏览器自动发送到服务器,用于识别和跟踪用户会话。

Session是在服务器端存储用户状态的机制,可以存储和检索用户特定的数据。它使用一个唯一的会话标识符(Session ID)来跟踪用户的会话状态。

主要区别如下:

存储位置:Cookies存储在客户端,Session存储在服务器端。

大小限制:Cookies的大小通常受到浏览器和服务器的限制,而Session的大小限制一般由服务器配置确定。

安全性:Cookies存储在客户端,可能会受到篡改和窃取的风险。而Session存储在服务器端,相对更安全。

数据存储:Cookies可以存储简单的键值对数据,而Session可以存储更复杂的对象和数据结构。

这道题是比较老的题了,现在都用token了。但是也必须会啊。

详解-->傻傻分不清之 Cookie、Session、Token、JWT


操作题:

11、请用代码反转这个字符串:string strTmp= "TENTOD";

代码如下:

        
          string strTmp = "槽跳发开TENTOD";
        
        
          char[] charArray = strTmp.ToCharArray();
        
        
          Array.Reverse(charArray);
        
        
          string reversedStr = new string(charArray);
        
        
          Console.WriteLine(reversedStr);
        
        
          
            //输出结果为:DOTNET开发跳槽
          
        
      

还可以用循环反转字符串的方式,代码如下:

        
          string strTmp = "槽跳发开TENTOD";
        
        
          char[] charArray = strTmp.ToCharArray();
        
        
          
            
int left = 0; int right = charArray.Length - 1;
while (left < right) { // 交换左右两个字符 char temp = charArray[left]; charArray[left] = charArray[right]; charArray[right] = temp;
// 移动左右指针 left++; right--; }
string reversedStr = new string(charArray); Console.WriteLine(reversedStr);


12、请用C#如何获得下个月的第一天和最后一天的日期?

      
        DateTime currentDate = DateTime.Now;
      
      
        DateTime firstDayOfNextMonth = new DateTime(currentDate.Year, currentDate.Month, 1).AddMonths(1);
      
      
        DateTime lastDayOfNextMonth = firstDayOfNextMonth.AddMonths(1).AddDays(-1);
      
      
        
          
Console.WriteLine("下个月的第一天:" + firstDayOfNextMonth.ToShortDateString()); Console.WriteLine("下个月的最后一天:" + lastDayOfNextMonth.ToShortDateString());

这是个基础题。

结语

    是不是觉得特别的简单,这是比较基础的.NET面试题,适合初级的.NET工程师。这个网友通过了面试,但是对方只能给8K,他工作经验3年,大家说怎么样?可以去吗?小编觉得如果图稳定可以去,毕竟是国企。希望本次的面试题能给大家的面试有所帮助,对于以上面试题你有什么看法欢迎大家留言讨论。

版权声明:本文来源于网友收集或网友供稿,仅供学习交流之用,如果有侵权,请转告小编或者留言,本公众号立即删除。



5db9a25afe06c87c1e483712106ec67f.webp 支持小薇
    

关注公众号DotNet开发跳槽    

      

b1b1524436cacae8968b55078deadc26.webp

32c70a0213c3b852acc12b5c678bea16.webp

b358e67617d7e5f2f527f5ed7cdcdebb.webp

点在看

浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报