1、
启动一个线程是用run()还是start()?
答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状
态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()
方法可以产生必须退出的标志来停止一个线程。
2、
接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可
继承实体类(concrete class)?
答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承
实体类,但前提是实体类必须有明确的构造函数。
3、
构造器Constructor是否可被override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载
Overloading。
4、
是否可以继承String类?
答:String类是final类故不可以继承。
5、
.try{}里有一个return语句,那么紧跟在这个try后的finally {}里的code会
不会被执行,什么时候被执行,在return前还是后?
答:会执行,在return前执行。
6、
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和
case语句的参数应该是 int、 short、 char 或者 byte。long,string 都不
能作用于swtich。
7、
abstract的method是否可同时是static,是否可同时是native,是否可同时是
synchronized?
答:都不能。
8、
List,Set, Map是否继承自Collection接口?
答:List,Set是Map不是
9、
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是
equals()?它们有何区别?
答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。
C#提供值类型和引用类型,值类型存储在栈上,故用==判断是直接判断其值是否相等,因为值类型不存在堆中的数据,因此值类型的Equals也是判断数据。即,对于值类型而言,==与Equals相同,均是判断其值是否相等。
对于引用类型而言,其栈中存储的是对象的地址,那么==就是比较两个地址是否相等,即是否指向同一个对象;Equals函数则是比较两个对象在堆中的数据是否一样,即两个引用类型是否是对同一个对象的引用。
String是引用类型,但是按照值类型操作
10、
in out和ref
in,函数中只能读取不能修改
out,函数中不能读取只能修改
ref,函数中可读取,可修改
11、
协变与逆变
协变是变的更具体
逆变是变的更抽象
12、sleep和wait的区别
本文较为详细的分析了C#中sleep和wait的区别。分享给大家供大家参考。具体分析如下:
sleep和wait都是使线程暂时停止执行的方法,但它们有很大的不同。
①. sleep是线程类Thread 的方法,它是使当前线程暂时睡眠,可以放在任何位置。
而wait是Object类的方法,它是使当前线程暂时放弃对象的使用权进行等待,必须放在同步方法或同步块里。
②. Sleep使用的时候,线程并不会放弃对象的使用权,即不会释放对象锁,所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程也是无法访问的。
而wait是会释放对象锁的,就是当前线程放弃对象的使用权,让其他的线程可以访问。
③. 线程执行wait方法时,需要另一个线程调用notify进行唤醒。
而sleep只是暂时休眠一定时间,时间到了之后,自动恢复运行,不需另外的线程唤醒。
13、
shorts1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式
转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正
确。
14、
shorts1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式
转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正
确。
15、
进程和线程的区别?
答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个
进程可以有多个线程,这些线程共享这个进程的资源。
16、
堆和栈的区别?
答: 栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。 值类型
堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆
上。 引用类型
17、
成员变量和成员函数前加static的作用?
答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分
别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数
负责这种统计的动作。不用new