前言
面试是应聘一个工作岗位的环节,来考察一个人的工作能力与综合素质。在应聘C#程序员或与C#相关岗位时,我们都会被问到一些与.NET、C#、数据库、业务知识或编程思想等问题。本文列举一些问题及提供参考答案,题目(四)。
题目
91、什么是SQL注入,如何预防?请举例说明。
参考答案:SQL 注入是一种攻击方式,将恶意代码插入到字符串中,然后将该字符串传递到SQL语句中进行分析和执行。主要形式包括直接将代码插入到与 SQL 命令串联在一起并使其得以执行的用户输入变量。
示例:
SELECT * FROM OrdersTable WHERE ShipCity = 'Redmond';drop table OrdersTable--'
可采用下列一写方法来预防 :
1、验证所有输入。始终通过测试类型、长度、格式和范围来验证用户输入;如果可能,拒绝包含以下字符的输入。
输入字符 | 在 SQL 中的含义 |
---|---|
; | 查询分隔符。 |
' | 字符数据字符串分隔符。 |
-- | 注释分隔符。 |
/* ... */ | 注释分隔符。服务器不对 /* 和 */ 之间的注释进行处理。 |
Xp_ | 用于目录扩展存储过程的名称的开头。 |
2、使用类型安全的 SQL 参数。
3、在存储过程中使用参数化输入。
4、在动态 SQL 中使用参数集合。
92、在C#中如何取消一个窗体的关闭
参考答案:在FormClosing事件中用e.Cancel=true;
private void UserForm_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
e.Cancel = true;
}
catch
{
}
}
93、C#可否对内存进行直接的操作?
参考答案:默认情况下C#不可直接对内存进行操作。不过,可以通过不安全代码( unsafe )关键字的方式进行直接内存操作。
94、写出一条Sql语句:取出表Student中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的)
参考答案:下面二条语句可以参考
select top 10 * from Student where id not in (select top 30 id from Student)
select top 10 * from Student where id >(select max(id) from (select top 30 id from Student ) as A)
95、维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么?
参考答案:触发器是一种特殊类型的存储过程,当数据库表上的数据发生变化时自动执行。自写业务逻辑是指在应用程序层面处理数据的完整性和一致性。
建议使用自写业务逻辑维护数据库的完整性和一致性,因为写业务逻辑具有灵活编写和调整、性能优化、易于调试的优点。虽然会使代码重复或复杂,数据延迟。
96、什么是事务?什么是锁?
参考答案:事务是由一组SQL语句组成的数据库操作的基本单位,执行结果要么全部成功,要么全部失败。事务具有原子性、一致性、隔离性、持久性四个特性。
锁是数据库用来控制并发访问的一种机制,含共享锁、排他锁、更新锁、意向锁几种类型。
97、什么是索引,有什么优点?
参考答案:SQL索引是数据库中的一种数据结构,能加快数据检索速度。
索引具有提高查询速度、维护数据排序、优化联接操作、支持唯一性约束、减少数据的物理I/O操作几个优点。
98、视图是什么?游标是什么?
参考答案:视图是一种虚拟的表,具有和物理表相同的功能。游标是一种数据库查询结果的指针,它允许用户逐行访问查询结果。
99、什么是SQL存储过程?有什么优点?
参考答案:存储过程是一组完成特定功能的SQL语句,通过指定的名称来调用。存储过程可以接受参数,也可返回结果。它具有提升性能、代码复用、安全性、易于维护、动态执行、错误处理的优点。
100、什么是SQL触发器
参考答案:触发器是一种特殊类型的存储过程,当数据库表上的数据发生变化时自动执行。
101、请编程实现一个冒泡排序算法
参考答案:冒泡排序是一种简单的排序算法。重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
public void BubbleSort(int[] arrayList)
{
int temporary;
for (int j = 0; j <= arrayList.Length - 2; j++)
{
for (int i = 0; i <= arrayList.Length - 2; i++)
{
if (arrayList[i] > arrayList[i + 1])
{
temporary = arrayList[i + 1];
arrayList[i + 1] = arrayList[i];
arrayList[i] = temporary;
}
}
}
}
// 使用
int[] arraySort = { 20, 66, 50, 19, 22, 41, 90 };
this.BubbleSort(arraySort);
102、XML 与 HTML 的主要区别
参考答案:XML(是可扩展标记语言)与 HTML(超文本标记语言)都是用于描述数据和文档结构的标记语言,但它们有着本质的区别和不同的用途。
HTML是为展示数据而设计的,而XML是为描述和传输数据而设计的。HTML有固定的标签集,而XML允许自定义标签。HTML关注数据的表现,XML关注数据的结构和内容。
103、什么是SOAP,有哪些应用
参考答案:是一种基于XML的简单对象访问协议( Simple Object Access Protocol),主要用于网络上交换结构化信息。
104、简术XML技术及其应用
参考答案:XML 是可扩展标记语言(Extensible Markup Language)用于传输和存储数据。主要应用于数据交换、Web 服务、配置文件、数据查询等方面。
105、什么是 ApplicationPool
参考答案:Application Pool(应用程序池)是微软IIS中的一个概念,用于隔离和管理Web应用程序的运行环境。
106、给定表 Student 中有两个字段 ID(表示更新的事务号)、LastUpdateDate(示更新时的服务器时间)使用一句SQL语句获得最后更新的事务号。
参考答案:
select id from Student where LastUpdateDate = (select max(LastUpdateDate) from Student)
107、描述.NET 中类(class)与结构(struct)的异同?
参考答案:类可以被实例化,属于引用类型,是分配在内存的堆上的,结构属于值类型,是分配在内存的栈上的。
108、float f=-103.75F; int i=(int)f; i的值是多少
参考答案:-103
109、C# 中的注释类型有哪些
参考答案:C# 中有单行注释、多行注释、XML 注释 三种类型的注释。
110、在静态类中能使用 this 吗?
参考答案:不能。this 不能与静态类一起使用,因为静态类中只能使用静态变量和静态方法。
111、C#中的string和StringBuilder的区别
参考答案:字符串是不可变的对象,改变字符串时,是清除后重新赋值;StringBuilder 是一个可变对象,追加或替换改符串时创建一个新实例。
112、continue 与 break 关键字的作用
参考答案:在 C# 的循环中使用 continue 和 break 语句。使用 break 语句,中断循环执行,而使用 continue 语句,中断循环的一次迭代。
113、什么是依赖注入,如何实现?
参考答案:依赖注入是一种设计模式。它不是直接在另一个类(依赖类)中创建一个类的对象,而是将对象作为参数传递给依赖类的构造函数。
实现依赖注入的方式有构造函数注入、属性注入、方法注入、接口注入。
114、什么是数组?解释一维和多维数组。
参考答案:数组是存储相同类型值的集合。C# 有一维数组、多维数组、交错数组。一维数组是线性数组,多维数组也称为矩形数组,错数组就像一个嵌套数组,其中交错数组的每个元素本身就是一个数组。
// 一维数组
int[] marks = new int[3] { 20, 35, 78 };
// 多维数组
int[,] numbers = new int[3, 2] { { 1, 5 }, { 2, 3 }, { 3, 4 } };
115、HTTP 中 GET 和 POST 的区别
参考答案:GET 与 POST 主要在用途、数据传输方式、安全性等方面有着区别。
用途:GET 通常用于请求服务器上的数据;POST 通常用于向服务器提交数据。
数据传输方式:GET 请求参数附加在URL之后,通常是键值对的形式;POST 请求参数包含在请求体中。
安全性:GET 参数在URL中直接暴露,安全性较低;POST 参数在请求体,不会直接暴露,相对更安全
数据大小:GET 不适合传输大量数据;POST 可以传输更大量的数据。
116、设计模式有哪些
参考答案:有23种设计模式,分别是创建型模式(工厂模式、抽象工厂模式、单例模式、原型模式等)、结构型模式(代理模式、外观模式、组合模式、装饰器模式、适配器模式等)及行为型模式(观察者模式、策略模式、状态模式、命令模式、访问者模式等)。
117、实现一个单例模式Singleton
参考答案:
public class Log
{
// 实现线程锁
privatestatic readonly object _lock = new object();
//
privatestatic volatile Log _instance;
///<summary>
///提供一个静态的公有方法,加入双重检查代码,解决线程安全问题,同时解决懒加载问题。
///</summary>
publicstatic Log Instance
{
get
{
if(_instance == null)
{
//
lock(_lock)
{
// 双重检查
if(_instance == null)
{
_instance = new Log();
}
}
}
return _instance;
}
}
///<summary>
///构造器私有化
///</summary>
privateLog()
{
}
}
118、WebAPI和WebService的区别
参考答案:WebAPI用的是http协议,WebService用的是SOAP协议。WebAPI无状态,相对WebService更轻量级。WebAPI 支持如GET 、POST 等HTTP操作。
119、switch语句控制表达式可以是哪几种数据类型?
参考答案:Switch语句控制表达式所允许的数据类型为:整数类型、字符类型、字符串类型或者枚举类型,可以能够隐式转换成上述类型的其他类型。
120、HTTP定义的基本的与服务器交互的方法有
参考答案:HTTP定义了4种与服务器交互方法,分别是:GET、POST、PUT、DELETE。
小结
以上是30个C#面试题目,后续继续提供一些问题及参考答案,敬请关注后续内容。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » C#面试题目含参考答案(四)
发表评论 取消回复