【求职心得分享】(2)学习路线
【求职心得分享】(5)笔面试真题——容器
【求职心得分享】(6)笔面试真题——JVM
【求职心得分享】(7)笔面试真题——JUC
【求职心得分享】(8)笔面试真题——网络&IO
【求职心得分享】(9)笔面试真题——操作系统
【求职心得分享】(10)笔面试真题——数据库
【求职心得分享】(11)笔面试真题——分布式框架与中间件
【求职心得分享】(12)笔面试真题——基本素养
【求职心得分享】(13)笔面试真题——数据结构与算法
【求职心得分享】(14)大厂特点与应对技巧
下面这条路线并不完全是我走的路线,也不一定适合所有人。
之所以这么建议,是因为我想着如果时光可以倒流,让自己再准备得充分一点,我自己会怎么规划和安排我的求职准备。
再往下的话罗列了一些技能树,一年过去应该还没过时。秋招面试也是遵循二八定律的,技能树的定位就是覆盖80%的各家公司反复考察的基础知识+5%能够博面试官一点惊喜的亮点。 如果能够全部掌握秋招上岸绝对没有问题;如果能在某一两个方面有较为深入的理解(又恰好让面试官问到)应该可以拿到至少两个大厂的offer;如果还能在项目或者实习中运用自如并且有自己的思考,拿到SP问题也不大;再往上能不能拿到SSP就看能不能Match和还有一些运气成分了。
时间充足:建议每个方向找一本未过时的适合自己的最好是业界经典的书(注意我的定语),从头读起,从源码读起,建立一个完整的知识框架,并且在技能树的知识点上有所侧重。
时间不充足:对着技能树上的知识点通过任何手段(哪怕只是google)搞明白:是什么东西?为什么会存在这个东西?解决什么问题?有哪些用法/方法?什么场景下怎么使用?有什么优缺点?…然后就可以建立一个技能树based的知识框架,先面向秋招学习,回头在工作中再慢慢补齐。
有什么缺漏或者问题欢迎在评论区和我交流
学习路线建议(技术研发)
2 Year Ago(研一上/大二上)
- 确定求职主语言与大方向
- 开启刷题训练计划
1.5 Year Ago(研一下/大二下)
- 完成基础理论知识学习
- 完成毕业/求职所需项目/论文/课程要求
1 Year Ago(研二上/大三上)
- 确定细分方向,准备一个求职方向相关的项目
- 完成项目相关理论知识的学习和拓展
- 尝试投递日常实习
0.5 Year Ago(研二下/大三下)
- 应聘暑期实习
- 积累实习项目,完成理论知识深入和拓展
校园招聘
- 完成转正答辩
- 应聘秋招/春招
Java后端开发技能树(架构方向)
语言基础
- 语言特性
- 抽象类和接口
- String相关原理
- 反射
- 枚举
- 序列化
容器
- List:ArrayList、LinkedList
- Map:HashMap、TreeMap、LinkedHashMap
- Set:HashSet、TreeSet、LinkedHashSet
- Queue:PriorityQueue、ArrayDeque
- 并发容器:ConcurrentHashMap、CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentLinkedQueue、ConcurrentSkipListMap、ConcurrentSkipListSet
JVM
- 基本命令
- 运行时数据区
- 类加载
- 对象创建
- 对象头
- GC:垃圾回收算法、垃圾收集器
- 引用类型
JUC
- JMM(Java内存模型)
- 线程基础:创建方法、生命周期
- 线程操作命令:LockSupport.park()、Thread.sleep()、Object.wait()、Condition.await()、Thread.yield()、thread.join()
- 锁基础:CAS、原子类、volatile、synchronized、AQS
- 锁概念:公平锁/非公平锁、乐观锁/悲观锁、独占锁/共享锁、偏向锁/轻量级锁/重量级锁/锁消除、可重入锁、条件锁、自旋锁、分段锁、监视器锁
- 同步组件:ThreadLocal、ReentrantLock、ReentrantReadWriteLock、StampedLock、Semaphore、CountDownLatch、CyclicBarrier、Phaser
- 线程池:基本原理、生命周期、构造方法、自带实现、拒绝策略
- 阻塞队列:ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue、DelayQueue、SynchronousQueue、LinkedTransferQueue
- 伪共享
网络&IO
- 网络协议栈模型
- TCP/UDP:熟知端口、报文结构、可靠传输、流量控制、拥塞控制、握手挥手
- HTTP:报文结构、Cookies/Session、常用方法、状态码、通信过程、长短连接、网关、代理、隧道、连接多路复用、HTTP2.0
- 网络安全:HTTPS、对称/非对称加密、公钥私钥、数字签名、数字证书、DDos攻击
- 常见协议:IP、DNS、DHCP、ICMP、ARP/RARP、RIP/OSPF、BGP、NAT
- IO模型与网络模型
- IO多路复用:select、poll、epoll
- Socket编程相关
- Zero Copy技术
- Netty
操作系统
- 进程线程协程
- 守护进程、僵尸进程、孤儿进程
- 内存管理:虚拟地址、分页分段、虚拟内存、内存空间、内存映射
- 缓存替换方法
- CPU调度算法
- 页面置换算法
- 进程间通信:管道/FIFO、消息队列、Socket、共享内存
- 进程间同步:Signal、Semaphore、锁
- 死锁原理与消除
- 内核功能与状态
- 静态库与共享库
- 动态链接与静态链接
- 中断原理
- Linux操作命令
数据库
- Mysql:三范式、基本命令、存储引擎、索引、事务、ACID、隔离级别、MVCC、Next-Key Lock、日志、主从复制、SQL注入
- Redis:数据结构、淘汰策略、RDB/AOF、哨兵模式、主从复制、一致性、IO模型、事务、缓存击穿、缓存雪崩
- MongoDB
- ETCD
- 大数据:Hbase、Hadoop、Spark
分布式框架与中间件
- CAP理论
- ServiceMesh
- Serverless
- 分布式事务:2PC、3PC、TCC、分布式事务解决方案
- 分布式一致性协议:Gossip、Pow、Raft、Paxos
- 分布式锁:基于Redis、基于Msql、基于Zookeeper
- 消息队列:RocketMQ、Kafka
- 容器:Docker、K8S
- 服务发现:Zookeeper、Consul、Eureka
- 负载均衡:Nginx
- 熔断降级
- 监控报警:SLF4j、logback、log4j、log4j2、Metrics
- RPC:gRPC、Thrift、Dubbo
- Spring/SpringBoot:IOC、AOP、DI、MVC、Bean作用域、Bean生命周期、配置化、事务
- 云平台:IaaS、Paas、SaaS、Faas
基本素养
- 设计思想:设计模式、组件设计、架构思想
- 故障定位
- 性能调优
- Git
- Shell
- 大数据问题
- 智力题
- PPT与演讲
- PS
数据结构与算法
- 基本数据结构:数组、链表、树、栈、哈希表、优先队列、图
- 高级数据结构:AVL树、搜索树、红黑树、Trie、LinkedHashMap、B/B+树、线段树、并查集、拓扑序列、哈夫曼树、BitMap
- 排序算法:快速排序、归并排序、堆排序、插入排序
- 常见算法:二分查找、递归回溯、动态规划、全排列算法
- Elastic Search
- Bloom filter
- 并发编程
全部评论
(1) 回帖