软件工程师笔试题1

这篇博客总结了C#编程的一些基础和面试常见知识点,包括数组、字符串、引用类型、构造函数、面向对象特性、数据库交互、索引类型、反射、集合类和访问修饰符的使用等。还讨论了C#中的const和readonly区别,以及private、protected、public、internal的访问权限。同时介绍了C++程序的输出结果,涉及运算符优先级和赋值规则。

1、以下代码的输出结果是(4)。
charvar[]
inttet(charvar[])
{
returnizeof(var);
}
解析:因为var[]等价于某var,已经退化成一个指针了,所以大小是4。

2、下列排序方法中,属于稳定的排序方法的是(A)。
A、直接选择排序 B、堆排序 C、希尔排序 D、快速排序
解析:稳定性是指如果在待排序的表中含有多个码值相同的记录,经过排序后,这些记录的相对次序不变,则这种排序方法是稳定的,否则是不稳定的。B、C、D均存在不相邻元素之间位置的比较交换,均是不稳定的。

3、下列选项中,©是引用类型。
A、enum类型 B、struct类型 C、String类型 D、int类型
解析:string是System.String的简写,string实质是一个类,string类型是一个比较特殊的引用类型。选C。

4、下列关于构造函数说法不正确的是(C)。
A、构造函数必须与类同名 B、构造函数可以省略不写
C、构造函数必须有返回值 D、在构造函数中可以对类中的成员进行初始化
解析:构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的。

5、如果将窗体的FormBoderStyle设置为None,则(B)。
A、窗体没有边框并不能调整大小 B、窗体没有边框但能调整大小
C、窗体有边框但不能调整大小 D、窗体是透明的

6、下面关于XML的描述错误的是(D)。
A、XML提供一种描述结构化数据的方法
B、XML是一种简单、与平台无关并被广泛采用的标准
C、XML文档客承载各种信息
D、XML只是为了生成结构化文档

7、.NET Framework通过什么与COM组件进行交互操作?(C)
A、Side By Side B、Web Service C、lnterop D、Plnvoke

8、以下哪个是可以变长的数组?(D)
A、Array B、String[] C、String[N] D、ArrayList
解析:其中ArrrayList是“可变长的数组”,这种“可变长的数组”成为“动态数组”,相对于定长的静态数组,简称数组。

9、面向对象的重要特征包括哪些方面?(ABCD)
A、抽象 B、封装 C、继承 D、多态
解析:封装,将对象封装成一个高度自治和相对封闭的个体,对象属性有这个对象自己的方法来读取和改变。即,将复杂模块或系统的逻辑实现细节隐藏,让使用者只需要关心这个模块或系统怎么使用,而不用关心这个模块或系统是怎么实现的。继承,在定义和实现一个类的时候,可以在一个已经存在的类的基础上进行,把这个已经存在的类所定义的内容作为自己的内容,并且可以接进行修改和添加新的内容。抽象就是找出一些事物的相似和共性,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处,并且会忽略与当前主题和目标五官的那些方面,将注意力集中在与当前目标有关的方面。多态指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)。
原文链接:https://www.cnblogs.com/Tibbers/p/12952557.html

10、.ADO.NET 中的五个主要对象:Connection对象;Command对象;DataAdapter对象;DataSet对象;DataReader对象。

