面经手册 · 第1篇《认知自己的技术栈盲区》

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 讲到技术盲区,先说说我自己。几年前我也是从传统行业跨到互联网,同时还是从C#开发转到Java开发,与其说转不如说是回归Java。从上大学到毕业实习,我都是做Java的,但入职第一家公司,由于技术积累以及需要用C#与中继器、IO板卡、摄像头等进行交互,以及开发的软件是部署到客户端的,所以整套服务都是C#与少部分的C语言进行编写。

目录


  • 一、前言
  • 二、技术栈采集问卷
  • 1. 组织了一波采集活动
  • 2. 汇总出来的技术栈列表
  • 三、汇总技术架构图
  • 1. 负载
  • 2. 网关
  • 3. 架构
  • 4. 治理
  • 5.框架语言
  • 6. 服务
  • 7. 数据
  • 8. 环境
  • 9. 支撑服务
  • 四、总结


一、前言

讲到技术盲区,先说说我自己。几年前我也是从传统行业跨到互联网,同时还是从C#开发转到Java开发,与其说转不如说是回归Java。从上大学到毕业实习,我都是做Java的,但入职第一家公司,由于技术积累以及需要用C#与中继器、IO板卡、摄像头等进行交互,以及开发的软件是部署到客户端的,所以整套服务都是C#与少部分的C语言进行编写。

但可能由于自身仍有一股热爱Java的兴趣,把公司里我接触到的C#软件,都用Java去实现了一遍。比如Java与RS232串口进行通信操作,读取摄像头扫描信息等等。最终承载着这份兴趣跳槽了,刚出来的时候面试也是晕的,毕竟很多技术栈的内容是我没用过的,好在研究过Netty,算是当时一个技术亮点勉强通过,实现了我想写Java代码的心愿。

技术组里的gai溜子

可能每个人或多或少都有一些未接触的技术,虽然这些技术栈可能是整套架构中包括的,但可能由于经常忙于业务需求开发、技术组内缺少分享传承、再者是自己懒于探索究竟,而导致自己的技术盲区越来越多,久而久之就成了技术组里的gai溜子。

你的技术瓶颈也是一点点积累的

有一句常听到的话是;你知道的越多,你不知道的越多。这是积极向上学习的人总结出来的。与之相反的还有一句;你知道的越少,你不知道的越少

认知半径决定了眼界目光,可扫描区域的大小决定发展轨迹。技术瓶颈往往都是因为自我学习能力被封锁,日积月累的流逝沉淀导致。就比如,大学生毕业前有30万行的代码编写量,找工作还会很难吗?30万行一天平均200行而已!

二、技术栈采集问卷

1. 组织了一波采集活动

这是一波问卷收集,在两个500人的技术群中,邀请大家填写自己常用的技术栈。通过这样的方式互相了解目前在使用的技术栈都有哪些,你用的技术栈,肯定有我没用过的。很多时候有些技术的不知晓,就是因为各自圈子内的架构基本是固定的,所以限制了认知范围,而大家互相补充就可以知晓还有哪些技术栈是自己没用接触过的。

目前技术栈采集仍会持续进行中,欢迎随时补充并查看;

2. 汇总出来的技术栈列表

提交者(自动) 提交时间(自动) 你用过的技术栈(必填)
小傅哥 | bugstack.cn 2020/7/29 11:11:56 Drools
柠檬楠 2020/7/29 11:14:00 spring全家桶、kafka、mysql、oracle、netty、redis、docker、kubernetes、python3、zookeeper、mycat、sharding-jdbc、
Shing 2020/7/29 11:14:08 Dubbo
不忘初心 2020/7/29 11:15:04 java
󠀀󠀀 2020/7/29 11:15:20 springboot、springcloud
BIUBIUBIU 2020/7/29 11:15:26 elasticsearch
油条 2020/7/29 11:16:01 SpringBoot+Vue+MySql
Spirit_wolf 2020/7/29 11:16:17 Java
调包侠 2020/7/29 11:16:17 docker  kafka  rabbitmq rocketmq redis cloud-alibaba dubbo   nginx
缄默 2020/7/29 11:16:22 springboot mybatis redis mysql
飞鱼 2020/7/29 11:16:32 java
GROW 2020/7/29 11:16:45 Spark、Phoenix
Michael 2020/7/29 11:18:16 Java
子木 2020/7/29 11:18:18 java,oracle,mysql,es
寒小武 2020/7/29 11:18:35 请输入
建润 2020/7/29 11:19:00 ssm

