【面试】二、自己随机总结

一、多线程相关

1、java事件机制包括哪三个部分?分别介绍。

java事件机制包括三个部分:事件、事件监听器、事件源。

1、事件。一般继承自java.util.EventObject类,封装了事件源对象及跟事件相关的信息。

2、事件监听器。实现java.util.EventListener接口,注册在事件源上,当事件源的属性或状态改变时,取得相应的监听器调用其内部的回调方法。

3、事件源。事件发生的地方,由于事件源的某项属性或状态发生了改变(比如BUTTON被单击、TEXTBOX的值发生改变等等)导致某项事件发生。换句话说就是生成了相应的事件对象。因为事件监听器要注册在事件源上,所以事件源类中应该要有盛装监听器的容器(List,Set等等)。

2、为什么要使用线程池?

3、线程池有什么作用?

4、说说几种常见的线程池及使用场景。

newCachedThreadPool

  • 重用之前的线程
  • 适合执行许多短期异步任务的程序。
  • 调用 execute() 将重用以前构造的线程
  • 如果没有可用的线程,则创建一个新线程并添加到池中
  • 默认为60s未使用就被终止和移除
  • 长期闲置的池将会不消耗任何资源

newFixedThreadPool

  • 创建重用固定数量线程的线程池,不能随时新建线程
  • 当所有线程都处于活动状态时,如果提交了其他任务,
    他们将在队列中等待一个线程可用
  • 线程会一直存在,直到调用shutdown

newWorkStealingPool

  • 获取当前可用的线程数量进行创建作为并行级别
  • 使用ForkJoinPool
  • 使用一个无限队列来保存需要执行的任务,可以传入线程的数量,不传入,则默认使用当前计算机中可用的cpu数量,使用分治法来解决问题,使用fork()和join()来进行调用

newSingleThreadExecutor

  • 在任何情况下都不会有超过一个任务处于活动状态
  • 与newFixedThreadPool(1)不同是不能重新配置加入线程,使用FinalizableDelegatedExecutorService进行包装
  • 能保证执行顺序,先提交的先执行。
  • 当线程执行中出现异常,去创建一个新的线程替换之
    源码:

newScheduledThreadPool

  • 设定延迟时间,定期执行
  • 空闲线程会进行保留

通过源码可以看出底层调用了ThreadPoolExecutor,维护了一个延迟队列,可以传入线程数量,传入延时的时间等参数,下面给出一个demo

public static void main(String[] args) {
        ScheduledExecutorService pool = Executors.newScheduledThreadPool(5);
        for (int i = 0; i < 15; i = i + 5) {
            pool.schedule(() -> System.out.println("我被执行了,当前时间" + new Date()), i, TimeUnit.SECONDS);
        }
        pool.shutdown();
    }

执行结果

我被执行了,当前时间Fri Jan 12 11:20:41 CST 2018
我被执行了,当前时间Fri Jan 12 11:20:46 CST 2018
我被执行了,当前时间Fri Jan 12 11:20:51 CST 2018

五种线程池的适应场景

  1. newCachedThreadPool:用来创建一个可以无限扩大的线程池,适用于服务器负载较轻,执行很多短期异步任务。
  2. newFixedThreadPool:创建一个固定大小的线程池,因为采用无界的阻塞队列,所以实际线程数量永远不会变化,适用于可以预测线程数量的业务中,或者服务器负载较重,对当前线程数量进行限制。
  3. newSingleThreadExecutor:创建一个单线程的线程池,适用于需要保证顺序执行各个任务,并且在任意时间点,不会有多个线程是活动的场景。
  4. newScheduledThreadPool:可以延时启动,定时启动的线程池,适用于需要多个后台线程执行周期任务的场景。
  5. newWorkStealingPool:创建一个拥有多个任务队列的线程池,可以减少连接数,创建当前可用cpu数量的线程来并行执行,适用于大耗时的操作,可以并行来执行

