我说说我这边的面试流程以及每一轮的面试官到底在看什么。可能跟很多人想象的不太一样。我们是做IT的技术面试一共三轮每轮的面试官角色不同关注的东西也不一样。第一轮是团队里的高级开发来面他主要看专业技术能力其他的基本不关注。第二轮是我除了技术还要看沟通、协同、表达这些横向的东西以及有无啥亮点。第三轮是CTO他的视角又不一样了看的是行业经验和这个人能给团队带来的增量。三轮面试三个视角层层递进。很多人以为面试就是考技术技术过了就拿offer其实不是这么回事。先说第一轮。高级开发面技术这个安排本身就是一种筛选策略。业内比较通行的做法是第一轮由同级别的工程师来面目的是做技术基线筛选确认候选人的技术底子是不是达到了岗位的基本要求。一般来说公司的面试评估维度分为沟通、问题解决能力、技术能力、测试能力四项。第一轮主要看的是后面两项技术能力和问题解决能力。能不能把代码写出来方案思路对不对边界情况有没有考虑到这些是核心。但这里面有个东西很多人没意识到。技术面试考的不只是你会不会而是你理解得深不深。同样一个技术问题能说出「是什么」的人很多能说出「为什么这样设计」的人才说明真正理解了。我在团队里跟高级开发对齐面试标准的时候经常会提一个要求不要只问候选人某个知识点是什么要追问一层为什么。比如你问他HashMap的底层结构他能说出来。但你问他为什么JDK8以后要从链表转成红黑树为什么阈值是8不是16能不能答上来就看得出这个人是背过答案还是真的想过这个问题。背八股文能过第一轮的人不少但多追问一层很多人就露馅了。面试官心里其实很清楚能把「为什么」讲出来的人到了项目里遇到问题也是能自己往下钻的不需要事事等人教。这点真的非常关键我经常会提到这个是区分度。要有一定的深度。请广大程序员务必要记住这一点。你平时对技术没啥兴趣的没有课外去研究在深度上是很难达到的。你就是要有一探究竟的兴趣。过了第一轮之后面试官的关注点就会发生明显的变化。第二轮是我来面我是团队的技术负责人。技术深度我当然也会看但我更在意的是这个人进来以后能不能和团队合到一起。我见过技术能力很强但跟团队配合不来的人。写代码谁也不服谁code review的时候经常否定别人的方案但说不出建设性的意见讨论技术方案的时候表达不清楚自己的想法最后搞得一屋子人都不痛快。这种人进来团队效率反而下降了。技术能力决定了一个人能产出多少沟通协同能力决定了这个人能在团队里发挥多大的价值。业内有个说法叫T型人才。纵向是你在某个技术领域的深度横向是跨领域协作、沟通、理解全局的能力。第一轮面的是纵轴第二轮我要看的是横轴。这个概念最早是麦肯锡提出的后来在科技行业被广泛采用。Google和微软的招聘流程里也有类似的考量不是只看你能不能写代码还要看你能不能跟产品经理、设计师、其他团队的工程师有效地合作。一个只有纵轴的人适合做独立贡献者但大部分岗位不是让你一个人闷头写代码的。第二轮还有两个我会重点看的东西候选人接下来的职业规划我们团队能不能提供。我会问他接下来两三年想做什么方向想往什么方向发展。如果他想做架构方向但我们团队当前的业务阶段主要在做功能迭代那哪怕技术再对口进来之后大概率会失落。入职半年人就走了对他是浪费时间对团队也是成本。这个视角说实话只有带团队的人才会天然地去想。因为招一个人的隐性成本最终是团队负责人在承担。HR关注的是这个人能不能招进来而我关注的是这个人招进来以后能不能留住、能不能成长。招人不是填坑是给团队加一个人。这个人会改变团队的协作节奏和氛围。如果他接下来想做的事情和团队方向一致那他会跟着团队一起自然成长。如果方向不对硬拉进来也没用。第二个是有无什么亮点。这个我每次面试候选人必问的。当然我也是出于挖掘他的亮点。有些候选人其实有不少亮点来的但是不会表达或者一紧张忘记了。这个时候我看到简历里啥亮点都没有时我会引导他的。比如他其实主导落地过一个复杂系统的又或者从0到1重构过复杂系统的等等。我会帮忙挖掘出来。这里有一个区分需要了解参与一个复杂系统和主导一个复杂系统是完全不同的经历。参与过的人很多你能讲清楚自己负责的那块模块用到了什么技术实现了什么功能。但主导过的人他需要具备的能力远不止这些架构怎么决策的、跨团队怎么协调的、技术方案怎么选的、风险怎么预判的、资源不够的时候怎么取舍。这些能力不是光靠写代码能练出来的。有这种经历的人你让他聊一个他做过的项目他能把决策过程讲得很清楚。为什么选了这个方案而不是那个当时面临了什么取舍哪些地方踩过坑如果时间重来会怎么做。他的叙述是有逻辑链条的你能感受到他在项目里是做了判断的。而没有这种经历的人讲项目像是在复述需求文档项目是做什么的我负责了哪部分用了什么技术。信息是对的但你听不到思考和决策的痕迹。这种主导复杂系统落地的能力是区分一个工程师是「能干活」还是「能扛事」的关键指标。好看到这里后你记住几个关键词有无亮点有无横向能力。这个是我自己作为技术团队管理者会看的。到了第三轮CTO的视角跟前面两轮完全不一样。他不关心你某个框架用得熟不熟也不关心你跟团队相处得怎么样那些前面两轮已经看过了。CTO看的是更宏观的东西。第一个是行业积累。我们做的系统涉及门店进销存、供应链、会员营销这些业务如果你之前做过类似的系统「对业务逻辑有深入的理解」这就是一个很大的加分项。行业知识是有复利效应的。在同一个行业深耕过几年的人跳到同行业的公司上手速度比跨行业的人快得多。因为他带过来的不只是技术能力还有对业务的认知。比如做过电商支付的人他知道幂等怎么做、对账怎么设计、资金安全要注意哪些坑。这些东西不是看文档能学会的是在项目里踩过的坑。很多候选人低估了行业经验的价值觉得技术是通用的到哪都一样。同样的技术能力有行业积累的人犯的错误更少做出的架构决策也更贴合业务场景。第二个是他能给团队带来什么不一样的东西。CTO关心的不是你这个人能不能干活到了第三轮能干活已经是默认的了。他关心的是你能不能带来增量。这个增量可以是某个领域的深度经验也可以是某类系统的架构经验甚至是一种做事的方法。我见过有的候选人技术能力一般但他在上一家公司做过完整的服务端迁移踩过很多坑这些经验对我们团队正好有用。有的候选人在技术社区很活跃能给团队带来技术氛围。CTO在面试的时候脑子里其实在想一个问题这个人进来以后团队里有没有人能从他的经验中受益。如果答案是有的那这个人就不是简单地来干活的他能推动团队往前走。看到这里你依然需要记住几个关键词是行业累积和业务熟练度尤其是业务熟练这块我司的CTO特别看这点的。把三轮串起来看第一轮考你能不能干第二轮考你能不能一起干第三轮考你能不能带来增量。三个问题三个不同的面试官三种不同的视角。每一轮的面试官写的反馈是独立的但最终会汇总到一起做决策。某一轮表现不好不代表直接淘汰但如果某一轮给了负面信号后面就需要更强的正面信号来对冲。比如第一轮技术面评价一般那第二轮和第三轮就需要拿出更突出的表现来弥补。了解这一点对准备面试是有实际帮助的。给候选人的建议其实不是去刷更多的题而是想清楚自己在上面这些维度上有没有拿得出手的东西。技术基本功够不够扎实能不能讲清楚背后的原理。跟团队协作的时候有没有值得说的经历职业规划是不是清晰。有没有一个你觉得真正有挑战的项目经历能讲出决策过程和取舍逻辑。如果这几个问题你都能给出有说服力的回答面试的结果通常不会差。面试其实是一个双向匹配的过程。我在评估你的同时你也在评估这个团队和这家公司值不值得你花接下来几年的时间。真正好的面试状态不是你紧张地等着对方出题而是双方都在判断我们是不是合适的搭档。我见过的最好的候选人进来的时候心态都是这样的他不是在「面试」他是在了解一个机会同时让我了解他。这种状态下面试的通过率反而最高因为真实的东西是藏不住的。