招人背景

首先说一下朋友的公司招人背景,公司招聘PHP高级岗位,负责公司的B2B项目研发、并发问题的处理和解决。领导给了他两个要求:(接下来的讲述我会以朋友的第一人称来进行)

(1)技术比较好

(2)有大项目实战经验。

说白了这是一个纯粹的技术岗位,能够把项目核心代码解决好来,能够去处理好的并发带来的一些问题,避免一些隐患问题。

干我们这行的都懂,大厂都在清理 35 岁以上的基础岗,如果到了这个年纪还混不到中高层管理岗位,基础岗确实不太好找了。

现在的年轻人很厉害,很年轻就走上了管理层,所以我很庆幸公司在年龄上没有卡人,给了很多 30+ 的程序员简历供我筛选,因为我也是程序员,所以我不会在年龄上有所顾虑。

所以,确实就和标题写的那样,这两天我就面试了一个 32岁程序员,全程让我都感觉有点慌……

为什么慌?主要是因为年龄比我大不少,项目经验肯定也比我丰富得多,技术会不会很牛逼?会不会吊打我,狠狠地虐我?我真心怕 hold 不住。

但实际面试下来,场面一度尴尬,结局让我感觉有点唏嘘。

面试过程

面试者 11年工作经验,简历却只有 2 页,可以说非常简练,从程序员到小组长、项目经理、研发经理、技术总监都干了个遍,Java/PHP/Python/C# 也都有涉及。

从交谈过程中,他说是可以做一些优化的,能够去解决一些并发问题,自己的项目经验也比较丰富。首先我说先问些技术问题,然后在了解一下你的相关开发项目。

我: 你有互联网分布式相关项目开发经历么?

面试者: 有啊,那个 XXX 项目就是

我: 好,我看到了,我看这个项目有解决一些高并发的问题,那么我们就先来讲一个普通的场景,因为你项目经验比较丰富,我就不单问技术情况了,就说说场景是如何发生和去解决的。如果有一个普通场景,就是1000个用户下单一批商品,这个商品是多个,不是活动,但是库存只有100,这个情况。

面试者: 这个情况的话就可以使用传统的队列去解决

然后他就一直在说和用队列的处理的方式,之前他是如何处理的,首先,我不是很关心他之前做的一些业务,然后我就打断了他,就是普通的场景,不是说做活动。

面试者:那就根据实际的情况来,可以选择乐观锁的方式或者说分布式锁的方式。

我:嗯,那你说说实现方式,这个点这样用锁会比较好吗?

面试者:那乐观锁的话就是可以使用redis 的watch方法去做,监听一下我们的销量,然后配合redis事务去使用,然后就开始介绍分布式锁。

我:额。。我在打断一下,你使用队列或者锁在这种场景下都会去降低很多的这种项目的吞吐量,那这个的话不是会造成用户的阻塞等待?这样的话系统的吞吐量就会很差了。而且你不管前面用什么方式你最终都要落地到数据库的,那么这个怎么处理呢?

面试者:一般来说都不会在mysql处理呀,用缓存不就可以了。

可能他项目规模都不是很大,对于这种问题只能够去回答一些比较官方的解决方案。

我: 能介绍下服务与服务之间相互调用的时候,如果调用超时了是怎么处理的?

面试者: 超时啊,(想了几秒后)那应该是报错吧

我: 确定是报错吗?(他想了想,不说话,然后我接着说)没有重试机制吗?重试机制是怎样的?

做过分布式的项目的都知道重试机制,至少读操作要支持重试,写操作支持重试的话被调用方还要支持幂等性,不然会造成重复写入。

面试者: (又想了想,笑着和我说)这个项目有点久了,这个不太记得了……

然后我看了下这个项目,2014 年做的,6 年前了,他说太久不记得了,那也情有可原了。

我:好,你最近做的这个项目,能介绍下它的整体架构么?

面试者: 我们用了 Redis做虚拟库存,用了 MQ,用了微服务……(他说了一堆,都没说到重点)

我: 我想问的是,从上到下,这些技术是怎么承接起来的,整体的系统架构是怎样的?(现场没纸笔,不然我都想让他画图了)

