前言
程序员
最近刚刚入职,确实很忙,大周末的跑到公司来研究Apollo的源码。可是答应了群友出一篇面试的文章,因此想来想去先把文章写了再说。web
先大概说下个人面试经历吧面试
笔者是从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
关于这两种集群模式区别你们自行百度吧
复习要点:


MySQL
常见问题:
-
事务的隔离级别 -
什么是幻读? -
聊聊事务的实现原理
在以前的文章中所有覆盖到了,因此基本没难度
复习要点:

SSM、SpringBoot、SpringCloud
也就是Spring、SpringMVC、MyBatis
-
问的比较多的,Spring的生命周期、AOP、事务
-
SpringMVC的工做流程
-
MyBatis基本没问
-
SpringBoot跟SpringCloud的区别
-
SpringBoot自动装配的原理
框架这块由于比较了解,没特意花时间去整理。

消息中间件
我就讲讲RabbitMQ的工做模式、集群模式。而后讲一下RocketMQ的topic跟队列,对比下kafka的topic跟分区。
这块没什么准备,因此聊的很少

JDK
HashMap、ConcurrentHashMap、AQS、synchronized

集合这块我复习的比较细,若是你不是面试一线大厂的话,不必了解这么细,由于面试官也不会。着重了解1.8的就行了。

JVM
-
内存结构 -
GC -
类是如何加载的?如何打破双亲委派?对SPI了解吗?

基础

分布式
分布式事务、分布式锁、幂等性。这些是重点

分布式这块是重点!分布式这块是重点!分布式这块是重点!
重要的话说三遍,必定要搞懂,必问
内推岗位
最后是一波内推岗位,有兴趣的小伙伴赶忙拿简历砸我吧!!!
上海微盟,Java相关岗位以下

本文分享自微信公众号 - 程序员DMZ(programerDmz)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。