Skip to content

Latest commit

 

History

History
101 lines (58 loc) · 4 KB

7-合作项目或底层实现.md

File metadata and controls

101 lines (58 loc) · 4 KB

Java 第七轮考核

这一轮通常是与工作室的其他方向组队开发一款产品,但是也可以选择其他,例如

  • 精读源码并从底层实现一个简单框架
  • 参加开源活动,例如开源之夏、GSoC(Google Summer of Code)等

任务列表

以下任务任选一个即可

合作项目

与客户端成员(前端/Android/IOS/其他跨端应用)进行一定体量的项目开发

采用分布式框架进行开发,如SpringBoot + SpringCloud/SpringCloudAlibaba + Dubbo/OpenFeign等

需要你有以下部分:

  1. 服务路由(网关):Spring Cloud Gateway等

  2. 负载均衡:LoadBalance等

  3. 服务调用:Dubbo RPC、OpenFeign等

  4. 服务注册发现:Eureka、Nacos、Zookeeper等

  5. 流量控制、熔断降级:Hystrix、Sentinel等

  6. 使用docker-compose等快速搭建起你的开发环境(例如使用docker-compose启动你的mysql、redis等)

  7. 编写项目文档,其中包括接口、项目结构目录树

  8. 项目架构关系图 好用的画图工具Excalidraw

基于dubbo/grpc,我们也能够较为轻松地实现跨语言开发的问题(相比大家在合作轮的时候或多或少都会遇到类似的问题)

Tips

对于分布式,简单来说(按个人理解),基本上是由一个(或多个)网关层(网关: 可以理解为对外暴露的接口,提供http或其他协议的请求服务),还有许多业务模块(根据需求)组成,基本上模块之间通过某种通信协议进行通信(一般不是http,效率较低(这里可以去了解一下protobuf相关))。

跨语言开发指的是,这里的业务模块可以由不同的语言来开发,通过proto等跨语言的DAL,经过序列化之后,以及某种通信协议,可以转换为另一种语言可以接收的形式,从而做到跨语言通信。

框架实现

目的

  • 掌握Web底层工作原理
  • 掌握Orm库的底层工作原理
  • 掌握RPC的基本原理和工作流程

具体任务

下面两个选一个完成即可,当然选择完成实现Spring的话难度更高,自然分数也会更高。

注意:必须进行功能测试,甚至打包成starter(答辩时可能需要你运行测试你的框架,请写好测试用例)

最后按完成的功能完整性、合理性、安全性进行综合评定。

实现一个简单的orm Framework

该orm框架具备以下功能(可以参考mybatis或jpa等orm框架的设计)

  • 能进行表的结构映射
  • 实现简单的增删改查等等api接口
  • 支持事务
  • ...
实现一个简单的Spring Framework

对于Java后端开发的同学来说,Spring框架已经是事实上的标准,要进一步理解Spring的设计思想,提升自己的架构能力,不如自己动手,从零开始编写一个Spring框架。

Spring对于面试、工作等过程中也是重中之重,所以强烈建议以这项任务为目标来完成,并尽可能的还原更多的功能。

  • context模块:实现ApplicationContext容器与Bean的管理;
  • aop模块:实现AOP功能;
  • jdbc模块:实现JdbcTemplate,以及声明式事务管理;
  • web模块:实现Web MVC和REST API;
  • boot模块:实现一个简化版的“Spring Boot”,用于打包运行。

开源活动

我们这里推荐以下站点,可以自行关注以下:

  1. 开源软件供应链点亮计划 (开源之夏)
  2. Google Summber of Code (gsoc)
  3. GLCC开源夏令营
  4. 腾讯犀牛鸟开源人才培养计划

除此之外,可以关注一下一些大厂的开源网站

  1. 阿里开源
  2. 腾讯开源
  3. Meta Open Source
  4. Google Open Source
  5. Uber Open Source
  6. 开源 - 美团技术团队