JAVA基础:

1、static关键字是用来干什么的,static修饰的方法里面可以使用非静态的成员变量吗,为什么呢
static关键字作用 方便在没有创建对象的情况下来进行调用(方法/变量)
被static静态修饰的成员方法,成员变量,成员内部类都是随着类文件的加载而加载到方法区中,且只加载一次
在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用
2、private修饰的方法是否可以被子类覆盖
不能
private修饰的方法不能被继承
private(私有)只是本类访问,protected才是继承类
3、覆盖和重载有什么区别
1)  覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。
2)  覆盖只能由一对方法产生关系,重载是多个方法之间的关系。
3)  覆盖要求参数列表相同,重载要求参数列表不同。
4)  覆盖关系中,调用方法是根据对象的类型来决定;而重载关系是根据调用时的实参表与形参表来选择方法体的。
4、进程跟线程的区别
进程是程序的一次执行过程 ,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。
线程是进程的一部分
一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程
下面是抽象类比:

单CPU :一台单核处理器计算机 = 一个车间;
多CPU:一台多核处理器计算机 = 一座工厂;

进程 :一个车间 = 一个进程; (即一个运行的程序)
多进程 :一座工厂可以同时运行多个车间;
CPU和进程单CPU只能同时运行单个进程,多CPU可以同时运行多个进程

线程 :车间内一个工人 = 一个线程;
进程与线程一个进程可以包括多个线程
5、Java中创建线程有几种方式
a. 反思:讲完三种方式之后,应该深入对比各种方式的优劣性,拖时间,还显得我有深度,嗯
  创建多线程的两种方式
  1、继承Thread类
  2、实现Runnable接口
4、线程有那些状态
1. 新建(NEW):新创建了一个线程对象。
2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。

3.  运行(RUNNING) :可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。
4. 阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice 转到运行(running)状态。阻塞的情况分三种: 
(一). 等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。
(二). 同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
(三). 其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。
5. 死亡(DEAD):线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。
5、线程被中断跟被阻塞有什么区别
中断:设置线程中断不影响线程的继续执行,但是线程设置中断后,线程内调用了wait、jion、sleep方法中的一种, 立马抛出一个 InterruptedException,且中断标志被清除,重新设置为false。
堵塞:真正让线程停止下来  LockSupport.park(this);//阻塞当前线程
6、什么是死锁
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。

产生死锁的四个必要条件:

  • 互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。
  • 请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。
  • 不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。
  • 环路等待条件:在发生死锁时,必然存在一个进程--资源的环形链。

如何预防死锁?

  • 资源一次性分配:一次性分配所有资源,这样就不会再有请求了:(破坏请求条件)
  • 只要有一个资源得不到分配,也不给这个进程分配其他的资源:(破坏请保持条件)
  • 可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源(破坏不可剥夺条件)
  • 资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件)
7、JVM的场景下怎么去发现死锁
Jconsole查看死锁
Jstack查看死锁
8、Java中有哪些集合类
1.Java中的集合主要分为四类: 1、List列表:有序的,可重复的; 2、Queue队列:有序,可重复的; 3、Set集合:不可重复; 4、Map映射:无序,键唯一,值不唯一。
其中List,Set,Queue都是Collection(集合),其每个元素都是单独的一个对象,如List<String>,Set<Integer>等,String和Integer就是单独的一个对象。
而Map是一种图,其每个元素都是两个对象一一对应,如Map<Integer, String>中的Integer是键 (key),String是这个键所对应的值(value)。每个元素都是一对Integer和String
9、如何权衡使用有序数组还是无序数组
a. 有序数组是有查找需求。无序数组主要是插入删除方便。
b. 从时间复杂度角度分析查找效率
查找复杂度:有序数组O(log n) ,无序数组 O(n)
插入复杂度:有序数组O(n) ,无序数组 O(1)
10、Java垃圾回收的目的是啥
垃圾回收是在内存中中存在没有引用的对象或超过作用域的对象时进行垃圾回收,垃圾回收的目的是识别并且丢弃不再使用的对象来释放和重用资源。
11、程序中把一个对象的引用直接置为null,会立即触发垃圾回收吗
不会,在下一个垃圾回调周期中,这个对象将是被可回收的。
也就是说并不会立即被垃圾收集器立刻回收,而是在下一次垃圾回收时才会释放其占用的内存。
12、垃圾回收有串行收集器和吞吐量收集器,它们的区别是什么
吞吐量收集器bai使用并行版du本的新生代垃圾收集器,它用zhi于中等规模和大规模数据的应用程序。
而串行收集器对大多数的小应用(在现代处理器上需要大概100M左右的内存)就足够了。
13、throw和throws有什么区别
throws用在方法声明后面,跟的是异常类名,throw用在方法体内,跟的是异常对象名。
throws可以跟多个异常类名,用逗号隔开,throw只能抛出一个异常对象名。
throws表示抛出异常,由该方法的调用者来处理,throw表示抛出异常,由方法体内的语句处理。
throws表示出现异常的一种可能性,并不一定会发生这些异常,throw则是抛出了异常,执行throw则一定抛出了某种异常。
14、什么是servlet
Servlet(Servlet Applet),全称Java Servlet,是用Java编写的服务器端程序。而这些Servlet都要实现Servlet这个接口。其主要功能在于交互式的浏览和修改数据,生成动态Web内容。Servlet运行于支持Java的应用服务器中。
HttpServlet 重写doGet 和 doPost 方法或者你也可以重写service方法完成对get和post请求响应。
15、servlet生命周期有哪些
servlet 有良好的生存期的定义,包括如何加载、实例化、初始化、处理客户端请求以及如何被移除。这 个生存期由 javax.servlet.Servlet 接口的 init,service destroy 方法表达
Servlet被服务器实例化后,bai容器运du行其init方法zhi,请求dao到达时运行其service方法,service方法自动派遣运zhuan行与请求对应的shudoXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
16、cookie和session的区别

1、数据存放位置不同:
cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、安全程度不同:
cookie不是很安全,别人可以分析存放在本地的COOKIE并进COOKIE欺骗,考虑到安全应当使用session。
3、性能使用程度不同:
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
4、数据存储大小不同:
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。
5、会话机制不同
session会话机制:session会话机制是一种服务器端机制,它使用类似于哈希表(可能还有哈希表)的结构来保存信息。
cookies会话机制:cookie是服务器存储在本地计算机上的小块文本,并随每个请求发送到同一服务器。 Web服务器使用HTTP标头将cookie发送到客户端。在客户端终端,浏览器解析cookie并将其保存为本地文件,该文件自动将来自同一服务器的任何请求绑定到这些cookie。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值