2020/7/29 11:19:03 spring,redis,hadoop,docker,elasticsearch
鎏鬫蘃鸉 2020/7/29 11:19:10 java
wangChen 2020/7/29 11:19:19 java、python、docker、
Jeao&Leon 2020/7/29 11:19:35 dojo
库里 2020/7/29 11:19:46 clickhouse
Chord 2020/7/29 11:19:52 mybatis-plus
꧁ཊ查ཏ꧂ 2020/7/29 11:19:53 SpringBoot+Vue
Jeao&Leon 2020/7/29 11:19:57 foxbase
向日葵不流淚 2020/7/29 11:20:00 HBase
canonnk 2020/7/29 11:20:02 .net sqlserver node vue react
Chord 2020/7/29 11:20:05 springboot
王庆文 2020/7/29 11:20:14 Sentinel JVM-sandbox
噼里啪啦稀碎 2020/7/29 11:20:17 Cat,apollo
JKM 2020/7/29 11:20:19 收集技术
Jeao&Leon 2020/7/29 11:20:31 ffmpeg
罐头 2020/7/29 11:20:33 spring、mybatis、dubbo、nacos、rabbitmq、es
无名氏😊7173 2020/7/29 11:20:40 flink,clickhouse
日落黄昏下 2020/7/29 11:20:41 java
起风了 2020/7/29 11:20:43 Spock
Gavin 2020/7/29 11:20:46 haddop,spark,
2020/7/29 11:20:49 SpringBoot
Shing 2020/7/29 11:21:08 activemq,redis,Spring-security,PGsql,
Believe 💦 2020/7/29 11:21:32 spring-boot-cloud-security dubbo netty mybatis-plus hadoop mysql redis  disruptor
子木 2020/7/29 11:21:33 java,oracle,redis,mysql,es,mybatis,vue,elementui
康雁飞 2020/7/29 11:21:40 spring boot; redis
kirago 2020/7/29 11:22:58 ansible、django、flask、kubernetes、springboot、springcloud、docker、prometheus
张彬 2020/7/29 11:23:00 vert.x、vert.x、vert.x (重要的东西说三遍)、netty
shmilylyp 2020/7/29 11:23:11 java
HQRNQF 2020/7/29 11:23:17 GraalVm
灯泡厂老爷 2020/7/29 11:23:46 spring boot,mysql,reids,rabbitmq,elasticsearch
张彬 2020/7/29 11:25:10 vert.x、netty、RxJava、响应式编程、Disruptor
调包侠 2020/7/29 11:25:26 t-io netty springboot supervisor   solr elasticsearch

