去年裸辞,今年慌了 | 大四后端Java仔的求职念经
- 笔者大概是从12月份开始准备的、当时没想着参加补招,想着直接参加春招,好好修炼一波。(去年最后悔的事情)
- 大致的准备的知识:
- Java基础
- Java的基本特性:继承 封装 多态 及衍生的一些知识
- Java关键字:static final super this transient new instanceof switch 的作用
- Java字符串相关:String StringBuilder StringBuffer CharSequence AbstractStringBuilder 源码级别
- Java集合框架(容器框架)Map Set List Queue 接口及实现类 Stack 源码级别
- Java输入输出类:InputStream 、OutputStream相关的类 以及工具类
- Java数组这个我被问过3次,反正我是没答好,每个面试官的花样都不一样,我服了
这部分知识比较
- 关键字:synchronized、volatile 内存语义、sync锁升级、happens-before、as-if-serials、JMM、volatile轻量级同步实现、CAS算法(ABA问题)
- Lock接口下的类:主要是ReentrantLock、ReentrantReadWriteLock 源码级别
- 锁分类: 公平/非公平 共享/排他 死锁/活锁 乐观锁/悲观锁等
- ReentrantLock和synchronized的对比
- AQS 相关:AQS源码 及 常见并发控制类源码级别(Semaphore、CountDownLatch、CyclicBarrier、Exchanger等)
- 原子类:AtomicXXXX AtomicXXXArray AtomicReference XXXAdder XXXAccumulator 底层的CAS一定要去看看。。。
- 线程池Executors框架 ThreadPoolExecutor 源码。线程池的执行过程(往里面加线程) 各个参数的作用。如何实现线程复用的?核心线程和最大线程?阻塞队列?拒绝策略?存活时间?...
- Thread 和 Object 多线程相关的方法作用及区别
- 并发容器:ConcurrentHashMap CopyOnWriteArrayList 等
- ThreadLocal源码
ps: 这部分 建议背书:《java并发编程艺术》 《Java并发编程实战》如果不愿意看书可以去看看悟空的并发课
- Java网络编程基础:BIO NIO AIO 最主要是NIO
- java网络编程框架:Netty:源码、零拷贝、TCP粘包/拆包、websocket实现案例、线程模型等
ps: 这部分我建议可以看 某某谷的Netty教程,B站就有,啊 万能的B站
- Java运行时数据区、对象内存
- 辣鸡回收算法及收集器
- JVM命令及JVM问题排查
- JVM的类加载
ps: 这部分 我建议背书《深入理解JVM》这样你能和面试官吹牛逼
- 数据结构与算法: 数组、链表、队列、栈、树、图、堆、散列表、本科8大排序、剑指offer、LeetCode
- 操作系统:进程、信号量、内存管理 (这部分我看得比较少,背就完事了),
- 计算机网络:7层模型 4/5层模型 TCP/IP协议(重点)、HTTP(1.0, 1.1, 2)与HTTPS、DNS、常见加密算法,对称与非对称,网络攻击
ps: 基本算法300题左右足够,有些高频的刻意记一下,操作系统主要背、计算机网络也是背,网络的频度比操作系统高,最好深入理解,多问为什么
- 范式与反范式设计
- 事务特性及隔离级别
- SQL语句(连表、函数等)、SQL语句优化、慢查询
- 索引分类、索引底层实现、索引优化、索引的选择
- 日志 redo undo bin
- 表锁、行锁、共享锁、排他锁、乐观锁、悲观锁、间隙锁、innodb和MyISAM锁的区别
- innodb和MyISAM两个存储引擎的对比。其实还有一个MEMORY引擎和REDIS的对比
- 分库分表
ps: 这部分 老实说可深可浅,最好深入理解
- 5大基本数据类型及底层实现 另加高级结构:HyperLogLog、GEO、Bitmap...
- 持久化:RDB和AOF 各自的实现方式和特点,如何结合使用
- 缓存淘汰策略、哨兵、集群 Raft算法
- 应用场景、缓存常见问题(如:缓存雪崩)
- Redis单线程高性能的原因? I/O多路复用、内存级别(寄存器 > L1-3cache > RAM > ROM )
- 分布式锁、消息队列、发布订阅等
两本书:老钱的《Redis实战》名字有点不准确 暂时忘了,另外一半是《Redis设计与实现》
- IOC和DI 、AOP解释。
- Bean加载过程、Bean的生命周期
- 依赖注入实现、依赖查找实现、循环依赖、延迟加载等
- Bean的层次上下文实现
- Spring 常用注解
- SpringMVC的请求处理过程
- PostProccessor、Aware、事件机制等
- SpringBoot自动装配实现方式 starter
- SpringBoot的启动大致过程
- SpringBoot的常用组件:data相关模块、日志sl4j-logback
- Spring事务管理TransactionManager:XA事务、JTA事务、链式事务、消息驱动型事务,可以去了解一下开源组件Seata,还有2PC 3PC TCC 这些
这个学习渠道就很多了,我看了一些视频教程(自己找,避免有些人说我打广告),还有博客,掘金上也有很多源码分析可以搜一波
- MyBatis:动态SQL的实现、从SQL查询结果到对象的过程
- Zookeeper:分布式锁实现、CAP、BASE、PAXIOS等 对比Eureka
- Dubbo:看了一点序列化及 和注册中心相关的代码
- Elasticsearch:ELK用过了解是什么、倒排索引
- RocketMQ:消息队列的用途、RocketMQ的高可用、RocketMQ的事务、对比其他消息队列
- SpringCloud:demo写了写、真香
原文
https://juejin.im/post/5e8dd5ad6fb9a03c3f1ea42b
正文到此结束