查看原文
其他

一位读者2000+字的提问:想要跳槽到一个大点的公司

Guide哥 JavaGuide 2022-03-15

拍摄于苏州山塘街

大概一个多月前,我回答了一位读者的接近2000字的提问。

这位读者毕业于 18 年 ,本科,一所很普通的大学,前后待了两家公司。因为对当前的工作不太满意,想要跳槽到一个规模稍微大一点的公司。

读者提问

我觉得这位读者目前遇到的问题,我们有非常大的概率也会遇到。因此,我想借着今天头条推文的机会简单分享一下。

尤其要提一下的是:这位读者的提问非常用心,从个人基本情况、工作经历到自己跳槽的原因以及目前遇到的问题都说的非常非常清楚。

虽然,这会让我花费更多地时间去阅读,但是,我肯定还是更喜欢这种把自己目前所处的情况说清楚的提问方式。作为被提问者,我至少也觉得自己得到了尊重和重视。

这些都是相互的!你的用心提问也会反过来倒逼我认真回答,毕竟你的提问都这么用心了,那我也不好意思随便水一下回答,对吧!

先来看一下读者的基本情况和遇到的问题吧!

读者的情况

个人简介

我是一名 18 年 6 月份毕业的本科生(非 985.211,机械电子工程专业,Java 开发主要是自己大三下以后自学的),目前在一家给钢结构提供生产管理软件的软件公司(一个用于管理项目里钢结构生命周期的管理软件)。

工作经历

18 年 3 月份的时候进入简历中的第一家公司实习(大概十几个开发,包括前后端,测试等),在毕业以后留在了公司担任后端开发。这一家公司有点像外包公司,以合作的形式接外面的项目做(占股的方式)。

一般都是我们负责开发,合作伙伴负责运营和推广,好的项目会成立对应的单独的公司(其中包括了我入职的第二家公司)。

在这个过程中,我接触了商城(类似无人售货机),出行(购票,订酒店服务),以及其他的一些非互联网项目(其中包括了我在第二家公司做的 BIM 项目)。但是!由于项目是初创项目,而且没有足够的资金进行推广,所以项目的访问量都不大(商城项目一天大概就 100-200 多的订单),而且后端服务集中在一个 SpringBoot 应用中。

19 年 6 月份的时候,因为第一家公司经营不善,遣散了所有员工。因为项目是我们第一家公司开发的,有个客户(我现在公司的老板,上文提到的 bim 项目的合作伙伴)想继续开发,就把接触过 bim 项目的人找了过去,然后我就到了第二家公司。

第二家公司最开始只是注册了一个名称,后面把我们招过去以后才相当于正式成立。当时只有一个前端,一个后台(我)和一个 APP 开发。到了新公司以后,我主要负责后端团队,包括招人和带领他们进行项目开发。主要做的事情是已有项目的维护和新功能的开发。

在今年疫情回来之后,我主导对之前的版本进行了业务的重新整理以及代码大面积重构。主要原因是系统部署到不同公司的时候,要根据客户公司的业务流程修改代码,修改时间比较长。目前的系统基本已改可以满足大部分客户的要求,针对不同的公司只需要修改一下配置即可。

我现在的工作就是添加客户提出的一些报表的功能,负责客户部署前的技术支持,和部署,以及部署后的一些服务器维护。

想跳槽的原因

想跳槽有以下几个原因:

  1. 目前的工作内容更多的偏向运维和技术支持,跟自己的职业规划不太符合
  2. 因为是提供给单个公司的软件(最开始是想做成 saas 的,但是因为各公司情况都不太一样和一些客观原因,最后只能做成目前的模式,每个公司部署一个服务),访问量不大,以及项目的难点主要在业务上。平时学的很多技术都用不太上(类似分布式架构,消息队列等),不利于自己技术的提高。
  3. 在日常开发中,很多东西都是靠自己摸索,包括开发模式,部署流程,以及一些其他开发流程相关的东西,渐渐觉得自己需要去大型公司学习一下业内完善的开发流程,而且觉得在我毕业两年的情况下,在大佬的带领下提升技术比在一个小公司当负责人更好。
  4. 希望在刚毕业前几年进入一个中大型公司,一方面是前面说的学习,另一方面相当于镀金,避免工作 5-10 年以后因为工作经历的问题不好跳槽。

目前的问题

  1. 很多大公司都需要分布式技术,虽然我自己自学了 zk,dubbo,SpringCloud 这些分布式框架,但是只是自己搭建了对应的框架,试验不同框架提供的功能,没有把这些框架要应用到实际项目中,同时这些测试项目的业务逻辑也比较简单。感觉自己只有理论知识,但是实际使用经验不够。像一些调优或者排查问题的解决方法,一些比较好模拟的,我可以根据网上的博客模拟,但是有一些问题,就只能看看,然后记住。不知道互联网公司在招聘时候对这些东西的掌握要求到什么地步,是知道理论知识,然后能熟练使用框架就行,还是需要很精通这块。
  2. 对于简历的投递,我在网上看到网友说,招聘软件上投递大公司基本上简历都过不了。要靠内推或者是猎头,但是我没有这一块的资源,想问一下 G 哥,如何去寻找这一块的资源,脉脉上的内推可信吗。然后投大厂的时候有什么技巧,或者说有什么注意事项的吗?因为听说大厂招聘是要有几个月的间隔。

我的建议

