1.线程和进程有什么区别?存在什么样的联系?
线程和进程都是操作系统中管理和执行程序的基本单位,但它们之间有本质的区别。
联系:一个进程可以创建多个线程,这些线程共享进程的资源,形成一个进程内的线程集合。进程是线程的容器,而线程是进程内部的执行单元。进程之间的通信大多通过管道、套接字、共享内存、信号量等,而线程之间的通信主要通过共享变量和同步原语(如互斥锁、条件变量)实现。
区别:1.进程拥有独立的地址空间和系统资源,彼此的资源互不影响。而同一进程内的线程共享进程的地址空间和资源。2.进程之间的调度和切换花销大,而线程相反。因为操作系统需要保存当前进程的状态,然后加载下一个进程的状态,而线程共享上下文。
2.谈谈抽象类和接口类
1.一个类可以实现多个接口类,但不能继承多个抽象类
2.接口的字段只能是static和final类型的,而抽象类没有这种限制
3.接口的成员类只能是public的,而抽象类的成员可以多种访问权限
3.二分法查找算法的前提条件是什么
数组排序
二分查询依赖于数组的有序性,它通过不断将查找区间减半来定位目标元素,因此数组必须事先排序。
4.Java中的基本数据类型
long、short、int、byte、char、boolean、float、double
5.说说对重写和重载的理解
1.重写(Override)——继承体系——实现一个与父类在方法声明上完全相同的方法
限制:1.子类方法的访问权限必须大于等于父类方法。
2.子类方法的访问类型必须是父类方法返回类型或者其子类型。
2.重载(Overload)——同一个类——方法名称相同,但参数类型、个数、顺序至少有一个不同
6.栈和堆的区别
1.栈(stack):主要为函数中基本类型的变量和对象引用变量分配内存,空间小,速度快,存储空间连续
2.堆(heap):主要为函数创建的对象分配内存,用new来实现,人为分配,空间大,速度慢,存储空间不连续。
7.==和equals的区别
1.双等号:比较值是否相等,作用于引用对象时,比较所指向对象的地址
2.equals:equals不能作用于基本数据类型的变量,equals继承Object类,比较的是否是同一个对象,如果没有重写,比较引用变量(String)所指向的对象的地址。
8.throw和throws的区别
1.throw:自己处理一个异常,通常使用try....catch块捕获处理异常。
2.throws:不对异常做任何处理而是将异常往上抛,简单来说,就是谁调用我,就抛给谁。
9.cookie和session的区别
1.cookie不是很安全,数据存放在浏览器上,单位cookie保存的数据不能超过4K。
2.session比较安全,它会在一定时间内保存在服务器上,但是随着访问增多,比比较占用服务器的性能。
10.final、finally、finalize的区别
1.final:用于声明方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
2.finally:是异常处理语句结构的一部分,表示总是执行,一定会执行。如果try里有一个return的语句,会在return的前面执行finall中的代码。
3.finalize:是Object类的方法,执行gc(垃圾回收处理机制)时会使用此方法。
11.this和super
1.this:指的是当前对象本身,可以用来访问本类的属性、方法、触发器,也可以用来区别局部变量和全局变量。
2.super:代表父类的引用,用于访问父类的属性,方法,主要用于子类和父类的属性和方法同名的情况下想直接调用父类的属性方法。
12.ArrayList和LinkedList
1.ArrayList底层是数组,适合随机查找,LinkedList底层是双向链表,适合删除和添加。
2.都实现了List接口,但是LinkedList额外实现了Deque接口,可以当队列使用。
13.内存溢出和内存泄漏
1.内存泄漏:是指程序在申请内存后,无法释放已经申请的内存空间,内存泄漏累计的后果是内存溢出。
2.内存溢出:指的是程序申请内存时,没有足够的内存供申请使用。
14.强、软、弱引用
1.强引用:Java永远不会回收这些对象,内存不足时抛出OutMemory错误也不会被回收。
2.软引用:当内存空间不足的时候,gc会回收软引用指向的对象
3.弱引用:弱引用遇到gc就回收,为了解决某些地方的内存泄露。
15.哈希表、数组、链表、二叉树
1.数组:存储空间连续,增删慢,查找快,插入效率低。
2.链表:存储空间不连续,插入便捷,删除快,查找效率很低。
3.二叉树:一个根节点和俩根互不相交的左子树和右子树。
4.哈希表:底层数据结构是数组,哈希表不能存储基本数据类型,存储的元素具有唯一性。
16.List,Set,Map
1.List:有索引,有序可重复,ArrayList与Vector是数组,前者线程不安全,后者线程安全。
2.Set:无索引,无序不可重复,Hashset无序,不重复且不能排序,TreeSet底层是红黑树。
3.map:key无序不重复,value可重复
17.Error与Exception的区别
1.Error表示程序本身难以处理的一种异常,比如内存溢出。
2.Exception:表示程序可以预见到的能处理的异常,可以捕获且可能恢复。
小结:
本人是一名大三在读的小萌新,最近在成都找实习,背过八股文,也面过几次试,深感找工作之艰难,以上的面试题,也只是众多面试题的一小部分都不到,希望在csdn上学到更多的东西,也希望变成别人口中的大佬。加油!!!