首页 > 编程语言 >提升技术招聘有效性 | 为什么企业总考算法题?

提升技术招聘有效性 | 为什么企业总考算法题?

时间:2023-09-27 17:56:56浏览次数:38  
标签:岗位 招聘 能力 总考 算法 ShowMeBug 有效性 候选人

前些年技术圈有个经典名梗:

广受谷歌员工欢迎的 macOS 包管理器Homebrew 的开发者,技术大佬Max Howell,去谷歌面试时由于不会做一道非常基础的算法题——翻转二叉树,而被谷歌拒了。

当时圈内炸了锅,有人觉得是大佬不屑于去做,有人顺带吐槽了自己的类似经历......

 

 

其中一位网友的评论切中要害:“大佬不会做翻转二叉树,但他仍然开发出了Homebrew ;你虽会做,但却开发不来。”

问题出在哪呢?

至少我们能发现谷歌的这道题并没能挖掘出大佬真正的技术实力,从招聘目标来看,其实是有些失败的。

大佬在之后在技术论坛里做出了解释:

他承认自己当时确实不知道二叉树,但强调了谷歌不能因此拒掉他。

虽然他不懂很多CS 理论,但他开发出了在乎用户体验、饱受好评的Homebrew, “真正开源世界中一颗闪亮的星”,他认为这跟CS 理论没有半点关系。

他表达了一个清晰有力的观点:实践比理论更加重要

01 为什么总出算法题?

 企业为什么执着于出算法题呢?

 有三方面原因:

 省时省力:技术岗位的主要任务是完成工程项目,并没有太多时间和资源来针对岗位需求来制定题目。

 算法题则无需编程语言或环境的配置,甚至用白板都能直接进行考核,对企业很方便。

 算法题容易评估:企业要出跟实际项目相关的题型,就需要更多的时间和资源来设计和评估,许多复杂的细节难以量化和评价。

 算法题有标准答案和客观指标,如时间/空间复杂度来直接评价候选人的水平。

 企业的“保底思维”:算法题考察了程序员的基本功,像一个大漏斗,留下来的至少基本功不错,里面可能存在合适具体岗位的人选。

 但只考算法题存在着许多局限性。

02 算法题的局限

2.1 实际项目有时不需要懂太多算法

有人会说,算法考核的都是基础,若连基础都不会,那怎么证明他有更强的实战能力呢?走路都不会,又怎么参加长跑比赛呢?

但算法与实际项目的关系,并非上楼梯似的递进,而更像水分子跟水一样的层级关系。人类真正了解水分子结构不过几百年,但不妨碍人类一直在用水。

就像打造一个游戏引擎,需要学习很多算法,但游戏设计师使用游戏引擎来设计游戏,却不需要懂太多算法。

其实,许多算法早已被封装好,集成在各种工具和框架中,除非底层开发工作,比如开发新的游戏引擎,许多岗位早已不需要接触这些算法原理了。

现实工作中,如何很好地完成业务需求,更多取决于候选人如何很好地去使用相关的工具与框架

2.2 算法题匹配不了复杂的工程问题

算法题通常是抽象、简化、标准的,实际项目中的问题往往是具体、复杂、多变的。

招聘时的算法题,往往预先设计了一个最优解,让候选人在限定时间内解出。

但现实中,工程问题往往不仅没有标准答案,有时甚至连问题在哪,是否能用现有技术解决都不清楚。

比如招聘中,企业会让候选人写一个从A到B点的最短路径算法。这类题目通常被精心设计,数据被构造,一定存在最优解,问题的输入和边界条都相对简单和规范。

但实际的交通系统项目中,存在着拥堵、施工、事故多种路况,步行、汽车、公交多种方式、用户随意更改目的地,以及要实时同步交通数据,这些都是要候选人花更多精力考虑的复杂情况,而非仅需记忆类似Dijkstra 的一个算法就能搞定。

项目代码是真实世界的,存粹的算法代码只存在于阉割版的证明理论里。

只有理论,而无法高效实现的算法也并不少,比如Kruskal 算法很早就出现,但很久之后才找到了较好的实现方式,变得实用。

技术人才的核心价值,是用代码实现具体的功能,而非仅懂理论概念

2.3 AI 新浪潮的冲击

招聘中,候选人往往需要闭卷限时解答算法题。

但现实中复杂的项目,技术人员可以长时间沟通交流、协作,并且自行查阅资料。

随着AI 发展,查阅理论算法知识,更是轻而易举,记忆算法的价值大幅减弱

这是我用AI 工具实现的“关键词出现频率统计”功能,其中涉及到了Porter Stemming和Snowball Stemming 等词干提取的算法,而我对这些算法一无所知。

目前算法题考核招聘方式,无法还原实际场景中的资料搜索、沟通协调等相关能力。

总之,通过算法题先筛人,再进一步靠面试判断岗位匹配度, “先筛人,后匹配”的模式,仅是旁敲侧击挖掘能力的方式。

不仅会漏掉如Howell 那种有潜力、创造力、有专长的技术大佬,也容易招到一群只会做算法题,但缺乏沟通协作、解决实际问题等拥有工程能力的人。

好比打靶并没刻意瞄准靶心,只是先让自己手别抖,这样“弹孔”容易稳定地集中在某一区域,招到一群相似的“优秀”人才,但却可能偏离岗位的“靶心”。

有没有什么方法,能直接冲着“靶心”瞄准,反过来从岗位出发,直接招到匹配该岗位人才的方式呢

03 ShowMeBug 基于岗位的“实战题型”

ShowMeBug 致力于深挖技术实力,为企业找到技术岗位的最佳匹配人选,专门打造了基于岗位的“实战题型”

