admin管理员组

文章数量:1794759

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

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

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


前言

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

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

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

Java面试的重点:

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

面试常问的面试专题

一、JVM与性能优化

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

  • redis数据结构有哪些?
  • Redis缓存穿透,缓存雪崩?
  • 如何使用Redis来实现分布式锁?
  • Redis的并发竞争问题如何解决?
  • Redis持久化的几种方式,优缺点是什么,怎么实现的?
  • Redis的缓存失效策略?
  • Redis集群,高可用,原理?
  • Redis缓存分片?
  • Redis的数据淘汰策略?
  • redis队列应用场景?
  • 分布式使用场景(储存session)?
  • 三、网络编程

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

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

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

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

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

  • IOC和DI是什么?
  • Spring IOC的理解,其初始化过程?
  • BeanFactory 和 FactoryBean的区别?
  • BeanFactory和ApplicationContext的区別?
  • ApplicationContext上下文的生命周期?
  • Spring Bean的生命周期?
  • Spring AOP的实现原理?
  • Spring是如何管理事务的,事务管理机制?
  • Spring的不同事务传播行为有哪些,干什么闬的?
  • Spring中用到了那些设计模式?
  • Spring MVC的工作原理?
  • Spring如何解决循环依赖?
  • Spring如何保证Controller并发的安全?
  • 九、数据库

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

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

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

    本文标签: 这份看完刚开始程序员大纲