设为首页 | 加入收藏

欢迎访问盈彩-盈彩在线app-盈彩在线app下载安装

国际合作 >> 信天游-Java进阶架构之架构筑基面试题:JVM+Netty+并发编程

架构筑基

  • Java程序功能优化
  • JVM功能调优
  • Linux根底与进阶
  • Mysql
  • Tomcat
  • 并发编程进阶
  • 高功能Netty结构

JVM

  1. 内存模型以及分区,需求具体到每个区放什么
  2. 堆里边的分区:Eden,survival (from+ to),老时代,各自的特色
  3. 目标创立办法,目标的内存分配,目标的拜访定位
  4. GC的两种断定办法
  5. SafePoint是什么?
  6. GC的三种搜集办法:符号铲除、符号收拾、仿制算法的原理与特色,别离用在什么地方,假如让你优化搜集办法,有什么思路?
  7. GC搜集器有哪些?CMS搜集器与G1搜集器的特色
  8. Minor GC与Full GC别离在什么时候发作?
  9. 几种常用的内存调试东西:jmap、jstack、jconsole、jhat
  10. 类加载的几个进程
  11. JVM内存分哪几个区,每个区的效果是什么?
  12. 如和判别一个目标是否存活?(或许GC目标的断定办法)
  13. 简述java废物收回机制?
  14. java中废物搜集的办法有哪些?
  15. java内存模型
  16. java类加载进程?
  17. 简述java类加载机制?
  18. 类加载器双亲派遣模型机制?
  19. 什么是类加载器,类加载器有哪些?
  20. 简述java内存分配与收回策率以及Minor GC和Major GC

Netty

  1. BIO、NIO和AIO的差异?
  2. NIO的组成?
  3. Netty的特色?
  4. Netty的线程模型?
  5. TCP 粘包/拆包的原因及处理办法?
  6. 了解哪几种序列化协议?
  7. 怎样挑选序列化协议?
  8. Netty的零复制完结?
  9. Netty的高功能表现在哪些方面?
  10. NIOEventLoopGroup源码?

并发编程

  1. 现在有T1、T2、T3三个线程,你怎样确保T2在T1履行完后履行,T3在T2履行完后履行?
  2. 在Java中Lock接口比synchronized块的优势是什么?你需求完结一个高效的缓存,它答应多个用户读,但只答应一个用户写,以此来坚持它的完整性,你会怎样去完结它?
  3. 在java中wait和sleep办法的不同?
  4. 用Java完结堵塞行列
  5. 用Java写代码来处理生产者——顾客问题
  6. 用Java编程一个会导致死锁的程序,你将怎样处理?
  7. 什么是原子操作,Java中的原子操作是什么?
  8. Java中的volatile要害是什么效果?怎样运用它?在Java中它跟synchronized办法有什么不同?
  9. 什么是竞赛条件?你怎样发现和处理竞赛?
  10. 你将怎样运用threaddump?你将怎样剖析Thread dump?
  11. 为什么咱们调用start()办法时会履行run()办法,为什么咱们不能直接调用run()办法?
  12. Java中你怎样唤醒一个堵塞的线程?
  13. 在Java中CycliBarriar和CountdownLatch有什么差异?
  14. 什么是不可变目标,它对写并发运用有什么协助?
  15. 你在多线程环境中遇到的常见的问题是什么?你是怎样处理它的?

面试题回答

java内存模型

java内存模型(JMM)是线程间通讯信天游-Java进阶架构之架构筑基面试题:JVM+Netty+并发编程的操控机制.JMM界说了主内存和线程之间笼统联系。线程之间的同享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写同享变量的副本。本地内存是JMM的一个笼统概念,并不实在存在。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。Java内存模型的笼统示意图如下:

从上图来看,线程A与线程B之间如要通讯的话,必需求阅历下面2个过程:

1. 首要,线程A把本地内存A中更新过的同享变量刷新到主内存中去。

2. 然后,线程B到主内存中去读取线程A之前已更新过的同享变量。

Netty的高功能表现在哪些方面?

心跳,对服务端:会守时铲除搁置会话inactive(netty5),对客户端:用来检测会话是否断开,是否重来,检测网络推迟,其间idleStateHandler类 用来检测会话状况

串行无锁化规划,即音讯的处理尽可能在同一个线程内完结,期间不进行线程切换,这样就避免了多线程竞赛和同步锁。表面上看,串行化规划好像CPU利用率不高,并发程度不行。可是,经过调整NIO线程池的线程参数,能够一起发动多个串行化的线程并行运转,这种部分无锁化的串行线程规划比较一个行列-多个作业线程模型功能更优。

可靠性,链路有效性检测:链路闲暇检测机制,读/写闲暇超时机制;内存维护机制:经过内存池重用ByteBuf;ByteBuf的解码维护;高雅停机:不再接纳新音讯、退出前的预处理操作、资源的开释操作。

Netty安全性:支撑的安全协议:SSL V2和V3,TLS,SSL单向认证、双向认证和第三方CA认证信天游-Java进阶架构之架构筑基面试题:JVM+Netty+并发编程。

高效并发编程的表现:volatile的许多、正确运用;CAS和原子类的广泛运用;线程安全容器的运大明赋用;经过读写锁进步并发功能。IO通讯功能三原则:传输(AIO)、协议(Http)、线程(主从多线程)

流量整型的效果(变压器):避免因为上下流网元功能不均衡导致下流网元被压垮,事务流中止;避免因为通讯模块承受音讯过快,后端事务线程处理不及时导致撑死问题。

TCP参数装备:SO_RCVBUF和SO_SNDBUF:一般主张值为128K或许256K;SO_TCPNODELAY:NAGLE算法经过将缓冲区内的小封包主动相连,组成较大的封包,阻挠许多小封包的发送堵塞网络,然后进步网络运用功率。可是关于时延灵敏的运用场景需求封闭该优化算法。

用Java完结堵塞行列

这是一个相对困难的多线程面试问题,它能到达许多的意图。榜首,它能够检测侯选者是否能实践的用Java线程写程序;第二,能够检测侯选者对并发场景的了解,而且你能够依据这个问许多问题。假如他用wait()和notify()办法来完结堵塞行列,你能够要求他用最新的Java 5中的并发类来再写一次。

最终

面试题及答案的获取方法,也为我们供给一个交流学习的渠道:805685193。有免费共享的视频,还有Java架构思想导图,首要共享信天游-Java进阶架构之架构筑基面试题:JVM+Netty+并发编程分布式架构、高可扩展、高功能、高并发、功能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师视频。



     下一条
返回顶部