Java真题汇总-32个java面试必考点 拉勾网

Java真题汇总

📝目录

java语言特性与设计模式

进程与线程的区别与联系

  1. 调度:线程是独立调度的基本单位,进程是拥有资源的基本单位。在同一进程中,线程的切换不会引发进程的切换;在不一样的进程中,进行线程切换,则会引发进程的切换。css

  2. 拥有资源:进程是拥有资源的基本单位,线程不拥有资源,但线程能够共享器隶属进程的系统资源。html

  3. 并发性:进程能够并发执行,并且同一进程内的多个线程也能够并发执行,大大提升了系统的吞吐量。java

  4. 系统开销:建立和撤销进程时,系统都要为之分配或回收资源,在进程切换时,涉及当前执行进程CPU环境的保存以及新调度的进程CPU环境的设置;而线程切换时只需保存和设置少许寄存器内容,所以开销很小,另外,因为同一进程内的多个线程共享进程的地址空间,所以这些线程之间的同步与通讯比较容易实现,甚至无须操做系统的干预。linux

  5. 通讯方面:进程间通讯须要借助操做系统,而线程间能够直接读/写进程数据段来进行通讯。web

相关连接: blog.csdn.net/chen134225/…面试

简单介绍一下进程的切换过程

  1. 切换页目录以使用新的地址空间segmentfault

  2. 切换内核栈和硬件上下文设计模式

切换会保存寄存器,栈等线程相关的现场,须要由用户态切换到内核态浏览器

相关连接: blog.csdn.net/c_121/artic…缓存

你常用哪些Linux命令,主要用来解决什么问题

  1. awk 一种处理文本文件的语言,是一个强大的文本分析工具

    相关连接: www.runoob.com/linux/linux…

  2. top 提供运行系统的动态实时视图

    相关连接: www.runoob.com/linux/linux…

  3. netstat 用于显示网络状态

    相关连接: www.runoob.com/linux/linux…

  4. grep 用于查找文件里符合条件的字符串

    相关连接: www.runoob.com/linux/linux…

  5. less 浏览文件

    相关连接: www.runoob.com/linux/linux…

  6. tail 查看文件的内容

    相关连接: www.runoob.com/linux/linux…

  7. Linux中cat、more、less、tail、head命令的区别

    相关连接: www.cnblogs.com/losbyday/p/…

为何TCP建连须要3次握手而断连须要4次

  1. TCP 三次握手

    相关连接: blog.csdn.net/laladebon/a…

  2. TCP 四次挥手

    相关连接: baike.baidu.com/item/tcp%E5…

为何TCP关闭链接时须要TIME_WAIT状态为何要等2MSL

  1. 为了保证A发送的最后一个ACK报文可以到达B。这个ACK报文段有可能丢失,于是使处在LAST-ACK状态的B收不到对已发送的FIN+ACK报文段的确认。B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个重传的FIN+ACK报文段。若是A在TIME-WAIT状态不等待一段时间,而是在发送完ACK报文段后就当即释放链接,就没法收到B重传的FIN+ACK报文段,于是也不会再发送一次确认报文段。这样,B就没法按照正常的步骤进入CLOSED状态

  2. A在发送完ACK报文段后,再通过2MSL时间,就可使本链接持续的时间所产生的全部报文段都从网络中消失。这样就可使下一个新的链接中不会出现这种旧的链接请求的报文段。

相关连接: www.cnblogs.com/wen-ge/arti…

一次完整的HTTP请求过程是怎样的

  1. 对www.baidu.com这个网址进行DNS域名解析,获得对应的IP地址

  2. 根据这个IP,找到对应的服务器,发起TCP的三次握手

  3. 创建TCP链接后发起HTTP请求

  4. 服务器响应HTTP请求,浏览器获得html代码

  5. 浏览器解析html代码,并请求html代码中的资源(如js、css图片等)(先获得html代码,才能去找这些资源)

  6. 浏览器对页面进行渲染呈现给用户

相关连接: www.cnblogs.com/xuzekun/p/7…

HTTP2和HTTP的区别有哪些

  1. HTTP/2采用二进制格式而非文本格式
  2. HTTP/2是彻底多路复用的,而非有序并阻塞的——只需一个链接便可实现并行
  3. 使用报头压缩,HTTP/2下降了开销
  4. HTTP/2让服务器能够将响应主动“推送”到客户端缓存中

相关连接: blog.csdn.net/lijiawnen/a…

