只要我跑的够快,内卷它就卷不到我
前言
最近刚刚入职,确实很忙,大周末的跑到公司来研究Apollo的源码。但是答应了群友出一篇面试的文章,所以想来想去先把文章写了再说。
先大概说下我的面试经历吧
笔者是从9月3号开始面试的,9月15号入职了微盟,目前是微盟基础技术中心的一名高级开发工程师。期间一共面试了9家公司,其中4家确定了offer跟具体薪资。
两家过了所有技术面,到HR面之后没回应了,估计是觉得我薪资要的比较高,笔者这次跳槽薪资涨幅还是比较满意的,月薪的话上涨了70%。
剩下还有3家,一家是在我入职后才通知我去公司做最后一轮面试,直接放弃了,其余两家感觉被HR刷KPI了。
这篇文章主要是分享面试的经验,但是为什么取这么个标题呢?因为最近总是听到内卷这个词,大概就是说,程序员加班内卷、工资内卷等等之类的。说实话,我刚刚听到这个词的时候,连内卷是什么意思都不知道,然后还特地去搜了一下,下面是百度百科的解释
这个解释太抽象了,后来特地多找了找资料,内卷大概是这么个意思
- 在宏观上,发展停滞不前,甚至在规模上萎缩退化。
- 在微观上,努力的效用停滞不前,甚至在边际效用上萎缩退化。
把内卷这个词放到程序员身上大概就是说
- 原来可能只要会个SSM就能拿1W一个月,现在可能连工作都找不到
- 原来一周工作40个小时可以拿1W一个月,现在可能一周要上50个小时,个人时薪低了
总结起来就是,个人价值被大环境拉低了。
怎么说呢,首先,我个人觉得对任意一个充满机遇的行业而言内卷都是一个必然的现象吧,其次的话没有太感受到内卷,我觉得我还在享受这个行业的红利,可能是因为我起点比较低的原因,就笔者最近的几次跳槽而言,薪资涨幅都还比较高。其次,只要你足够努力的话,内卷也没关系,你进步的速度大于行业内卷的速度,那么就可以一直走在行业的首端,每个行业都是大浪淘沙,但是分量足够重的人是不会被淘汰的!
聊聊学历
笔者是以高中学历出去面试的,因为我本身是大学肄业的,我当时考在华南理工大学,后来大三的时候自己退学了,创业做了两三年的游戏工作室,你们可以理解为打游戏吧,哈哈!工作室当时做游戏代练、金币交易等等一些东西
学历还是比较重要的,如果你现在还是一名学生的话请一定要珍惜你现在的时光。不过哪些错过了学生时代或者蹉跎了学生时代的朋友们也不要泄气,因为能证明你能力的不仅仅只有学历嘛!你可以从别的地方去给自己附加价值,作为一名程序员,给自己附加价值的最好方法应该就是参与开源项目了,笔者自己的话就参与了Spring的开源,给Spring提交了issue而且被采纳了,除此之外,个人博客也是一张技术名片。但是话也说回来,尽量去提升下学历吧,笔者跟技术群里的小伙伴组建了一个自考群,有兴趣的可以加我好友哈,可以一起交流一些自考的信息(杜绝广告)
实际上不管你有学历或者没学历,请记住一句话,决定你未来的不是过去,而是当下!
所以,奋斗吧,骚年!越努力,越幸运!
活在当下最重要,积累最重要,厚积薄发也不失为一种好的选择
干了上面的鸡汤,我们开始进入面试的正题!
面试分享
对于一个去面试的人而言,首先要知道自己应该去准备哪些知识去面试,每个人的工作环境是不一样的,所以每个人的知识体系也不一样。网上很多面试的文章都是给了一副巨复杂的思维导图,然后告诉你,把这张图上的东西学完你就能年薪XX万,但是可能画图的人自己都没学完,因为他也学不完,东西太多了!
所以,笔者给的建议是,每个人应该根据自己现有的技术栈去准备面试。以笔者自己为例,因为近两年使用的都是SpringCoud技术栈,所以在准备面试的时候完全放弃了Dubbo、ZK一系列的东西。如果面试官问起来,我基本就是回答:“以前用过,最近两年没怎么用过了,会用,不是特别了解”
同样的,笔者在消息中间件一直使用的RabbitMQ,对于RocketMQ、Kafka也放弃了。如果面试官问到这一块的东西我基本就是凭着自己的一些了解一两句带过,因为确实没怎么用过,没做太多了解。
但是如果你这么做的话,那么意味着你在其他通用的技术栈上要做到比一般人强。什么叫通用的技术栈呢?比如Redis、MySQL、SSM、SpringBoot,这些东西你没用过的话就不太合适了。所以我建议大家在这些技术应该要下些功夫,对于这些应该要做到只要面试官问到了,那么你就要跟他聊到不想聊为止。
我的整个复习版图如下:
要获取这些图的话在公众号后台回复【2020年9月面试总结】即可获取
接下来是一些常见面试问题,以及我在复习的时候总结的一些要点,其实就是上面的图
Redis
常见问题:
对于Redis以笔者这次面试的经验来看,最常问的是两方面
- 数据结构。
- Redis如何解决单点问题,其实问的就是Redis的集群
关于Redis的数据结构,一般来说提问场景如下
第一问:“你了解Redis有哪些数据结构吗?”
Hsah、String、Set.....。第一问背一背就好了,没什么难度
第二问:“你们项目中是怎么使用的?”
很多同学对这个答不好,因为可能就用过一个string结构。最好起码要说个两三种吧
string,一般存token
hash,做一些聚合信息的缓存,例如商品详情页要聚合很多信息,要查很多表,用hash做缓存
string提供的位运算功能(bitmap),统计用户登录次数
第三问:“如何解决Redis的单点问题?” 或者会问 “讲一件Redis的集群”
这个问题我只讲讲思路,详细讲起码要一篇文章。
首先,我们思考,什么是单点问题?或者说单点有什么问题?
问题一:单点故障,也就是说单机挂了,整个服务就不可用了
问题二:单机存储上限,也就是说一台机器只能存这么多东西
对于单点故障我们如何解决?-----------> 主从模型
对于单机存储上限我们如何解决 ----------> 数据分区
从这里我们再引出Redis的集群是如何做的?Redis有两种集群模型
- 哨兵
- RedisCluster
关于这两种集群模式区别大家自行百度吧
复习要点:
高清原图地址:https://www.processon.com/view/link/5f66b13de401fd2ad7ebd002
高清原图地址:https://www.processon.com/view/link/5f4b48686376890e62f93fa5
MySQL
常见问题:
- 事务的隔离级别
- 什么是幻读?
- 聊聊事务的实现原理
在之前的文章中全部覆盖到了,所以基本没难度
复习要点:
SSM、SpringBoot、SpringCloud
也就是Spring、SpringMVC、MyBatis
- 问的比较多的,Spring的生命周期、AOP、事务
- SpringMVC的工作流程
- MyBatis基本没问
- SpringBoot跟SpringCloud的区别
- SpringBoot自动装配的原理
框架这块因为比较了解,没特地花时间去整理。
消息中间件
我就讲讲RabbitMQ的工作模式、集群模式。然后讲一下RocketMQ的topic跟队列,对比下kafka的topic跟分区。
这块没什么准备,所以聊的不多
高清原图:https://www.processon.com/view/link/5f66b4aaf346fb40fb9b4497
JDK
高清原图地址:https://www.processon.com/view/link/5f66b59c6376894e327a0889
集合这块我复习的比较细,如果你不是面试一线大厂的话,没必要了解这么细,因为面试官也不会。着重了解1.8的就好了。
高清原图地址:https://www.processon.com/view/link/5f48bc915653bb0c71dce481
JVM
- 内存结构
- GC
- 类是如何加载的?如何打破双亲委派?对SPI了解吗?
基础
高清原图地址:https://www.processon.com/view/link/5f66b636f346fb40fb9b461c
分布式
分布式事务、分布式锁、幂等性。这些是重点
分布式这块是重点!分布式这块是重点!分布式这块是重点!
重要的话说三遍,一定要搞懂,必问
高清原图地址:https://www.processon.com/view/link/5f66b6450791295dccc7fbea
内推岗位
最后是一波内推岗位,有兴趣的小伙伴赶紧拿简历砸我吧!!!
如果本文对你由帮助的话,记得点个赞吧!也欢迎关注我的公众号,微信搜索:程序员DMZ,或者扫描下方二维码,跟着我一起认认真真学Java,踏踏实实做一个coder。