5、线程池都有哪几种工作队列?

6、怎么理解无界队列和有界队列?

7、线程池中的几种重要的参数及流程说明。

二、网络编程相关

11、你怎么理解http协议?

12、说说http协议的工作流程。

13、http有哪些请求提交方式?

14、http中的200,302,403,404,500,503都代表什么状态?

http的各种请求状态码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sKB2tCi7-1596293359383)(file:///C:\Users\zy\AppData\Roaming\Tencent\QQTempSys%W@GJ$ACOF(TYDYECOKVDYB.png)]https://www.cnblogs.com/imxiu/p/3541951.html

15、http get和post有什么区别?

GET方式主要用于获取网络资源,POST方式主要用于表单提交。由于GET方式的参数是在地址栏中的,所以总是可见的,不是很安全,而且长度也有限制。而POST方式的参数是封装成实体之后发送给服务器的,是不可见的,相对比较安全,用户的敏感信息一般采用POST方式提交。

16、你怎么理解cookie和session,有哪些不同点?

90%程序员都没有完全答对Cookie和Session的区别

imghttps://m.toutiao.com/i6693986851193094664/?traffic_source=CS1114&in_ogs=1&utm_source=HW&source=search_tab&utm_medium=wap_search&prevent_activate=1&original_source=1&in_tfs=HW&channel=

Cookie 和 Session 有什么不同?

  • 作用范围不同,Cookie 保存在客户端(浏览器),Session 保存在服务器端。
  • 存取方式的不同,Cookie 只能保存 ASCII,Session 可以存任意数据类型,一般情况下我们可以在 Session 中保持一些常用变量信息,比如说 UserId 等。
  • 有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。
  • 隐私策略不同,Cookie 存储在客户端,比较容易遭到不法获取,早期有人将用户的登录名和密码存储在 Cookie 中导致信息被窃取;Session 存储在服务端,安全性相对 Cookie 要好一些。
  • 存储大小不同, 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie。

17、什么是web缓存?有什么优点?

18、什么是https,说说https的工作原理?

19、什么是http代理服务器,有什么用?

20、什么是虚拟主机及实现原理?

21、什么是Java虚拟机,为什么要使用?

22、说说Java虚拟机的生命周期及体系结构。

三、JVM虚拟机相关

8、什么是反射机制?

9、说说反射机制的作用。

10、反射机制会不会有性能问题?

image-20200708163517189

23、说一说Java内存区域。

24、什么是分布式系统?

25、分布式系统你会考虑哪些方面?

35、Java虚拟机中,数据类型可以分为哪几类?

36、怎么理解栈、堆?堆中存什么?栈中存什么?

image-20200708164206104

37、为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗?

38、在Java中,什么是是栈的起始点,同是也是程序的起始点?

image-20200708163821555

39、为什么不把基本类型放堆中呢?

image-20200708164109800

40、Java中的参数传递时传值呢?还是传引用?

image-20200708164131857

41、Java中有没有指针的概念?

42、Java中,栈的大小通过什么参数来设置?

43、一个空Object对象的占多大空间?

44、对象引用类型分为哪几类?

45、讲一讲垃圾回收算法。

46、如何解决内存碎片的问题?

47、如何解决同时存在的对象创建和对象回收问题?

48、讲一讲内存分代及生命周期。

49、什么情况下触发垃圾回收?

50、如何选择合适的垃圾收集算法?

51、JVM中最大堆大小有没有限制?

52、堆大小通过什么参数设置?

53、JVM有哪三种垃圾回收器?

54、吞吐量优先选择什么垃圾回收器?响应时间优先呢?

55、如何进行JVM调优?有哪些方法?

56、如何理解内存泄漏问题?有哪些情况会导致内存泄露?如何解决?

猜你喜欢

转载自blog.csdn.net/qq_41864648/article/details/107738200
今日推荐