您当前的位置: 首页 >  Java

少林码僧

暂无认证

  • 2浏览

    0关注

    317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

java技术栈

少林码僧 发布时间:2018-08-15 10:19:09 ,浏览量:2

计算机基础 网路 TCP 协议,它和 UDP 的差异 TCP 三次握手四次挥手  拆、粘包 HTTP 操作系统 进程、线程、内存等概念;服务器常见的命令使用《鸟哥的 Linux 私房菜》 数据结构与算法 二叉树、红黑树、栈、队列等 选择和排序算法 LeetCode,(第4版) java基础 基本容器,,如:HashMap、ArrayList、HashSet、LinkedList 等,不但要会用还得了解其中的原理。这样才能在不同的场景选择最优的设计; IO、NIO 也是需要掌握。日常开发中大部分是在和磁盘、网络(写日志、数据库、Redis)打交道,这些都是 IO 的过程。 常见的设计模式如:代理、工厂、回调、构建者模式,这对开发灵活、扩展性强的应用有很大帮助。 Java 多线程是非常重要的特性,日常开发很多。能理解线程模型、多线程优缺点、以及如何避免。 良好的单测习惯,很多人觉得写单测浪费时间没有意义。但正是有了单测可以提前暴露出许多问题,减少测试返工几率,提高代码质量。 良好的编程规范,这个可以参考《阿里巴巴 Java 开发手册》以及在它基础上优化的《唯品会 Java手册》,《Java核心技术·卷I》值得推荐 多线程应用

多线程的出现主要是为了提高 CPU 的利用率、任务的执行效率。但并不是用了多线程就一定能达到这样的效果,因为它同时也带来了一些问题:

  1. 上下文切换
  2. 共享资源
  3. 可见性、原子性、有序性等。

一旦使用了多线程那肯定会比单线程的程序要变得复杂和不可控,甚至使用不当还会比单线程慢。所以要考虑清楚是否真的需要多线程。

会用了之后也要考虑为啥多线程会出现那样的问题,这时就需要理解内存模型、可见性之类的知识点。

同样的解决方式又有哪些?各自的优缺点也需要掌握。

谈到多线程就不得不提并发包下面的内容 java.util.concurrent。

最常用及需要掌握的有:

  1. 原子类:用于并发场景的原子操作。
  2. 队列。常用于解耦,需要了解其实现原理。
  3. 并发工具,如 ConcurrentHashMap、CountDownLatch 之类的工具使用以及原理。
  4. 线程池使用,以及相关原理。
  5. 锁相关内容:synchronized、ReentrantLock 的使用及原理。 这一块的内容可以让我们知道写 JDK 大牛处理并发的思路,对我们自己编写高质量的多线程程序也有很多帮助。 推荐《Java并发编程的艺术》很好的并发入门书籍。
JVM 虚拟机
  1. JVM 内存划分,知道哪块内存存放哪些内容;线程安全与否;内存不够怎么处理等。
  2. 不同情况的内存溢出、栈溢出,以及定位解决方案。
  3. 分代的垃圾回收策略。
  4. 线上问题定位及相关解决方案。
  5. 一个类的加载、创建对象、垃圾回收、类卸载的整个过程。 推荐《深入理解Java虚拟机》
数据库
  1. 索引的数据结构及原理、哪些字段应当创建索引。
  2. 针对于一个慢 SQL 的优化思路。
  3. 数据库水平垂直拆分的方案,需
  4. 了解业界常用的MyCAT、sharding-sphere 等中间件 推荐《高性能 MySQL》
分布式技术
  1. 首先是一些基础理论如:CAP 定理,知道分布式系统会带来的一些问题以及各个应用权衡的方式。
  2. 了解近些年大热的微服务相关定义、来源以及对比,有条件的可以阅读 martin fowler 的原文 Microservices,或者也可以搜索相关的国内翻译。
  3. 对 Dubbo、SpringCloud 等分布式框架的使用,最好是要了解原理。
  4. 接着要对分布式带来的问题提出解决方案。如分布式锁、分布式限流、分布式事务、[分布式缓存]https://github.com/crossoverJie/Java-Interview/blob/master/MD/Cache-design.md)、分布式 ID、消息中间件等。
  5. 也要了解一些分布式中的负载算法:权重、Hash、一致性 Hash、故障转移、LRU 等。 最好能做一个实践如:秒杀架构实践 之前有开源一个分布式相关解决组件: https://github.com/crossoverJie/distributed-redis-tool

推荐 《大型网站技术架构》

懂点架构

首先分布式肯定得掌握,毕竟现在大部分的架构都是基于分布式的。

这其中就得根据 CAP 理论结合项目情况来选择一致性还是可用性,同时如何做好适合现有团队的技术选型。

这里推荐下开涛老师的《亿级流量网站架构核心技术》,列举了很多架构实例,不过网上褒贬不一,但对于刚入门架构的能科普不少知识。

保持竞争力
  1. 打好基础。不是学了之后就忘了,需要不停的去看,巩固,基础是万变不离其宗的。
  2. 多看源码,了解原理,不要停留在调参侠的境界。
  3. 关注行业发展、新技术、新动态至少不能落伍了。
  4. 争取每周产出一篇技术相关文章。 积极参与开源项目。

https://github.com/crossoverJie/Java-Interview

关注
打赏
1661398670
查看更多评论
立即登录/注册

微信扫码登录

0.0468s