面试者: 呃……我知道你的意思,主要是我真的不知道怎么表达……(然后他不说话了,场面尴尬了)

我: (赶紧找了继续追问了一个幂等性问题,因为做分布式的话这块肯定是会遇到的)那你如何理解幂等性呢?

面试者:就是我们使用mq的时候我们会有一个自带的id,然后根据这个id去判断是否被消费,如果已经被消费,那么你就不处理。

我: 不一定就是MQ,就是比如你做一个分布式的接口,那么这个接口的幂等性如何解决?

面试者:那就只能写一个标记了.......如果这个接口被调用了的话,那么你就标记他被调用,这样其他地方就根据这个标记去判断是否还可以调用……(想了半天也没有说出好的方案)

其实这里至少有三个方案:

接口为什么要实现幂等?
前端重复提交选中的数据,后台只产生对应这个数据的一个反应结果。

(1)token机制
当客户端请求页面时,服务器会生成一个随机数token,并且将token放置到session当中,然后将token发给客户端(一般通过构造hidden表单)。下次客户端提交请求时,token会随着表单一起提交到服务器端。服务器端第一次验证相同过后,会将session中的token值更新下,若用户重复提交,第二次的验证判断将失败,因为用户提交的表单中的token没变,但服务器端session中token已经改变了。

(2)通过版本号实现-乐观锁

这个的话就要分情况,因为加锁的话毕竟会对性能有一些影响

(3)Redis原子性

(4)去重表

利用数据库表单的特性来实现幂等,常用的一个思路是在表上构建唯一性索引。将某个内容id与用户id绑定建立唯一索引,每当用户点击这个内容时就往表中写入一条数据,这样重复点击的数据就无法写入。

然后我就问了一些他目前主要负责的项目,项目大概的规模,你自己在项目当中遇到的比较棘手的问题,你们是如何去解决的。了解了一些发展,为什么从上家公司离职这些问题。

总结

最后我把面试情况总结起来和领导说了,领导就说了一句:技术是提前。

第一次面试一个 32 岁的程序员,干了 11 年,如果还要面试做技术的岗位,这个面试情况确实不理想。也不知道他的真实经历是不是一直在外包公司?或许真该清楚认识下自己的定位和未来的职业规划了。

随着我跟朋友的沟通到下来这个文章,其实我也在感慨,朋友说他也感觉更慌了,日月如梭,他也快有这么一天了,如果做不到中高层,也要去和年轻抢饭碗,没办法,这是现实。

年纪来了,朋友感觉自己写代码确实也写不太动了,人也变得越来越焦虑不安,能干嘛去呢?路子也不多,也不知道该如何去发展!

唯一能做的就是朝着自已期望的岗位或者目标不断努力,不断的提升自己的硬实力和基本功,最好的贵人就是拼命努力的自己,程序员的核心竞争力就是你的技术水平,管理能力,只有这些都提升上来了,这样才能去为日益焦虑不安的自己,迎接未来更多的机会。

其实现在也有很多年轻人很厉害,年轻有为的也不少,但是还是要记住一句话,种一棵树最好的就是十年前,其次就是现在,如果你不去开始,那么你永远都不会有成功之花绽放在自己人生的枝头上。大器晚成,为时也不晚,这样的例子也数不胜数,所以你要相信,只要自己一直在准备,找到自己的职业道路,学习规划,机会总会到来的,总会有成功之花绽放的那一天。

如果你喜欢我写的技术文章以及面试总结,欢迎关注收看我的视频,并且点赞、收藏、关注我哦。

我是luke,感谢你的关注!

据说点赞,喜欢,收藏了的小伙伴升职加薪、面试必过,拿到心仪offer!

