未来学习规划 - java篇
1. Java
1.1 JDK源码
1.1.1 HashMap
- HashMap的数据结构(1.7、1.8的区别)
- HashMap的实现原理
- HashMap扩容为什么是2^n-1
- HashMap是线程安全的吗
- HashMap、HashTable是什么关系?
1.1.2 ThreadLocal
- 讲讲你对ThreadLocal的一些理解
- ThreadLocal有哪些应用场景
- 了解过FastThreadLocal吗
1.1.3 ArrayList、LinkList
- 是否保证线程安全
- 底层数据结构
- 插入和删除是否受元素位置的影响
- 是否支持快速随机访问
- 内存空间占用
- 如何进行扩容的,默认初始化空间是多少
1.1.4 String StringBuffer StringBuilder
- 有什么区别
- 是线程安全的吗
1.1.5 jdk1.8的新特性
- lambda表达式
- Functional Interfaces
- Optionals
- Stream 流
- Parallel-Streams 并行流
1.2 并发编程(j.u.c)
1.2.1 volatile
- volatile 的作用和使用场景
- volatile 如何保证指令重排
- 什么情况下会发生指令重排
1.2.2 synchronized
- 一般用在什么场景
- 实现原理
- 锁升级过程(偏向锁、轻量级锁、重量级锁)
- 这是JVM层面锁,还是JDK层面锁{JVM层面}
- 这是一种悲观锁还是乐观锁{悲观锁是独占锁}
1.2.3 lock
- 这是JVM层面锁,还是JDK层面锁{JDK层面}
- 这是一种悲观锁还是乐观锁
- 是可重入锁吗
1.2.4 ReentrantLock
- 与synchronized相比较有什么不同
- ReentrantLock 与 Lock 的关系
- 锁过程中是否可中断,与之对应的synchronized可中断吗
1.2.5 CAS
- Unsafe 类的作用
- CAS 的理解(compareAndSet)
- 什么是ABA问题
- CAS的实现有什么(AtomicInteger)
1.2.6 AQS
- 实现类有哪些 ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier
- 实现了AQS的锁有哪些 自旋锁、互斥锁、读锁写锁、条件产量、信号量、栅栏都是AQS的衍生物 内存屏障,几乎所有的处理器至少支持一种粗粒度的屏障指令,通常被称为“栅栏(Fence)”
1.3 多线程
1.3.1 线程池的种类
- newCachedThreadPool
- newFixedThreadPool
- newScheduledThreadPool
- newSingleThreadExecutor
1.3.2 线程的生命周期
- 新建、就绪、运行、阻塞(等待阻塞、同步阻塞、其他阻塞)、死亡
1.4 JVM
- GC 优化
- JVM 逃逸分析
- 类的对象头都包括什么
- new Object() 初始化都做了什么
- 运行时数据区
- Java的内存模型以及GC算法
1.5 设计模式
- 设计模式6大原则 单一职责(一个类和方法只做一件事)、里氏替换(多态,子类可扩展父类)、依赖倒置(细节依赖抽象,下层依赖上层)、接口隔离(建立单一接口)、迪米特原则(最少知道,降低耦合)、开闭原则(抽象架构,扩展实现)
- 创建型模式 这类模式提供创建对象的机制, 能够提升已有代码的灵活性和可复用性。
- 结构型模式 这类模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
- 行为模式 这类模式负责对象间的高效沟通和职责委派。
1.6 反射、代理
- 怎么实现反射调用方法
- 怎么代理一个类,有什么场景使用
- 类代理的原理是什么
- 有什么框架可以做类代理
2. Redis
2.1 命令
- 计数命令
- 排序命令
- 加锁命令
2.2 架构
- 常用的数据类型
- 数据淘汰策略
- 单线程的为什么那么快
- RDB和AOF的优缺点
- 持久化策略选择
2.3 应用
- 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
- Pipeline有什么好处,为什么要用pipeline
- 是否使用过Redis集群,集群的原理是什么
- Redis的同步机制了解么
3. Mysql
3.1 锁
- 全局锁
- 表锁
- 行锁
- 乐观锁、悲观锁
- 排他锁
- 锁优化
3.2 事务
- 事物特征
- 脏读
- 幻读
- 不可重复读
- 事物隔离
- 并发事物
- 事物实现原理
3.3 日志
- 慢查询日志
- 错误日志
- redo log(重做日志)
- binlog(归档日志)
- undo log(回滚日志)
3.4 索引
- 聚集索引 VS 非聚集索引
- 最左匹配原则
- 前缀索引
3.5 引擎
- InnoDB
- MyISAM
4. 框架
4.1 Spring
- Bean的注册过程
- Bean的定义都包括什么信息
- Spring 事务中的隔离级别有哪几种
- schedule 使用
4.2 Mybatis
- mybatis在spring的使用中,只需要定义接口,就可以和xml中的配置的sql语句,进行关联,执行数据库增删改查操作。怎么实现的
- session是怎么管理的
4.3 SpringBoot
- SpringBoot 怎么开发一个自己的Stater
4.4 SpringCloud
- spring cloud 断路器的作用是什么
- spring cloud 的核心组件有哪些 Eureka:服务注册于发现。 Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求。 Ribbon:实现负载均衡,从一个服务的多台机器中选择一台。 Hystrix:提供线程池,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。 Zuul:网关管理,由 Zuul 网关转发请求给对应的服务。
5. 组件
5.1 Dubbo
- 通信模型是什么样的
- Dubbo 和 Spring Cloud 有什么区别
- dubbo都支持什么协议,推荐用哪种 dubbo://(推荐) rmi:// hessian:// http:// webservice:// thrift:// memcached:// redis:// rest://
- Dubbo里面有哪几种节点角色
- Dubbo中怎么处理的超时断开
5.2 Mq
- RabbitMq
- Kafka
5.3 elasticsearch
- elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。
- elasticsearch 的倒排索引是什么
- elasticsearch 是如何实现 master 选举的
- 详细描述一下 Elasticsearch 搜索的过程
5.4 Hbase
- 拓展类问题
[#](https://bugstack.cn/md/java/interview/2020-07-28-面经手册 · 开篇《面试官都问我啥》.html#_4-3-5-otter)4.3.5 otter
- 拓展类问题
6. 工具
- Idea
- Maven
- Jenkins
- JMeter
7. 架构
7.1 系统搭建
- MVC
- DDD 领域驱动设计
7.2 数据库设计
- 分库分表(水平拆分、垂直拆分)
- 业务场景
- 基础配置优化相关
7.4 服务治理
- 负载均衡
- 熔断
- 降级
- 限流
- 黑白名单
7.5 分布式任务
- xxl-job
7.5.1 监控
- 系统非入侵全链路监控
- TP99、TP999、QPS、TPS的熟悉程度
7.5.2 压测
- 是否压测过,有无经验
- 对系统健壮性的把控
- JVM参数
- GC调优
- 代码优化
8. 环境
- Linux
- Tomcat
- docker
- k8s
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
成都创新互联从2013年开始,先为乐东黎族等服务建站,乐东黎族等地企业,进行企业商务咨询服务。为乐东黎族企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
网站名称:未来学习规划-java篇-创新互联
文章网址:
http://6mz.cn/article/hjgih.html