Java 转 golang 实习 + 学习规划

学习目标

Java 转 golang 实习 + 学习规划

个人情况

双非本 + qs50 硕,已经掌握了 Java 高频八股文,有 Java 实习经历(2023年6月结束),然后没有其他 Java 项目了,leetcode hot 100,golang 零基础

学习问题

我本来是学 Java 后端开发的,但是实习找到了 golang 后端开发的工作,我该如何适应? 我未来想去国企工作(偏向想 WLB),也想尝试去腾讯、字节、深信服这些 golang 大厂或者其他 Java 大厂工作拿高薪。 那我现在 Java 应该如何保持?要自己做多一个 Java 项目吗?还是说在实习期间就好好打磨golang,只要把 Redis、ES 这些通用的学好就行?未来面试八股文要同时准备 Java 和 golang 的八股文吗?

期望帮助

希望鱼总和大家能再给我一些建议,以及说说对豆包给的建议的看法!! 主要想知道从现在7月22日开始到8月底秋招,具体应该怎么做!!

已有尝试

找豆包请教了一下, 豆包说:

结合你的时间线(7月22日-8月底,约4周)和目标,我会在之前建议的基础上,补充「按周拆分的具体执行计划」,并针对“时间紧、任务多”的核心矛盾,明确「优先级排序和精力分配」,确保每一步都有落地性。

核心原则(先明确大方向,避免精力分散)

  1. 第一优先级:Golang实习落地(这是秋招简历的核心亮点,比“自学项目”有说服力10倍)+ 通用技能(MySQL/Redis/分布式,这是所有后端岗的“必考题”)。

  2. 第二优先级:Golang核心语法+并发模型(应对实习任务和Go岗面试)。

  3. 第三优先级:Java基础保持(不丢熟练度,但不额外投入新项目)。

  4. 拒绝“完美主义”:比如Go语法不用背到“闭包实现细节”,能写接口、调库、处理并发任务即可;Java不用重学Spring源码,记住HashMap/线程池核心原理就行。

4周具体规划(按“实习+自学”双主线推进)

第1周(7.22-7.28):Golang语法入门+实习任务“能上手”

