广州某公司软件工程师面试题
2023-06-29
1.抽象类和接口有什么异同?10分
答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。
2.结构和类有什么异同?10 分
答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。
结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,可以创建,没有析构函数,不可以用abstract和sealed,没有protected修饰符,可以不用new初始化。
如何选择使用结构还是类:
a) 堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些
b) 结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。
c) 在表现抽象和多级别的对象层次时,类是最好的选择
d) 大多数情况下该类型只是一些数据时,结构是最佳的选择
3.有根粗细不一的绳子有A,B两端,从A端烧到B端的时间是一个小时,从B端烧到A端也是一个小时 .但从中间烧到A端或是B端不是半个小时.
给你两跟绳子和一个打火机 怎么样得到45分钟?15分
答:两根绳子同时点,只不过,一根两头一起点,一根只点一个头,当两头点的烧玩时,花掉30分钟,再把另一根绳子的另一头也点燃,这样它烧玩花掉的时间就是15分钟,两个时间加起来就是45分钟。
4.有一个数据库中的两个表(具体的记不太清楚)
1).再建两个表 10分
2).通过建的两个表查询 10分
3).两表查询 10分
4).两表复杂查询 15分