写点什么

Java 进阶文档:彻底搞懂 JVM+Linux+MySQL+Netty+Tomcat+ 并发编程

发布于: 2020 年 12 月 16 日

面试前期准备不充分其实就是对自己的不负责任,也是在浪费自己的时间,今天为大家整理了一份实战文档,让你系统性的弄懂架构师筑基内容:Linux基础与进阶+高性能Netty框架+MySQL+并发编程进阶+JVM性能调优+Tomacat



注意:以下所有资料(含答案)的文档以及笔记整理均可以免费分享给大家,需要这些资料的一键三连+评论,然后添加VX(tkzl6666)即可免费领取

 









先来看一张架构师筑基专题内容图:





一、Linux相关内容:



(1)Linux面试专题



  • Linux 中主要有哪几种内核锁?

  • Linux 中的用户模式和内核模式是什么含意?

  • 怎样申请大块内核内存?

  • 用户进程间通信主要哪几种方式?

  • 通过伙伴系统申请内核内存的函数有哪些?

  • Linux 虚拟文件系统的关键数据结构有哪些?(至少写出四个)

  • 对文件或设备的操作函数保存在那个数据结构中?

  • Linux 中的文件包括哪些?

  • 创建进程的系统调用有那些?

  • 调用 schedule()进行进程切换的方式有几种?

  • Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?

  • 进程调度的核心数据结构是哪个?

  • 如何加载、卸载一个模块?

  • 模块和应用程序分别运行在什么空间?

  • Linux 中的浮点运算由应用程序实现还是内核实现?

  • 模块程序能否使用可链接的库函数?

  • TLB 中缓存的是什么内容?

  • Linux 中有哪几种设备?

  • 字符设备驱动程序的关键数据结构是哪个?

  • 设备驱动程序包括哪些功能函数?

  • 如何唯一标识一个设备?

  • Linux 通过什么方式实现系统调用?

  • Linux 软中断和工作队列的作用是什么?



Linux面试专题及答案:





二、Netty相关内容



(1)Netty面试专题



  • BIO、NIO 和 AIO 的区别?

  • NIO 的组成?

  • Netty 的特点?

  • Netty 的线程模型?

  • TCP 粘包/拆包的原因及解决方法?

  • 了解哪几种序列化协议

  • 如何选择序列化协议?

  • Netty 的零拷贝实现?

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

  • NIOEventLoopGroup 源码?





(2)Netty实战



  • Netty 的概念及体系结构

  • 编解码器

  • 网络协议

  • Droplr、Firebase 、Urban Airship、Facebook和Twitter的案例研究





三、MySQL相关内容



(1)MySQL面试专题



  • 数据库三范式是什么?

  • 有哪些数据库优化方面的经验?

  • mysql有关权限的表都有哪几个?

  • 请简述常用的索引有哪些种类?

  • mysql 的基础操作命令:

  • mysql 的复制原理以及流程:

  • mysql 支持的复制类型

  • mysql 中 myisam 与 innodb 的区别

  • mysql 中 varchar 与 char 的区别以及 varchar(50)中的 50 代表的涵义

  • mysql 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别

  • 表中有大字段 X(例如:text 类型),且字段 X 不会经常更新,以读为为主,将该字段拆成子表好处是什么?

  • mysql 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)的?

  • 若一张表中只有一个字段 VARCHAR(N)类型,utf8 编码,则 N 最大值为多少(精确到数量级即可)?

  • 创建索引的原则

  • 创建索引的三种方式,删除索引





三、并发编程进阶相关内容:



(1)并发编程面试专题(Synchronized相关问题)



  • Synchronized用过吗,其原理是什么 ?

  • 你刚才提到获取对象的锁,这个“锁”是什么?如何确定对象的锁?

  • 什么是可重入性?为什么说Synchronized是可重入锁?

  • JVM对Java的原生锁做了哪些优化?

  • 为什么说Synchronized是非公平锁?

  • 什么是锁消除和锁粗化?

  • 为什么说Synchronized是一个悲观锁?乐观锁的实现原理又是什么?

  • 什么是CAS,它有什么特性?

  • 乐观锁一定就是好的吗?



