TOP 20+ .NET和OOP面试题(应届生简易指南)
你正在准备.NET开发者面试吗?这里有一个快速清晰的指南,涵盖了OOP、.NET、MVC、Web API和SQL Server问题,答案简短简单——非常适合快速复习!
🔹 OOP(面向对象编程)
1. OOP的4个支柱是什么?
封装 – 将数据和方法捆绑在一起
抽象 – 隐藏复杂性,只显示本质
继承 – 通过基类/派生类重用代码
多态 – 一个接口,多种实现(重载/重写)
2. 抽象和封装的区别
|
概念
|
抽象
|
封装
|
|
重点
|
隐藏内部_发生了什么_
|
隐藏数据_如何_存储
|
|
用途
|
接口/抽象类
|
访问修饰符
|
3. C#中接口vs抽象类
|
特性
|
抽象类
|
接口
|
|
方法
|
可以有定义
|
只有签名(直到C# 8)
|
|
修饰符
|
允许访问修饰符
|
所有成员都是公共的
|
|
继承
|
单一继承
|
支持多个接口
|
4. 重载vs重写
重载: 相同方法名,不同参数(_编译时_)
重写: 在派生类中重新定义基类方法(_运行时_)
🔹 .NET和C#面试题
5. ref和out的区别?
ref: 传递前必须初始化
out: 无需初始化;必须在方法内赋值
6. .NET中的垃圾回收是什么?
垃圾回收器(GC)通过销毁未使用的对象自动释放内存。
7. ==和.Equals()的区别
==: 比较值(值类型)或引用(对象)
.Equals(): 可以比较内容,可以被重写
🔹 ASP.NET MVC问题
8. 什么是MVC架构?
Model: 业务逻辑和数据
View: UI层
Controller: 处理用户输入并更新Model/View
9. MVC中的路由是什么?
将URL映射到控制器/操作方法。
- routes.MapRoute("Default", "{controller}/{action}/{id}");
10. TempData vs ViewData vs ViewBag
|
特性
|
ViewData
|
ViewBag
|
TempData
|
|
类型
|
Dictionary
|
Dynamic
|
Dictionary
|
|
生命周期
|
当前请求
|
当前请求
|
当前+下一个请求
|
|
用例
|
数据到View
|
数据到View
|
跨重定向
|
11. MVC中的Action Filters是什么?
Action Filters允许你在控制器中的操作方法执行之前或之后运行逻辑。
示例:
[Authorize] – 限制访问
[HandleError] – 处理异常
[OutputCache] – 缓存输出
🔹 Web API问题
12. .NET中的Web API是什么?
ASP.NET Web API是一个框架,用于构建RESTful HTTP服务,用于Web、移动或桌面应用程序。它支持内容协商(JSON/XML)并且轻量级。
13. 区别:Web API vs MVC
|
特性
|
MVC
|
Web API
|
|
目的
|
返回HTML视图
|
返回数据(JSON,XML)
|
|
返回类型
|
ViewResult
|
JsonResult,IHttpActionResult
|
14. 如何保护Web API?
🔐 使用JWT令牌或OAuth 2.0
🛡️ 实现授权过滤器
🔒 使用HTTPS加密通信
15. Web API中的常见HTTP动词
GET – 读取数据
POST – 创建新数据
PUT – 替换整个资源
PATCH – 更新部分资源
DELETE – 删除数据
🔹 SQL Server面试题
16. WHERE vs HAVING
WHERE: 在GROUP BY之前过滤行
HAVING: 在GROUP BY之后过滤组
17. SQL连接的类型
🔹 INNER JOIN – 返回两个表中的匹配行
🔹 LEFT JOIN – 左表的所有行+右表的匹配行
🔹 RIGHT JOIN – 右表的所有行+左表的匹配行
🔹 FULL OUTER JOIN – 当任一表中有匹配时的所有行
🔹 CROSS JOIN – 笛卡尔积(每个组合)
18. DELETE vs TRUNCATE
|
特性
|
DELETE
|
TRUNCATE
|
|
日志
|
记录每行
|
最少日志
|
|
WHERE
|
允许
|
不允许
|
|
回滚
|
是
|
不保证
|
19. 什么是存储过程?
存储过程是存储在数据库中的预编译SQL语句集,用于执行特定任务。
- CREATE PROCEDURE GetEmployees
- AS
- BEGIN
- SELECT * FROM Employees
- END
20. SQL中的索引是什么?
索引是一种技术,用于通过减少数据库引擎必须扫描的数据量来加速SQL表中的数据检索。
🔍 索引类型:
🔸 聚集索引 – 根据键值对表中的数据行进行排序和存储。每个表只有一个。
🔸 非聚集索引 – 将索引与实际表数据分开存储。每个表允许多个。
🔸 唯一索引 – 确保索引键中的所有值都是唯一的。
🔸 全文索引 – 用于搜索基于文本的列(例如,LIKE,CONTAINS)。
💡 快速提示:
🎯 在解释时要清晰自信。
🛠️ 练习真实的SQL查询和索引场景。
📚 定期复习这些问题以在面试前保持敏锐。
📌 专业提示:
在处理大型数据集时,索引可以显著提高性能——特别是在WHERE、JOIN和ORDER BY查询上。
