前言
再过两个月就是过年了,拿完年终奖又要金三银四了,然而面对大环境而言,跳槽成功的难度比往年高了很多,很明显的感受就是:对于明年的java开发朋友跳槽面试,无论一面还是二面,都开始考验一个Java程序员的技术功底和基础。对源码解读和核心原理理解也是成了加分项,特别是对 Java 的一些核心基础知识点掌握的不够或者没有体系方向的朋友面试也成了一个苦恼的事情。
今天在这分享目前国内公司Java面试常问的问题包括JVM、常用的算法和数据结构,redis缓存,分布式,Spring,微服务等。正所谓知己知彼,只有体系知识巩固,面对不断更新的技术才能快速掌握,同时在面试、工作中也更能脱颖而出!
由于篇幅原因,在这答案就不做全部展示了,这些题我已经整理成pdf文档免费分享给那些有需要的朋友,同时整理也花费了蛮多时间
一,性能优化专题:
1.tomcat优化相关:
- 你怎样给tomcat去调优?
- 如何加大tomcat连接数
- tomcat中如何禁止列目录下的文件
- 怎样加大tomcat的内存。
- Tomcat有几种部署方式?
- Tomcat的优化经验。
2.jvm性能优化相关:
- Java类加载过程?
- 描述一下JVM加载Class文件的原理机制?
- Java内存分配。
- GC是什么?为什么要有GC?
- 简述Java垃圾回收机制。
- 如何判断一个对象是否存活?(或者GC对象的判定方法)
- 垃圾回收的优点和原理。并考虑2种回收机制。
- 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
- Java中会存在内存泄漏吗,请简单描述。
- 深拷贝和浅拷贝。
- System.gc()和Runtime.gc()会做什么事情?
- finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?
- 如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?
- 什么是分布式垃圾回收(DGC)?它是如何工作的?
- 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
- 在Java中,对象什么时候可以被垃圾回收?
- 简述Java内存分配与回收策率以及Minor GC和MajorGC。
- JVM的永久代中会发生垃圾回收么?
- Java中垃圾收集的方法有哪些?
- 什么是类加载器,类加载器有哪些?
- 类加载器双亲委派模型机制?
答案解析:
答案解析
微服务架构专题:
1.springcloud面试专题:
- 什么是SpringCloud?
- 使用SpringCloud有什么优势?
- 服务注册和发现是什么意思?SpringCloud如何实现?
- 负载平衡的意义什么?
- 什么是Hystrix?它如何实现容错?
- 什么是Hystrix断路器?我们需要它吗?
- 什么是NetflixFeign?它的优点是什么?
- 什么是SpringCloudBus?我们需要它吗?
2.SpringBoot面试专题:
- 什么是SpringBoot?
- SpringBoot有哪些优点?
- 什么是JavaConfig?
- 如何重新加载SpringBoot上的更改,而无需重新启动服务器?
- SpringBoot中的监视器是什么?
- 如何在SpringBoot中禁用Actuator端点安全性?
- 如何在自定义端口上运行SpringBoot应用程序?
- 什么是YAML?
- 如何实现SpringBoot应用程序的安全性?
- 如何集成SpringBoot和ActiveMQ?
- 如何使用SpringBoot实现分页和排序?
- 什么是Swagger?你用SpringBoot实现了它吗?
- 什么是SpringProfiles?
- 什么是SpringBatch?
- 什么是FreeMarker模板?
- 如何使用SpringBoot实现异常处理?
- 您使用了哪些startermaven依赖项?
- 什么是CSRF攻击?
- 什么是WebSockets?
- 什么是AOP?
- 什么是ApacheKafka?
- 我们如何监视所有SpringBoot微服务?
3.Dubbo面试专题:
- Dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
- dubbo服务负载均衡策略?
- Dubbo在安全机制方面是如何解决的
- dubbo连接注册中心和直连的区别
答案解析:(由于文章长度较长,所有的解析没有全部展示出来,有需要的朋友可以关注小编+私信【面试真题】获取所有解析)
答案解析
三,Redis专题:
- 什么是Redis?简述它的优缺点?
- Redis与memcached相比有哪些优势?
- Redis支持哪几种数据类型?
- Redis主要消耗什么物理资源?
- Redis有哪几种数据淘汰策略?
- Redis官方为什么不提供Windows版本?
- 一个字符串类型的值能存储最大容量是多少?
- 为什么Redis需要把所有数据放到内存中?
- Redis集群方案应该怎么做?都有哪些方案?
- Redis集群方案什么情况下会导致整个集群不可用?
- MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
- Redis有哪些适合的场景?
- Redis支持的Java客户端都有哪些?官方推荐用哪个?
- Redis和Redisson有什么关系?
- Jedis与Redisson对比有什么优缺点?
- 说说Redis哈希槽的概念?
- Redis集群的主从复制模型是怎样的?
- Redis集群会有写操作丢失吗?为什么?
- Redis集群之间是如何复制的?
- Redis集群最大节点个数是多少?
- Redis集群如何选择数据库?
- Redis中的管道有什么用?
- 怎么理解Redis事务?
- Redis事务相关的命令有哪几个?
- Rediskey的过期时间和永久有效分别怎么设置?
- Redis如何做内存优化?
- Redis回收进程如何工作的?
- 使用过Redis分布式锁么,它是怎么实现的?
- 使用过Redis做异步队列么,你是怎么用的?有什么缺点?
- 什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?
答案解析:
答案解析
四,mysql专题:
- 一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15?
- Mysql的技术特点是什么?
- Heap表是什么?
- Mysql服务器默认端口是什么?
- 与Oracle相比,Mysql有什么优势?
- 如何区分FLOAT和DOUBLE?
- 区分CHAR_LENGTH和LENGTH?
- 请简洁描述Mysql中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
- 在Mysql中ENUM的用法是什么?
- 如何定义REGEXP?
- CHAR和VARCHAR的区别?
- 列的字符串类型可以是什么?
- 如何获取当前的Mysql版本?
- Mysql中使用什么存储引擎?
- Mysql驱动程序是什么?
- TIMESTAMP在UPDATECURRENT_TIMESTAMP数据类型上做什么?
- 主键和候选键有什么区别?
- 如何使用Unixshell登录Mysql?
- myisamchk是用来做什么的?
- MYSQL数据库服务器性能分析的方法命令有哪些?
- 如何控制HEAP表的最大尺寸?
- MyISAMStatic和MyISAMDynamic有什么区别?
- federated表是什么?
- 如果一个表有一列定义为TIMESTAMP,将发生什么?
- 列设置为AUTOINCREMENT时,如果在表中达到最大值,会发生什么情况?
- 怎样才能找出最后一次插入时分配了哪个自动增量?
- 你怎么看到为表格定义的所有索引?
- LIKE声明中的%和_是什么意思?
- 如何在Unix和Mysql时间戳之间进行转换?
- 列对比运算符是什么?
- 我们如何得到受查询影响的行数?
- Mysql查询是否区分大小写?
- LIKE和REGEXP操作有什么区别?
- BLOB和TEXT有什么区别?
- mysql_fetch_array和mysql_fetch_object的区别是什么?
- 我们如何在mysql中运行批处理模式?
- MyISAM表格将在哪里存储,并且还提供其存储格式?
- Mysql中有哪些不同的表格?
- ISAM是什么?
- InnoDB是什么?
- Mysql如何优化DISTINCT?
- 如何输入字符为十六进制数字?
- 如何显示前50行?
- 可以使用多少列创建索引?
- NOW()和CURRENT_DATE()有什么区别?
- 什么样的对象可以使用CREATE语句创建?
- Mysql表中允许有多少个TRIGGERS?
- 什么是非标准字符串类型?
- 什么是通用SQL函数?
- 解释访问控制列表
- MYSQL支持事务吗?
- mysql里记录货币用什么字段类型好
- MYSQL数据表在什么情况下容易损坏?
- mysql有关权限的表都有哪几个?
- Mysql中有哪几种锁?
答案解析:
答案解析
五,并发编程专题:
- Synchronized 用过吗,其原理是什么?
- 你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?
- 什么是可重入性,为什么说 Synchronized 是可重入锁?
- JVM 对 Java 的原生锁做了哪些优化?48
- 为什么说 Synchronized 是非公平锁?49
- 什么是锁消除和锁粗化?49
- 为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是 CAS,它有什么特性?
- 乐观锁一定就是好的吗?
- 跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?
- 那么请谈谈 AQS 框架是怎么回事儿?
- 请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。
- ReentrantLock 是如何实现可重入性的?
- 除了 ReetrantLock,你还接触过 JUC 中的哪些并发工具?
- 请谈谈 ReadWriteLock 和 StampedLock。
- 如何让 Java 的线程彼此同步?你了解过哪些同步器?请分别介绍下。
- CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?
- Java 线程池相关问题
- Java 中的线程池是如何实现的?
- 创建线程池的几个核心构造参数?
- 线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?
- 既然提到可以通过配置不同参数创建出不同的线程池,那么 Java 中默认实现好的线程池又有哪些呢?请比较它们的异同
- 如何在 Java 线程池中提交线程?
- 什么是 Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?
- 请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?
- 既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并发安全的?
- 请对比下 volatile 对比 Synchronized 的异同。
- 请谈谈 ThreadLocal 是怎么解决并发安全的?
- 很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?
答案解析:
答案解析
由于篇幅原因,在这就不做全部展示了,这些题我已经整理成pdf文档免费分享给那些有需要的朋友,同时整理也花费了蛮多时间,有需要的朋友