栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【小5聊】记录一次.Net开发工程师面试题(1)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【小5聊】记录一次.Net开发工程师面试题(1)

对于正在找工作的同学们,面试时,除了填写基本信息外,一般还会让做一份和专业相关的面试题

目录

1、什么是委托,委托是不是事件

2、重载和重写异同

3、依赖注入生命周期

4、 输出以下代码执行的值

5、查询每组活动前3名学生


1、什么是委托,委托是不是事件

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。

委托特点

委托类似于 C++ 函数指针,但它们是类型安全的。

委托允许将方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起;例如,可以对一个事件调用多个方法。

方法不必与委托签名完全匹配。

委托类型

Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型

Func可以接受0个至16个传入参数,必须具有返回值

Action可以接受0个至16个传入参数,无返回值

Predicate只能接受一个传入参数,返回值为bool类型

2、重载和重写异同
区别/名称        重载       重写
范围同一个类不同的类
方法名相同相同
参数列表不同相同
是否返回父类异常不会
返回类型相同相同
面向对象多态继承

重载场景:构造函数,根据不同的参数设置不同的构造函数

重写场景: 在新的类里重新编写方法的逻辑

3、依赖注入生命周期

.NET Core 自带依赖注入框架,支持三种不同生命周期的注入模式:

Singleton 单例模式

服务只在第一次请求时被创建,之后的每次请求都使用这个已创建的服务。

Scoped 作用域模式

服务在每次请求时被创建,整个请求过程中都使用这个创建的服务。

Transient 瞬态模式

服务在每次请求时被创建

4、 输出以下代码执行的值

面试题

代码根据当时做题时回想,基本是如下代码

题目要求:输出list和num值

List list = new List() { 1, 4, 3, 9, 7, 8, 2 };
Func sort = (x, y) => { return x > y; };

int num = 0;
int index = 0;
int length = list.Count;

while (index < length)
{
    for(int newIndex = index + 1; newIndex 

知识点

考查了冒泡排序

//有返回参数
Func 
Func (T1, T2, ...)  
Func sort= (x, y) => { return x(t1, t2, t3 ...)
Action method1=(x) =>{ Console.WriteLine(x); };

一般使用两个for循环实现

int numCount = 0;
int[] arr =new int[7] { 1, 4, 3, 9, 7, 8, 2 };
for(int i = 0; i < arr.Length; i++)
{
    for (int j = i + 1; j < arr.Length; j++)
    {
        int a = arr[i];
        int b = arr[j];
        if (a < b)
        {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;

            numCount++;
        }
    }
}

5、查询每组活动前3名学生

 题目:有一张表学生member,有一张活动表active,查询每组活动前3名学生

查询效果如下

创建member表和添加数据

--创建表
CREATE TABLE [dbo].[member](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[memberId] [int] NULL,
	[nickName] [varchar](50) NULL,
 ConSTRAINT [PK_member] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

--member表添加如下数据

创建active表和添加数据

--创建表
CREATE TABLE [dbo].[active](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[groupNo] [int] NULL,
	[point] [int] NULL,
	[memberId] [int] NULL,
 ConSTRAINT [PK_active] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]


--添加数据

查询语句

select 
(case when a2.groupNo=1001 then '跳高'
when a2.groupNo=1002 then '赛跑'
when a2.groupNo=1003 then '铅球'
else '其他' end) as groupNoText,
(case when a2.sort_id=1 then 'No.1'
when a2.sort_id=2 then 'No.2'
when a2.sort_id=3 then 'No.3'
else '其他' end) as groupNoText,
a2.point,
a3.nickName
from(
	select groupNo from active
	group by groupNo
) as a1
left join(
	select sort_id=row_number() over(partition by groupNo order by point desc),*
	from active
) as a2 on a2.groupNo=a1.groupNo
left join member as a3 on a3.memberId=a2.memberId
where sort_id<=3
order by a2.groupNo,a2.point desc

知识点

考查了row_number()和over()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753988.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号