C#面试题目含参考答案(四)

前言

面试是应聘一个工作岗位的环节,来考察一个人的工作能力与综合素质。在应聘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#面试题目,后续继续提供一些问题及参考答案,敬请关注后续内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用谷歌Gemini免费批量生成微信公众号图书带货文章

谷歌Gemini 的api现在是免费的&#xff0c;功能很强大。可以在其官网简单几步操作申请到API&#xff1a;https://ai.google.dev/pricing 以上是一些Excel表格中的图书名称&#xff0c;现在要通过谷歌Gemini来批量生成这些图书的带货推广文章。 ChatGPT中输入提示词&#xff1a…

NVIDIA GPU参数

NVIDIA作为全球领先的GPU制造商&#xff0c;其产品广泛应用于深度学习、机器学习、高性能计算&#xff08;HPC&#xff09;和图形计算等领域。以下是NVIDIA一系列GPU的性能参数概述&#xff1a; V100 Tensor Core GPU V100是NVIDIA的一款高性能GPU&#xff0c;专为深度学习、机…

java对word文档预设参数填值并生成

目录 &#xff08;1&#xff09;定义word文档模板 &#xff08;2&#xff09;模板二次处理 处理模板图片&#xff0c;不涉及图片可以跳过 处理模板内容 &#xff08;3&#xff09;java对word模板填值 &#xff08;4&#xff09;Notepad的XML Tools插件安装 工作上要搞一个…

什么是服务器硬盘?

什么是服务器硬盘呢&#xff1f; 服务器硬盘顾名思义&#xff0c;指的就是在服务器上所使用的硬盘&#xff0c;如果服务器是数据网络中的核心部分&#xff0c;那么服务器硬盘则是指数据网络核心的数据仓库&#xff0c;其中所有的软件应用与用户数据信息都是存储在服务器硬盘当中…

C#与工业自动化结合还有搞头吗?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c#的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;当然有搞头&#xff01;C#是一…

Java 8 新特性:Lambda表达式让你的代码焕然一新——掌握它,让编程变得轻松又高效!

前言 Java 8 是 Java 发展史上的一次重要里程碑。作为企业级开发语言&#xff0c;它在性能和功能上做了巨大的提升。这其中&#xff0c;Lambda表达式是一个关键的新特性&#xff0c;它为 Java 语言带来了函数式编程的概念。本篇文章将深入探讨Lambda表达式&#xff0c;并结合热…

中断变轮询的一种机制

前言 MCU中断嵌套中断很容易引起问题&#xff0c;例如我们在MCU中引入串口shell&#xff0c;封装一些指令&#xff0c;如果这些指令中需要调用其他中断&#xff0c;例如I2C发送中断等&#xff0c;就很容易引起问题&#xff0c;这个时候我们就需要搞一个缓冲机制 思考 那么应…

element 问题整合

没关系&#xff0c;凡事发生必有利于我 文章目录 一、el-table 同级数据对齐及展开图标的位置问题二、el-table 勾选框为圆角及只能勾选一个 一、el-table 同级数据对齐及展开图标的位置问题 element 官方提供的扩展tree型数据在表格里默认是靠左边对齐&#xff0c;项目需求需要…

超越边界:探索深度学习的泛化力量

深度学习的泛化能力 一. 简介1.1 深度学习的定义1.2 什么是泛化能力1.3 深度学习模型的泛化能力1.4 提升深度学习模型的泛化能力 二. 泛化能力的重要性2.1 深度学习中泛化能力的作用2.1.1 防止过拟合2.1.2 处理噪声和不完整数据2.1.3 对于数据分布的变化具有适应性 2.2 泛化能力…

Gitlab合并代码并解决冲突演示

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【SQL】数据操作语言(DML) - 删除数据:精细管理数据的利刃

目录 前言 DELETE语句的基础使用 删除指定记录 清空表与删除表数据的区别 注意 前言 在数据库管理的日常工作中&#xff0c;数据的删除是一项需要格外小心的操作&#xff0c;因为一旦数据被删除&#xff0c;往往难以恢复。数据操作语言(DML)中的DELETE语句&am…

景区智能厕所系统让旅游更便捷、更舒适

在旅游业蓬勃发展的今天&#xff0c;游客对于旅游体验的要求越来越高&#xff0c;而景区的基础设施建设也在不断创新和完善。其中&#xff0c;景区智能厕所系统的出现&#xff0c;无疑为游客带来了更加便捷、舒适的旅游体验。 一、智能厕所系统首先体现在其精准的定位和引导功能…

20个你必须知道的Linux小命令

20个你必须知道的Linux小命令 Linux系统强大的命令行工具让我们可以高效地管理和监控系统。本文将介绍20个分门别类的小命令,它们的安装方式和使用技巧,希望能提升你的工作效率。 系统监控 1. htop 简介:htop 是一个交互式的进程查看器,比 top 更友好且功能更强大。 特…

three.js 第六节 - 纹理以及贴图【.hdr文件(hdr贴图)】- 色彩空间

素材 这是素材 更多素材、案例、项目 好几个G一共&#xff0c;加我q178373168&#xff0c;60大洋拿走 源码 源码 // ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls…

C# 判断值是否在枚举里

你还在代码里面通篇通过数字的定义类型。比如type为1 表示xx,type为2 表示yy吗&#xff1f;然后程序里面通过数字1和2来判断吗&#xff1f;比如下面类似的代码&#xff1a; if(type1){ //.... } else if(type2){ //... } else if(type3){ //... } 老鸟们一般都会用枚举来定义…

MySQL索引,事务

一.MySQL索引介绍 索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址。在数据十分大的时候&#xff0c;索引可以大大加快查询的速度。这是因为使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是先通过索引表找到该行数…

【LeetCode 274】H指数

1. 题目 2. 分析 这题没啥难度&#xff0c;需要熟练运用Python API。 sort(reverseTrue)可以用于排序List&#xff0c;并且倒序排序。 3. 代码 class Solution:def hIndex(self, citations: List[int]) -> int:citations.sort(reverseTrue)res 0for idx,cite in enume…

前端面试题(十)答案版

1. HTTPS 一次会发送几次请求? HTTPS 一次会发送至少 2 次请求: - 第一次是客户端发送 HTTP 请求,服务器返回 HTTP 状态码 301 或 302,要求客户端访问 HTTPS。 - 第二次是客户端根据重定向请求,发送 HTTPS 请求,并完成 SSL/TLS 握手等流程。 2. 一个搜索框,多个页面共用,但每个…

动态规划2

目录 121 买卖股票的最佳时机 打家劫舍 62 不同路径 64 最小路径和 53 最大子数组和 &#xff08;动归 普通数组部分&#xff09; 152 乘积最大子数组 300 最长递增子序列 1143 最长公共子序列 72 编辑距离 121 买卖股票的最佳时机 给定一个数组 prices &#xff0c;…

【C++】 ubuntu下获取屏幕尺寸、分辨率

1. 给/dev/fb0权限 sudo chmod 0777 /dev/fb0 注意&#xff1a;不执行这一条权限&#xff0c;无法获取任何数据 2. 获取屏幕尺寸 int fd; struct fb_var_screeninfo screenInfo; fd open("/dev/fb0",O_RDWR); ioctl(fd,FBIOGET_VSCREENINFO,&screenInfo); pr…