欢迎关注公众号:“Java元空间” ,回复“1”,获取本系列PDF,大厂面试资料。这里有Java、SQL、大厂面试经验、面试题,欢迎大家关注交流
1. 线程与进程的区别
进程是系统进行资源分配和调度的一个独立单位,线程是CPU调度和分派的基本单位,线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
进程和线程的关系:
1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
2) 资源分配给进程,同一进程的所有线程共享该进程的所有资源。
3)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
4)线程是指进程内的一个执行单元,也是进程内的可调度实体。
线程与进程的区别:
5)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。
6) 系统开销:在创建或撤销进程的时候,由于系统都要为之分配和回收资源,导致系统的明显大于创建或撤销线程时的开销。但进程有独立的地址空间,进程崩溃后,在保护模式下不会对其他的进程产生影响,而线程只是一个进程中的不同的执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但是在进程切换时,耗费的资源较大,效率要差些。
2. 重载和重写的区别?
重载: 发生在同一个类中,方法名必须相同,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准),返回值类型、访问修饰符可以不同,发生在编译时。
重写: 发生在父子类中,方法名、参数列表必须相同,是父类与子类之间的多态性,实质是对父类的函数进行重新定义。返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为 private 则子类就不能重写该方法。
3.Java 构造方法能否被重写和重载?
重写是子类方法重写父类的方法,重写的方法名不变,而类的构造方法名必须与类名一致,假设父类的构造方法如果能够被子类重写则子类类名必须与父类类名一致才行,而父类与子类的类名是不能一样的,所以 Java的构造方法是不能被重写的。而重载是针对同一个类的,同一个类可以有参数不同的同名方法,所以构造方法可以被重载。