程序员面试,为什么不跟我谈高并发?

作为一个看过几千份简历,面试过几百人的面试官,常常会看到简历中有如下文字:

  • 对业务逻辑解耦,高并发等有比较深入的研究和丰富的开发实战经验
  • 对解决高并发问题有深入理解
  • 熟悉大并发技术,如:反向代理、负载均衡、Keepalived

而当我在面试中,问及对方的职业规划的时候,也有一大半人会回答

  • 希望将来可以处理高并发业务
  • 希望学习高并发相关技术
  • 希望开发数千万/数亿级别并发的应用

但是当我问及以下问题的时候,绝大多数人都会麻爪:

  • 负载均衡有几种分配方式?(大概不到1/10的简历提及高并发的人能答出来)
  • 有没有用任何方式(比如虚拟机)模拟过各种集群(API服务器,数据库,CDN等等)?
  • 有没有用任何方式测试过采用了高并发应对策略后对项目的改进和提升?数据有什么变化?
  • 如果业务规模再次扩大,下一阶段应该用什么技术和策略?


问题就在这里了,

  • 为什么我会把简历里提及“高并发”的绝大多数人KO掉,或者在面试中,对职业规划只有“高并发”的人发拒信?
  • 很爱“高并发”的面试者,应当如何在简历中体现自己的能力和期待?

首先,绝大多数人没有考虑过如何把技术应用于高并发场景

以PHP码农圈子而言,绝大多数用PHP的企业都是初创或者早期公司或者技术储备并不丰富的中小企业,这些企业做正常业务的很难有做高并发的使用场景。(例外:涉黄,涉赌,超大企业【腾讯华为之类】外包团队)

因此,大多数的初中级PHP码农是没有机会在生产环境应用高并发相关技术的,自然也就不会有什么积累和心得。

我经常会问沉迷于高并发的面试者:当你有了一个数千万乃至数亿级别的高并发解决方案的时候,你准备用在哪里?让谁买单?

显而易见,买单的是企业,企业为用户服务,但是这样规模的企业本身已经不是很多,而且它们使用的方案或者是已有的成熟方案,或者是企业内部长期迭代得来,不太会有人冒业务中断的风险去应用一套外部的没来头的方案。

另外,解决高并发的方案不是单纯的三五项技术,而是许多套完整的技术栈,把它运行起来需要一个完整的研发、运维团队来进行支持,没有几个单独的个人可以百分百解决,那么这个人的技能短板会立刻导致方案不可靠。

因此,脱离使用场景的技术价值是要大打折扣的。

第二,高并发背后的高成本是大多数人没有考虑过的

硬件成本的问题:一般在企业中做开发,都至少要有开发环境,集成测试环境,生产环境,有的时候还需要有镜像的灾备环境。如果用了服务器集群,那么高并发方案的服务器的数量就要比堆硬件硬抗的方案翻好几倍。而且运维的成本也会增加很多。

人力因素也很重要,人肉运维自然是成本贵,能写程序搞自动运维的工程师显然更贵。

成本需要企业来买单,程序员学了用了新技术开心了,企业成本提高做挂了显然不是企业想看到的。

因此,如何用各种方式降低你的方案的成本【比如在虚拟环境做各种测试】并且说服企业应用,是面试者要思考的问题。

第三,高并发只是业务规模巨大导致的众多严重问题中的一个,还不一定是最重要的那个

高并发只是表象,业务规模用户规模巨大会导致一系列严峻问题,不仅仅是高并发。

举例来说,团购秒杀拍卖之类的场景是常见的高并发应用场景。总而言之都是卖货,但是在卖货的大前提下,商品库存数字的变化(要不要实时,要不要各端同步),订单状态变化对业务流程的影响(下单减库存还是付款减库存还是发货减库存,预售和返现等营销行为导致的钱款卡券变化)都有可能导致整个方案变化。【想想12306,处理商品库存数据的实时性要比处理高并发请求复杂的多】

因此,结合具体业务场景,展示出面试者在整个业务场景中,包含但不限于高并发技术而体现出来的价值,才能为面试加分。

第四,你说你擅长高并发,你得要证明给我看

从面试的角度来说,我除了预设的面试题之外,还会很细致的询问对方的简历细节。

知乎用户:为什么有面试官喜欢让面试者用纸笔写代码?

面试者在简历上写了擅长高并发,那我就要三段论问一下:是什么问题,怎么解决的,效果如何?

即使去掉伪造简历和过度美化简历的人,仍然有大多数人无法回答第三个“效果如何”的问题。

大量的声称研究过负载均衡的面试者都是用两三台电脑搭一个环境测试能够实现平均分配的负载均衡策略,但是如果问“如果我想测试三五台或七八台服务器的场景应该如何实现?”就又答不出来了。

(答案:现在有docker,古时候有各种虚拟机【vmware,virtual box】和云端部署【gae,sae之类】,实在不行还可以用各种云服务器的按量付费按小时启动服务就好)

因此,用丰富的细节和深刻理解的心得体会来证明面试者的技能水平,是面试要解决的一个最核心的问题

总结

  1. 掌握高并发技术不是坏事,技术好不仅仅体现在能处理高并发
  2. 有水平需要证明,证明需要实践(企业没有责任挖掘面试者的价值,面试者需要自己证明)
  3. 能解决实际业务问题的技能才是企业需要的,企业里没有龙,面试者的屠龙之技就没有卖点
  4. 不要过度美化简历(我的建议:至少要能够抗住3-5个刨根究底的问题才能写到简历上)

原文地址:https://www.cnblogs.com/hulianwangjiagoushi/p/10678643.html

时间: 2024-10-10 18:05:12