2020/7/29 11:25:31 spark
Perry 2020/7/29 11:26:24 activemq-Artemis,couchbase
2020/7/29 11:26:39 springboot、mybatis-plus、nacos、sentinel、gateway、redis
Neck 2020/7/29 11:26:52 spring,mybatis
小丑人 2020/7/29 11:27:12 springcloud
刘志航 2020/7/29 11:28:19 Spring、SpringBoot、SpringCloud、Dubbo、zk、Redis、Nacos、apollo、xxJob、Mysql、ES、RocketMQ、Eureka
zedomi 2020/7/29 11:28:30 java,redis,mysql,jfinal,sparkjava
时光 2020/7/29 11:28:45 Springboot,SpringMVC,Dubbo,SpringCloud,Redis,Vue
唐宋元明清 2020/7/29 11:28:57 consul
唐宋元明清 2020/7/29 11:29:39 kong
小米 2020/7/29 11:29:51 机器学习
海洋之心 2020/7/29 11:29:53 springcloud、vue、ddd、工作流引擎、elasticsearch
超人不会飞 2020/7/29 11:30:27 dubbo、spring cloud 、netty、spring
Disappear` 2020/7/29 11:31:10 dubbo nacos xxljob mybatisplus
今宵多珍重 2020/7/29 11:31:11 Springboot、Mybatis、Mysql、RabbitMQ、Netty、Redis、VUE
L 2020/7/29 11:32:00 vue+elementui+node
木瓜🐭 2020/7/29 11:32:12 spring、springmvc、springboot、mybatis、mybatis-plus、redis、mongodb、mysql、springcloud全套组件、rabbitmq、shiro、spring  security、xxl-job、阿里云OSS或腾讯云OSS
Jack 2020/7/29 11:32:16 java spring spring boot spring cloud
༺ཌༀཉི感謝郭嘉 PMP®༃ༀད༻ 2020/7/29 11:32:37 dubbo, zookeeper, springboot,springcloud  netflix,springcloud alibaba,apollo,cat,e(f)lk, mongodb, mysql, redis, mycat,  openresty, prometheus, skywalking,  rocketmq, rabbitmq, docker, jenkins, nexus, k8s, kubesphere
陈辉 2020/7/29 11:35:38 docker
@Violet 2020/7/29 11:36:20 zipkin, kibana,skywaking(没用过)
王凡01 2020/7/29 11:36:48 spring boot
王泽东 2020/7/29 11:36:54 boost,asio,pthread,libuv,libevent

2020/7/29 11:37:17 groovy
summer 2020/7/29 11:40:12 springcloud,springboot,dubbo,docker
弓長宏 2020/7/29 11:42:08 swoole
zedomi 2020/7/29 11:43:52 java,redis,mysql,nginx,sparkjava
红雷 2020/7/29 11:51:36 spring/dubbo
唐宋元明清 2020/7/29 11:52:58 php
渔人码头คิดถึง 2020/7/29 12:02:45 springboot,vue,layui
佛祖的jio不能抱 2020/7/29 12:02:45 oracle,spring
Joshua 2020/7/29 12:05:49 Java springboot   vue react MySQL
小辰 2020/7/29 13:11:41 spring cloud alibaba dubbo
星宿海 2020/7/29 13:18:47 java python mysql redis hadoop docker spring vue
chenkx 2020/7/29 13:51:46 java
米高电气马伟鸿 2020/7/29 13:57:30 netty
T.Jax 2020/7/29 14:03:08 springboot webflux mybatis jpa redis vue  uni-app
那些年、我们不曾知道的事情 2020/7/29 14:14:51 rabbitmq,kafka,hadoop,angular
旅人 2020/7/29 15:03:09 Antlr
郭小白 2020/7/29 16:52:25 github
往南更南 2020/7/29 17:07:41 springboot
2020/7/29 17:14:46 java
田小麦 2020/7/29 18:13:11 guava-eventbus
一碗小米粥 2020/7/30 9:03:31 webSocket,mq,nacos
Angel's Trumpet 2020/7/30 9:05:40 debezium
自律等于自由 2020/7/30 9:05:42 ssh+springboot+vue+redis+activemq
Waiting 2020/7/30 9:06:35 springcloud alibaba全家桶 springboot redis  nginx vue mybatis-plus emqx mqtt netty rabbitmq
Shing 2020/7/30 9:08:02 spring cloud alibaba,oracle,vue,
路斌 2020/7/30 9:09:16 java,android,mybatis,spring boot
Sniper 2020/7/30 9:09:19 jvmti
向北 2020/7/30 9:10:47 ssm,springboot,layui,redis,docker.
. 2020/7/30 9:13:12 k8s
小傅哥 | bugstack.cn 2020/7/30 9:14:47 大规模分布式系统的跟踪系统;dapper、Zipkin、pinpoint、appdash、cat、hydra、鹰眼、oneAPM
咖啡八宝粥 2020/7/30 9:16:21 Java、Dubbo、MySQL、Spring、Redis、Maven、Git、Nginx、C、Memcached
小傅哥 | bugstack.cn 2020/7/30 9:17:24 基于mysql binlog 的数据同步软件;otter
七号公路 2020/7/30 9:18:19 Vert.x
lhh 2020/7/30 9:21:06 nutz、
梦与孤独 2020/7/30 9:21:09 springboot + vue, Zuul网关
可以的 2020/7/30 9:23:01 ssm、springboot、springcloud、redis、rabbitmq、mysql、mybatis-plus、springcloudalibaba、docker、layui
清风徐来 2020/7/30 9:25:24 spring boot+mybatis+nodejs+vue+kotlin
韩俊臣 2020/7/30 9:40:08 ssm+oracle+redis+nginx
龙图腾 2020/7/30 9:50:44 spark
韶华如梦 2020/7/30 10:05:04 Rocketmq
小傅哥 | bugstack.cn 2020/7/30 15:12:51 JVM监控工具;jprofilter,perfino,Yourkit,Perf4j,JProbe,MAT

三、汇总技术架构图

在技术汇总中,可以看到有一些是自己常用的,也有一些是当前工作经历下没用接触过的。那么这些以上的技术栈,你有想过他们是怎么互相配合,组装出一张技术架构图吗?每一个地方用什么技术承载,这也可以考虑自己的日常开发中,都有哪些技术来支撑你们整个技术框架。

「架构图」

28.jpg

  • 这是一张把服务端开发涉及的技术栈汇总出的一张技术架构图。
  • 当然技术栈内容绝对局限于此,还有很多的其他的框架,可以被替代,只不过这些是比较常用的。
  • 这些构成你日常开发的整张技术图,可能有些是没用接触的,但这样就可以很好的让你去补充自己的盲区。
  • 以上这张图的PPT已经汇总到面试手册中,可以在公众号:bugstack虫洞栈回复下载,把得到的「链接」打开,找到ID:19进行获取。

1. 负载

  1. LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器,主要用于多服务器的负载均衡。
  2. F5是负载均衡产品的一个品牌,除此以外还有,Radware、Array、A10、Cisco等。
  3. Nginx就比较常见,它是由C语言编写的,是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

2. 网关

  1. 使用过SpringCloud的小伙伴都用过zuul,或者公司内部自研,以及把RPC接口转换为Http接口的一种服务。
  2. 为了方便客户端调用微服务,所以设计出了网关。在微服务实例地址发生改变的情况下,客户端调用服务要能够不受影响。
  3. 网关可以完成的功能:路由、反向代理、日志记录、权限控制、限流、切量、黑白名单等

3. 架构

  1. 大家最先接触的架构基本都是MVC,后来进入互联网企业开始逐渐有了更加复杂的分层处理,以及接入了RPC和网关。
  2. 随着SpringBoot的兴起,DDD领域驱动设计下的微服务逐渐起来了,这种四层架构是一种设计理论,以领域为中心建模开发。
  3. SOA是面向服务的架构模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。

4. 治理

  1. 在服务的治理中一般包括;熔断、降级、限流和服务编排等。
  2. 这里的思想是为了进行统一管理控制,各业务系统都是一个个自服务,最终提供给编排系统进行管理。

5.框架语言

  1. 这一层就是大家日常开发的技术语言层,用到各个技术栈来满足开发需求。
  2. 比如框架类;Spring、SpringBoot、Mybatis等。
  3. 同时这里也会涉及到很多的盲区技术,因业务开发的特性不同,所需要的技术栈也会不同,为了不同的业务场景会引入不同的技术方案进行处理。比如;Drools、Snowflake、Finlk等。

6. 服务

  1. 这一层是我们在开发过程中用到的组件涉及的中心服务类配置。
  2. 比如Dubbo以及它的注册中心、MQ以及它的平台服务、分布式任务和配置中心等

7. 数据

  1. 数据是整个系统的价值体现,因业务的体量发展从单库单表到分库分表,从数据查询到文件系统,再到各类搜索引擎的使用。
  2. 同时在DB数据的同步过程中一般会使用基于binlog的otter进行同步ES+Hbase操作。
  3. 以及Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。

8. 环境

  1. 在项目开发完成后一般会部署到自己的服务上或者云服务,以及选择不同的服务厂商。
  2. 再比如现在比较火的Docker和K8S,虽然不是日常开发的一部分,但也可以扩展学习了解。

9. 支撑服务

  1. 这一部分包括的是;部署压测日志JVM监控业务全链路监控MavenNexusGihub以及其他需要的支撑功能。
  2. 除此之外还有一些工具类的软件,比如:IDEAnavicatXshellXMindVisio等,熟练使用工具也是提升开发效率的最有效方式。

四、总结

  • 《面经手册》中,我们开篇介绍了面试官会问你啥的一个总结概述,以及到本篇介绍了技术栈盲区,通过这样两个章节的内容,可以让同好技术的小伙伴,有一个全局的认知,之后我们再去逐个攻破。
  • 面试只是搂草打兔子,学习才是主干路线,千万不要以为学了什么神秘大招或者洗脑长文就能所向披靡,那都是凑巧的小概率事件。
  • 我为技术用一年时间积累出来整套圈子;推文的公众号沉淀的博客资源的Github交流的技术群分享的技术圈子[虫洞技术栈]推广的各大平台,欢迎加入这个生态技术圈,每个人都有自己擅长的技术方向,互相学习,共同进步。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
7月前
|
NoSQL Java 关系型数据库
大厂贬值裁员,我却凭借Java开发进阶面试秘籍(核心版)逆流而上
最近参加了面试或者身边有朋友在面试的兄弟有没有发现,现在的面试不仅会问八股文,还会考察框架、项目实战、算法数据结构等等,需要准备的越来越多。
81 0
|
Java 程序员
收藏!阿里毕玄16篇文章,深度讲解Java开发、系统设计、职业发展
阿里毕玄结合自己的经历深度讲解Java开发、系统设计、职业发展等问题,快来一键收藏吧。
34852 1
|
1月前
|
设计模式 程序员
从零到一:我的编程之旅与技术感悟
【10月更文挑战第22天】这是一篇关于个人编程学习经历和技术感悟的文章。文章以通俗易懂的语言,讲述了作者从一个编程新手,通过不断学习和实践,逐渐成长为一名熟练的程序员的过程。文章不仅分享了学习编程的方法和技巧,还深入探讨了编程的本质和意义,对于想要学习编程的人来说,具有很好的启发和指导作用。
37 2
|
6月前
|
算法 程序员
探索代码之美:技术感悟与实践
【6月更文挑战第10天】在编程的海洋中,我们都是探险者。本文将分享我在编程旅程中的一些技术感悟,包括如何理解代码之美、如何提高编程效率以及如何保持对技术的热爱。通过这些感悟,我们可以更好地理解编程的本质,提高我们的技术水平,并享受编程带来的乐趣。
32 3
|
7月前
|
缓存 网络协议 Java
挑战全网,史上最全Android开发进阶,跳槽复习指南(1),掌握这6大技能体系
挑战全网,史上最全Android开发进阶,跳槽复习指南(1),掌握这6大技能体系
|
运维 算法 架构师
又爆新作!阿里甩出架构师进阶必备神仙笔记,底层知识全梳理
据有关数据表明,目前Java程序员这个群体的数量不减反增,行业内的竞争也是越来越严重。在同一时间入行的人,经过一段时间的学习后,差距就会显示出来。其实出现这样的原因大多数都是因为学习的方向出了问题。大多数人学Java刚开始只是为了快速就业,但是在工作了之后却没有一个好的学习路线,那些其实很重要的东西只是因为工作上用不到从而忽略掉了,慢慢的才发现自己与别人之间已经存在很大差距了!
|
设计模式 算法 安全
弯道超车!阿里P5~P8学习路线终发布,程序员进阶的关键所在
我们都知道优秀程序员的成长之路就是一条不断打怪升级之路。相信很多人都思考过以下问题:初级程序员如何快速成长?怎样从—个初学者成长为一名合格的程序员?又如何从一名合格的程序员登上职业高峰,成为一名CTO(首席技术官)呢?
|
设计模式 Java Spring
从理论走向实战!阿里高工熬夜整理出的Spring源码速成笔记太香了
金三银四也快要结束了,不知道大家面试的时候有没有被问到过Spring相关问题(循环依赖、事务、生命周期、传播特性、IOC、AOP、设计模式、源码)?反正我这个小学弟前段时间就来私信我说自己面试挂在了Spring这一块。(原谅我不厚道地笑了,如下图所示)
|
敏捷开发 架构师 数据建模
下一篇
DataWorks