面經手冊 · 第1篇《認知自己的技術棧盲區》

小傅哥發表於2020-07-31


作者:小傅哥
部落格:https://bugstack.cn

沉澱、分享、成長,讓自己和他人都能有所收穫!?

一、前言

講到技術盲區,先說說我自己。幾年前我也是從傳統行業跨到網際網路,同時還是從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

三、彙總技術架構圖

在技術彙總中,可以看到有一些是自己常用的,也有一些是當前工作經歷下沒用接觸過的。那麼這些以上的技術棧,你有想過他們是怎麼互相配合,組裝出一張技術架構圖嗎?每一個地方用什麼技術承載,這也可以考慮自己的日常開發中,都有哪些技術來支撐你們整個技術框架。

架構圖

  • 這是一張把服務端開發涉及的技術棧彙總出的一張技術架構圖。
  • 當然技術棧內容絕對侷限於此,還有很多的其他的框架,可以被替代,只不過這些是比較常用的。
  • 這些構成你日常開發的整張技術圖,可能有些是沒用接觸的,但這樣就可以很好的讓你去補充自己的盲區。
  • 以上這張圖的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交流的技術群分享的技術圈子[蟲洞技術棧]推廣的各大平臺,歡迎加入這個生態技術圈,每個人都有自己擅長的技術方向,互相學習,共同進步。

推薦閱讀

相關文章