互联网寒冬下的技术追求与自我修炼

前言

        作为一名Java开发程序员,热爱充实生活,热爱代码世界。为了进一步加入头顶有点凉队列,本篇文章对目前互联网企业Java后端开发常用的技术以及面试中常见的知识进行分析和列举,请各位看官继续往下:
        程序员的良性成长应该是均衡性的,一般来说会从基本素养、知识技能和业务能力3个方面进行修炼。基本素养包括思维能力、严谨意识、表达能力等;知识技能包括编码能力、安全意识、系统设计等;业务能力包括业务理解能力、业务拆分能力、业务建模能力等。3个方面相辅相成,共同形成程序员的能力体系。
         微信公众号原创文章,欢迎点击查看
        接下来简要分析和总结技能体系中常见的知识点:

1、数据结构与算法

        数据结构与算法是程序员面试中的常客,是整个技能体系的基石,也是真正区分不同程序员编程水平的一个关键点。
(1)常用的数据结构有:数组、链表、堆栈、队列、树、二叉树、图等。
(2)常见的算法思想有:二分查找、双指针、分治思想、贪心思想、动态规划、递归、位运算等。

2、语言基础

(1)操作系统

  • 进程与线程(区别、使用场景、状态、实现方式、通信方法、同步机制),协程,死锁
  • 物理内存与虚拟内存,分页与分段,中断与异常,进程调度算法,页面置换算法

(2)计算机网络

  • 各层协议,TCP与UDP,HTTP与HTTPS,HTTP1.0 / HTTP1.1 / HTTP2.0
  • 交换机与路由器,以太网,ARP与RARP,DNS
  • 三次握手与四次挥手,TIME_WAIT 与CLOSE_WAIT
  • cookie、session原理及跨域等问题的由来及处理方法
  • 常用抓包工具 charles等

(3)Linux

  • 文件系统的原理,特别是 inode 和 block。数据恢复原理
  • 硬链接与软链接的区别
  • 僵尸进程与孤儿进程
  • 常用命令:less、grep、cut、top、netstat、tcpdump、vmstat、iostat等

(4)Java基础

  • 继承、异常、引用、泛型
  • 类库:集合、序列化等
  • IO(网络IO、文件IO)
  • 多线程、并发
  • 反射、动态代理

(5)数据库

  • 数据库语句:连接查询、子查询与分组查询等
  • 视图、存储过程、触发器、游标
  • 数据库索引与优化
  • 主从分离与读写分离,持久化
  • ACID、隔离级别、事务、三大范式
  • 乐观锁、悲观锁
  • 数据库底层(InnoDB 与 MyISAM,数据结构)
  • SQL 与 NoSQL (Redis与Memchached)

3、源码分析

(1)设计模式

  • 设计模式的六大原则:单一职责原则、开闭原则、里氏替换原则、依赖倒转原则、接口分离原则、迪米特法则、合成复用原则
  • 常用的设计模式:分为三大类(创建型模式、结构型模式、行为型模式)

(2)集合源码

  • ArrayList、LinkedList、HashTable、Vector、HashMap等
  • BlockingQueue、Callable、Semaphore、ConcurrentHashMap等
  • AtomicInteger、AtomicLong等
  • ReentrantLock、ReadWriteLock、Condition等
  • CountDownLatch、CyclicBarrier

(3)框架源码

  • Spring:IOC、AOP、事务处理机制、常见工厂容器、SpringMVC常见组件和流程、JDBC等
  • MyBatis:关联查询、嵌套查询、Mybatis事务、分析Mybatis动态代理的实现、缓存、preparestatment等
  • SpringBoot:启动过程、主要特点、常用注解、优势、依赖版本冲突等
  • Struts2、Hibernate等(目前企业使用的比较少)

4、分布式

(1)分布式架构原理

  • 分布式架构演进过程以及常见的分布式解决策略
  • CAP、BASE、Paxos理论以及应用
  • 分布式容灾、动态扩容、分布式事务以及数据一致性

(2)分布式策略

  • 基于RPC技术的WebService/Hession/RMI
  • 分布式锁实现(Zookeeper、Redis等)
  • Zookeeper的协议和选举机制
  • 流行的分布式框架(gRPC、Thrift、Dubbo等)

(3)分布式中间件

  • 消息中间件:ActiveMQ、RabbitMQ、Kafka、RocketMQ等
  • 分布式文件存储的数据库:MongoDB及使用场景
  • 分布式数据库中间件:Cobar、MyCAT、OneProxy、Vitess等
  • Nginx反向代理以及负载均衡服务

5、微服务

  • 与一体化架构的区别,微服务架构的特点(独立开发、独立部署、混合技术栈、错误隔离)
  • 核心角色:服务提供者(RPC Server)、服务消费者(RPC Client)和服务注册中心(Registry)
  • Java语言相关微服务框架:Spring Boot、Spring Cloud、Dubbo、Dropwizard等
  • 发布和引用服务的方式:RESTful API、XML 配置以及 IDL 文件三种
  • Docker虚拟化:镜像、仓库、容器

6、性能优化

  • JVM调优:JVM运行时数据区、JMM内存模型、垃圾回收算法、垃圾回收器、类加载机制等
  • MySQL调优:慢查询、Explain、Profile
  • Tomcat调优:运行机制、线程模型、参数调优等

7、常用工具

(1)IDE平台

  • Eclipse
  • IntelliJ IDEA
  • 接口管理工具:Swagger(RESTFUL接口的文档在线自动生成+功能测试功能软件)
  • 接口调试工具:PostMan

(2)项目工具

  • Git:分布式版本控制系统
  • Maven:纯Java编写的开源项目jar包管理工具和项目的构建等
  • Jenkins:持续编译,集成,发布项目
  • Sonar:一个开源的代码质量分析平台

        接下来将依据专题对各个知识点进行分析,欢迎关注微信公众号“JAVA万维猿圈”获取最新的干货信息
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值