转载

去年裸辞,今年慌了 | 大四后端Java仔的求职念经

  • 笔者大概是从12月份开始准备的、当时没想着参加补招,想着直接参加春招,好好修炼一波。(去年最后悔的事情)
  • 大致的准备的知识:
  • Java基础
  1. Java的基本特性:继承 封装 多态 及衍生的一些知识
  2. Java关键字:static final super this transient new instanceof switch 的作用
  3. Java字符串相关:String StringBuilder StringBuffer CharSequence AbstractStringBuilder 源码级别
  4. Java集合框架(容器框架)Map Set List Queue 接口及实现类 Stack 源码级别
  5. Java输入输出类:InputStream 、OutputStream相关的类 以及工具类
  6. Java数组这个我被问过3次,反正我是没答好,每个面试官的花样都不一样,我服了

这部分知识比较

  • Java多线程
  1. 关键字:synchronized、volatile 内存语义、sync锁升级、happens-before、as-if-serials、JMM、volatile轻量级同步实现、CAS算法(ABA问题)
  2. Lock接口下的类:主要是ReentrantLock、ReentrantReadWriteLock 源码级别
  3. 锁分类: 公平/非公平 共享/排他 死锁/活锁 乐观锁/悲观锁等
  4. ReentrantLock和synchronized的对比
  5. AQS 相关:AQS源码 及 常见并发控制类源码级别(Semaphore、CountDownLatch、CyclicBarrier、Exchanger等)
  6. 原子类:AtomicXXXX AtomicXXXArray AtomicReference XXXAdder XXXAccumulator 底层的CAS一定要去看看。。。
  7. 线程池Executors框架 ThreadPoolExecutor 源码。线程池的执行过程(往里面加线程) 各个参数的作用。如何实现线程复用的?核心线程和最大线程?阻塞队列?拒绝策略?存活时间?...
  8. Thread 和 Object 多线程相关的方法作用及区别
  9. 并发容器:ConcurrentHashMap CopyOnWriteArrayList 等
  10. ThreadLocal源码

ps: 这部分 建议背书:《java并发编程艺术》 《Java并发编程实战》如果不愿意看书可以去看看悟空的并发课

  • Java 网络编程
  1. Java网络编程基础:BIO NIO AIO 最主要是NIO
  2. java网络编程框架:Netty:源码、零拷贝、TCP粘包/拆包、websocket实现案例、线程模型等

ps: 这部分我建议可以看 某某谷的Netty教程,B站就有,啊 万能的B站

  • JVM
  1. Java运行时数据区、对象内存
  2. 辣鸡回收算法及收集器
  3. JVM命令及JVM问题排查
  4. JVM的类加载

ps: 这部分 我建议背书《深入理解JVM》这样你能和面试官吹牛逼

  • 计算机基础
  1. 数据结构与算法: 数组、链表、队列、栈、树、图、堆、散列表、本科8大排序、剑指offer、LeetCode
  2. 操作系统:进程、信号量、内存管理 (这部分我看得比较少,背就完事了),
  3. 计算机网络:7层模型 4/5层模型 TCP/IP协议(重点)、HTTP(1.0, 1.1, 2)与HTTPS、DNS、常见加密算法,对称与非对称,网络攻击

ps: 基本算法300题左右足够,有些高频的刻意记一下,操作系统主要背、计算机网络也是背,网络的频度比操作系统高,最好深入理解,多问为什么

  • 数据库MySQL
  1. 范式与反范式设计
  2. 事务特性及隔离级别
  3. SQL语句(连表、函数等)、SQL语句优化、慢查询
  4. 索引分类、索引底层实现、索引优化、索引的选择
  5. 日志 redo undo bin
  6. 表锁、行锁、共享锁、排他锁、乐观锁、悲观锁、间隙锁、innodb和MyISAM锁的区别
  7. innodb和MyISAM两个存储引擎的对比。其实还有一个MEMORY引擎和REDIS的对比
  8. 分库分表

ps: 这部分 老实说可深可浅,最好深入理解

  • Redis
  1. 5大基本数据类型及底层实现 另加高级结构:HyperLogLog、GEO、Bitmap...
  2. 持久化:RDB和AOF 各自的实现方式和特点,如何结合使用
  3. 缓存淘汰策略、哨兵、集群 Raft算法
  4. 应用场景、缓存常见问题(如:缓存雪崩)
  5. Redis单线程高性能的原因? I/O多路复用、内存级别(寄存器 > L1-3cache > RAM > ROM )
  6. 分布式锁、消息队列、发布订阅等

两本书:老钱的《Redis实战》名字有点不准确 暂时忘了,另外一半是《Redis设计与实现》

  • Spring Framework
  1. IOC和DI 、AOP解释。
  2. Bean加载过程、Bean的生命周期
  3. 依赖注入实现、依赖查找实现、循环依赖、延迟加载等
  4. Bean的层次上下文实现
  5. Spring 常用注解
  6. SpringMVC的请求处理过程
  7. PostProccessor、Aware、事件机制等
  8. SpringBoot自动装配实现方式 starter
  9. SpringBoot的启动大致过程
  10. SpringBoot的常用组件:data相关模块、日志sl4j-logback
  11. Spring事务管理TransactionManager:XA事务、JTA事务、链式事务、消息驱动型事务,可以去了解一下开源组件Seata,还有2PC 3PC TCC 这些

这个学习渠道就很多了,我看了一些视频教程(自己找,避免有些人说我打广告),还有博客,掘金上也有很多源码分析可以搜一波

  • 其他
  1. MyBatis:动态SQL的实现、从SQL查询结果到对象的过程
  2. Zookeeper:分布式锁实现、CAP、BASE、PAXIOS等 对比Eureka
  3. Dubbo:看了一点序列化及 和注册中心相关的代码
  4. Elasticsearch:ELK用过了解是什么、倒排索引
  5. RocketMQ:消息队列的用途、RocketMQ的高可用、RocketMQ的事务、对比其他消息队列
  6. SpringCloud:demo写了写、真香
原文  https://juejin.im/post/5e8dd5ad6fb9a03c3f1ea42b
正文到此结束
Loading...