【C#面试试题详解】 1. `is` 和 `as` 的区别: - `is` 关键字用于检查一个对象是否可以转换为特定类型。它返回一个布尔值,如果对象是目标类型或其派生类型,则为 `true`,否则为 `false`。 - `as` 关键字用于安全地将一个对象转换为指定类型,如果转换成功,它会返回转换后的引用,否则返回 `null`。这避免了转换异常。 2. .NET 中函数传递参数的方式: - 值传递:参数的副本被传递给方法,方法内部对参数的修改不会影响原始值。 - 引用传递:参数的引用被传递,方法内部可以直接修改原始值。 - 输出参数:使用 `ref` 或 `out` 关键字,类似于引用传递,但 `out` 参数必须在方法内部初始化。 3. CLR(Common Language Runtime): - .NET 框架的核心组件,负责程序的执行环境,包括内存管理、类型安全、异常处理和多线程管理等。 4. `error` 和 `exception` 的区别: - `error` 通常指运行时错误,如资源耗尽或硬件故障,这些错误无法恢复,会导致应用程序终止。 - `exception` 是程序中的异常情况,可以被捕获并处理,允许程序优雅地处理错误。 5. 线程同步方法(Java): - synchronized 关键字:用于方法或代码块,确保同一时间只有一个线程可以访问共享资源。 - Lock 接口(如 ReentrantLock):提供更细粒度的锁控制。 - volatile 关键字:确保多线程环境下变量的可见性和有序性。 - Thread.join():等待其他线程结束。 - CountDownLatch、Semaphore、CyclicBarrier 等并发工具类。 6. 堆和栈的区别: - 栈:存储局部变量、方法参数、方法返回地址等,先入后出(LIFO),速度快,容量有限。 - 堆:主要用于存放对象实例,支持动态大小分配,内存回收复杂,速度相对较慢。 7. SQL 注入及防止方法: - SQL 注入是通过输入恶意 SQL 语句来获取未经授权的数据或控制数据库服务器。 - 防止方法包括:使用预编译语句(参数化查询)、输入验证、存储过程、ORM 框架等。 8. 设计模式: - 工厂模式:提供创建对象的接口,使代码无需关心具体创建的对象类型。 - 单例模式:保证一个类只有一个实例,并提供全局访问点。 【编码实现】 1. C# 中的代理(delegate)定义与调用: ```csharp delegate void MyDelegate(string message); class Program { static void Main(string[] args) { MyDelegate myDel = new MyDelegate(HelloWorld); myDel("Hello World"); } static void HelloWorld(string message) { Console.WriteLine(message); } } ``` 2. 利用反射进行对象转换: ```csharp using System; using System.Reflection; public class Test { public int ID { get; set; } public string StudentNo { get; set; } public string StudentName { get; set; } // ... 其他属性 public static Exam.Student ConvertToExamStudent(Test.Student testStudent) { var examStudent = new Exam.Student(); foreach (var prop in typeof(Test.Student).GetProperties()) { PropertyInfo examProp = typeof(Exam.Student).GetProperty(prop.Name); if (examProp != null) examProp.SetValue(examStudent, prop.GetValue(testStudent)); } return examStudent; } } ``` 3. 三层架构实现学生考试成绩查询与修改: - UI 层:使用字符串或 XML 作为数据交换格式,如 JSON 或 XML,封装查询请求和接收响应。 - BLL 层:处理业务逻辑,调用 DAL 层接口,进行数据操作,并记录审计日志。 - DAL 层:负责数据库操作,实现分页查询(例如使用 Skip 和 Take 方法)和成绩修改。 具体代码实现涉及数据库操作和分页技术,这里不再详述,因为实际实现通常会涉及到具体的数据库连接和 ORM 框架,如 Entity Framework。在 BLL 中,可以使用 LINQ 或 ADO.NET 来执行 SQL 查询,同时记录审计日志到 Audit_log 表中。
剩余7页未读,继续阅读
- 粉丝: 1
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【全年行事历】团建活动计划表.xlsx
- 【全年行事历】团建行程安排表-xx山.xlsx
- 【全年行事历】团建活动策划方案.docx
- 【全年行事历】团建开销费用分析.xlsx
- 【全年行事历】团建活动物料清单.xlsx
- 【全年行事历】团建文化衫尺码统计表.xlsx
- 【全年行事历】团建医药箱常备药清单.docx
- 【全年行事历】小型公司活动全年活动行事历.xlsx
- 【全年行事历】员工野外拓展活动方案.docx
- 四足机器人机械结构设计PDF
- 06-公司团建活动申请表.docx
- 03-团建活动策划方案.docx
- 07-团建活动采购预算清单.xlsx
- 08-团建日程计划表.xlsx
- 09-财务公司月度团建支出表.xlsx
- T-SQL查询高级SQLServer索引中的碎片和填充因子word文档doc格式最新版本