从岗位需求出发,ShowMeBug 自研能力模型,将岗位能力细化为逐条能力维度,再基于能力维度,推导出具体的技能与知识点。同时也支持企业自行调整。

这些知识点,是ShowMeBug 与各类行业大佬合作,总结大量过往实战项目案例提炼得出。

确保了什么样的岗位,就能明确需要什么样能力,并出相应的题目考核这些能力,使得通过测评的的候选人完美匹配岗位的需求

比如,除了像 Java、JavaScript、C++、Python 等考核编程语言能力的基础编程题,也有像 Vue、SpringBoot 等,考核候选人使用前后端框架进行需求实现能力的题目。

下图中,就是一道考察候选人“是否能够处理耗时任务”的实战编程题

 

这道题目模拟了一个常见的场景:用户在前端点击按钮后,需要优化接口,让后端将耗时任务放入不同线程中异步执行,从而让前端不需要等待所有任务完成才能收到响应,优化用户体验。

同时,ShowMeBug 题库也支持“开卷有益”功能,企业可以在试卷设置AI 编程助手。最大限度还原候选人现实中的工作环境,考核他的实战工作能力

总之,企业在招聘时,可直接使用ShowMeBug 的5000+ 道题目直接进行考核,节省下大量时间与精力

企业也可针对不同岗位,通过调整相应的能力维度、技术与知识点,来自定义想要考核的题目,满足自身个性化的招聘需求

“实战题型” 的内容与AI助手,也很好地把候选人放在了真实工作环境下去解决贴近实际项目的问题,最大限度地在屏幕前直接还原他的真实技术能力,助力企业精准择优。

标签:岗位,招聘,能力,总考,算法,ShowMeBug,有效性,候选人
From: https://www.cnblogs.com/0915yb/p/17733302.html

相关文章

  • 算法训练day22 LeetCode235
    算法训练day22LeetCode235.701.450.235.二叉搜索树的最近公共祖先题目235.二叉搜索树的最近公共祖先-力扣(LeetCode)题解代码随想录(programmercarl.com)对于二叉树,可以用递归回溯的方式对于二叉搜索树,由其根节点大于左右子树中结点,所以当第一次遍历到根节点值......
  • 大模型深挖数据要素价值:算法、算力之后,存储载体价值凸显
    文|智能相对论作者|叶远风18.8万亿美元,这是市场预计2030年AI推动智能经济可产生的价值总和,其中大模型带来的AI能力质变无疑成为重要的推动力量。大模型浪潮下,业界对AI发展的三驾马车——算力、算法、数据任何一个维度的关注都到了全新的高度,避免“木桶效应”成为大模型发展首要......
  • 遗传算法解决01背包问题
    遗传算法解决01背包问题一、问题描述01背包问题是组合优化问题的一个典型例子,它要求在许多可行解中找到一个最优解。01背包问题的一般描述如下:给定一个固定的背包容量和一组物品,每个物品有一个重量和一个价值,要求从这组物品中选择一些放入背包,使得背包中物品的总价值最大,同时不......
  • WEBRTC回声消除-AECM算法源码解析之参数解析
    一概述 webrtc针对回声问题一共开源了3种回声消除算法,分别为aec,aecm,以及aec3,其中aec是最早期的版本,在后续的更新中aec3的出现代替了aec在webrtc中的地位,而aecm主要是针对计算能力较弱的移动端或是嵌入式设备而开发的,但同时也带来了它自己的劣势;本文主要介绍AECM算法的计......
  • 跑腿系统开发:构建实时任务分配算法的技术挑战
    在跑腿系统中,实时任务分配算法是确保任务快速高效完成的关键因素之一。本文将介绍构建实时任务分配算法时可能面临的技术挑战,并提供一个简单的Python示例来解决这些挑战。技术挑战:实时数据处理:跑腿系统需要处理大量的实时任务请求,这需要高效的数据处理能力。我们可以使用队列来管......
  • 文心一言 VS 讯飞星火 VS chatgpt (96)-- 算法导论9.3 1题
    一、用go语言,在算法SELECT中,输人元素被分为每组5个元素。如果它们被分为每组7个元素,该算法仍然会是线性时间吗?证明:如果分成每组3个元素,SELECT的运行时间不是线性的。文心一言:在算法分析中,一个算法的运行时间是否线性依赖于其输入数据的大小。线性时间意味着算法的运行时......
  • 文心一言 VS 讯飞星火 VS chatgpt (97)-- 算法导论9.3 3题
    三、用go语言,假设所有元素都是互异的,说明在最坏情况下,如何才能使快速排序的运行时间为O(nlgn)。文心一言:快速排序是一种基于分治策略的排序算法,其平均时间复杂度为O(nlgn)。在最坏情况下,快速排序的时间复杂度为O(n^2),这是因为当输入数组已经排序或接近排序时,快速排序的性能会退化。......
  • 视频融合/监控汇聚平台EasyCVR助力AI算法智能防溺水,实现水域监管
    防溺水已经成为青少年安全教育的重要内容,同时也是社会各界共同承担的安全管理责任。特别是在夏季,随着天气逐渐转热,溺水事故也进入了危险期、易发期和高发期。传统的预防和管理方法主要通过日常宣传演讲和人工巡逻来提醒人们溺水的危害,但存在一些问题:1)缺乏有效的安全预警设施:当人......
  • WOA-ELM分类预测 | Matlab 鲸鱼算法(WOA)优化极限学习机(ELM)的分类预测
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • UE4里的数据结构与算法
    在CoreMinimal.h的头文件里可以看到最常使用的头文件数据结构:Plane(平面)、Sphere(椭圆)、Box(四边形外接框)、Edge(边)等。算法:Core\Public\Algo文件夹下 ......