在你的项目中你使用过哪些设计模式? 主要用来解决什么问题

  1. 工厂模式: Spring如何建立Bean

    相关连接: jingyan.baidu.com/article/3c3…

  2. 代理模式: Motan服务的动态代理

    相关连接: www.jianshu.com/p/f6a419db3…

  3. 责任链模式: Netty消息处理的方式

    相关连接: blog.csdn.net/lionaiying/…

  4. 适配器模式: SLF4J如何支持Log4J

    相关连接: www.jianshu.com/p/76e34982b…

  5. 观察者模式: GRPC是如何支持流式请求的

    相关连接: www.cnblogs.com/gutousu/p/9…

  6. 构造者模式: PB序列化中的Builder

    相关连接: www.cnblogs.com/mxz1994/p/9…

Object中的equals和hashcode的做用分别是什么?

hashCode()方法和equal()方法的做用其实同样

equals和hashCode的区别: www.cnblogs.com/keyi/p/7119…

final, finally, finalize的区别与使用场景

  1. final : 能够做为修饰符修饰变量、方法和类

  2. finally: 用在异常处理中定义老是执行代码

  3. finalize: 当垃圾回收器将无用对象从内存中清除时,该对象的finalize()方法被调用

相关连接: jingyan.baidu.com/article/597…

简单描述一下java的异常机制

java对异常进行了分类,不一样类型的异常使用了不一样的java类,全部异常的根类为java.lang.Throwable.Throwable派生了2个子类:Error和Exception.

  1. Error表示程序自己没法克服和恢复的一种严重错误

  2. Exception表示还能克服和恢复,其中又分为系统异常和普通异常

    1. 系统异常是软件自己缺陷致使的问题

    2. 普通异常是运行环境的变化或异常致使的问题

相关连接: www.cnblogs.com/guweiwei/p/…

线上使用的哪一个jdk版本,为何使用这个版本(有什么特色)

各个版本各不相同 能够参考: segmentfault.com/a/119000000…

介绍了各个版本的新特性

深刻浅出JVM

简单描述一下JVM的内存模型

JVM内存模型

根据JVM规范,JVM 内存共分为虚拟机栈,堆,方法区,程序计数器,本地方法栈五个部分。

相关连接: blog.csdn.net/qzqanzc/art…

Java堆内存访问模型

相关连接: blog.csdn.net/Mr__fang/ar…

何时会触发FullGC?

年轻代晋升时,老年代空间不足,永久代不足等

相关连接: www.jianshu.com/p/74b1f7683…

Java类加载器有几种,关系怎样的?

  1. 双亲委派机制

  2. Bootstrap类加载器

  3. Extension类加载器

  4. System类加载器

  5. 自定义类加载器

相关连接: blog.csdn.net/qq_33583322…

双亲委派机制的加载流程是怎样的,有什么好处?

某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,若是父类加载器能够完成类加载任务,就成功返回;只有父类加载器没法完成此加载任务时,才本身去加载。

相关链接: www.cnblogs.com/webster1/p/…

1.8为何用Metaspace替换掉PermGen?Meatspace保存在哪里?

  1. 字符串存在永久代中,容易出现性能问题和内存溢出

  2. 类及方法的信息等比较难肯定其大小,所以对于永久代的大小指定比较困难,过小容易出现永久代溢出,太大则容易致使老年代溢出。

  3. 永久代会为 GC 带来没必要要的复杂度,而且回收效率偏低。

  4. Oracle 可能会将HotSpot 与 JRockit 合二为一。

相关连接: blog.csdn.net/lk7688535/a…

编译器会对指令作哪些优化?(简答描述编译器的指令重排)

  1. 公共子表达式的消除

  2. 指令重排

  3. 内联

  4. 逃逸分析

    a) 方法逃逸

    b) 线程逃逸

  5. 栈上分配

  6. 同步消除

相关连接: blog.csdn.net/u013305783/…

指令重排 参考连接: www.cnblogs.com/tuhooo/p/79…

简单描述一下volatile能够解决什么问题?如何作到的?

阻止指令的重排序 能够保证变量读写的有序性

相关连接: www.cnblogs.com/dolphin0520…

简单描述一下GC的分代回收?

分代回收基于两个事实:大部分对象很快就不使用了,还有一部分不会当即无用,但也不会持续很长时间.

相关连接: blog.csdn.net/weixin_4406…

G1与CMS的区别?

相关连接: www.jianshu.com/p/bdd6f0392…

对象引用有哪几种,有什么特色?

  1. 强引用

  2. 软引用

  3. 弱引用

  4. 虚引用

相关连接: cloud.tencent.com/developer/a…

使用过哪些JVM调试工具,主要分析哪些内容?

相关连接: blog.csdn.net/yethyeth/ar…

以上题来自: 32个java面试必考点 拉勾网: kaiwu.lagou.com/course/cour…

相关文章
相关标签/搜索