(2)可重入锁ReentrantLock及其他显示锁相关问题



  • 跟Synchronized相比,可重入ReentrantLock其实现原理有什么不同?

  • 请谈谈AQS框架是怎么回事

  • 请尽可能详尽地对比下Synchronized和ReentrantLock的异同

  • ReentrantLock是如何实现可重入性的?

  • 除了ReentrantLock,你还接触过JUC中的哪些并发工具?

  • 请谈谈ReadWriteLock和StampedLock

  • 如何让Java的线程彼此同步?你还了解过哪些同步器?请分别介绍一下

  • CyclicBarrier和CountDownLatch看起来很相似,请对比一下



(3)Java线程池相关问题



  • Java中的线程池是如何实现的?

  • 创建线程池的几个核心构造参数

  • 线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?

  • 既然提到可以通过配置不同参数创建不同的线程池,那么Java中默认实现好的线程池又有哪些?请比较它们的异同

  • 如何在Java线程池中提交线程?



(4)Java模型相关问题



  • 什么是Java的内存模型,Java中各个线程是怎么彼此看到对方的变量的?

  • 请谈谈Volatile有什么特点,它为什么能保证变量对所有线程的可见性?

  • 既然Volatile能保证县城见的变量可见性,是不是就意味着基于Volatile变量的运算就是并发安全的?

  • 请对比下Volatile和Synchronized的异同

  • 请谈谈RhreadLocal是怎么解决并发安全的?

  • 很多人都说要慎用TheadLocal,谈谈你的理解,使用TheadLocal需要注意些什么?





四、JVM性能调优相关内容



(1)JVM面试专题



  • 内存模型以及分区,需要详细到每个区放什么

  • 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点

  • 对象创建方法,对象的内存分配,对象的访问定位

  • GC 的两种判定方法

  • SafePoint 是什么

  • GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?

  • GC 收集器有哪些?CMS 收集器与 G1 收集器的特点

  • Minor GC 与 Full GC 分别在什么时候发生?

  • 类加载的几个过程

  • JVM 内存分哪几个区,每个区的作用是什么?

  • 如和判断一个对象是否存活?(或者 GC 对象的判定方法)

  • 简述 java 垃圾回收机制

  • java 中垃圾收集的方法有哪些?

  • java 类加载过程

  • 简述 java 类加载机制

  • 类加载器双亲委派模型机制

  • 什么是类加载器,类加载器有哪些?

  • 简述 java 内存分配与回收策率以及 Minor GC 和Major GC





五、Tomcat相关内容



(1)Tomcat面试专题



  • Tomcat 的缺省端口是多少,怎么修改?

  • Tomcat 有哪几种 Connector 运行模式(优化)?

  • Tomcat 有几种部署方式?

  • Tomcat 容器是如何创建 servlet 类实例?用到了什么原理?

  • Tomcat 如何优化?

  • 内存调优

  • 垃圾回收策略调优

  • 共享 session 处理

  • 添加 JMS 远程监控

  • 关于 Tomcat 的 session 数目

  • 监视 Tomcat 的内存使用情况

  • 打印类的加载情况及对象的回收情况

  • Tomcat 一个请求的完整过程

  • Tomcat 工作模式





六、设计模式面试专题



  • 请列举出在 JDK 中几个常用的设计模式?

  • 什么是设计模式?你是否在你的代码里面使用过任何设计模式?

  • Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式

  • 在 Java 中,什么叫观察者设计模式(observer design pattern)?

  • 使用工厂模式最主要的好处是什么?在哪里使用?

  • 举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类层次?

  • 在 Java 中,为什么不允许从静态方法中访问非静态变量?

  • 设计一个 ATM 机,请说出你的设计思路?

  • 在 Java 中,什么时候用重载,什么时候用重写?

  • 举例说明什么情况下会更倾向于使用抽象类而不是接口?





最后



针对于上面的面试题我总结出了互联网公司java程序员面试涉及到的绝大部分面试题及答案做成了文档和架构视频资料免费分享给大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。



合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!



领取方式:一键三连+评论,然后添加VX(tkzl6666)即可免费领取













用户头像

添加我的微信:tkzl6666 获取文中资料 2020.09.19 加入

添加我的微信:tkzl6666 获取文中资料

评论 (1 条评论)

发布
用户头像
Java 进阶文档:彻底搞懂 JVM+Linux+MySQL+Netty+Tomcat+ 并发编程

2020 年 12 月 16 日 15:47
回复
没有更多了
Java进阶文档:彻底搞懂JVM+Linux+MySQL+Netty+Tomcat+并发编程