如何在二三线城市月薪过万,不甘于做curd程序员,这些全掌握你就是架构师
Posted king哥Java架构
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在二三线城市月薪过万,不甘于做curd程序员,这些全掌握你就是架构师相关的知识,希望对你有一定的参考价值。
首先请原谅楼主标题党(真香),步入正题:当入职3-5年后,相信你接口已经写得贼溜了。一天写个20个简单接口应该没啥问题。这时候一些老铁是不是认为咱以后也能干干架构。我认为你认为的很对。无论从未来发展与钱途上都是必需的。而那部分只会写业务的老铁在中年注定会被淘汰。
那么你又问了,公司不给我机会啊。也不让我转部门,然后因为没有经验,面试也不给我机会。
根据楼主多年教学(chui niu)经验,转到公司架构部门几率是非常小,因为一个小公司也就一个管架构的,你让他干啥去。那么只有投奔新公司才是正道。本文将从知识储备,丰满简历,迎接面试(hu you)等方面带你解决图中问题。
本文将提供准备的大纲,技术篇章后续会更新,如果有兴趣请关注楼主。
本文仅适合二线小企业开发人员,不可能雷同。温馨提示,千万不要知道就是掌握,了解就是精通。
准备工作
- 确认自己未来偏向code,而不是管理。
- 确保自己接口已经写的贼溜了。普通的业务代码已经难不到你了。
- 不甘平凡,有充分的时间准备,充满饱满的热情持续学习。
如果准备好了,干就完事了。
知识储备
springboot高级接口功能实现
除了日常的接口外,springboot还有比普通接口复杂的功能,在日常中常用,在面试过程中讲述或许更有亮点。例如
- springboot像内外网邮箱发送邮件。
- websocket实现。(可以使用spring提供的,易上手,可二次开发)
- springboot发送短信。
- springboot整合swagger接口文档。
- 上传文件到云。
- 自定义注解监控日志。
此类功能可自行查看,而且功能都不是太难,是不是只写在简历上比curd更高级一点呢。
springboot架构级封装与理解
可能老铁对架构没有一个清晰的认识,对于小型公司架构,我有以下理解:
- 对领导要求功能的实现。比如:认证与鉴权框架,在线阅读需求等。
- 简化于小伙伴的开发,如使用@RestControllerAdvice简化异常的处理,自定义注解等。
- 规范小伙伴的开发,如规范的命名,规范的项目结构,统一的返回对象封装等。
可能你又说了,这方面没有具体的了解,无从入手怎么办。这里提供了一个本文的中心思想!参考!读书人的事怎么能叫。。。遇到问题,第一时间百度或者去github或gitee寻找该轮子是否有人制造。
这里推荐两个开源项目:
- jeecg:gitee.com/jeecg/jeecg…
- ruoyi:gitee.com/y_project/R…
前者功能非常全,但是因为代码非人所写,格式比较混乱,建议仅学习功能。后者功能不如前者强大,但是规则非常符合日常开发,代码很有条理,小企业可以直接使用作为开发架构。
这回知道怎么入手架构了吧,如果以上两个框架你都参透了,在小企业定制款符合自己需求和开发习惯的架构是非常容易的。
了解源码
源码不是万能的,但是没有源码是万万不能的。在小公司,有这个技能可以说是可以吊打大部分初中级程序员,一张嘴,这个底层源码是怎么怎么写的。然后你会看到周围投来羡慕的眼光。
在源码部分你至少要掌握以下部分。
- spring ioc与aop的源码。
- spring bean的加载过程源码。
- spring boot启动流程源码。
- spring boot约定大于配置的实现源码。
- mybatis执行流程源码。
当看到你简历上写阅读过源码,面试官是会嘿嘿一笑,对老板说这个小伙子还不错,仅次于我。切记,在面试过程中,不建议去背每个类名,给人一种我背我也行的感觉。总结性的描述一下原理即可。
准备一套微服务体系
在小厂,微服务可能在并发量或者业务并不是特别契合,但是可能甲方提出:我们就要上云,或者领导因为融资需要出门跟别人吹牛,所以大多数公司都需要此技能。
这里你需要掌握一套微服务体系,相比springcloud Netflix的闭源,建议使用如今火热的springcloud alibaba。
组件建议选择:
- nacos:注册和配置中心。
- openfeign:服务间调用组件。
- sentinel:熔断,降级,限流,完美支持openfeign。
- getway:网关,zuul已经是不是这个时代的选择了。
(虽然官方推荐dubbo,但是在小公司并发量并不大而且duboo相对复杂一些,所以使用openfeign也是一个不错的选择。)
最基础的要求就是自己能够搭建一套,了解其中基础概念,成功跑通。并背一些基础的面试题。
最好了解一下服务的注册于暴露的原理,这个面试遇到的概率很大。
下面这个划重点!!
在面试过程中,不要说自己没有实践过,而是自己做的demo。你可以说参与了公司部门微服务的搭建,这样即使不会了你也可以说这部分是他人搭建的,懂得吧。具体怎么组织语言还是看你自己。(以下所有技术栈都适用此条)
权限框架
在shiro和spring security中选择一项,建议使用spring security。
至少了解如何使用,核心配置类,和需要的表结构。
如果有经历可适当的了解oauth2。人才稀缺。
从0开发的话,必备技能。
sql优化
sql优化在面试中肯定跑不了,根据楼主多次面试,回答上explain具体分析流程的很少很少,掌握explain语法。会帮助你脱颖而出。
装x神器,干就完了
中间件
由于内卷的原因,现在不会几样中间件都不好意思出门。 redis与rabbitmq是必备技能,最少你需要掌握以下内容:
- 与spring boot的整合。redis的增删改查,mq的发送与监控消息至少都应该demo一下。别问你用什么客户端都答不上。
- mq消息准确发送的配置需要掌握,如:磁盘固化,ack,nack等。
- redis的基本使用类型与使用场景,以及数据固化相关。
- 其他基础面试题。
以下中间件可以初步了解,可以提升面试几率。
如elasticsearch,prometheus,apollo
对于中间件使用场景和并发量不高为什么使用,一定要给出合理的答案,这个是楼主经常问的。
规范
建议建立一套自己的开发规范,包括:
- 代码编写规范
- 接口编写规范
- 建表规范
- 接口文档编写规范
- 注释规范
可以参考阿里规范自行编写。目的如下:
- 面试彰显自己的亮点和与众不同。
- 为日后管理团队打下基础。
- 建议日常应用,提高自己代码编写的水平。
虽然我们是小企业,也要专业。
设计模式
这里建议将工厂模式,单例模式,策略模式,代理模式,适配器模式,状态模式吃透,面试重灾区。并在工作中合理应用几次,作为面试答案。
linux操作
因为小企业人员的原因,可能运维开发都是一个人,所以适当的了解linux可以增加竞争性。
这里建议购买或借或使用公司服务器,将上文的项目与中间件在服务器上搭建一遍,并尽可能记住命令即可。
docker与非docker的方式选择一种即可。
idea插件(可选)
适当的使用idea插件,是日常开发中,凸显专业的方面。这里推荐几个插件。
- easycode-制定后端的代码生成器。
- eclipse code format -自定义代码规范。
- p3c-阿里代码规范检测
知识输出(可选)
可以准备一个长时间维护的博客,可以让面试官更加了解你。
面试可以说,掘金优质博主,有原创文章xx篇,xx阅读量。咱上来就给面试官一波暴击。
服务性软件(可选)
有一些软件在日常开发中非常好用,也可能是某项工作中必须的,适当的描述可以坐实你的架构经验。如:
- 选择一款公司文档工具。楼主使用的是dokuwiki。
- 可以了解私服和镜像工具。楼主使用的是Nexus和harbor。
- 可以选择一个测试平台。请自行百度开源开源。
- 任务分配平台。请自行百度开源开源。
- 一个符合自我习惯的接口平台,yapi是比较流程的,可适当选择。
- processon-流程图在线制作网站。
一直想整理出一份完美的面试宝典,但是时间上一直腾不开,这套一千多道面试题宝典,结合今年金三银四各种大厂面试题,以及 GitHub 上 star 数超 30K+ 的文档整理出来的,我上传以后,毫无意外的短短半个小时点赞量就达到了 13k,说实话还是有点不可思议的。
一千道互联网 Java 工程师面试题
内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、mysql、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈(485页)
初级—中级—高级三个级别的大厂面试真题
阿里云——Java 实习生/初级
List 和 Set 的区别 HashSet 是如何保证不重复的
HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?
HashMap 的扩容过程
HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?
对象的四种引用
Java 获取反射的三种方法
Java 反射机制
Arrays.sort 和 Collections.sort 实现原理 和区别
Cloneable 接口实现原理
异常分类以及处理机制
wait 和 sleep 的区别
数组在内存中如何分配
答案展示:
美团——Java 中级
BeanFactory 和 ApplicationContext 有什么区别
Spring Bean 的生命周期
Spring IOC 如何实现
说说 Spring AOP
Spring AOP 实现原理
动态代理(cglib 与 JDK)
Spring 事务实现方式
Spring 事务底层原理
如何自定义注解实现功能
Spring MVC 运行流程
Spring MVC 启动流程
Spring 的单例实现原理
Spring 框架中用到了哪些设计模式
为什么选择 Netty
说说业务中,Netty 的使用场景
原生的 NIO 在 JDK 1.7 版本存在 epoll bug
什么是 TCP 粘包/拆包
TCP 粘包/拆包的解决办法
Netty 线程模型
说说 Netty 的零拷贝
Netty 内部执行流程
答案展示:
蚂蚁金服——Java 高级
题 1:
jdk1.7 到 jdk1.8 Map 发生了什么变化(底层)?
ConcurrentHashMap
并行跟并发有什么区别?
jdk1.7 到 jdk1.8 java 虚拟机发生了什么变化?
如果叫你自己设计一个中间件,你会如何设计?
什么是中间件?
ThreadLock 用过没有,说说它的作用?
Hashcode()和 equals()和==区别?
mysql 数据库中,什么情况下设置了索引但无法使用?
mysql 优化会不会,mycat 分库,垂直分库,水平分库?
分布式事务解决方案?
sql 语句优化会不会,说出你知道的?
mysql 的存储引擎了解过没有?
红黑树原理?
题 2:
说说三种分布式锁?
redis 的实现原理?
redis 数据结构,使⽤场景?
redis 集群有哪⼏种?
codis 原理?
是否熟悉⾦融业务?记账业务?蚂蚁⾦服对这部分有要求。
好啦~展示完毕,大概估摸一下自己是青铜还是王者呢?
前段时间,在和群友聊天时,把今年他们见到的一些不同类别的面试题整理了一番,于是有了以下面试题集,也一起分享给大家~
如果你觉得这些内容对你有帮助,可以加入csdn进阶交流群,领取资料
基础篇
JVM 篇
MySQL 篇
Redis 篇
由于篇幅限制,详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
需要的小伙伴,可以一键三连,下方获取免费领取方式!
以上是关于如何在二三线城市月薪过万,不甘于做curd程序员,这些全掌握你就是架构师的主要内容,如果未能解决你的问题,请参考以下文章
如何在二三线城市月薪过万做好职业规划,做一个平凡而不平庸的自己