Java技术栈摘要

        本文从语言和生态两方面总结Java技术栈,作为Java工程师,这些知识点都是必备的,要牢牢印在脑子里的,不只是为了应付面试。

一、jdk方面(但凡是用过的或见过的类最好都读一遍源码):

1.  8种基础类型及其对应的包装类型的表示范围、Object类、BigDecimal和BigInteger大数、Class类型信息、反射原理、Thread类。

2.  熟知常用的Java简单集合容器和并发集合容器的源码,起码得懂原理。比如ArrayList、LinkedList、Stack、HashMap、HashSet、ConcurrentHashMap等。高级一点的如BitSet、ConcurrentSkipListMap、TreeSet、ConcurrentLinkedQueue、DelayQueue、PriorityQueue

3.  JUC包中的大部分并发工具要知道原理,最好是通读源码。比如:AQS、ReentrantLock、Condition、ReadWriteReentrantLock、BlockingQueue、ThreadPoolExecutor、ScheduledThreadPoolExecutor、CountDownLatch、CyclicBarrier、Semaphore、Phaser、Exchanger、Atomic等。

4. 关注前沿技术,比如jdk9-jdk14之间出现了哪些新特性?

JDK重要源码(摘自https://zhuanlan.zhihu.com/p/94228432  ,侵删)

二、JVM部分:

1. JMM内存模型理论,也就是volatile、synchorinzed、final的内存语义。推荐阅读方腾飞的《Java并发编程的艺术》、周志明的《深入理解Java虚拟机》、《Java性能权威指南》。

2. JVM内存空间划分,jdk7和jdk8的区别。

3. 垃圾收集算法的区别与适用场景、垃圾收集器工作原理。

4. Class文件的结构、类加载器工作步骤和理论。

5. JVM问题排查:CPU load过高、IO load过高、频繁FullGC耗时过长。

三、必知必会中间件:

1.  Redis:缓存击穿、缓存穿透、缓存雪崩;5种数据类型;持久化方案;Redis集群方案。推荐黄健宏的《Redis设计与实现》

2.  MySQL:索引原理B+树;索引类型;建索引的原则;InnoDB与MyIsam的区别;InnoDB事务ACID特性及其实现原理;MVCC原理及行锁 间隙锁 表锁;join连表查询;嵌套子查询;分组查询;ShardingSphere分库分表;一条SQL的执行流程。MySQL与Redis与ES有什么区别及各自适用场景?

3. Dubbo:Provider的服务暴露流程;Consumer的服务引用流程;一次RPC的调用流程。路由策略、负载均衡策略、注册中心、Netty网络通信。推荐直接下载源码进行调试,一遍通。

4. ZooKeeper:分布式CAP理论、BASE理论、ZK节点类型、Paxos协议原理、选主流程等。强烈推荐阅读倪超的《从Paxos到Zookeeper 分布式一致性原理与实践》,通俗易懂且有源码解析。

5. RocketMQ:不咋会,待探究。

6. Spring全家桶:Spring Ioc源码;Spring AOP源码、Spring Transaction源码、Spring MVC执行流程。Spring Boot和Spring Cloud也挺重要,还不会。

7. 其它的如es、kafka、netty、hbase、disruptor、guavaCache、caffeine、mongodb等视自己情况进行学习,这部分如果也看过源码或懂原理也可以写在简历中,那就是加分项。

8. 你写在简历中的每一句话都是呈堂供词,务必熟知。

四、计算机网络部分:

1. 7层网络模型和4层网络模型

2. UDP和TCP的区别及各自的上层应用;TCP三次握手、四次挥手。

五、算法部分:

各种链表操作、二叉树操作、排序与查询(快排 归并 冒泡 堆排 二分)、二维数组的操作、字符串操作等等,按leetcode专题刷。遇到的题目:快排;二维数组顺时针从外圈向内圈打印;将一个Node节点插入到一棵AVL树中;各种链表操作如反转、合并两个链表;统计一个List<Integer>里面出现次数最多的那个数字;求二叉树的深度;一个二维数组的每一个横向和纵向都是递增的,找出数字x在第几行第几列。

六、项目部分:

自己负责的项目一定门儿清,项目规模,收到的效果,知道优缺点在哪儿,知道怎么优化改进。

七、设计模式:

三大类20多种设计模式会灵活运用即可,可回顾一下自己项目中用的设计模式。另外可以阅读下《重构-改善既有代码的设计》。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作者: 一字马胡 作为Java语言的重度使用者,很有必要认识一下Java语言的通用技术栈。我非常喜欢运行于JVM之...
    一字马胡阅读 4,142评论 0 9
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,688评论 0 11
  • 在我的人生中,常常有觉得迈不过去的坎。回头想想,那些事由大多忘记,大多是沉浸在“求不得”和自我怀疑的痛苦之中,...
    素大夫包治百病阅读 242评论 0 2
  • 多数子女抗拒管教的原因,是因为父母本身在自己的生活上没有好好约束自己----安娜_摩。 分享一个故事: 曾经发生过...
    淇妈修炼记阅读 155评论 0 1
  • 今天比较尴尬。 饭局:我,我朋友,我朋友的男朋友,我朋友男朋友的朋友,我朋友的朋友(男生),我朋友的现室友(我朋友...
    半路伴鹿扮露阅读 214评论 0 2