招聘和面试
本篇内容是根据2019年4月份#82 Hiring and job interviews音频录制内容的整理与翻译
小组成员 Mat Ryer、Ashley McNamara、Johnny Boursiquot 和 Carmen Andoh 讨论了受聘、雇用和工作面试的过程。如果人是团队中最重要的部分,我们如何选择与谁一起工作?流程是怎样的?怎样才能更好呢?
过程中为符合中文惯用表达有适当删改, 版权归原作者所有.
Mat Ryer: 欢迎来到 Go Time!我是 Mat Ryer。今天我们要讨论的是招聘和面试。和我一起的,是来自 Go 社区的几位嘉宾… 我们有 Johnny Boursiquot、Ashley McNamara 和 Carmen Andoh。Carmen,我的发音对吗?
Carmen Andoh: 你说对了!
Mat Ryer: 哇!今天真是个好日子,感觉这期播客开场不错。那过去这一周你们都在忙些什么呢?
Carmen Andoh: 我刚从欧洲回来。我觉得咱俩刚好在大西洋上交换了一下位置。但对,我去了奥地利,在 DevOne 大会上做了演讲,真是个很棒的大会。我还参加了一个 Infrastructure as a Meetup 活动,以及 Kubernetes 伦敦的聚会。所以这段时间我到处跑… 但真的很有趣。
Mat Ryer: 哇… 真忙。
Carmen Andoh: 是啊。
Mat Ryer: 我刚和 Johnny 一起去了纽约。
Carmen Andoh: 不是 Steve?不是 Steveing? [笑声]
Ashley McNamara: 我们现在不再提 Steve 了。 [笑声]
Carmen Andoh: 所以当我想出去玩的时候,我就说“嘿,你想不想来个 not-steveing”?这是现在的新说法吗?
Ashley McNamara: 没错!
Carmen Andoh: 好吧,明白了。
Ashley McNamara: 是的… 他应该早就知道了。 [笑声]
Mat Ryer: Johnny 在 GothamGo 做了一个关于多样性的精彩演讲。Johnny…
Johnny Boursiquot: 是的!
Mat Ryer: 我很喜欢你的演讲。
Johnny Boursiquot: 是啊… 这个演讲对我来说有点难准备… 说实话,这个话题让我想起了很多情感包袱,因为和这些工作相关… 准备这个演讲的时候,我希望能和观众产生共鸣,但这也迫使我自己进行一些内省。所以这是一个不错的演讲,我也感谢大家喜欢它。有些人过来跟我说,他们也有同样的感受,所以… 我很期待看到录制的视频,尽管当我看的时候会对自己很苛刻… 如果我真的看了的话。
Ashley McNamara: 你会看自己的录制吗?我从来不看自己的视频。
Johnny Boursiquot: 是的,我已经不再看了。我对自己总是太苛刻了。
Carmen Andoh: Johnny,视频会很快上线吗?我很想看。
Johnny Boursiquot: 嗯,这取决于 GothamGo 团队什么时候完成后期编辑。但我希望能在接下来的几周内上线。
Ashley McNamara: 我看到了 一张很棒的合照,所有参加的人都在里面。最让我喜欢的是,所有人都在微笑,而 Mat 在照片的边缘,看起来完全困惑… 这就是他的常态。 [笑声] 但是照片真的很棒。
Carmen Andoh: 我不知道,我倒是挺喜欢 Mat 的姿势。他站得挺直的… 感觉姿势非常得体。
Ashley McNamara: 是的。
Mat Ryer: 我喜欢随时站得笔直… [笑声] 这就是我自然的样子,好像我真的很享受。
Ashley McNamara: 是的,是的。非常平易近人。我喜欢这种感觉。 [笑声]
Mat Ryer: Ashley,你还记得我们做的 gopherize.me,对吧?
Ashley McNamara: 当然记得,怎么可能忘记呢?
Mat Ryer: 从某种意义上说,那些 gopher 就像我们的孩子一样,而且数量有数十亿。
Ashley McNamara: 数十亿个。我们真的需要更新一下了,我知道我们已经说过很多次了。
Mat Ryer: 更新什么?加更多,还是删掉一些呢…?
Ashley McNamara: 是啊…
Carmen Andoh: 别…!
Ashley McNamara: 不,Mat,我们不能“杀掉”我们的孩子。我们需要更多的成员加入这个大家庭。
Carmen Andoh: 那当你们两个都在工作的时候,谁来照顾这些超过五十亿的孩子呢?我必须知道…
Ashley McNamara: Mat 是个全职在家的 gopher 爸爸。
Mat Ryer: 我远程工作。 [笑声]
Carmen Andoh: 真棒。
Mat Ryer: 我到处都能看到这些 gopher,真的太酷了。当然,我不认为这是我的功劳,因为我基本上只是把一些 PNG 叠在一起… 但我到处都能看到它们,感觉很棒。每次看到它们,我莫名地对那个项目有了更多的信任感。
Ashley McNamara: 你知道吗,我也是。我到处都能看到它们,尤其是在亚马逊上… 这真是有趣。
Mat Ryer: [笑] 那可不是我。 [笑声]
Ashley McNamara: 嘿,大家,别再在亚马逊上卖我的 gopher 了。 [笑声]
Mat Ryer: 是啊。虽然这很酷,但请不要这么做,因为它是 Creative Commons 版权,对吧?
Ashley McNamara: 是的。技术上来说,我猜他们可以,但别这么做。
Mat Ryer: 我以为技术上来说他们不能。
Ashley McNamara: 这个规定比较松散。
Mat Ryer: 好吧,我们以后得做一期关于版权许可的播客。但在那之前…
Carmen Andoh: 亚马逊上侵权商品的黑暗世界,我想那也能做成一期节目。
Johnny Boursiquot: 哦,没错。
Mat Ryer: 是啊。我自己就卖了很多 Mark Bates 的周边产品… [笑声]
Carmen Andoh: 哦…
Ashley McNamara: 谁不呢,对吧?
Mat Ryer: 是啊,是啊。除此之外,我还是挺愿意做这个的。所以今天我们要讨论招聘和面试话题,我想我们可以从分享一下大家有没有什么好的面试经历开始,还有哪些方法在面试中比较有效?
Carmen Andoh: 我真的很喜欢 Travis CI 的面试方式,适用于所有人… 他们不搞白板面试;这简直太棒了,因为他们的态度是:“听着,我们找的是你这个人,我们已经做了一些背景调查;可能我们看过你的一些代码,或者我们认为你有经验,我们会信任你… 相比之下,我们更想看看你如何处理冲突,以及你如何解决问题。我们想知道你在团队中的表现,你的性格是否擅长合作。”这些才是重要的。这是我经历过的最好面试方式,真正抓住了人们的本质。正如有人在准备阶段提到的,团队中最重要的是人,所以我们如何选择和谁一起工作呢?我们不是选择他们的代码,而是选择他们这个人。
所以那些能够真正了解一个人的面试体验,尤其是看他们如何合作、如何处理冲突、如何解决问题的面试,是我认为最好的面试经历。
Mat Ryer: 这真的很有趣,因为我总觉得在面试中很难真正了解一个人,尤其是如果是白板面试的话。Johnny,其实你发过一条推文,讨论这个问题,那条推文蛮火的。
Johnny Boursiquot: 对。
Mat Ryer: 你说你自己在白板面试中表现可能不会太好。
Johnny Boursiquot: 是的,那条 推文 的原话是:“我做程序员已经有 20 年了。我不会在你们的白板技术面试中表现得很好。这更多说明我有问题,还是说明你们的面试流程有问题?” 基本上,我觉得这是一种光谱。有些人是刚入行的新人,或者刚开始学习编程,你需要一种评估他们能力的方法,我能理解。但另一方面,如果你面试的是一个有多年经验的老手,却让他们经历一个技术白板面试,比如讨论“二叉搜索树”,或是让他们回忆大学里学过的一些冷门算法,这种面试方式对我个人来说并不合适,因为这并不是我在过去 20 多年日常工作中做的事情。我不是每天都在发明新算法,也不需要用特殊的方法来排序等。
所以这条推文其实反映了我对理想面试流程的期望。我希望面试能够设计得让面试者展示自己擅长的部分。
目前的面试流程主要是为了让公司尽快评估候选人。这有点像一条流水线,你只是在一个清单上打勾,第一个问题往往是:“他们能够设计算法并在最短时间内给出最佳解决方案吗?” 这是一种方法。
另一种方法是说:“好吧,我知道这个人有经验,那我要如何发现他们的其他能力?” 基本上我们知道他们会编程,那么“我要怎样发现额外的东西?”那些真正重要的东西---
日常的互动、沟通技巧,以及能让团队变得更好的品质。这些才是我希望面试能更多关注的。创造一个能让候选人展示自己能力的场景,而不是你拿着清单逐条对照打勾。这真的是我希望在行业中能更普遍存在的面试方式。
Ashley McNamara: 我同意。我在面试中最喜欢做的事情是---
我也不喜欢白板面试,原因和你一样。你应该评估我日常会做的事情,和我讨论这些。我喜欢了解人们对什么感兴趣;所以带我走过你最近做的一个项目,告诉我你为什么这么做。这样你能比让他们站在白板前更好地了解他们。
Mat Ryer: 我也很喜欢这种方式,因为它自然而然地根据面试者的特长调整。在他们的回答中,他们可以选择自己感兴趣的、或者最近做的事情来讨论。所以我认为这种方式很好,因为你同时也能了解他们的兴趣所在。如果有人做了一个业余项目… 我总是建议大家参与开源项目,或者做一些业余项目,如果你没有其他可以展示的东西,因为这是一种展示你能力的好方法。重点不是代码是否完美,而是通过这些项目,你可以展示出你是如何思考、如何解决特定问题的。
Ashley McNamara: 完全正确。我去年面试谷歌时,我翻阅了《破解面试》(Cracking the Coding Interview),那本书有好几百页,读起来毫无乐趣,枯燥乏味,我为此感到焦虑。后来我决定停止面试过程,我不需要让自己经历这种痛苦。我可以在其他任何地方工作。谷歌对我来说并没有那么重要,除非他们改变面试流程,否则我不会再去面试。因为他们的流程太陈旧了,我不喜欢。如果他们问我讲解一下我的开源贡献或者个人项目,那会好得多。
Johnny Boursiquot: 我记得我经历过的两个最好的面试。一个是他们让我去现场面试;当时我住在同一个城市,所以他们让我到现场讲解我做的一些项目。我选择了几个我特别自豪的项目,我带着幻灯片,走到投影仪前,讲解了我实际做的东西;整个过程中我鼓励提问,我们进行了互动… 就像是有一场工程讨论,讨论了权衡取舍,为什么我做了某个决定,我预期会有什么结果,我解决的是什么问题… 他们甚至不需要太了解我所工作的领域,但我调整了讲解内容,以便进行对话和沟通… 因为这正是你在工作中会做的事情---
你会沟通想法,获得反馈并调整。所以这是我经历过的最好的面试之一。
另一个面试是他们给了我一个实际的问题让我去解决。在接下来的几天里,我利用空闲时间,尽管时间不多,但我还是把解决方案做了出来… 我确保按照我在生产代码中会做的事情来做---
写了一些测试,还做了一些负载测试等等… 所以我基本上是按照我平时在生产环境中做的方式来完成的,我并没有觉得需要添加一些额外的东西,那些我平时不会做、不自然的东西。我就是把它当作一项工作任务来处理。
然后我们开了个电话会议,我们一起讨论了这个项目,甚至共享了屏幕,像你和团队成员在实际代码审查中做的那样一起走过代码。
总之,这些面试感觉就像是你在工作中会做的事情的延伸---
在我看来,这才是最好的面试流程。
Carmen Andoh: 是的,我也喜欢这样的面试方式。
Mat Ryer: Ashley,你面试谷歌的时候,他们让你用谷歌吗? [笑声] 我是认真的,因为有时候我听说面试官会要求候选人做一些事情,然后规定“你不能用谷歌”。但我做工作时需要用谷歌,我真的需要它。
Johnny Boursiquot: 我们都需要。 [笑声]
Mat Ryer: 我知道我需要它的原因是,当我坐在没有 Wi-Fi 的航班上试图工作时,我就像个傻子。 [笑声]
Ashley McNamara: 他们没有这样要求我,但如果他们真这么做了,我会死的,因为我所有事情都依赖谷歌。没有谷歌,我什么都不是。
Carmen Andoh: 或者没有 Stack Overflow,甚至不能查看 GoDocs 或其他文档… 我们的记忆已经被外包到我们知道可以找到东西的地方了。我们不需要担心记住任何东西,我喜欢这样。在谷歌你不能用谷歌,但我刚刚经历了他们的面试过程,他们的解释是“尽你所能,给出你认为最好的解决方案”。 [笑声]
Johnny Boursiquot: 我觉得这其实是个谎言… [笑声]
Carmen Andoh: 是的…
Johnny Boursiquot: 我觉得这是个谎言。
Carmen Andoh: 嗯,我很惊讶听到 Ashley 你曾经历过谷歌的面试过程并选择退出,因为我没有退出,当然,最后是个好结局,我被录用了,但… 是的,这过程一点都不有趣。
Ashley McNamara: 是的,那时我也在面试微软,我压力大得受不了,我无法理解这些问题… 我心想:“你们问的这些问题和我每天的工作毫无关系。你们不想知道我是否能胜任这个职位吗?”
Carmen Andoh: 是的,这就是为什么我认为现在的面试流程在这方面是有问题的。你被要求做一些无聊的事情,比如“序列化一棵树”或者像 Johnny 说的那些奇怪的算法---
这些根本不是你过去二十年做的事情,你实际上从大学毕业后就再也没做过这些,并且你以后也不太可能再做。相比之下,更实际的方法是给你一个项目,你可以在现场完成,或者你有 24 小时的时间去解决它,结果就出来了。
Johnny Boursiquot: 我觉得问题的另一部分是,你在面试中的表现好坏可能取决于面试官。如果面试官理解“好吧,这个人已经有很多年没做过这种类型的工作或解决问题的方法了,我会寻找不同的评估指标”,那么他们处理问题的方式会有所不同。你永远不知道会遇到什么样的面试官,所以你的表现好坏可能完全取决于面试官的主观评价,甚至可能取决于他们当天的心情。
我从不喜欢在午餐前进行这样的面试问题,因为已经有研究证明---
即使是司法案件也被证明,如果法官饿了,他们在午餐前下的判决比午餐后更严厉…
Carmen Andoh: 统计数据也是这样…
Johnny Boursiquot: 是的,没错。这里有人性因素的影响。我当时在想:“好吧,也许这个流程不适合我。” 我当时基本上就是在想:“如果流程一直是这样的,我宁愿退出。” 说实话,这种流程不会让我展示出最好的自己。
Ashley McNamara: 我觉得我们缺少的是那个“人性因素”。我们过于关注应聘者的技术能力,却忽视了“你是不是一个我们可以一起工作的人?” 这是最重要的部分。外面有很多聪明但不好相处的人;我不想和聪明的混蛋一起工作。
(译者注: 其实绝大多数工作都是拧螺丝,只要能力不差到离谱,还是这个人是否好相处,好沟通,是否负责,更影响工作体验和工作质量)
Carmen Andoh: 是的,我觉得如果你多半时间是和一个团队合作,或者是一个更大的跨职能团队,那么最好是你将来实际要共事的那些人来进行面试;但在像谷歌这样的大公司,甚至是微软,正如 Johnny 说的,你只是面试官队列中的一个候选人,他们可能永远不会再见到你。这真的没有意义。
Mat Ryer: 是的,我能理解这种情况。当一个人被分配了任务,或者一个团队或公司试图寻找一个适用于所有人的流程时,我可以理解,但我同意这是个错误。因为最重要的东西往往是最难评估的,通常你需要根据每个人的情况进行调整。如果你是应聘者,你会根据公司在寻找什么,或你认为公司在寻找什么来调整自己。你会突出一些你想强调的东西。这其实是一个双方匹配的过程,也是独一无二的。
所以每当你试图创建一个通用流程时,我认为问题就出在这里---
即使这个通用流程在大多数情况下有效,但你还是会错过一些本来能为团队带来价值的人。
Ashley McNamara: 你说得对。我们每个人都不同。我们各自在不同领域有专长… 我在面试我的团队时也是这样做的,包括做绩效评估,因为开发者推广工作很奇怪,很难衡量… 我不相信全球统一的指标。我认为没有一个流程适用于所有人,所以每个人都有定制的指标。我也认为面试应该是定制的。面试我的人应该先在网上查查我。我知道我会去查他们… 这是相互尊重的问题。
Carmen Andoh:在加入科技行业之前,我在一所大学担任招生助理主任,负责面试申请大学的学生……所以,作为一个面试官,我每天下午要进行四次面试,连续九个月,持续四年……因此我对如何在有限的时间内进行面试并最大化效果有一定的经验。我认为,正如你所说的,Ashley,你需要对面试者做一些功课,同时也要根据面试者是谁以及对话的进展调整问题。我认为这能最大程度地利用与面试者的时间,也能更准确地判断你是否在招聘合适的人。
我想在这里提一下 Axel Wagner(嗨!)。我们刚刚在批评谷歌的面试流程,他在聊天和 Gopher Slack 中提到,要在谷歌做任何事情,你确实需要了解内部服务,比如 Stubby、Borg、Critique 等等。我能理解谷歌不希望出现他们所说的“假阳性”,以确保他们在使用这些大规模系统时不会被压垮,但我只是希望这个流程能更好一点。我不知道什么是完美的面试流程,但如果有时间的话……我确实觉得我表现得很好,因为我得到了非常好的建议……所以如果必须进行白板面试,我也得到了关于如何应对以及如何准备的宝贵建议,当然是在你读完那本枯燥的大书之后,Ashley。
Johnny Boursiquot:那是什么建议?
Carmen Andoh: 我得到的一个很棒的建议是,你必须站在那些同意加入招聘委员会、也就是面试官的角度来思考。他们必须问你一个技术问题,而通常这是他们为每个面试者准备的唯一一个技术问题……问题在于,当你准备一个技术问题时,你必须准备好了解所有的细微差别,随着不同层次的提高。是的,你可能已经让程序运行了,但现在你如何让它更高效?或者当数据集发生变化时你会怎么做?
如果面试者很快就弄清楚了算法或数据结构,你必须准备好将他们提升到更高的层次……因此,面试官准备的问题必须为这种情况做好准备……这就是为什么你会觉得问题和你每天做的事情非常不一致,因为这是面试官问的唯一问题---
他们的专长领域问题。这是让我站在面试官角度思考的一个很好的角度,这是第一个好建议。
第二个好建议是,大多数面试官在问题陈述中故意省略了一些信息,因为正如 Johnny 所说,有时他们想听到更多的问题,想要澄清问题,想要对话,想要看到你能多好地表达自己对缺失信息的理解,或者如何处理问题陈述中的不确定性……所以他们故意省略了一些信息。
在我的谷歌面试中,我只得到了一句五个字的陈述,但因为我得到了这个建议,我说:“好吧,你省略了所有这些内容”,所以问题的一部分是能够填补这些空白,或者提出那些好的问题。这是两个非常好的建议。
第三个好建议是,这些问题故意设计得让你无法在45分钟的技术面试中完成,你有五次这样的面试,尤其是在开发者关系工程的某些部分……第三点是,你总会觉得自己没有真正完成,这是故意的,因为没有人能达到十级,或成为杰出工程师。挑战总是会不断增加。
然后第四点,当然,Johnny 已经提到过了,就是要非常清楚自己的饥饿感和疲惫感,并向面试官说明。这也是一种沟通。可能会向招聘委员会传达:“嘿,这个人本来可以表现得更好,但那正好是午餐前,或者是一天中的最后一场面试,等等。”
哦,还有一个额外的建议---
不要让感觉不好的面试(尤其是当天的第一次面试)影响你后面的面试。我觉得因为我得到了谷歌内部人士给的这些非常好的建议,我才能更好地应对这些面试,我也能站在面试官的角度,理解“好吧,我在实际工作中可能永远不会用到这些,但这是他们要问的问题,我就去应对吧。”
Mat Ryer:太棒了。你知道,我还想到一点是,我们希望团队有多样性。我觉得大多数人---
尤其是 Go 社区的人---
都能看到拥有多样化团队的价值,所以这也意味着面试流程也应该是多样化的。如果你对所有人都采用单一的流程,那么你只会筛选出那些符合流程要求的人,而不是……
Johnny Boursiquot:完全正确……
Ashley McNamara:是的。
Johnny Boursiquot:[笑声]……因为我完全同意这个观点。认为一个流程能筛选出最多合适候选人的想法是错误的。按定义,这个流程会排除很多可能是好候选人的人。我认为大家都明白这一点;谷歌和其他大公司也明白这一点。他们基本上是在追求一个足够高的比例,让未被录用的好候选人不会对他们造成伤害。
让我们明确一点……谷歌之所以成为谷歌,不是因为他们雇佣了糟糕的工程师;他们有很多出色的工程师为他们工作,祝他们好运。这很好。但至少在我看来,有时如果他们对流程进行调整,或者增加一些替代流程,他们可能会吸引到更多优秀的工程师。
如果有一种方法可以说:“你知道吗,这个人属于这种类型。” 他们不是很擅长考试,或者“这个流程适合那种人。他们在配对编程上表现得很好,而不是白板面试。” 或者“这个人,考虑到他们的职位,他们会经常面对客户,这种面试流程更适合他们。” 你仍然在评估他们的软件工程能力。
最终,尤其是如果你像 Ashley 在开发者推广的角色中一样,你希望其他工程师信任你是个工程师。这没有疑问,理所当然。但有很多种方法可以评估这一点,而不一定是通过白板面试。单一的“一刀切”流程---
这才是最让我困扰的。
Ashley McNamara:我同意 Johnny 的看法。我觉得面试应该是“选择你自己的冒险”。让你以最适合的方式进行面试。如果你喜欢白板面试,那就做白板面试。如果你想做带回家的测试,那就做测试。这应该有多种选择。
Carmen Andoh:这是个好主意。
Mat Ryer:我喜欢这个想法。面试官问你:“你能排序这棵树吗?” 而你回答:“我选择翻到第25页,拿到钥匙。” [笑声]
Ashley McNamara:完全正确!
Carmen Andoh:你也可以谈谈一个当前项目,或者让他们去某个代码库查看你的代码。
Johnny Boursiquot:是的。
Ashley McNamara:没错!而且到底是谁创造了这个通用流程?是不是一群白人在房间里决定的,还是一个多元化的小组?
Carmen Andoh:[笑声] 说得好!我也不确定……我确实想谈谈你提到的,Ashley,关于偏见的问题,对吧?我们对某种思维方式和解决问题的模式有偏见,而实际上有很多种方式可以得出解决方案……尤其是在现实生活场景中,正如 Johnny 所说的那样。要找到解决方案,我们需要查阅大量文档,或者像 Mat 说的那样花很多时间去谷歌搜索问题。
不同的人有不同的处理方式,所以是否有办法根据这些差异来评估候选人的合适性呢?我觉得这个“选择你自己的冒险”是个非常好的主意。
唯一的反驳可能是“那么你是在比较苹果和橘子”,等等,但每个人都是如此独特……所以,是的,这绝对不应该是“一刀切”的。
Mat Ryer:我曾经在面试中问过一个问题,面试者回答:“我不知道。” 从他们脸上的表情可以看出他们很沮丧。我问:“那你会怎么查找答案呢?” 他们说:“哦,我可能会去谷歌搜索。” 真的,这就是当时的对话。后来我们给了他们这个职位,他们说:“我完全没想到,因为我不知道那个东西。” 但事实上,你首先知道你不知道,然后你承认你不知道,然后你说:“是的,我大概会去谷歌搜索。” 这简直是完美的回答。 [笑声]
Ashley McNamara:就在 Johnny 发推文的同时,我也发了一条迷因推文……内容是“我数学课上的一个学生被问了一个问题,他坐了一会儿,然后说‘等一下,我还没想完,只是有点慌张。’” 我觉得“这就是我在技术面试中的状态。” [笑声] 真的是这样。我不是笨,只是有点慌。
Carmen Andoh: 这确实帮助我们看到了这个人的人性,以及他们如何应对压力。有时只是说一些类似的话来缓解负担、压力或紧张感,也能让你学到很多关于这个人的信息。或者说“我能不能后退一步,休息一下?”,或者“我需要深呼吸一下。” 我想我在谷歌面试的最后一场面试中也说了这样的话,因为我的大脑已经彻底疲惫了。当时我已经做了四场编码面试……是的。 [笑声] 但我觉得,看到更多人性的一面会很棒。
我也在想,Mat,你提到的“我不知道”是一个如此有力的表达方式……然而,有时我觉得女性在说“我不知道”时会受到更多的责难,我自己也非常犹豫是否要直接说“我不知道”,而不做任何解释。我知道我和其他人讨论过这个问题,少数群体也往往会在说“我不知道”时遇到问题。“我不知道”有时似乎是白人的特权。
Ashley McNamara:不,你完全正确,Carmen。这就像当你站在舞台上演讲时一样。如果是一个女性或有色人种站在台上,观众---
无论他们是有意还是无意的,通常是无意识的---
他们已经在想“他们技术过关吗?他们知道自己在说什么吗?” 因此你已经面临挑战,你必须证明自己懂行。在这些面试中也是如此,当你说“我不知道”时,他们不会想“她只是不知道这个东西”,而是会想“她什么都不知道。”
Carmen Andoh:是的……我有一个关于这个的故事。我在面试一个软件工程和基础设施工程的职位,其中一位候选人是女性。在反馈会议中,我们做了第二轮或第三轮面试,在总结时我也犯了同样的偏见。我说:“你知道吗,这个人看起来非常……”---
他们对自己不太确定;我甚至没有说这么多,只是说:“我不知道……他们好像不太确定自己能不能胜任这份工作。” 这时我的一个同事说:“你知道吗,他们只是在谦虚。” 这也涉及到个性和文化。首先,如果他们不符合所有条件,他们可能不会申请这个职位,所以我们甚至可以谈谈这个……这个管道本身就让一些人觉得自己不适合申请这个职位。
但一旦你申请了,我经常发现那些更谦虚的人不会大肆宣扬自己知道什么,而是以一种更谦逊的方式做事,这在面试反馈中也得到了体现,尤其是在我们进行面试总结时……我非常感谢我的同事,我至今仍然感谢他们;他们让我意识到,当有人没有大肆宣扬自己是最棒的……哦,顺便问一下,你们在英国也用“自切面包以来最棒的东西”这个说法吗?
Mat Ryer:是的,我们是第一个切面包的国家。 [笑声]
Carmen Andoh:哦,是吗?哈哈……不过,是的,所以……谦虚---
我喜欢在面试中看到这一点,但有时,取决于工作场所的文化,你可能会因为谦虚而受到责难。
Mat Ryer:说实话,我从没想过---
这可能会让你感到惊讶---
说“我不知道”是一种特权。这就是为什么我喜欢 Johnny 在 Gotham Go 大会上的演讲,也为什么我喜欢讨论多样性---
因为我总是学到很多东西。问题在于,由于我的直接经历与他人不同,有时很难真正了解那是什么感觉。我并不知道那是什么感觉……所以我喜欢讨论这个话题。非常感谢你指出了这一点,因为我之前真的从没想过。
Johnny Boursiquot:我很高兴这个话题被提了出来,因为我可以肯定地说,作为少数群体,无论是女性、有色人种,还是任何场合中的少数群体,你不能说“我不知道”而不付出代价。我总是感到巨大的压力,要显得专业并具备技术能力……最近,我在准备我的主旨演讲时也遇到了同样的问题,尽管我知道主旨演讲不一定需要是技术性的,它们的设计更多是为了“鼓舞士气”,让大家建立联系,享受整个活动……所以我知道这一点。但在我心底,我在想:“我要讲的内容并不涉及代码展示,我也没有像孔雀那样展示我的所有技术羽毛,因为我知道,作为一个黑人男性,我总觉得需要展示这些才能被接受。”
这是我一直在挣扎的事情,希望随着时间的推移,我能够变得更加自信,不再需要去取悦别人。但这种想法仍然会在我脑海中闪现。当我要做一个演讲时,我会想:“哦天哪,如果这个演讲不够技术性,人们会不会觉得我没有我声称的那么技术?” 面试过程也是一样。在我心里,我不能说“我不知道”。我必须知道答案,或者至少能谈论到让对方相信,给我实际的工具我就能找到答案。我完全同意这一点。
Mat Ryer:哇。Carmen,你之前提到过压力,提到过在面试中试图让人们感到轻松……你觉得有时这些技术面试是为了测试人在压力下的反应,看看他们会怎么做吗?对此你怎么看?
Carmen Andoh:是的……不幸的是,我觉得确实如此。我还没有被要求参与谷歌的招聘工作,但如果我待得足够久,我想我会的……不过 Axel 你在聊天中说了很多很好的东西,包括在招聘面试中,当我们希望雇佣那些可能患有焦虑症的人时,这个流程会如何排除这些人;它排除了许多本不该被排除的人。
白板面试---
我觉得,正如 Ashley 所说的那样,应该有某种方式让你选择退出。我知道我的儿子有残疾---
他有一个 509 计划,允许他退出某些流程。面试中应该也有类似的方式。如果有一种方法能让我们评估……我不知道确切的答案,但……压力测试---
我没有焦虑症,但我知道很多业内人士有,我真的为他们感到担忧。我很想听听他们的想法,无论是在推特上,还是如果他们愿意私信我,告诉我他们是如何应对这种情况的,或者是否能够应对。
Ashley McNamara:是的,这就是我退出面试流程的原因。我不一定有焦虑症,但在白板面试的情况下,我会感到焦虑。首先,我会想:“他们是男人吗?他们在看我的屁股吗?” 谁能说得清楚。这确实带来了一定程度的焦虑。但我也认为这是一种权力的滥用,我不喜欢它;我不想为一个目标是让我感到压力的公司工作。
Mat Ryer:是的。这提出了一个很好的观点,那就是你也在面试这家公司。即使是第一次找工作、第一次面试的初级开发人员,你也在面试这家公司……如果你能---
这可能是一个特权问题,或者至少是一个环境问题---
选择公司,那你绝对应该这么做,因为为错误的公司工作对你造成的伤害比你想象的要大得多。
Ashley McNamara:对,我的想法是,如果我第一次和一家公司接触时,他们就试图给我制造压力,那我在这家公司工作的其他时间会是什么样子呢?他们在第一次见面时就毫不犹豫地给我压力,那么在项目截止日期临近时又会怎样呢?他们会要求我疯狂加班来完成任务吗?他们到底是什么样的公司?
Mat Ryer:对,这是个很好的问题,值得自问。不过,这个问题可能适用于面试过程中的任何环节,因为面试过程实际上代表了这家公司的形象。那些负责面试和招聘的人需要意识到,面试过程其实就是公司的一种用户体验,你必须谨记这一点。
Johnny Boursiquot: 这在大公司中可能比小公司更为真实。在小公司,你能更直接地感受到与面试你的人共事的氛围,而在大公司里,面试过程更像是打勾勾的流水线,你得先过“守门人”的那一关,然后才能真正接触到某个团队或部门的真实文化。这就是为什么我一直在想:“为什么要设置这道墙?” 我不太理解。我相信他们有理由这么做,但为什么要设置这样一道人为的障碍?这和实际的工作完全不一样。这道墙可能会阻挡一些合适的候选人。我真的不太懂。
Carmen Andoh:是的。我也问过类似的问题,尤其是关于大公司面试流程中的问题,比如那种不合理的白板面试。有人解释说,他们希望确保能够准确地评估候选人的等级,并且让足够多的人对候选人的初始等级达成一致,因为这会影响到基础的薪资待遇等。我不确定我是否认同这个理由,但这个解释听起来蛮有说服力的……不过,我还在谷歌工作不久,慢慢看看吧。
Ashley McNamara:老实说,这让我怀疑他们是不是故意把面试搞得那么难,好让他们可以压低你的级别和薪酬?比如说:“你在这场糟糕的面试中表现得不好,所以我们要给你少几千美元的薪水。”
Carmen Andoh:考虑到我们已经听说过的薪酬不平等问题,尤其是在少数族裔和其他群体之间的差距,这让我更担心。从一开始我们就知道,很多女性和少数族裔的薪酬水平远低于应有的水平,难道这是因为他们在这些面试中的表现?我不知道,但这确实是个问题。
Mat Ryer:听到这些事情真的让人感到害怕和沮丧……不过我觉得我们能做的就是继续讨论这个问题,并在看到不公平现象时勇敢站出来反对。
Mat Ryer:我之前做过一件有趣的事情。当时我们有十个候选人,想要录用其中的五个。我们给每个人提供了一个为期一个月的合同,让他们加入团队工作一个月。当时大家的情况都允许这样做,我们给他们支付了一个月的薪水,而我们正好有一些工作适合这种安排,所以一切都挺顺利。但最有价值的部分其实是看他们在团队中的表现,观察他们的互动。我们每天都有一次更新电话会议,每个人都是远程工作的---
反正我们公司也是远程办公的,所以这非常合适。
有几个人在工作过程中意识到:“好吧,我觉得这不是我想要的工作。” 对一些初级员工来说,远程工作更难适应,所以他们因为这个原因不太喜欢这种工作方式。这也是好事,我不知道如果是在传统的面试中,我们会如何发现这一点,因为他们都是远程工作的。
Ashley McNamara:我喜欢这个主意,真的非常喜欢。我觉得这是你做过的最聪明的事情(笑声)。
Mat Ryer:不,不不……等一下,你们听说过 Bitbar 吗?
Carmen Andoh:没有。
Ashley McNamara:没有。
Mat Ryer:开玩笑的。我刚才差点又说“你们”了。这是我今年的新年目标之一,尽量避免说“你们”。
Ashley McNamara:你应该说“大家”,我觉得你用英国口音说这个会很好笑。
Mat Ryer:好吧,我用 Adam 的口音来模仿(笑声)。“嘿,我们的赞助商是 Fastly,大家。”
Carmen Andoh:哇!我喜欢这个!
Ashley McNamara:真的很棒!
Johnny Boursiquot:很有意思。
Carmen Andoh:不错。
Ashley McNamara:他还会模仿 Francesc。你能模仿 Francesc 吗?抱歉,Francesc,我只是太喜欢了。
Mat Ryer:我不能公开模仿他。不,不公开模仿。
Ashley McNamara:啊……他不让你模仿吗?好吧,下次再说。
Mat Ryer:他不想让我模仿,因为他为我感到难过,觉得我模仿得太糟糕了(笑声)。所以,是的,在那次合同工作中,很明显谁适合留在团队,因为效果非常好……但如果要把这种方式编码成某种流程,我不知道该怎么做。不过另一个有趣的事情是,有人站出来说:“我觉得这个主意不是很尊重人。我需要更稳定的工作。我做过一些开源项目,我觉得这应该足够了。” 他们勇敢地站出来反对这个想法,我们立刻就录用了他们,因为他们很棒。
所以,是的,这确实是有风险的。你觉得在面试中,人们应该承担多大的风险呢?
Ashley McNamara:当然,并不是每个人都能腾出一个月的时间来做这种工作。如果不合适,他们接下来该怎么办?不过我确实喜欢这个想法。
Carmen Andoh:是的。
Johnny Boursiquot:这可能应该是其中一种选择,就像 Ashley 之前说的那个“选择你自己的冒险”模式。对某些人来说,这种方式可能不太实际。如果你有家庭,你有责任要履行,或者你现在正在找工作,而且有一定的紧迫感,因为有人依赖你,或者你需要医疗保险,你不想让保险中断,因为那样你就得用 COBRA 保险,那会让你花费一大笔钱。所以在美国,很多情况下,人们可能无法选择这种合同方式。
( 译者注: COBRA 保险是《平价医疗法案》(Affordable Care Act, ACA)下的一项规定,其全称为“综合预算调节法案”(Consolidated Omnibus Budget Reconciliation Act)。COBRA 允许某些员工和他们的家属在失去工作或其他合格事件后,继续享有雇主提供的健康保险。这种保险通常适用于公司雇员和其家属 )
但对某些人来说,这种方式是适合的。也许他们还年轻,没有太多责任,可以负担得起几周没有那些福利和其他合同附带的东西;那也没问题。但我觉得在我们讨论的这些选项中,有一点是我绝对不能忽视的,那就是,拥有太多选择的代价。如果你是一家小公司,想要创造一种像我们讨论的那样的完美面试流程,这可能会很昂贵。你可能无法负担得起那么多不同的面试方式,给大家选项,看看哪种方式最合适。或者也许你能做到;我不知道这在资源、人员和资金方面意味着什么。你得真正从其他公司那里获得一些反馈,看看他们是否有“选择你自己的冒险”式的面试流程,以及它们的效果如何……所以,如果可以的话,在推特上告诉我们……但这个过程确实是有成本的。有些部分会比其他部分花费更多时间,所以我们也必须理解这一点。
也许有其他商业原因让某些流程比另一些流程更受欢迎,但基本上我们必须承认,这并不像我们说的那么容易。如果真的这么简单,我相信会有更多公司采用这种方式。
Mat Ryer: 是的,但这真的很重要,不是吗?团队中最重要的是什么?是人啊!是的,我知道这有挑战,但我觉得这件事太重要了,不能忽视。我喜欢给人们选择的想法,比如你可以选择通过 Slack 进行面试,如果你不喜欢面对面的方式,等等。我很想看到一些关于这方面的实验。
Ashley McNamara:对,我之前也说过,最初是谁制定了这种通用面试流程?是由一群白人男性制定的吗?我可以肯定,它的制定过程肯定不够多元化。所以,无论是谁在制定这些流程,我们需要让各个群体的代表参与进来,一起制定这些流程……但说到底,根本不存在一个适合所有人的流程……所以对我来说,唯一的选择就是“选择你自己的冒险”。当然,我们不能让选项太多,以致无法控制,但归根结底,这一切都关乎人,我们希望有优秀的人为我们工作,所以他们在面试中应该感到舒适和自在。
Mat Ryer:对,Ashley,你之前开玩笑说我和 Mark 很久没有参加面试了,这确实是真的,但是……
Ashley McNamara:对,不过后来 Cory 说你们经常面试公司,这其实是一样的。
Mat Ryer:对,所以你是在面试公司;我觉得这就是他的笑点……不过这是真的,我们之前也讨论过这一点。啊,我忘了我要说什么了。这种事有时候会发生,对吧?
Ashley McNamara:嗯……你老了(笑声)。
Johnny Boursiquot:噗!
Mat Ryer:我是从什么时候开始变老的?
Johnny Boursiquot:噢,你不知道吗?[笑声]
Carmen Andoh:关于“选择你自己的冒险”的另一个想法是,我真的想给所有面试官准备一份关于偏见的指南。偏见,以及我们刚才讨论的一些小事,比如某些少数群体,或者有着不同个性、不同文化背景的人,面试中这可能会带来什么样的表现……因为作为面试官,正如 Johnny 一开始所说的,你可能会遇到非常随机的情况,取决于你遇到的面试官是谁,这对你来说可能是幸运的,也可能是不幸的……因为面试官自己也会带着他们的偏见、个人视角和各种想法。所以,尽可能地消除这些偏见,提升面试官的意识,我觉得会非常有帮助。我自己从来没有在任何地方看到过这种指南,即使是我在做大学生面试官的时候也没有。我觉得我是从经验中自己学习到这些的,但如果能有一份指南,我的能力会提升很多。我希望这种指南能成为行业标准,无论是对公司还是对个人面试官来说。
Mat Ryer:这是个绝佳的主意。
Ashley McNamara:不仅要有指南,还应该有反馈讨论环节。我参加过很多反馈会,通常你只是提供反馈,面试官会根据你的反馈做决定。如果能就这些反馈进行讨论就好了。为什么你会得出这些结论?挑战这些反馈,因为可能在其中存在偏见,你可以去质疑它。
Carmen Andoh:对,这个主意很棒。
Mat Ryer: 我曾经参加过一次求职面试,是一个JavaScript职位……当我到达时,他们给了我一份技术考试,但那是一份Java的考试。所以我说:“哦,这是错误的测试,我是来面试JavaScript职位的。” 他只是说:“哦,没关系,你就做这个吧,我们会考虑到这一点。” 于是我没有做,我直接离开了,因为感觉他们根本不在乎……我能看出来这个家伙忙得不可开交,面试突然就到了,他只是随手拿了一份考试给我。即使这根本与工作无关,他似乎也不在乎,这种不在乎对我来说就是个危险信号……幸运的是,我能够直接离开。
有人有类似的面试噩梦吗?
Ashley McNamara: 我之前已经分享过我的经历了,但我想说,干得好,你选择了离开。如果他们不在乎,那你也不应该在乎。
Mat Ryer: 是的,我也想对初级开发者们说,如果可以的话,那种早期的经验非常重要,它会揭示在那家公司工作的真实情况。要对自己有高标准。
Carmen Andoh: 是的。我也希望初级工程师们能够感受到这一点---
面试是双向的,他们在面试你,你也在面试他们……要坚定自己的自我价值,如果感觉不对劲,那就果断离开。虽然我知道有时候你可能真的需要一份薪水,真的需要这份工作,但如果为了得到它你承受了太多压力,那么这段工作经历很可能不会好过。
Mat Ryer: 是的。Slack上的Ante(或者NT?)刚刚说他的朋友经历了同样的事情,他们给了他一份错误的测试,或者是其他语言的测试,但他还是通过了,而且考得很好。 [笑声]
Johnny Boursiquot: 立刻雇用那个人吧。
Carmen Andoh: 对,完全同意。我曾作为面试官经历了一次噩梦般的面试。有个人成功通过了我们早期的筛选过程,我们有一个第一阶段,“请回答这些问题。” 这个人说得头头是道。但当我们进入实际面试时,那是一个高级职位,我和另外三位女性一起面试他……他不断打断我们,他显然并不知道自己在说什么,但这种无知就像是“达克效应”(Dunning-Kruger效应),他并不知道自己有多么无知……整个过程简直令人痛苦。更糟糕的是,他对一位同事/面试官还进行了某种隐晦的侮辱。后来在第三次,他居然对我进行“男子解释”(mansplaining)。我当时心想:“等一下,这是什么情况……!”
不用说,我们当时就决定不再联系他了。面试结束时我直接说:“我觉得你可能不太适合这个职位。” 我记得当时我觉得自己能这样说出口,而我的两位同事在面试结束后也说:“谢谢你直接告诉他。”
我知道大家都有作为面试者的糟糕经历,但作为面试官,糟糕的经历其实也不少。这次面试真的很糟糕。
Mat Ryer: 是啊。那么关于幽默呢?我在面试中会尝试用一些幽默,我发现这是一个很好的方式,能够让你稍微了解面试对象。当然,语境非常重要。这是一场非常严肃的面试,不是为了搞笑或轻浮,但如果他们开个玩笑,或者我开个玩笑,至少他们能意识到这是个玩笑。这就是我想要的;我只希望人们能说:“哦,知道了,这是个玩笑。” 然后继续。这是我的梦想。因为这能告诉你一些信息。你们觉得这样合适吗?
Ashley McNamara: 我不知道,Mat。你了解我,我喜欢幽默。我已经老了,无所谓了。如果你现在不笑我的笑话,以后也不会笑,那我们就有问题了。所以我需要你笑我的笑话。
Carmen Andoh: 幽默是---
我有一个来自完全不同文化背景的丈夫,很多我认为有趣、机智或讽刺的东西,他并不认为有趣,或者根本没听懂,反之亦然。西非的幽默有时我完全不懂。所以有时候我们在讲笑话时需要检查自己的偏见,而且这是在20年婚姻的个人背景下说的。
是的,如果他们不明白,那我会在反馈环节像Ashley说的那样,问:“你怎么看待这个?” 幽默是智慧的表现,但它也很微妙,展现了我们是谁以及我们重视什么。所以它对建立良好的团队关系非常有用,但我不知道是否还有其他方式来建立这种关系。
我曾与很多德国同事共事,我不是在刻板印象德国人,我只是说,我曾经和一位德国同事有过这样一个时刻,我说:“我不喜欢讽刺,也不欣赏讽刺。” 而他们也不喜欢美国人把一切都称为“很棒”、“超级酷”之类的说法,因为对他们来说,这些只是“还好”。这也是一种反馈和跨文化的交流,这种情况在面试中也可能出现。
Johnny Boursiquot: 我在作为面试官时更喜欢用幽默,而不是作为面试者。我见过很多面试者非常紧张,我能够感同身受。我会想:“我也曾经历过你现在的情况,我知道你在经历什么……” 所以我会尽量让他们感到舒适,有时幽默是其中的一部分。但你也可以通过说“我知道你很紧张,这没关系……我不会因为你紧张而评判你,也不会因为你在解释时结巴而评判你……我理解这些只是因为紧张。”
你会看到他们的脸立刻放松了。他们知道了哪些因素不会让他们被淘汰,所以可以稍微放松一下。现在这更像是“我们一起完成这个过程,不是你和我对立,而是我们一起完成这次面试,好让我作为面试官了解你擅长什么、不擅长什么。如果有些东西你不知道或不擅长,你可以告诉我你不知道。这样我就能清楚你在哪些方面适合这个职位,哪些东西你可以后期学习,哪些是阻碍。” 但总的来说,这让面试变成了一场与熟人的对话,而非对抗。
我的口音刚才出来了吗?我想刚刚确实带出来了…… [笑声] 但---
就像对抗一样,对吧?所以,是的,幽默的使用,再加上同理心;把自己放在他们的角度想一想:“如果我是他们,我现在需要听到什么,才能冷静下来?因为我现在真的处于恐慌模式。”
Ashley McNamara: 没错,要把他们当作人来看待,而不是简历中的一页纸。
Carmen Andoh: 赞同。
Mat Ryer: Johnny,你这样做真的很好。我觉得所有面试官都应该听取这个建议。我觉得值得在面试中说些类似的话。比如“这只是正常的紧张,没关系,不用担心。” 你希望他们能够放松,不是吗?所以我不太理解那种“面试就是要给人压力,看看他们在压力下表现如何”的理念。我们为什么要这样做呢?
Carmen Andoh: 完全同意。我们想看他们如何与我们一起工作。
Ashley McNamara: 是的,这让我阴谋论脑洞大开,感觉他们是不是故意让我们紧张,好在之后给我们低一些的职位等级? [笑声]
Mat Ryer: 所以……我觉得这次讨论非常有启发性。我学到了很多,我是认真的。虽然我说话经常听起来像在讽刺,但这次我是真的。不过,尤其是关于多样性的问题---
我之前真的没有意识到很多面试问题其实与此有关。我觉得,Ashley,你提出的“选择你自己的面试方式”的想法非常好。你可以给面试者一些选项,看看他们想如何进行面试,如何与面试官互动。我认为这是个很棒的主意,因为正如我们所说,没有两个人是一样的;每个人都是独一无二的,我们希望这种多样性也能体现在面试过程中。
Carmen Andoh: 没错。
Ashley McNamara: 没错。
Carmen Andoh: 我也学到了很多。我不知道我们如何能够(天啊,我要说这个词了)将这些想法“操作化”/“生产化”…… [笑声] 我不知道我们如何能够真正实践这些想法,类似“选择你自己的冒险”的方式,或者重新考虑让面试者成为核心,而不是流程。
Johnny Boursiquot: 对。
Mat Ryer: 我喜欢你提到的面试指南。
Carmen Andoh: 对,面试指南。
Mat Ryer: 我觉得面试指南是个好主意,甚至可以成为一个开源项目,整个社区共同参与。我们可以做一个面试指南网站,.org域名之类的。这是个好主意。
Ashley McNamara: 是的,那会很酷。我猜这最终还是取决于那些大公司---
因为这主要发生在大公司---
是否愿意倾听少数群体的声音。我们经常说这个;我不是唯一一个提出“选择你自己的冒险”想法的人,我很确定。所以请倾听那些在外面努力让你们的流程变得更好的人。
Carmen Andoh: 没错。
Mat Ryer: 好吧,我觉得时间又打败我们了……它总是这样;时间总是向前走
Carmen Andoh: 当我们玩得开心时,时间总是过得飞快。
Johnny Boursiquot: 或者当我们面试时。 [笑声]
Carmen Andoh: 当我们玩得开心时,Go Time也过得飞快……这个双关怎么样?Cha-ching!
Johnny Boursiquot: Go Time飞快……
Carmen Andoh: 当我们玩得开心时,Go Time飞快。
Mat Ryer: 好吧!我觉得这就是今天的节目了。
Carmen Andoh: 我和你们所有人相处得非常愉快,我真的很喜欢这次的讨论,每次和你们交谈我都能学到很多。
Johnny Boursiquot: 好吧,在我们开始开玩笑之前,我得结束节目了,所以……给我两秒钟整理一下思绪。好了,开始吧……各位听众,这就是今天的节目。几位行业资深人士分享了他们对面试流程的看法。没有完美的流程,任何流程都可能更偏向于某些人的优势。如果你正在听这期节目,并且能够对你所在公司的招聘和面试过程产生影响,我们希望你能从今天的讨论中获得一些可以改善贵公司和候选人体验的有用信息。
与这个小组聊天非常愉快。我很高兴今天能够邀请到Carmen和Ashley,感谢你们的参与,也感谢各位听众花时间收听。
感谢大家收听Go Time。
相关文章:
招聘和面试
本篇内容是根据2019年4月份#82 Hiring and job interviews音频录制内容的整理与翻译 小组成员 Mat Ryer、Ashley McNamara、Johnny Boursiquot 和 Carmen Andoh 讨论了受聘、雇用和工作面试的过程。如果人是团队中最重要的部分,我们如何选择与谁一起工作࿱…...
Gin 框架入门(GO)-1
解决安装包失败问题(*) go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct 1 介绍 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,Gin 最擅长的就是 Api 接口的高并发。 2 Gin 环境搭建 1.下载并安装 gin go get -u github.…...
LeetCode:700. 二叉搜索树中的搜索
目录 题目描述: 代码: 题目描述: 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 示例 1: 输入:root [4,2,7,1,3…...
用邻接矩阵实现图的深度优先遍历
问题描述 给定一个无向图,用邻接矩阵作为图的存储结构,输出指定顶点出发的深度优先遍历序列。在深度优先遍历的过程中,如果同时出现多个待访问的顶点,则优先选择编号最小的一个进行访问。 输入描述 第一行输入三个正整数&#…...
vue2中实现token的无感刷新
后端配置 设置Token过期时间:在后端(如服务器或网关)配置access_token和refresh_token的过期时间。通常,access_token的过期时间较短,而refresh_token的过期时间较长。提供刷新Token接口:后端需要提供一个…...
无需Photoshop即可在线裁剪和调整图像大小的工具
Bitmind是一个灵活且易于使用的批量图像本地化处理器,经过抓包看,这个工具在浏览器本地运行,不会上传图片到服务器,所以安全性完全有保证。 它可以将图像调整到任何特定尺寸,并在必要时按比例裁剪。 这是一个在线工具…...
云安全之法律和合规
0x00 前言 本文主要内容是从法律,合同,电子举证,以及合规和审计这五个部分来记录一下相关的云安全内容 0x01 法律 受法律约束的影响因素 云服务所在的地区云用户所在的区域数据主体所在的区域 GDPR:通用数据保护法案…...
倒计时功能分享
今天想要分享的是一个面试题,也是一个我们在项目中常用的功能:倒计时。 首先我们在写倒计时的时候必须要考虑到是:准确性、性能。接下来我们一步一步实现这个完美地倒计时功能。 setInterval 先来简单实现一个倒计时的函数: func…...
【论文分享】使用多源数据识别建筑功能:以中国三大城市群为例
建筑功能对城市规划至关重要,而利用多源数据进行建筑功能分类有助于支持城市规划政策。本研究通过分析建筑特征和POI密度,识别了中国三个城市群的建筑功能,并使用XGBoost模型验证了其在大规模映射中的高准确性和有效性。研究强调了建筑环境对…...
华为手机启用ADB无线调试功能
打开开发者模式,勾选USB调试,和“仅充电”模式下允许ADB调试 确认 设置添加adb路径到PATH变量 使用adb查看安卓设置 切换为无线模式: 查看手机IP...
云原生之Kubernetes集群搭建
1、Kubernetets基础概念 传统的服务器架构演进,现在基于docker容器化应用可以完成快速部署,但是对于大型的应用,有可能出现成百上千个容器化应用,一个挂了需要人工管理是相当麻烦,因此急需一个大规模容器编排系统。 Kubernetes Kubernetes 是一个可移植、可扩展的开源平…...
STM32单片机CAN总线汽车线路通断检测
目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着汽车电子技术的不断发展,车辆通信接口在汽车电子控…...
大连理工大学概率上机作业免费下载
大连理工大学概率论与数理统计上机资源 本资源库收录了大连理工大学概率论与数理统计课程的上机作业范例代码,旨在通过实际操作加深学生对概率统计概念的理解,帮助学生更好地理解和掌握知识点。 作业内容概览 第一题:随机变量关系探索 数…...
Tomcat 如何管理 Session
Tomcat 如何管理 Session 我们知道,Tomcat 中每一个 Context 容器对应一个 Web 应用,而 Web 应用之间的 Session 应该是独立的,因此 Session 的管理肯定是 Context 级的,也就是一个 Context 一定关联多个 Session。 Tomcat 中主…...
stm32启动过程解析startup启动文件
1.STM32的启动过程模式 1.1 根据boot引脚决定三种启动模式 复位后,在 SYSCLK 的第四个上升沿锁存 BOOT 引脚的值。BOOT0 为专用引脚,而 BOOT1 则与 GPIO 引脚共用。一旦完成对 BOOT1 的采样,相应 GPIO 引脚即进入空闲状态,可用于…...
SystemVerilog学习——构造函数new
一、概述 在 SystemVerilog 中,new 是一个构造函数,用于创建类的实例(即对象)。它在面向对象编程(OOP)中起着重要作用,负责实例化一个对象并进行初始化。与传统编程语言(如 C 或 Jav…...
力扣题目总结
1.游戏玩法分析IV AC: select IFNULL(round(count(distinct(Result.player_id)) / count(distinct(Activity.player_id)), 2), 0) as fraction from (select Activity.player_id as player_idfrom (select player_id, DATE_ADD(MIN(event_date), INTERVAL 1 DAY) as second_da…...
Java API 进阶指南:从核心API到高级应用的全面提升
文章目录 Java API 进阶学习指南1. 深入理解核心API1.1 集合框架(Collections Framework)1.2 输入输出流(I/O Streams)1.3 并发编程(Concurrency)1.4 反射(Reflection)1.5 泛型&…...
esp32c3开发板通过micropython的ubluetooth库连蓝牙设备
ESP32-C3开发板是一款高性能、低功耗的微控制器,搭载了Espressif自家的RISC-V处理器。通过MicroPython,一种面向微控制器的精简版Python编程语言,开发者可以轻松地为ESP32-C3编写代码。MicroPython的ubluetooth库使得ESP32-C3能够通过蓝牙与各…...
leetcode hot100【LeetCode 35.搜索插入位置】java实现
LeetCode 35.搜索插入位置 题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用 O(log n) 的时间复杂度来实现。 示例 1: 输入: nums [1,3,5,6…...
我们要用平凡来诠释非凡
#孟晚舟香港中文大学演讲# #华为价值观念# #并非站在山顶才能被看见# #传递正确的价值观# #如果信仰有颜色,那一定是中国红# #送给自己的价值理念# 在信息大爆炸的时代,很多同学都希望尽可能的抓取更多的知识,尽可能的不要遗漏任何热点…...
synchronized和volatile区别
synchronized和volatile是Java并发编程中两种重要的同步机制,它们之间存在明显的区别。以下是对这两者的详细比较: 一、基本定义与作用 synchronized 是一个用于实现线程同步的关键字。可以用来锁住方法或代码块,从而确保在同一时刻只有一个…...
125.验证回文串-力扣(LeetCode)
题目: 解题思路: 首先进行移除非字母数字字符,并将大写字符转换为小写字符的操作。这个过程中,主要利用快慢指针的方式来进行移除操作,通过加32将大写字符转换为小写字符。完成后,将前一半的数据与后一半的…...
线程间通信:wait和notify
线程间通信:wait和notify 1、Object的wait和notify方法 Java中的Object类提供了两个重要的方法,用于线程间的通信和同步:wait()方法和notify()方法 wait()方法的定义 方法签名:public final void wait() throws InterruptedEx…...
风险识别和管理的工具
1.风险识别工具和根本原因识别在项目管理中非常重要,常用的工具包括 因果图根本原因识别RCA鱼骨图 因果图 因果图是一种图形工具,用于识别问题或风险的根本原因。它通过将问题或风险因素与可能的根本原因联系起来,帮助团队更深入地了解问…...
qt之QFTP对文件夹(含嵌套文件夹和文件)、文件删除下载功能
一、前言 主要功能如下: 1.实现文件夹的下载和删除,网上很多资料都是单独对某个路径的文件操作的,并不能对文件夹操作 2.实现目标机中含中文名称自动转码,有些系统编码方式不同,下载出来的文件会乱码 3.实现ftp功能…...
为何数据库推荐将IPv4地址存储为32位整数而非字符串?
目录 一、IPv4地址在数据库中的存储方式? 二、IPv4地址的存储方式比较 (一)字符串存储 vs 整数存储 (二)IPv4地址"192.168.1.8"说明 三、数据库推荐32位整数存储方式原理 四、存储方式对系统性能的影响…...
Mybatis框架之责任链模式 (Chain of Responsibility Pattern)
在 MyBatis 框架中,责任链模式 (Chain of Responsibility Pattern) 被广泛应用于多个功能模块中,例如 插件拦截器、SQL 执行流程中的拦截器链、动态 SQL 的解析与处理等。这种设计模式为 MyBatis 提供了高度的扩展性和灵活性,使其能够轻松应对…...
C++ Stack和Queue---单向守护与无尽等待:数据结构的诗意表达
公主请阅 容器适配器容器适配器的特点 栈和队列的模拟实现deque的介绍1. 内存开销较高2.随机访问性能略低于 vector3. 与指针或迭代器的兼容性r4. 不适合用于需要频繁中间插入和删除的场景5. 在特定平台上的实现不一致6. 缺乏shrink_to_fit支持总结 题目 priority_queue 优先级…...
深入理解Java包装类与泛型的应用
今天我将带领大家进入Java包装类和泛型应用的学习。 我的个人主页 我的Java-数据结构专栏 :Java-数据结构,希望能帮助到大家。 一、Java包装类基础 二、Java泛型基础 三、Java包装类与泛型的结合 四、Java泛型进阶 五、Java包装类与泛型实战 一、Ja…...
建筑案例网站/seo百度关键词排名
重新注册新的名称,真的想要重新开始了,走过了彷徨与不安。也要开始我的新的生活。也许人最应该经受的不是成功而是失败,这回真的很失败,不过相信我会从失败中真正的走出来的。寻找自己真正的位置。被ACM集训队踢了出来,…...
wordpress 小插件/推荐几个靠谱的网站
项目中用到了消息对话框,类似于Messagebox,然后我就自定义了个Messagebox,其中用到了label自适应,自动换行,先看效果图吧。 按照下面步骤来来 1 新建一个Form为BasicDialog,form里添加一个label,BasicDialog大小为(440,240) 2 label的autosize为true,MaximumSize为…...
网站开发视频教学/关键词搜索工具有哪些
Service workers 本质上充当Web应用程序与浏览器之间的代理服务器,也可以在网络可用时作为浏览器和网络间的代理. Service worker是一个注册在指定源和路径下的事件驱动worker。它采用JavaScript控制关联的页面或者网站,拦截并修改访问和资源请求&#x…...
中文网站做google广告好吗/店铺引流的30种方法
自从俺有了第一个苹果的产品,那个那个iphone之后,就琢磨着,自己也学着整个ISO的app给自己玩玩,这一想就是一年多呀。 然后呢,作为一个 点奈特 程序员,咋发现近些时日活越来越少呢,应该给自己多个…...
公司网站开发 flask/百度竞价推广计划
Iperf 是一个网络性能测试工具1、server 192.168.224.30client 192.168.224.20tar xf iperf-3.1.2.tar.gzcd iperf-3.1.2./configure --prefix/usr/local/iperfmake&&make install2、serveriperf -s -D-s 以server模式启动-D 后台守护进程运行3、clientiperf -c 192.16…...
国内做的较好的网站/网站优化公司上海
(图片来源于网络) 文 | 易怂怂 来源|智能相对论(aixdlun) “火车一响,黄金万两”,俗语诚不我欺也。 石家庄、郑州、鹰潭、株洲、哈尔滨等城市的崛起与腾飞,完美的诠释了这句话的意义。 例如…...