用php写一个可以抽取随机数的工具一次只抽四个怎么实现?_面试了一个32岁的程序员,场面一度很尴尬。...相关推荐

  1. 用php写一个可以抽取随机数的工具一次只抽四个怎么实现?_20多岁,没有本金,该怎么开始理财?...

      一定要看到底哦  文末有小红包和粉丝群等着你哟~  来源 | 灵姗说(ID:lingshansf) Halo,我是王妮可~ 之前有朋友留言说让我讲一讲理财的内容,很惭愧拖了蛮久的,其实这是一个比较 ...

  2. 面试了一个32岁的程序员,一个细节就看出来是培训班的····

    首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情. 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的轰动. &qu ...

  3. 面试了一个32岁的程序员,只因这一个细节,被我一眼看穿是培训班出来的,没啥工作经验....

    首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情. 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的轰动. &qu ...

  4. 面了一个 32 岁的程序员,一看就是“卷”出来的

    最近有不少读者在后台留言,说 Java 的面试越来越难了,尤其是技术面,考察得越来越细,越来越底层. 作为一名程序员,技术面试是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功 ...

  5. 帮公司面试了一个32岁的程序员,只因这一个细节,被我一眼看穿是培训班出来的,没啥工作经验...

    B站面试现场回顾,欢迎观看 我看你做了几个项目,我先问一下项目经验吧. 1.       我看你有用过spring是吧. 有的,有用过ssm和springboot. 2.       说说spring ...

  6. 面了一个37岁的程序员,我很慌......

    自华为传出"清理35岁以上员工"消息以来,各企业关于"劝退35岁以上员工"."招聘限35岁以下"的传闻此起彼伏,在无数传言和事实下,人人自危 ...

  7. 面试了一个34岁的程序员,只因这一个细节,被我一眼看穿是培训班出来的,没啥工作经验...

    首先,我说一句:培训出来的,优秀学员大有人在,我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配,是非常遗憾的事情. 最近,在网上看到这样一个留言,引发了程序员这个圈子不少的轰动. &qu ...

  8. python好学吗 老程序员-今天面试了一个34岁大龄程序员,有感而发

    原标题:今天面试了一个34岁大龄程序员,有感而发 " 昨天,我面试了一个34岁的大龄程序员--我给人事的建议是P4,结果人事说:那直接让他走吧. " 我一直以为他们在开玩笑! 结果 ...

  9. 35岁的程序员正在消失?No,我认识了一个50岁的程序员!

    35岁的话题真是无穷无尽.一开始的时候,以为只有公众号这类社交媒体上会有这种问题的讨论,没想到,公司内部的论坛上也有不少这类的文章.大家各有各的说法,但终究也没有找到银弹似的解决方案. 这段时间,倒是 ...

最新文章

  1. mixamo网站FBX模型带骨骼绑定动作库
  2. Confluence 6 配置管理员会话安全的备注
  3. 聚类算法(1):K-Means算法
  4. Table.Rows.Remove(dr)和Table.Delete()的区别
  5. [html] p标签里面嵌套img标签会出现向上高3像素是什么原因?如何处理?
  6. win10语音语言服务器,win10系统:朗读女语音库(发音人)安装方法说明
  7. Android SurfaceView双缓存
  8. 记录MySql错误消息
  9. WPF中的TreeView入门
  10. 十次方项目开发系列【1】:项目介绍和工程搭建
  11. Java利用POI生成Word、Excel文档转换成PDF,PDF转换成图片
  12. 资深程序员和你重学五线谱 - 第一篇
  13. 断点续传 scp rsync
  14. 能力清单:透视成功逻辑,学会清单练习
  15. 关于Google翻译和语音朗读功能无法正常使用的说明
  16. 阿里前端工程师面试题+解题思路
  17. PAT甲级_2023春
  18. Linux Glibc幽灵漏洞紧急修补方案【转】
  19. 8个Spring事务失效的场景,你碰到过几种?
  20. NOIP学习之综合应用:177.八进制到十进制

热门文章

  1. Dapr是如何简化微服务的开发和部署
  2. 您好,dotnet tool
  3. 【LeetCode之C#解法】 移动零、爬楼梯
  4. BeetleX.FastHttpApi之Vuejs扩展
  5. 集群环境下,你不得不注意的ASP.NET Core Data Protection 机制
  6. kubernetes实战篇之helm示例yaml文件文件详细介绍
  7. 知乎个人精选 | 绝版的专业书到哪里找最快最高效?
  8. 程序员修神之路--提高网站的吞吐量
  9. .NET Core 3 Preview 2发布,C#8更强大的模式匹配
  10. .NET Core 3.0 特性初探:C# 8、WPF、Windows Forms、EF Core