以下是我的原回答。由于个人能力有限,小伙伴们有其他内容补充或者建议的话欢迎在评论区聊聊啊!

非常非常仔细地看了老哥的经历、跳槽的原因以及目前遇到的问题。

老哥遇到的第一个问题其实是可以拆解为下面这两个问题:

  1. 没有实际的分布式项目经验咋办?这些分布式技术要掌握到什么程度?
  2. 大厂(比如阿里)到底想要什么样的程序员?

没有实际的分布式项目经验咋办?分布式技术要掌握到什么程度?

说实话,公司里能用上分布式技术的程序员属于少数。即使在阿里这种公司,你做的项目可能也不需要分布式相关的技术。

有没有解决办法呢?

我简单说 3 个自己觉得比较实际的:

  1. 自己开发一个分布式相关的项目并开源 :你自己使用这些分布式技术搭建一个项目开源出来,这样的话,你的 Github 也好看了,也算是有实际使用这些分布式技术的证据了。
  2. 私下改造自己经历的项目 :你可以利用你学到的这些分布式技术对自己经历过的一些项目进行改造。我自己曾经就改造过自己做过的一个项目,整个过程不光能将这些分布式技术用于实战,还可以学到很多重构的技巧。
  3. 纯脑补型 :你可以可以脑补自己把这些项目用到了自己之前经历的项目中。你可能觉得这样比较扯,但是很多人确实都是这样去做的。不过即使是脑补,自己也一定要把对应到的分布式技术搞懂,还要动手实践写一些Demo。不到万不得已,尽量不要纯脑补。

分布式技术学到什么程度呢? 你可以去针对某个分布式技术比如 Redis 去找找常见的面试题看看,自问一下。

面试之前一定要看刷常见的面试题,针对性的准备一波,不然的话,面试的时候太吃亏了。

不信你拿点 Spring 常见的面试题让 Spring 核心贡献者回答,他都不一定能完全回答上来。

大厂到底想要什么样的程序员?

为了能够搞清楚这个问题,我们来看一下阿里官网支付宝 Java 高级开发工程师的招聘要求,我觉得这个最有说服力了!

从下面的招聘信息可以看出,除去 Java 基础/集合/多线程这些,这些能力格外重要:

  1. 底层知识比如 jvm :不只是懂理论更会实操。周志明老师的 《深入理解 Java 虚拟机(第 3 版)》 一定要多读几遍!
  2. 面向对象编程能力 :我理解是这个不仅包括“面向对象编程”,还有程序员必知的一些原则比如 SOLID 原则、DRY 原则、KISS 原则等等。相关阅读:有哪些编程定律/原则是程序员必须了解的?
  3. 框架能力 :不只是使用那么简单,更要搞懂原理和机制!搞懂原理和机制的基础是要学会看源码。
  4. 分布式系统开发能力 :缓存、消息队列等等都要掌握,关键是还要能使用这些技术解决实际问题而不是纸上谈兵。
  5. 不错的 sense :喜欢和尝试新技术、追求编写优雅的代码等等。

面试的时候,你简历上写的技术肯定会重点问的,大厂的话会挖的深一点。比如说你简历上写了自己熟悉 Dubbo 的话,面试官可能就会问你:

  1. 如果让你自己实现 RPC,你会怎么样去做?
  2. 讲讲自己用 Dubbo 做了什么?最熟悉的模块是什么?
  3. Dubbo 的 SPI 机制了解么?
  4. ....

除了技术,技术面试还会重点问你做过的项目(最近做的项目是重点)。比如说面试官会问你:

  1. 项目的系统架构设计?
  2. 项目的系统架构设计有没有可以优化的地方?
  3. 做项目的过程中遇到了哪些印象比较深刻的问题?自己是如何解决的?
  4. ......

除了自己做过的项目的话,技术面试的时候,面试官还有极大可能给你一个业务场景让你解决(类似系统设计)。

如何获得大厂面试?

一些比较常见的投递简历的方法:

  1. 大厂官网投递简历(走流程的网申);
  2. 线下参加宣讲会,直接投递简历(一般是校招才有);
  3. 求职类网站投递简历(不是太推荐,适合海投)

其他一些比较“好”的投递简历/自荐的方法:

  1. 找到你认识的人(师兄师姐、请朋好友)或者你不认识的人(技术社区认识的一些在大厂的大佬)帮忙你内推(一般是能够让你避开网申简历筛选,甚至是笔试筛选,还是挺不错的,不过也还是需要你的简历够棒)。千万不要不好意思让别人帮你内推,他们都是很原因帮忙内推的,毕竟你获得 offer 之后他们也是有丰厚奖励的。
  2. 博客被看中/Github 优秀开源项目作者,大厂内部人员邀请你面试;

另外,牛客网、v2ex 上面有很多发内推广告的,也可以多关注一下。

最近写的一些干货,每篇都很用心,欢迎各位小伙伴阅读/点赞/分享:

  1.  一份热乎的 SpringBoot 前后端分离后台管理系统分析!分模块开发、RBAC权限控制...

  2.  同事自研了一款操作系统—「编程杂感」第 2 期

  3.  3种缓存读写策略都不了解?面试很难让你通过啊兄弟!

  4.  编程之路无捷径!「编程杂感」第 3 期

  5.  Swagger 官方 Starter 配上这个增强方案是真的香!


我是Guide哥,Java后端开发,会一点前端知识,喜欢烹饪,自由的少年。一个三观比主角还正的技术人。我们下期再见!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存