Big-Data-Interview Java开发、大数据面试知识点,多为网上公开资料,留以自用。 目录 Java基础篇 语言基础 锁 多线程 并发容器 JVM JVM内存结构 堆和栈区别 Java内存模型 垃圾回收 Java对象模型 HotSpot 虚拟机性能监控与故障处理工具 类加载机制 Linux、IO Linux基础 IO 分布式 分布式理论 数据结构与算法 Redis Redis基础 redis内部数据结构 Git 操作系统 数据库 Meavn HBase Hive Spark 面试 计算机网络 Spring面试 Redis Elasticsearch 分布式 JVM 设计模式 多线程 JDK 数据结构 编程 实习小记 源码 MyBatis Spring Spring MVC Java基础篇 语言基础 Java的面向对象 Java语言的三大特征:封装、继承和多态 Java语言数据类型 Java的自动类型转换,强制类型转换 String的不可变性、虚拟机的常量池中的String字符串、String.intern()的底层原理 Java语言中的关键字:final Java语言中的关键字:static Java语言中的关键字:transient Java语言中的关键字:instanceof Java语言中的关键字:volatile Java语言中的关键字:synchronized Java中常用的集合类:ArrayList Java中常用的集合类:LinkedList Java中常用的集合类:SynchronizedList Java中常用的集合类:HashMap Java中常用的集合类:Hashtable Java中常用的集合类:ConcurrentHashMap 动态代理的实现方式 动态代理详解 泛型 锁 CAS 乐观锁与悲观锁 分布式锁 偏向锁 轻量级锁 monitor 锁消除和锁粗化 自旋锁 可重入锁 阻塞锁 死锁 CountDownLatch CyclicBarrier Semaphore 多线程 并发和并行的区别、进程与线程的区别 线程的实现 线程的状态 线程的优先级 线程调度 守护线程 自己设计线程池 submit()和execute() 线程池原理 为什么不允许使用Executors创建线程池 ThreadLocal变量 ThreadPoolExecutor创建线程池 线程池关闭的方式 并发容器 CopyOnWriteArrayList CopyOnWriteArraySet ConcurrentSkipListSet ConcurrentSkipListMap ConcurrentLinkedQueue ConcurrentLinkedDeque ArrayBlockingQueue LinkedBlockingQueue LinkedBlockingDeque JVM JVM内存结构 class文件格式 运行时数据区:堆、栈、方法区 直接内存 运行时常量池 堆和栈区别 Java中的对象一定在堆上分配吗? Java内存模型 Java内存模型与硬件内存架构关系 缓存一致性 可见性、原子性、顺序性(有序性) 内存屏障 final 垃圾回收 标记清除 引用计数 复制算法 标记压缩 分代回收 增量式回收 GC参数 对象存活的判定 垃圾收集器 Java对象模型 oop-klass 对象头 HotSpot 即时编译器 编译优化 HotSpot的启动 类加载机制流程 JVM源码分析之Java类加载过程 HotSpotVM对象机制实现浅析 JVM源码分析之Java对象的创建过程 JVM内存布局 虚拟机性能监控与故障处理工具 jps、jstack、jmap、jstat、jconsole、jinfo、jhat javap btrace TProfiler Arthas JVM的GC日志详解 类加载机制 classLoader 类加载过程 双亲委派(破坏双亲委派) 模块化_jboss_modules 模块化_osgi 模块化_jigsaw Linux、IO Linux基础 Linux的常用命令 远程登录 系统目录 文件和目录操作 Linux下的权限体系 压缩和打包 Shell脚本的编写 管道操作 理解Linux的进程,线程,PID,LWP,TID,TGID IO 用户空间以及内核空间 阻塞、非阻塞、信号驱动式、同步、异步IO 零拷贝(ZeroCopy) BIO、NIO、AIO 缓冲区Buffer 通道Channel 反应堆(Reactor) 选择器(Selector) AIO 分布式 分布式理论 分布式中的一些基本概念 分布式系统理论基础:一致性、2PC和3PC 分布式系统理论基础:时间、时钟和事件顺序 分布式系统理论进阶:Paxos 分布式系统理论进阶:Raft、Zab 分布式系统理论进阶:选举、多数派和租约 分布式锁的解决方案 数据结构与算法 背包九讲——Java详解 Redis Redis基础 缓存异常问题 什么是Redis Redis功能一览 访问 Redis 中的海量数据—scan Redis 事务 Redis中的事件驱动模型 Redis主从复制 Redis内存淘汰 Redis缓存模式 Redis命令的执行过程 Redis事务浅析与ACID特性介绍 Redis如何处理客户端连接 浅析Redis主从复制 使用快照和AOF将Redis数据持久化到硬盘中 数据库redisDb与键过期删除策略 Redis分布式锁 Redis分布式锁进化史 Redis面试常见问题 Redis高并发 redis内部数据结构 Redis的基础数据结构概览 探索Redis设计与实现2:Redis内部数据结构详解——dict 探索Redis设计与实现3:Redis内部数据结构详解——sds 探索Redis设计与实现4:Redis内部数据结构详解——ziplist 探索Redis设计与实现5:Redis内部数据结构详解——quicklist 探索Redis设计与实现6:Redis内部数据结构详解——skiplist 探索Redis设计与实现7:Redis内部数据结构详解——intset Git 合并 git回退 git stash Git忽略文件.gitignore的使用 操作系统 虚拟内存 进程虚拟地址空间的区域划分 Linux进程的创建与管理 Linux内核内存管理算法Buddy和Slab Linux线程 PCB控制块 页表 写时拷贝 Unicode字符编码 数据库 Hive group by操作 MySql执行计划explain 聚合函数 groupby函数 笛卡尔积 索引使用 数据库底层 索引分类 join change buffer架构 InnoDB体系架构详解 Meavn meavn插件 HBase Hbase简介 Hbase系统架构及数据结构 Hbase定位 Hbase_Shell Hbase API的使用 Hbase_Java_API Hbase的SQL中间层-Phoenix Hbase过滤器详解 Hbase如何设计rowkey HBase冷热分离 Hbase容灾与备份 Hbase协处理器详解 Hive Hive简介及核心概念 Hive的数据存储—表 Hive分区表和分桶表 Hive视图和索引 Hive数据查询详解 Hive适用场景 Hive常用DDL操作 Hive常用DML操作 HiveCLI和Beeline命令行的基本使用 Hive之Java API HiveToMR Impala和hive的查询有哪些区别 调优1 调优2 Spark spark基本概念 spark宽依赖与窄依赖 spark分区策略 reduceByKey和groupByKey Spark通信机制 Driver、Master、Worker Spark 运行原理 Spark DAG Spark blockManager BlockManager初始化 BlockManager之block数据的读写 Spark MapOutputTracker浅析 数据本地化级别 SparkContext、SparkConf、SparkSession Spark YARN启动流程源码分析一 Spark On YARN(Yarn-Cluster模式)启动流程源码分析(二) SparkContext执行 Shuffle Manager Shuffle问题及调优 Spark Standalone mode启动 spark context初始化 Driver的启动 Task提交调度 standalone模式 面试 计算机网络 HTTPS的加密机制 三次握手与四次挥手 Spring面试 Spring Boot中的注解 Spring Boot中的AOP及日志记录应用 Redis Redis的IO多路复用 Elasticsearch 为什么用Elasticsearch做全文搜索而不用MySQL 分布式环境 分布式锁 数据库与缓存数据一致性问题 压缩算法性能对比 JVM面试 JVM java中的static关键字 设计模式 单例模式 多线程面试 Synchronized与ReentrantLock区别 JDK ArrayList与LinkedList区别 数据结构 B树和B%2B树的插入、删除 编程 LeetCode-9-回文数 LeetCode-面试题40-最小的k个数 实习小记 Guava的Lists与Maps 源码 MyBatis 调试环境搭建 项目结构一览 解析器模块 反射模块 异常模块 数据源模块 事务模块 缓存模块 类型模块 IO模块 日志模块 注解模块 Binding模块 MyBatis初始化(一)之加载mybatis-config MyBatis初始化(二)之加载Mapper映射配置文件 MyBatis初始化(三)之加载Statement配置 MyBatis初始化(四)之加载注解配置 SQL初始化(上)之SqlNode SQL初始化(下)之SqlSource SQL执行(一)之Executor SQL执行(二)之StatementHandler SQL执行(三)之KeyGenerator SQL执行(四)之ResultSetHandler 会话SqlSession 插件体系(一)之原理 插件体系(二)之PageHelper Spring集成(一)之调试环境搭建 Spring集成(二)之初始化 Spring集成(三)之SqlSession Spring集成(四)之事务 Spring集成(五)之批处理 MyBatis面试题 Spring IoC之深入理解Spring IoC IoC之Spring统一资源加载策略 IoC之加载BeanDefinition IoC之获取验证模型 IoC之获取Document对象 IoC之注册BeanDefinitions IoC之解析Bean:解析import标签 IoC之解析标签:开启解析进程 IoC之解析标签:meta、lookup-method、replace-method IoC之解析标签:constructor-arg、property、qualifier IoC之解析自定义标签 IoC之注册解析的BeanDefinitions IoC之装载BeanDefinitions总结 IoC之开启Bean的加载 IoC之加载Bean:从单例缓存中获取单例Bean IoC之加载Bean:parentBeanFactory与依赖处理 IoC之加载Bean:分析各scope的Bean创建 IoC之加载Bean:创建Bean(一)之主流程 IoC之加载Bean:创建Bean(二)之实例化Bean对象(1) IoC之加载Bean:创建Bean(三)之实例化Bean对象(2) IoC之加载Bean:创建Bean(四)之属性填充 IoC之加载Bean:创建Bean(五)之循环依赖处理 IoC之加载Bean:创建Bean(六)之初始化Bean对象 IoC之加载Bean:总结 IoC之深入分析BeanPostProcessor IoC之深入分析Bean的生命周期 IoC之深入分析PropertyPlaceholderConfigurer IoC之深入分析PropertyOverrideConfigurer IoC之自定义类型转换器 IoC之分析BeanWrapper IoC之Bean的实例化策略:InstantiationStrategy IoC之BeanDefinition注册表:BeanDefinitionRegistry 环境&属性:PropertySource、Environment、Profile ApplicationContext相关接口架构分析 深入分析ApplicationContext的refresh() 4张图带你读懂Spring IoC的世界 SpringMVC 容器的初始化(一)之Root WebApplicationContext容器 容器的初始化(二)之Servlet WebApplicationContext容器 容器的初始化(三)之Servlet3.0集成 容器的初始化(四)之Spring Boot集成 组件一览 HandlerMapping组件(一)之AbstractHandlerMapping HandlerMapping组件(二)之HandlerInterceptor HandlerMapping组件(三)之AbstractHandlerMethodMapping HandlerMapping组件(四)之AbstractUrlHandlerMapping HandlerAdapter组件(一)之HandlerAdapter HandlerAdapter组件(二)之ServletInvocableHandlerMethod HandlerAdapter组件(三)之HandlerMethodArgumentResolver HandlerAdapter组件(四)之HandlerMethodReturnValueHandler HandlerAdapter组件(五)之HttpMessageConverter HandlerExceptionResolver组件 RequestToViewNameTranslator组件 LocaleResolver组件 ThemeResolver组件 ViewResolver组件