这一轮通常是与工作室的其他方向组队开发一款产品,但是也可以选择其他,例如
- 精读源码并从底层实现一个简单框架
- 参加开源活动,例如开源之夏、GSoC(Google Summer of Code)等
以下任务任选一个即可
与客户端成员(前端/Android/IOS/其他跨端应用)进行一定体量的项目开发
采用分布式框架进行开发,如SpringBoot + SpringCloud/SpringCloudAlibaba + Dubbo/OpenFeign等
需要你有以下部分:
-
服务路由(网关):Spring Cloud Gateway等
-
负载均衡:LoadBalance等
-
服务调用:Dubbo RPC、OpenFeign等
-
服务注册发现:Eureka、Nacos、Zookeeper等
-
流量控制、熔断降级:Hystrix、Sentinel等
-
使用docker-compose等快速搭建起你的开发环境(例如使用docker-compose启动你的mysql、redis等)
-
编写项目文档,其中包括接口、项目结构目录树
-
项目架构关系图 好用的画图工具Excalidraw
基于dubbo/grpc,我们也能够较为轻松地实现跨语言开发的问题(相比大家在合作轮的时候或多或少都会遇到类似的问题)
对于分布式,简单来说(按个人理解),基本上是由一个(或多个)网关层(网关: 可以理解为对外暴露的接口,提供http或其他协议的请求服务),还有许多业务模块(根据需求)组成,基本上模块之间通过某种通信协议进行通信(一般不是http,效率较低(这里可以去了解一下protobuf相关))。
跨语言开发指的是,这里的业务模块可以由不同的语言来开发,通过proto等跨语言的DAL,经过序列化之后,以及某种通信协议,可以转换为另一种语言可以接收的形式,从而做到跨语言通信。
- 掌握Web底层工作原理
- 掌握Orm库的底层工作原理
- 掌握RPC的基本原理和工作流程
下面两个选一个完成即可,当然选择完成实现Spring的话难度更高,自然分数也会更高。
注意:必须进行功能测试,甚至打包成starter(答辩时可能需要你运行测试你的框架,请写好测试用例)
最后按完成的功能完整性、合理性、安全性进行综合评定。
该orm框架具备以下功能(可以参考mybatis或jpa等orm框架的设计)
- 能进行表的结构映射
- 实现简单的增删改查等等api接口
- 支持事务
- ...
对于Java后端开发的同学来说,Spring框架已经是事实上的标准,要进一步理解Spring的设计思想,提升自己的架构能力,不如自己动手,从零开始编写一个Spring框架。
Spring对于面试、工作等过程中也是重中之重,所以强烈建议以这项任务为目标来完成,并尽可能的还原更多的功能。
- context模块:实现ApplicationContext容器与Bean的管理;
- aop模块:实现AOP功能;
- jdbc模块:实现JdbcTemplate,以及声明式事务管理;
- web模块:实现Web MVC和REST API;
- boot模块:实现一个简化版的“Spring Boot”,用于打包运行。
我们这里推荐以下站点,可以自行关注以下:
除此之外,可以关注一下一些大厂的开源网站