Java程序员2020刚开始找工作就碰壁?建议看完这份春招面试大纲

本文转载自:Java程序员2020刚开始找工作就碰壁?建议看完这份春招面试大纲


前言

一年之计在于春 金三银四已经要到来,2019的新的开始,作为一个开发人员,你是否面上了自己理想的公司,薪资达到心中理想的高度?

面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责。

今天给大家分享下我整理的Java架构面试专题及答案,其中大部分都是大企业面试常问的面试题,可以对照这查漏补缺,当然了,这里所列的肯定不可能覆盖全部方式,不过也希望能对即将找工作的朋友起到一些帮助!

Java面试的重点:

数据结构与算法,JVM内存结构、垃圾回收器、回收算法、GC、并发编程相关(多线程、线程池等)、NIO/BIO、性能优化、设计模式、Spring框架:分布式相关:Redis缓存、一致Hash算法、分布式存储、负载均衡等,微服务以及Docker容器等。在这由于文字很多,总结了java面试所涉及到的常问范围及常问面试题免费分享给大家

Java程序员2020刚开始找工作就碰壁?建议看完这份春招面试大纲_第1张图片

面试常问的面试专题

一、JVM与性能优化

  1. 描述一下 JVM 加载 Class 文件的原理机制?
  2. 什么是类加载器?
  3. 类加载器有哪些?
  4. 什么是tomcat类加载机制?
  5. 类加载器双亲委派模型机制?
  6. Java 内存分配?
  7. Java 堆的结构是什么样子的?
  8. 简述各个版本内存区域的变化?
  9. 说说各个区域的作用?
  10. Java 中会存在内存泄漏吗,简述一下?
  11. Java 类加载过程?
  12. 什么是GC? 为什么要有 GC?
  13. 简述一下Java 垃圾回收机制?
  14. 如何判断一个对象是否存活?
  15. 垃圾回收的优点和原理,并考虑 2 种回收机制?基本原理是什么?
  16. 深拷贝和浅拷贝?
  17. 什么是分布式垃圾回收(DGC)?它是如何工作的?
  18. 在 Java 中,对象什么时候可以被垃圾回收?
  19. 简述Minor GC 和 Major GC?
  20. Java 中垃圾收集的方法有哪些?
  21. 讲讲你理解的性能评价及测试指标?
  22. 常用的性能优化方式有哪些?
  23. 说说分布式缓存和一致性哈希?
  24. 什么是GC调优?

二、Redis

  1. redis数据结构有哪些?
  2. Redis缓存穿透,缓存雪崩?
  3. 如何使用Redis来实现分布式锁?
  4. Redis的并发竞争问题如何解决?
  5. Redis持久化的几种方式,优缺点是什么,怎么实现的?
  6. Redis的缓存失效策略?
  7. Redis集群,高可用,原理?
  8. Redis缓存分片?
  9. Redis的数据淘汰策略?
  10. redis队列应用场景?
  11. 分布式使用场景(储存session)?

三、网络编程

  1. TCP建立连接和断开连接的过程?
  2. HTTP协议的交互流程• HTTP和HTTPS的差异,SSL的交互流程?
  3. TCP的滑动窗口协议有什么用?
  4. HTTP协议都有哪些方法?
  5. Socket交互的基本流程?
  6. 讲讲tcp协议(建连过程,慢启动,滑动窗口,七层模型)?
  7. webservice协议(wsdl/soap格式,与restt办议的区别)?
  8. 说说Netty线程模型,什么是零拷贝?
  9. TCP三次握手、四次挥手?
  10. DNS解析过程?
  11. TCP如何保证数据的可靠传输的?

四、设计模式与重构

  1. 说说几个常见的设计模式(23种设计模式)?
  2. 设计一个工厂的包的时候会遵循哪些原则?
  3. 列举一个使用了 Visitor/ Decorator模式的开源项目/库?
  4. 如何实现一个单例?
  5. 代理模式(动态代理)?
  6. 单例模式(懒汉模式,恶汉模式,并发初始化如何解决, volatile与lock的使用)?
  7. JDK源码里面都有些什么让你印象深刻的设计模式使用,举例看看?

五、分布式

  1. 什么是CAP定理?
  2. 说说CAP理论和BASE理论?
  3. 什么是最终一致性?最终一致性实现方式?
  4. 什么是一致性Hash?
  5. 讲讲分布式事务?
  6. 如何实现分布式锁?
  7. 如何实现分布式 Session?
  8. 如何保证消息的一致性?
  9. 负载均衡的理解?
    10 正向代理和反向代理?
  10. CDN实现原理?
  11. 怎么提升系统的QPS和吞吐?
  12. Dubbo的底层实现原理和机制?
  13. 描述一个服务从发布到被消费的详细过程?
  14. 分布式系统怎么做服务治理?
  15. 消息中间件如何解决消息丢失问题?
  16. Dubbo的服务请求失败怎么处理?
  17. 对分布式事务的理解?
  18. 如何实现负载均衡,有哪些算法可以实现?
  19. Zookeeper的用途,选举的原理是什么?
  20. 讲讲数据的垂直拆分水平拆分?
  21. zookeeper原理和适用场景?
  22. zookeeper watch机制?
  23. redis/zk节点宕机如何处理?
  24. 分布式集群下如何做到唯一序列号?
  25. 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗?
  26. MQ系统的数据如何保证不丢失?
  27. 列举出能想到的数据库分库分表策略?

