作为面试官——面试了一个大龄开发人员,真的内卷了~

看他资料是运维开发,高级运维开发经理,研究生学历,我只有本科,我和他有十多年的开发经验了。

他的工作主要是主要是Docker,K8s这些运维为主。他说他还懂Redis、消息中间件,主要是做服务之间的监控开发,对数据库熟悉,然后说对微服务有了解。

我是做Java开发为主,Docker是懂的,K8s还没玩过,Redis熟悉,微服务还是懂的。我一个开发的去问一个做运维的,有点尴尬啊。

我就简单的问他用什么技术,他说Java、Python、JS都用,微服务也懂一些。

主要根据他的简历写明的做过的技术,也有心偏向运维和基础的去问了4个问题,但是因为也是十多年经验的人,所以问的问题也不能太简单了。

1、微服务为什么要从单体系统拆分为多个服务?

他认为是为了性能,扩展机器为了增加性能。

我又问:如果是这样,我们把单体系统部署到多个机器上去不就行了吗?

然后他就扯皮,说要登录,要扩展,我看他慌乱了。

我就说:拆分为多个服务,实际不是为了性能,如果为了性能,我们单体系统部署到多个机器,没有服务之间的调用性能其实更好。我们之所以需要拆分服务,主要是因为随着客户和数据膨胀,使得系统越来越复杂,代码耦合和业务边界模糊,大量的代码和业务耦合在一起,最后使得系统稍微修改或者升级也会导致牵一发而动全身,所以将系统拆分,降低复杂度。从运维的角度也可以对某个业务进行修改和更新,避免整体更新整个服务。从开发的角度,也有利于简化系统,独立开发和进行维护,降低复杂度。

2、Redis集群原理,什么时候Redis集群不可用?

答得不得要点,然后就说一主一从,不过还是点出了CRC16算法,应该是有初步的了解,实际也操作过,但是他没有能说出Redis集群不可用的条件。

实际他没有把槽(你可以理解为一个数学区间)的概念说出来,Redis集群会通过CRC16算法算出key的hash值,然后看到hash值落入哪个槽,然后才锁定对应的Redis服务器。每个槽对应的主服务器都有一个从服务器备用,当对应的主服务器不可用就会用从服务器替换上去。

当主原有服务器一半以上不可用,或者槽无法构建一个完整的区间[0, 2^14]时,Redis集群将不可用。

3、在微服务中服务A调用服务B,B如果缓慢也会导致A缓慢,应该如何避免

他主要考虑给B添加机器,增加性能。

其实也不对,一般来说微服务实际上应该是考虑用断路器机制监控对服务B的调用,当B服务缓慢或者不可用时,断路器直接熔断A调用B的线程,从而保证服务A可用。因为造成阻塞的原因可能很多,比如数据库,缓存,IO问题等,一般来说我们只是增加机器是无法达到我们的预期的。

4、MySQL中使用主键更新和普通索引更新有什么不用

他主要解释了主键和索引的不同,比如主键是聚簇索引,索引速度快,他对数据库基础概念是清晰的,说明有一定的基础。

但是他不知道主键更新时只是对一条记录加锁,而使用普通索引更新时,是对整个表加锁,如果发生高并发,通过普通索引更新会锁住表,很容易引发服务崩溃。

反正感觉没有那么强啊,还是运维开发和我们实际的开发还是有区别呢?反正不是很清楚,毕竟隔行如隔山啊,他要是问我k8s,我也不太会了,毕竟我不是做运维的~

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值