Java学习

下面主要是Java学习的目录,我会不断完善,总结所学的知识

  • 一 面试前的准备
  • 二 Java
    • 2.1 Java基础
      • 2.1.1 重载和重写的区别
      • 2.1.2 String 和 StringBuffer、StringBuilder 的区别是什么?String 为什么是不可变的?
      • 2.1.3 自动装箱与拆箱
      • 2.1.4 == 与 equals
      • 2.1.5 关于 final 关键字的一些总结
      • 2.1.6 Object类的常见方法总结
      • 2.1.7 Java 中的异常处理
      • 2.1.8 获取用键盘输入常用的的两种方法方法1:通过 Scanner
      • 2.1.9 接口和抽象类的区别是什么
    • 2.2 Java集合框架
      • 2.2.1 Arraylist 与 LinkedList 异同
      • 2.2.2 ArrayList 与 Vector 区别
      • 2.2.3 HashMap的底层实现
        • JDK1.8之前
        • JDK1.8之后
      • 2.2.4 HashMap 和 Hashtable 的区别
      • 2.2.5 HashMap 的长度为什么是2的幂次方
      • 2.2.6 HashMap 多线程操作导致死循环问题
      • 2.2.7 HashSet 和 HashMap 区别
      • 2.2.8 ConcurrentHashMap 和 Hashtable 的区别
      • 2.2.9 ConcurrentHashMap线程安全的具体实现方式/底层具体实现
        • JDK1.7(上面有示意图)
        • JDK1.8 (上面有示意图)
      • 2.2.10 集合框架底层数据结构总结
    • 2.3 Java多线程
      • 一 面试中关于 synchronized 关键字的 5 连击
        • 1.1 说一说自己对于 synchronized 关键字的了解
        • 1.2 说说自己是怎么使用 synchronized 关键字,在项目中用到了吗
        • 1.4 说说 JDK1.6 之后的synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优化吗
      • 二 面试中关于线程池的 4 连击
        • 2.2 说说 synchronized 关键字和 volatile 关键字的区别
      • 三 面试中关于 线程池的 2 连击 3.1 为什么要用线程池?
        • 3.2 实现Runnable接口和Callable接口的区别
        • 3.3 执行execute()方法和submit()方法的区别是什么呢?
        • 3.4 如何创建线程池
      • 四 面试中关于 Atomic 原子类的 4 连击 4.1 介绍一下Atomic 原子类
        • 4.3 讲讲 AtomicInteger 的使用
        • 4.4 能不能给我简单介绍一下 AtomicInteger 类的原理
      • 五 AQS
        • 5.1 AQS 介绍
        • 5.2 AQS 原理分析
    • 2.4 Java虚拟机
    • 2.5 设计模式
  • 三 计算机网络常见面试点总结
    • 3.1 TCP、UDP 协议的区别
    • 3.2 在浏览器中输入url地址 ->> 显示主页的过程
    • 3.3 各种协议与HTTP协议之间的关系
    • 3.4 HTTP长连接、短连接
    • 3.5 TCP 三次握手和四次挥手(面试常客)
  • 四 Linux
    • 4.1 简单介绍一下 Linux 文件系统?
    • 4.2 一些常见的 Linux 命令了解吗?
  • 五 MySQL
    • 5.1 InnoDB的理解
    • 5.2 数据库索引了解吗?
    • 5.2.2 最左前缀原则
    • 5.2.3 Mysql如何为表字段添加索引???
    • 5.3 当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下:
    • 5.4 事务隔离级别(图文详解)
    • 事物的特性(ACID)
  • 六 Redis
    • 6.1 Redis原理
    • 6.2 为什么要用 redis /为什么要用缓存
    • 6.4 redis 和 memcached 的区别
    • 6.5 redis 常见数据结构以及使用场景分析
    • 6.6 redis 设置过期时间
    • 6.7 redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)
    • 6.8 redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
    • 6.9 redis 事务
    • 6.10 缓存雪崩和缓存穿透问题解决方案
    • 6.11 如何解决 Redis 的并发竞争 Key 问题
    • 6.12 如何保证缓存与数据库双写时的数据一致性?
  • 七 Spring
    • 7.1 Spring Bean 的作用域
    • 7.2 Spring 事务中的隔离级别
    • 7.3 Spring 事务中的事务传播行为
    • 7.4 AOP
    • 7.5 IOC
  • 八 消息队列
    • 8.1 什么是消息队列
    • 8.2 为什么要用消息队列
    • (1) 通过异步处理提高系统性能(削峰、减少响应所需时间)
    • (2) 降低系统耦合性
    • 8.3 使用消息队列带来的一些问题
    • 8.4 JMS VS AMQP
    • 8.4.1 JMS
    • 8.4.2 AMQP
    • 8.4.3 JMS vs AMQP
    • 8.5 常见的消息队列对比
  • 九 Dubbo
    • 一 重要的概念
    • 二 Dubbo 的架构
      • 2.1 Dubbo 的架构图解
      • 2.2 Dubbo 工作原理
    • 三 Dubbo 的负载均衡策略
      • 3.1 先来解释一下什么是负载均衡
      • 3.2 再来看看 Dubbo 提供的负载均衡策略
      • 3.2.1 Random LoadBalance(默认,基于权重的随机负载均衡机制)
      • 3.2.2 RoundRobin LoadBalance(不推荐,基于权重的轮询负载均衡机制)
      • 3.2.3 LeastActive LoadBalance
      • 3.2.4 ConsistentHash LoadBalance
      • 3.3 配置方式
    • 四 zookeeper宕机与dubbo直连的情况
  • 十 数据结构
    • Queue
      • 什么是队列
      • 队列的种类
      • Java 集合框架中的队列 Queue
    • Set
      • 什么是 Set
      • HashSet 和 TreeSet 底层数据结构
    • List
      • 什么是List
      • ArrayList 和 LinkedList 源码学习
    • Map
      • 二叉树
      • 完全二叉树
      • 平衡二叉树(Self-balancing binary search tree)
      • B-,B+,B*树
      • LSM 树
    • BFS及DFS
  • 十一 算法
  • 十二 实际场景题
  • 十三 BATJ真实面试题
    • 说一下转发(Forward)和重定向(Redirect)的区别
    • 在浏览器中输入url地址到显示主页的过程,整个过程会使用哪些协议
    • TCP 三次握手和四次挥手
      • 为什么要三次握手
      • 为什么要传回 SYN
      • 传了 SYN,为啥还要传 ACK
    • IP地址与MAC地址的区别
    • HTTP请求,响应报文格式
    • 事务传播行为
    • 隔离级别
    • Spring AOP IOC 实现原理
    • 美团进阶篇
      • 1 消息队列MQ的套路
    • 美团终结篇
      • 1.1 Object类的常见方法总结
      • 1.2 hashCode与equals
      • 1.3 ==与equals
      • 2 ConcurrentHashMap 相关问题
      • 3 谈谈 synchronized 和 ReenTrantLock 的区别
      • 5 Nginx
文章作者: Fulin Zhang
文章链接: https://iuin.github.io/2019/java-learning/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 个人博客