大厂面试秘籍分享:基础+算法+Spring全家桶+JVM+设计模式+中间件+分布式

前言

很多朋友对面试不够了解,不知道如何准备,对面试环节的设置以及目的不够了解,因此成功率不高。通常情况下校招生面试的成功率低于1%,而社招的面试成功率也低于5%,所以对于候选人一定要知道设立面试的初衷以及每个环节的意义,有的放矢...

今天在这分享目前国内公司Java面试常问的问题包括JVM虚拟机、常用的算法和数据结构,Redis缓存,设计模式,分布式,Spring,微服务、中间件等。

正所谓知己知彼,只有体系知识巩固,面对不断更新的技术才能快速掌握,同时在面试、工作中也更能脱颖而出!

基础

  1. String类能被继承吗,为什么
  2. String,Stringbuffer,StringBuilder的区别?
  3. ArrayList和LinkedList有什么区别
  4. 类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,他们的执行顺序
  5. 用过哪些Map,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么,比如hashcode,扩容等
  6. HashMap为什么get和set那么快,concurrentHashMap为什么能提高并发
  7. 抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么
  8. 什么情况下会发生栈内存溢出
  9. 什么是nio,原理
  10. 反射中,Class.forName和ClassLoader区别
  11. tomcat结构,类加载器流程

Spring Boot

  1. 什么是 Spring Boot?
  2. 为什么要用 Spring Boot?
  3. 什么是 Spring Boot Stater ?
  4. 你能否举一个例子来解释更多 Staters 的内容?
  5. Spring Boot 还提供了其它的哪些 Starter Project Options?
  6. Spring 是如何快速创建产品就绪应用程序的?
  7. 创建一个 Spring Boot Project 的最简单的方法是什么?
  8. 运行 Spring Boot 有哪几种方式?
  9. Spring Boot、Spring MVC 和 Spring 有什么区别?
  10. 什么是自动配置?

多线程

  1. 线城池的最大线程数目根据什么确定
  2. 多线程的几种实现方式,什么是线程安全,什么是重排序
  3. volatile的原理,作用,能代替锁么
  4. sleep和wait的区别,以及wait的实现原理
  5. Lock与synchronized 的区别,synchronized 的原理,什么是自旋锁,偏向锁,轻量级锁,什么叫可重入锁,什么叫公平锁和非公平锁
  6. 用过哪些原子类,他们的参数以及原理是什么
  7. 用过哪些线程池,他们的原理简单概括下,构造函数的各个参数的含义,比如coreSize,maxsize等
  8. 有一个第三方接口,有很多个线程去调用获取数据,现在规定每秒钟最多有10个线程同时调用它,如何做到。
  9. spring的controller是单例还是多例,怎么保证并发的安全
  10. 用三个线程按顺序循环打印abc三个字母,比如abcabcabc
  11. ThreadLocal用过么,原理是什么,用的时候要注意什么
  12. 如果让你实现一个并发安全的链表,你会怎么做

设计模式

  1. 请列举出在JDK中几个常用的设计模式?
  2. 什么是设计模式?你是否在你的代码里面使用过任何设计模式?
  3. Java 中什么叫单例设计模式?请用Java 写出线程安全的单例模式
  4. 在 Java 中,什么叫观察者设计模式(observer design pattern)?
  5. 使用工厂模式最主要的好处是什么?在哪里使用?
  6. 举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类层次?
  7. 在 Java 中,为什么不允许从静态方法中访问非静态变量?
  8. 例说明什么情况下会更倾向于使用抽象类而不是接口?

JVM相关

  1. Jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代,几种主要的jvm参数等
  2. 你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms
  3. 当出现了内存溢出,你怎么排错
  4. JVM内存模型的相关知识了解多少
  5. 简单说说你了解的类加载器
  6. JAVA的反射机制
  7. 描述一下JVM加载class文件的原理机制?
  8. 如何判断对象可以被回收?
  9. 什么时候一个对象会被GC?
  10. 为什么要在这种时候对象才会被GC?
  11. JVM内存分为哪几部分,这些部分分别都存储哪些数据?
  12. 一个对象从创建到销毁都是怎么在这些部分里存活和转移的?

HTTP网络

  1. http1.0和http1.1有什么区别
  2. TCP三次握手和四次挥手的流程,为什么断开连接要4次,如果握手只有两次,会出现什么
  3. TIME_WAIT和CLOSE_WAIT的区别
  4. 说说你知道的几种HTTP响应码
  5. 当你用浏览器打开一个链接的时候,计算机做了哪些工作步骤
  6. Linux下IO模型有几种,各自的含义是什么
  7. TCP/IP如何保证可靠性,数据包有哪些数据组成

中间件及分布式

  1. tomcat如何调优,各种参数的意义
  2. 常见的缓存策略有哪些,你们项目中用到了什么缓存系统,如何设计的,Redis的使用要注意什么,持久化方式,内存设置,集群,淘汰策略等
  3. 如何防止缓存雪崩
  4. 用java自己实现一个LRU
  5. 分布式集群下如何做到唯一***
  6. 设计一个秒杀系统,30分钟没付款就自动关闭交易
  7. 如何做一个分布式锁
  8. 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗
  9. MQ系统的数据如何保证不丢失
  10. 分布式事务的原理,如何使用分布式事务
  11. 什么是一致性hash

算法

  1. 10亿个数字里里面找最小的10个
  2. 有1亿个数字,其中有2个是重复的,快速找到它,时间和空间要最优
  3. 2亿个随机生成的无序整数,找出中间大小的值
  4. 遍历二叉树

数据库

  1. 数据库隔离级别有哪些,各自的含义是什么,MYsql默认的隔离级别是是什么,各个存储引擎优缺点
  2. 高并发下,如何做到安全的修改同一行数据,乐观锁和悲观锁是什么,INNODB的行级锁有哪2种,解释其含义
  3. SQL优化的一般步骤是什么,怎么看执行计划,如何理解其中各个字段的含义,索引的原理?
  4. 数据库会死锁吗,举一个死锁的例子,mysql怎么解决死锁
  5. MYsql的索引实现方式
  6. 聚集索引和非聚集索引的区别
  7. 数据库中 BTREE和B+tree区别
  8. 数据库三范式
  9. 脏读&不可重复读&幻读
  10. 存储引擎 MyISAM和InnoDB区别
  11. Mysql中有哪几种锁?
  12. 讲一下存储过程

Redis

  1. 为什么要用 redis /为什么要用缓存
  2. 为什么要用 redis 而不用 map/guava 做缓存?
  3. redis 和 memcached 的区别
  4. redis 常见数据结构以及使用场景分析
  5. redis 设置过期时间
  6. redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)
  7. redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
  8. redis 事务
  9. Redis 常见异常及解决方案

本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点

由于篇幅原因,在这答案就不做全部展示了,这些题我已经整理成pdf文档免费分享给那些有需要的朋友,同时整理也花费了蛮多时间,有需要的朋友(见文末)

大厂面试秘籍分享:基础+算法+Spring全家桶+JVM+设计模式+中间件+分布式

大厂面试秘籍分享:基础+算法+Spring全家桶+JVM+设计模式+中间件+分布式