六、数据结构与算法

  1. 链表与数组?
  2. 队列和栈,出钱与入栈?
  3. 链表的删除、插入、反向?
  4. Hash表的hash函数,冲突解决方法有哪些?
  5. 各种俳序:冒泡、选择、插入、希尔、归并、快排、堆俳、桶排、基数的原理、平均时间复杂度、最坏时间复杂度、空间复杂度、是否稳定?
  6. 对冒泡与快排的改进?
  7. 二分查找,与变种二分查找?
  8. 二叉树、B+树、AVL树、红黑树、哈夫曼树?
  9. 二叉树的前中后续遍历:递归与非递归写法,层序遍历算法?
  10. KMP算法?
  11. 排列组合问题?
  12. 贪心算法、分治算法?

七、并发编程

  1. 跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?
  2. 那么请谈谈 AQS 框架是怎么回事儿?
  3. 请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。
  4. ReentrantLock 是如何实现可重入性的?
  5. 除了 ReetrantLock,你还接触过 JUC 中的哪些并发工具?
  6. 请谈谈 ReadWriteLock 和 StampedLock。
  7. 如何让 Java 的线程彼此同步?你了解过哪些同步器?请分别介绍下。
  8. CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?
  9. Synchronized 用过吗,其原理是什么?
  10. 你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?
  11. 什么是可重入性,为什么说 Synchronized 是可重入锁?
  12. JVM 对 Java 的原生锁做了哪些优化?
  13. 为什么说 Synchronized 是非公平锁?
  14. 什么是锁消除和锁粗化?
  15. 为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是
  16. 乐观锁一定就是好的吗?
  17. 什么是 Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?
  18. 请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?
  19. 请对比下 volatile 对比 Synchronized 的异同。
  20. 请谈谈 ThreadLocal 是怎么解决并发安全的?
  21. 很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?
  22. Java 中的线程池是如何实现的?
  23. 创建线程池的几个核心构造参数?
  24. 线程池中的线程是怎么创建的?
  25. 如何在 Java 线程池中提交线程?

八、开源框架

  1. IOC和DI是什么?
  2. Spring IOC的理解,其初始化过程?
  3. BeanFactory 和 FactoryBean的区别?
  4. BeanFactory和ApplicationContext的区別?
  5. ApplicationContext上下文的生命周期?
  6. Spring Bean的生命周期?
  7. Spring AOP的实现原理?
  8. Spring是如何管理事务的,事务管理机制?
  9. Spring的不同事务传播行为有哪些,干什么闬的?
  10. Spring中用到了那些设计模式?
  11. Spring MVC的工作原理?
  12. Spring如何解决循环依赖?
  13. Spring如何保证Controller并发的安全?

九、数据库

  1. 事务四大特性(ACID)?
  2. 数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别?
  3. innodb和myisam存储引擎的区別?
  4. MYSQL的两种存储引擎区别(事务、锁级别等等),各自的适用场景?
  5. 查询语句不同元素(where、jion、limit, group by、having等等)执行先后顺序?
  6. 数据库的优化(sql语句优化和索引)?
  7. 索引有B+索引和hash索引,各自的区别?
  8. B+索引数据结构,和B树的区別?
  9. 索引的分类(主键索引、唯一索引),最左前缀原则,哪些情况索引会失效?
  10. 聚集索引和非聚集索引区别
  11. 有哪些锁(乐观锁悲观锁),select时怎么加排它锁?
  12. 关系型数据库和非关系型数据库区别?
  13. 数据库三范式,根据某个场费设计数据表?
  14. 数据库的读写分离、主从复制?
  15. 使用explain优化sql和索引?
  16. long_query怎么解决?
  17. 死锁判定原理和具体场景,死锁怎么解决?
  18. varchar和char的使用场景?
  19. mysql并发情况下怎么解决(通过事务、隔离级别、锁)?
  20. 数据库崩溃时事务的恢复机制(REDO日志和UNDO日志) ?

十、微服务

  1. 什么是微服务?
  2. 微服务之间是如何独立通讯的?
  3. springCloud和dubbo 有哪些区别?
  4. springboot和springcloud,请谈谈对它们的理解?
  5. 什么是微服务熔断?什么是服务降级?
  6. 微服务的优缺点分别是什么?说下在项目开发中碰到的问题?
  7. 你所知道的微服务技术栈有哪些?
  8. eureka和zookeeper都可以提供服务的注册和发现的功能,请说说两者的区别?

本文转载自:Java程序员2020刚开始找工作就碰壁?建议看完这份春招面试大纲

你可能感兴趣的:(程序人生,Java,面试,面试,Java,程序人生,后端开发,架构师成长之路)