前言
作为一名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万维猿圈”获取最新的干货信息