11、请介绍一下SQL Server中聚簇类索引和非聚簇类索引的区别:
(1)聚集索引一个表只能有一个,非聚集索引一个表可以存在多个;
(2)聚集索引存储记录是物理上连续存在,物理存储按照索引排序;而非聚集索引是逻辑上的连续,物理存储并不连续,物理存储不按照索引排序;
(3)聚集索引查询数据比非聚集索引速度快,插入数据速度慢(时间花费在「物理存储的排序」上,也就是首先要找到位置然后插入);非聚集索引反之;
(4)索引是通过B+Tree的结构来描述的,聚集索引的叶节点就是数据节点,而非聚集索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。
(原文链接:https://blog.youkuaiyun.com/qq_33246702/article/details/107148549)

12、在ASP.NET MVC中,一个合法的Action方法必须满足的要求为(ABDE).
A、所有的Action方法所在的类必须继承抽象类ConctrollerBase
B、必须是一个共有的实例方法
C、方法返回值不能为void
D、方法不能带有泛型参数
E、方法不能带有输出和引用参数

13、以下说法错误的是(BCDEF)。
A、需求分析过程中,需求项应该清楚明确、可实现、可测试
B、可以直接根据需求做编码,不需设计
C、程序员只需要完成编码工作,所有的测试工作由测试人员完成
D、为了增加用户的满意度,可以在开发的过程中增加用户没有提出的功能
E、项目经理分配任务后,只需要在任务结束后检查任务完成情况。任务的质量和进度情况由任务接收者负责
F、原型开发只需要一个简单的UI即可,无需考虑细节和用户体验

14、以下有关泛型的描述中正确的是(ABC)
A、类、接口、函数都可以是泛型的
B、泛型是强类型
C、泛型集合与非泛型集合相比避免了装箱、拆箱操作
D、泛型类可以有约束,泛型方法不能有约束

15、反射可以完成以下任务(ABCDEF)
A、枚举类型的成员 B、实例化新对象 C、查找类型信息 D、查找程序集信息
E、检查应用于某种类型的自定义特征 F、创建和编译新程序集

16、关于集合,以下说法正确的是(ABD)。
A、Dictionary类适合存键值对,但不允许key重复
B、Queue适合组织先进先出数据
C、Stack适合组织先进先出数据
D、LinkedList在内部维护了一个双向的列表,在中间插入或删除元素比List快

17、以下说法正确的是(ABC)。
A、可以使用匿名方法来定义委托
B、Lambda表达式实际上是匿名方法
C、时间(Event)是委托类型
D、委托只能定义在类中

18、在.NET体系结构中,以下说法正确的是(BDEF)。
A、一个进程不能同时运行多个应用程序
B、一个进程能同时运行多个应用程序域
C、静态成员能在应用程序域之间共享
D、ASP.NET为每个应用程序创建了一个应用程序域
E、只有继承了MarshalByRefObject的类才能跨应用程序域访问
F、应用程序域可以独立加载和卸载程序集

19、C#中的委托是什么?事件是不是一种委托?事件和委托有什么关系?
答:委托可以理解为指向一个函数的指针。事件不是委托。事件的逻辑都包装为委托。
解析:委托本质上是一种“方法接口”,它相当于C/C++中的函数指针,当然它比函数指针安全,在C#中通常用于事件处理。与JAVA相比,可以避免使用大量小粒度的匿名类。(不过,也许微软就是使用类似于JAVA的匿名类实现委托的,只不过从字面上看起不是那么回事罢了,谁知道呢?)
事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托(一种“方法接口”)。实际上,如果你处理自定义的事件,就像JAVA中那样用接口实现也是可以的,不过这么做在C#一般没有什么特别的好处。

20、简述const和readonly的区别。
答:(1)const是静态常量,readonly是动态常量;
(2)const是编译时常量;readonly是运行时常量;
(3)相比readonly,const较高效;
(4)相比const,readonly较灵活。
原文链接:https://blog.youkuaiyun.com/PangPangPig123/article/details/114848262

21、简述private、protected、public、internal修饰符的访问权限。
答:private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。

22、What does the following program print?

#include
#include
using namespace std;

void print(vector);

int main(int argc, char* argv[])
{
int x=2,y,z;
x *= (y=z=5);
cout << x << endl;
z=3;
x (y=z); //y=z=3,x未变
cout << x << endl;
x = (y
z); //y==z为真,
cout << x << endl;
x = (y&z);
cout << x << endl;
x = (y&&z);
cout << x << endl;
y = 4;
x = (y|z);
cout << x << endl;
x = (y||z);
cout << x << endl;

return 0;
}

answer:10,10,1,3,1,7,1

注:仅供参考!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值