程序员面试,为什么不跟我谈高并发?的相关文章

程序员面试,为什么不要大谈高并发?

作为一个看过几千份简历,面试过几百人的面试官,常常会看到简历中有如下文字: 对业务逻辑解耦,高并发等有比较深入的研究和丰富的开发实战经验 对解决高并发问题有深入理解 熟悉大并发技术,如:反向代理.负载均衡.Keepalived 而当我在面试中,问及对方的职业规划的时候,也有一大半人会回答 希望将来可以处理高并发业务 希望学习高并发相关技术 希望开发数千万/数亿级别并发的应用 但是当我问及以下问题的时候,绝大多数人都会麻爪: 负载均衡有几种分配方式?(大概不到1/10的简历提及高并发的人能答出来)

金九银十,浅谈关于java程序员面试的一些事项

本篇博文针对的是应届毕业生以及工作两三年左右的java程序员. 为什么要跳槽? 这是一个很广义的问题,每个人心中都有一份答案. 例如: 公司的待遇不好, 薪资涨幅不符合预期要求, 厌倦了出差的荒无天日的繁重工作, 公司的妹子太少, 领导太傲娇, 同事之间关系太逼格, 某某同学跳槽到某某公司之后涨到了多少多少钱, 某某同学的朋友的同事的三姑妈家的大儿子的好基友在某某高就, 等等辞职理由. 咱们就不多说了,还是谈谈怎么应付面试吧. 以下内容是我在面试中总结的一些经验,希望这些可以给各位带来帮助和启迪

JAVA程序员面试总结,高手整理加强版

每个程序员.或者说每个工作者都应该有自己的职业规划,分享高手整理的java程序员面试总结给愿意思考自己未来的朋友们. 第一阶段:三年 我 认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人.这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发.我们知道如何团队协作.如何使用项目管理工具.项目版本如何控制.我们写的代码如何测试如何在线上运行等等,积累了一定的 开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段. 第二

Java程序员面试体会,还没找到工作的“猿猿们”看过来!

类似的话题,我大约在几个月前跟大家聊过.这一次,我要根据这段时间的体会,再给大家整理一下. 今天,很轻松地拿到了神州数码的offer.虽然工资不是特别高,虽然很多人一毕业就能进入这样的公司,但是对我这个半路出家的大专生来说,能进去纯属意外. 今天的面试,谈到了以前我接过一些私单,项目经理问我,那你现在还有没有做私活的想法?我说,彻底没有!他问我,为什么?我说,这几年,虽然做私活挣了一些钱,但我损失的远远不止那点钱.那些重复.繁琐,很难有技术水平提升的工作,占用了我大部份的业余时间,如果这些时间用

《PHP程序员面试笔试宝典》——如何巧妙地回答面试官的问题?

如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 所谓"来者不善,善者不来",程序员面试中,求职者不可避免地需要回答面试官各种"刁钻".犀利的问题,回答面试官的问题千万不能简单地回答"是"或者"不是",而应该具体分析"是"或者"不是"的理由. 回答面试官的问题是一门很深的学问.那么,面对面试官提出的各类问题,如何才能条理清晰地回答呢?如何才能让自己的回答不至

两年Java程序员面试经验分享,从简历制作到面试总结!

前言 工作两年左右,实习一年左右,正式工作一年左右,其实挺尴尬的,高不成低不就.因此在面试许多公司,找到了目前最适合自己的公司之后.于是做一个关于面试的总结.希望能够给那些依旧在找工作的同学提供帮助. 面试 其实关于面试总结这块,我也看过不少文章,但是大部分都是关于面试题以及面试中的问题所谈.但是对于一个不擅长找工作的同学来说,其实在简历制作这一块很重要.因为简历没写好的话,连面试邀请都没,何谈面试呢.所以我准备谈谈我对简历制作这块的一些见解.如有不妥,欢迎指出! 简历制作 在写简历这方面,需要

《Java程序员面试笔试宝典》之字符串创建与存储的机制是什么

在Java语言中,字符串起着非常重要的作用,字符串的声明与初始化主要有如下两种情况:(1) 对于String s1=new String("abc")语句与String s2=new String("abc")语句,存在两个引用对象s1.s2,两个内容相同的字符串对象"abc",它们在内存中的地址是不同的.只要用到new总会生成新的对象. (2) 对于String s1 = "abc"语句与String s2 = "

程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦

程序员面试.算法研究.编程艺术.红黑树.数据挖掘5大系列集锦

《Java程序员面试宝典》学习笔记(基本语法部分)

这是我学习欧立奇<Java程序员面试宝典>第三版的笔记.这篇是基本语法部分. ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象. 在Java中,字符只以一种形式存在,那就是Unicode.在JVM内部一切都由Unicode表示,而输出到外部后(JVM和OS的交界处就是各种输入/输出流)转换为其他形式的编码. Java用了中间缓存变量的机制,所以,j=j++可换成如下写法: te

《Java程序员面试笔试宝典》终于在万众期待中出版啦~

<Java程序员面试笔试宝典>终于在万众期待中出版啦~它是知名畅销书<程序员面试笔试宝典>的姊妹篇,而定价只要48元哦,恰逢求职季节,希望本书的出版能够让更多的求职者能够走进理想的企业 在这里,众多知名企业面试官将为你撕开神秘的求职面纱: 在这里,各种求职达人将现身说法为你揭开求职谜团: 在这里,各种类型的企业招聘细节都会被展露无疑: 在这里,我们将为你抽丝剥茧,还原IT行业的真相: 在这里,我们将为你指点迷津,告诉你职场上的风风雨雨: 在这里,我们将为你点石成金,成为那盏指引你前