目标:能看懂公司Go项目代码,独立完成简单接口开发(如CRUD接口)。

  • 每日实习时间(核心):

    • 上午:用“对比法”学语法(边查边用):打开公司项目里的一个简单接口文件(比如用户登录接口),逐行对应Java知识——看到struct就想“这是Java的class,但没有继承,字段要大写才导出”;看到func就想“这是Java的方法,但可以定义在struct外”;遇到gin.Context就查gin文档(https://gin-gonic.com/zh-cn/docs/),记常用方法(`ShouldBindJSON`、`JSON`返回)。
    • 下午:模仿现有代码写接口(比如抄一个查询接口的结构,改参数和SQL),重点保证“能跑通、无bug”,不纠结“代码优雅”。遇到卡壳优先问mentor“这个场景公司一般怎么处理”(比如错误返回格式、日志打印规范),比自己查半天高效。
    • 晚上:整理当天遇到的“语法坑”(比如Go的“值传递”导致修改参数无效、nil判断的注意事项),记在笔记里(只记“实际踩过的坑”,比盲目背语法表有用)。
  • 每日自学时间(1.5-2小时):

    • 语法:看《Go语言圣经》前5章(跳过复杂例子,重点看“类型定义、函数、接口、错误处理”),搭配B站“Go语法快速入门”(选1小时以内的精简版,比如“尚硅谷Go基础”前3节)。
    • 工具:熟练Go mod(依赖管理,对应Java的Maven)、go fmt(自动格式化),这是公司协作的基础,不会就搜“Go mod怎么添加依赖”“怎么指定Go版本”。
  • 周末:花2小时梳理“Java→Go”的核心映射表(手写一张纸),比如:

    JavaGo对应核心差异
    class + 字段/方法struct + 函数(接收器)Go无继承,函数可定义在struct外部
    implements 接口隐式实现(结构匹配即可)Go接口是“鸭子类型”,无需显式声明
    Thread + 线程池goroutine + syncgoroutine更轻量(栈初始2KB)

第2周(7.29-8.4):Golang并发入门+实习任务“能优化”

目标:理解Go并发基础(能写带goroutine的简单逻辑),实习中能对接口做简单优化(比如用goroutine并行查数据)。

  • 每日实习时间

    • 优先完成任务:比如写一个“查询用户信息+订单列表”的接口,尝试用两个goroutine并行查询(再用sync.WaitGroup等结果),对比串行查询的耗时——用实际效果理解“为什么Go并发高效”。
    • 读公司代码:重点看项目里的“并发工具类”(比如有没有封装goroutine池、channel的使用场景),模仿着写(比如用channel传递查询结果,避免全局变量)。
  • 每日自学时间

    • 并发基础(核心):每天1小时啃“goroutine+channel”:
      • 先懂“用”:写3个小例子(goroutine配合WaitGroup等待所有任务完成;用channel传递int数据;用select监听多个channel)。
      • 再懂“原理”:看“GMP模型”图解(不用背源码,知道“G是goroutine,M是系统线程,P是处理器,P是调度核心”即可),理解“为什么goroutine比线程轻量”(调度在用户态,切换成本低)。
    • 通用技能(同步启动):每天30分钟看MySQL索引(B+树结构、聚簇索引vs非聚簇索引),记“为什么索引能加速查询”“哪些情况索引会失效”(比如用函数操作索引列)。
  • 周末:做1道Go并发题(比如“用goroutine计算1-100的和,用channel收集结果”),再复习Java线程池核心参数(核心线程数、最大线程数、拒绝策略)——对比记忆(Go的goroutine不需要“池化”,因为本身轻量;Java线程重,所以需要池化管理)。

第3周(8.5-8.11):通用技能攻坚+Golang实战深化

目标:MySQL/Redis核心考点过一遍,Go能写带中间件的接口(比如用gin中间件做日志记录)。

  • 每日实习时间

    • 实习任务:尝试写一个简单中间件(比如记录接口耗时的中间件),理解gin的中间件原理(类似Java的Filter,但Go的中间件是函数嵌套)。
    • 对接中间件:如果实习中用到Redis,优先学Go操作Redis的库(比如go-redis),用它做简单缓存(比如缓存用户信息)——边用边记Redis的“String类型操作”(set/get/ex)。
  • 每日自学时间

    • 通用技能(重点):
      • MySQL(1小时):事务隔离级别(读未提交、读已提交、可重复读、串行化),记“可重复读是MySQL默认,解决脏读和不可重复读,用MVCC实现”;索引优化(联合索引最左匹配原则、避免回表)。
      • Redis(1小时):5种数据结构(String/Hash/List/Set/ZSet)的使用场景(比如Hash存用户信息,ZSet做排行榜);缓存问题(缓存穿透用布隆过滤器,缓存击穿用互斥锁)。
    • Go实战:30分钟学gin框架(路由分组、参数绑定、错误处理),能独立搭一个简单的“用户CRUD接口服务”(含路由、控制器、调用Redis的逻辑)。
  • 周末:整理MySQL/Redis的“面试高频题”(手写答案),比如“Redis为什么快?”“MySQL怎么优化慢查询?”——用自己的话总结(避免死记硬背)。

第4周(8.12-8.31):面试准备+Java轻复习+简历打磨

目标:能答Golang核心面试题+通用技能题,Java基础不生疏,简历突出实习和技能。

  • 每日实习时间
    • 复盘项目:整理实习中做的2-3个核心任务(比如“用gin写了XX接口,用goroutine优化后耗时减少XX%”“用Redis缓存解决了XX查询慢问题”),记清楚“做了什么、用了什么技术、效果如何”(这是秋招面试的核心素材)。
  • 每日自学时间
    • 面试题(核心):
      • Go方向(1小时):背高频题(goroutine调度原理、channel底层(环形队列)、defer执行顺序(栈结构,后进先出)、interface类型断言)。
      • 通用技能(1小时):过分布式基础(CAP理论、分布式锁用Redis怎么实现)、消息队列(Kafka的分区机制,至少知道“分区是并行单位”)。
    • Java复习(30分钟):每天过一个模块(周一集合(HashMap原理)、周二并发(线程池参数)、周三JVM(GC算法)、周四Spring(IoC容器)),只记核心(比如HashMap:数组+链表/红黑树,扩容机制,线程不安全)。
  • 简历打磨(周末集中弄):
    • 重点写Golang实习:“负责XX模块接口开发,使用gin框架设计RESTful接口,通过goroutine并行查询优化接口响应时间30%;集成Redis实现热点数据缓存,降低MySQL访问压力”——用数据体现价值。

    • 保留Java优势:“掌握Java核心(集合/并发/JVM)及Spring Boot框架,有Java实习经历(简述之前的实习内容)”——证明“双语言能力”。

关键问题补充(针对你的疑问)

  1. Java需要做新项目吗?
    不需要。秋招看的是“技能熟练度+已有项目”,你已有Java实习经历,足够证明基础;现在花时间做Java新项目,会挤占Golang和通用技能的时间(性价比极低)。每周30分钟复习核心八股,保持“能答上来”的状态即可。

  2. 八股文需要同时准备Java和Go吗?
    按投递方向拆分:

    • 投腾讯/字节等Go岗:优先背Go八股+通用技能(占80%精力),Java只需要“被问到能答基础”(比如被问“你Java转Go,HashMap和Go的map有什么区别”,能说出来即可)。
    • 投国企(Java岗):面试前1周集中补Java八股(重点JVM/并发/Spring),通用技能和Go岗是重合的,不用重复学。
  3. Leetcode需要刷吗?
    每天20分钟刷1道(优先简单-中等题),保持手感即可。大厂秋招算法题是门槛,但现在核心是“过简历关和技术面”,先保证“有东西可聊”(实习项目+技能),算法后期再强化。

总结

这一个月的核心是“以实习带Golang,以通用技能打底,轻量维持Java”。记住:后端岗的核心是“解决问题的能力”,你有Java基础+快速学习Golang的能力,再加上通用技能扎实,无论是Go大厂还是Java国企,都有竞争力。按计划推进,不用焦虑——实习项目落地+通用技能过关,就是最好的秋招筹码。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP