这些JVM 多线程 网络编程面试大厂必问的Java面试题,你都刷了吗?

目录

面试常问spring

不同版本的 Spring Framework 有哪些主要功能?

Spring Framework 有哪些不同的功能?

什么是 Spring 配置文件?

使用 Spring 有哪些方式?

可以通过多少种方式完成依赖注入?

spring bean 容器的生命周期是什么样的?

什么是 spring 装配

自动装配有什么局限?

spring DAO 有什么用?

列举 spring 支持的事务管理类型

描述一下 DispatcherServlet 的工作流程

解释不同方式的自动装配

你可以在 Spring 中注入一个 null 和一个空字符串吗?

在 Spring 框架中如何更有效地使用 JDBC?

在 Spring 框架中如何更有效地使用 JDBC?

JVM常见面试题集锦

什么情况下会发生栈内存溢出。

JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么 要分为Eden和Survivor?

你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包 括原理,流程,优缺点:

JVM内存模型的相关知识了解多少,比如重排序,内存屏障,happen-before,主内存,工作内存:

简单说说你了解的类加载器,可以打破双亲委派么,怎么打破:

怎么打出线程栈信息:

强引用、软引用、弱引用、虚引用的区别?

 多线程面试题集锦

在了解不同的IO之前先了解:同步与异步,阻塞与非阻塞的区别

什么是BIO?

什么是AIO ?

什什么Netty?

BIO和NIO、AIO的区别?

什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什 么区别?在实现序列化接口是时候一般要生成一个serialVersionUID字段,它叫做什么,一般有什么用?

什么是内核空间?

Java中流类的超类主要有那些?

为什么图片、视频、音乐、文件等 都是要字节流来读取?

BIO编程会出现什么问题?

多线程解决BIO编程会出现的问题?

  网络编程面试题 

什么是网络编程?

网络协议是什么?

为什么要对网络协议分层 ?

建立连接可以两次握手吗?为什么?

如果已经建立了连接,但客户端出现了故障怎么办?

为什么不能把服务器发送的ACK和FIN合并起来,变成三次挥手(CLOSE_WAIT状态意义是什 么)?

什么是Http协议?

什么是http的请求体?

一次完整的HTTP请求所经历几个步骤?

常用HTTP状态码是怎么分类的,有哪些常见的状态码?

cookie和session对于HTTP有什么用?

什么是TCP/IP和UDP?

TCP和UDP的应用场景:

运行在TCP 或UDP的应用层协议分析:

什么是ARP协议 (Address Resolution Protocol)?

用现实理解三次握手的具体细节 :

来自小编的福利

喜欢小编的文章可以点赞三连哦


前言

说实话,我只能隐约想起并发、JVM、分布式、TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住。而且就算我记住了,也告诉你了,你也背会了,但我觉得,在面试中,你被问到一模一样问题的可能性依然很小。

甚至,就算你运气好被问到了,你也照着背下来了,也不一定就能对你的面试起到正面的作用,因为面试官万一多问一句,你可能就露馅了,那还不如干脆点说不会更好。

对于能有3-5年经验的这部分人中,每个人的经历又都不同,所擅长的点也不一样,因此这就会导致每个人的问题和范围都不太一样。

很少说有哪个知名的互联网公司,比如BAT、京东、360、搜狐、网易等这些公司,其社招面试还有固定的问题和模式,让你可以像应届生面试一样,在面试前靠临时抱佛脚度过这一关。

大部分公司在社招的时候,不光是阿里,其它公司也都一样(因为我在一年多前也参加过很多其它知名互联网公司的面试,基本上都分为两个阶段的提问。

  • 第一个阶段是主语言本身以及它的高级特性。

  • 第二个阶段是讲述自己的项目,并在中间穿插着问题。

接下来小编分享一些精选的面试题供大家参考参考

面试常问spring

还在机械地打代码?只知道如何使用,却不知道做了什么,那么你注定只能是一个码农。Spring 框架几乎集成一半 Javaweb 开发的江山,但是你只知道如何写,不知道为什么要这么写,也不知道要如何优化。小编下面整理了一些spring面试相关的面试你,你可以收藏好好看看能不能都答出来!

  • 不同版本的 Spring Framework 有哪些主要功能?

  • Spring Framework 有哪些不同的功能?

  • 什么是 Spring 配置文件?

  • 使用 Spring 有哪些方式?

  • 可以通过多少种方式完成依赖注入?

  • spring bean 容器的生命周期是什么样的?

  • 什么是 spring 装配

  • 自动装配有什么局限?

  • spring DAO 有什么用?

  • 列举 spring 支持的事务管理类型

  • 描述一下 DispatcherServlet 的工作流程

  • 解释不同方式的自动装配

  • 你可以在 Spring 中注入一个 null 和一个空字符串吗?

  • Spring 框架中如何更有效地使用 JDBC?

  • Spring 框架中如何更有效地使用 JDBC?

 
上述面试题已经整理成文档,有需要的可以  点击进入 查看领取资料

JVM常见面试题集锦

相信越来越多的同学在面试中都会被问过有没有 JVM 调优的问题,随着 IT人员越来越多,面试也越来越难,JVM 的知识无疑是难点之一,如果能够回答上相关问题,肯定能大大提高面试的通过率。不少同学肯定也看过 JVM 相关的文章、书籍,但是在实际工作中可能不会触碰到这一块,所以小编也会结合一些常见的面试题来给大家分析和总结。

  • 什么情况下会发生栈内存溢出。

思路: 描述栈定义,再描述为什么会溢出,再说明一下相关配置参数, OK 的话可以给面试官手写是一 个栈溢出的demo
我的答案:
栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储 局部变量表,操作数栈,动态链接,方法出口等信息。局部变量表又包含基本数据类型,对象引用类型 如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflflowError异常,方法递 归调用产生这种结果。 如果Java虚拟机栈可以动态扩展,并且扩展的动作已经尝试过,但是无法申请到足够的内存去完成 扩展或者在新建立线程的时候没有足够的内存去创建对应的虚拟机栈,那么Java 虚拟机将抛出一 个OutOfMemory 异常。 ( 线程启动过多 ) 参数 -Xss 去调整 JVM 栈的大小
 
  • JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么 要分为EdenSurvivor?

思路: 先讲一下 JAVA 堆,新生代的划分,再谈谈它们之间的转化,相互之间一些参数的配置(如:
XX:NewRatio –XX:SurvivorRatio 等),再解释为什么要这样划分,最好加一点自己的理解。
我的答案:
1 )共享内存区划分
共享内存区 = 持久带 +
持久带 = 方法区 + 其他
Java = 老年代 + 新生代
新生代 = Eden + S0 + S1
2 )一些参数的配置
默认的,新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ,可以通过参数 –XX:NewRatio 配置。 默认的,Edem : from : to = 8 : 1 : 1 ( 可以通过参数 –XX:SurvivorRatio 来设定 ) Survivor区中的对象被复制次数为 15( 对应虚拟机参数 -XX:+MaxTenuringThreshold)
3) 为什么要分为 Eden Survivor? 为什么要设置两个 Survivor 区?
如果没有 Survivor Eden 区每进行一次 Minor GC ,存活的对象就会被送到老年代。老年代很快被 填满,触发Major GC. 老年代的内存空间远大于新生代,进行一次 Full GC 消耗的时间比 Minor GC 长得多, 所以需要分为 Eden Survivor 。 Survivor的存在意义,就是减少被送到老年代的对象,进而减少 Full GC 的发生, Survivor 的预筛选 保证,只有经历16 Minor GC 还能在新生代中存活的对象,才会被送到老年代。 设置两个Survivor 区最大的好处就是解决了碎片化,刚刚新建的对象在 Eden 中,经历一次 MinorGC, Eden 中的存活对象就会被移动到第一块 survivor space S0 Eden 被清空;等 Eden 区再满 了,就再触发一次Minor GC Eden S0 中的存活对象又会被复制送入第二块 survivor space S1(这个过程非常重要,因为这种复制算法保证了 S1 中来自 S0 Eden 两部分的存活对象占用连续的内存空间,避免了碎片化的发生)
 
  • 你知道哪几种垃圾收集器,各自的优缺点,重点讲下cmsG1,包 括原理,流程,优缺点:

  • JVM内存模型的相关知识了解多少,比如重排序,内存屏障,happen-before,主内存,工作内存:

  • 简单说说你了解的类加载器,可以打破双亲委派么,怎么打破:

  • 怎么打出线程栈信息:

  • 强引用、软引用、弱引用、虚引用的区别?

 多线程面试题集锦

Java I/O 是以流为基础进行数据的输入输出的,所有数据被串行化 ( 所谓串行化就是数据要按顺序进行输入输出) 写入输出流。简单来说就是 java 通过 io 流方式和外部设备进行交互。 在Java 类库中, IO 部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据传输流 ,字符串流,对象流等

  • 在了解不同的IO之前先了解:同步与异步,阻塞与非阻塞的区别

  • 什么是BIO?

  • 什么是AIO ?

  • 什什么Netty?

  • BIONIOAIO的区别?

  • 什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什 么区别?在实现序列化接口是时候一般要生成一个serialVersionUID字段,它叫做什么,一般有什么用?

  • 什么是内核空间?

  • Java中流类的超类主要有那些?

  • 为什么图片、视频、音乐、文件等 都是要字节流来读取?

    
  • BIO编程会出现什么问题?

  • 多线程解决BIO编程会出现的问题?

  网络编程面试题 

  • 什么是网络编程?

  • 网络协议是什么?

  • 为什么要对网络协议分层

  • 建立连接可以两次握手吗?为什么?

  • 如果已经建立了连接,但客户端出现了故障怎么办?

  • 为什么不能把服务器发送的ACKFIN合并起来,变成三次挥手(CLOSE_WAIT状态意义是什 么)?

  • 什么是Http协议?

  • 什么是http的请求体?

  • 一次完整的HTTP请求所经历几个步骤?

  • 常用HTTP状态码是怎么分类的,有哪些常见的状态码?

  • cookiesession对于HTTP有什么用?

  • 什么是TCP/IPUDP?

  • TCPUDP的应用场景:

  • 运行在TCP UDP的应用层协议分析:

  • 什么是ARP协议 (Address Resolution Protocol)

  • 用现实理解三次握手的具体细节

来自小编的福利

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料(spring、mybatis、jvm,Zookeeper,分布式等)和 2020最新阿里面试真题,有40多套PDF文档面试题

资料获取方式:关注小编  点我 点我 免费领取 获取上述资料

部分资料图片:

喜欢小编的文章可以点赞三连哦

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值