首页 > 其他分享 >如何做好技术面试?

如何做好技术面试?

时间:2023-08-23 16:36:17浏览次数:30  
标签:面试官 如何 技术 能力 面试 做好 候选人

在公司承担技术面试的职责,刚开始的时候可能会感到困惑,不知道如何去面试别人,这里总结了一些技术面试的经验,以及一些在面试过程中的一些思考

技术面试应该要问些什么?

技术面试通常是对于候选人的技术能力的评估和相关知识进行评估的面试环节,在技术面试中,面试官通常要评估候选人在以下方面的职责:

  1. 技术基础知识和基础:面试官应该要问技术相关职位相关领域的技术知识问题,以验证其对基本概念、原理和技术的了解程度

  2. 编程能力:面试官要一定程度上考察候选人的编码能力,包括熟练掌握相应的编程语言、数据结构和算法相应的知识,以及解决问题和实现功能的能力

  3. 技术经验:面试官应该要结合候选人简历,沟通项目和工作中涉及的技术栈、开发流程、工具和框架等方面的知识,以评估其实际应用能力和项目经验

  4. 系统设计能力:面试官应该要考察候选人在系统设计和架构方面的能力,包括对系统组件、模块化、拓展性、可靠性和安全性等方面的理解和实践

  5. 问题解决和沟通能力:面试官有时也应该根据候选人的沟通情况,提出一些实际问题或场景,评估候选人解决问题的能力、思维方式和沟通表达能力

  6. 自我学习和技术热情:面试官应该要和候选人沟通学习的知识或者计划,以评估其对技术发展的关注程度,对技术的专注和热情以及对个人成长的追求

  7. 职业发展规则:面试官应该根据情况和候选人沟通职业发展规划以及公司目前和未来能够提供的发展机会

除以上职责,面试中还应该根据涉及到的具体岗位相关的技能和要求,评估其是否能够胜任所应聘的技术角色。

面试如何做

摆正心态

上面的总结只是八股文似的东西,想要做好技术面试,还是要从实践着手,我认为首要也是最重要的就是摆正心态

  • 保持谦逊开放的心态,承认自己知识的有限性,并尊重他人对相同领域的不同经验和理解

  • 学会倾听理解他人的观点和困惑,增强共情能力,并从中汲取更广泛的知识和视野

为什么首先要提摆正心态,从我经历过的一些面试官以及和其他一些人的沟通,很多人在面试的时候都会遇到一些“傲慢”的面试官,这里提的“傲慢”不止是态度上的傲慢,也包括对知识上的傲慢,这些面试官很难给人以良好的面试体验,究其心态原因可能有以下几个

  • 态度傲慢:面试官和候选人之间,潜在着身份的不对等,有的人可能会觉得你需要经过我的考察才能进入公司,由于握有这种权限滋生了态度上的傲慢
  • 知识偏见:往往我们掌握了某个知识或技能后,会产生一种错觉,认为它很简单和容易,难以意识到其他人可能对此感到困难或不熟悉,而且对别人叙述知识掌握过程种所遇到的困难,难以感同身受
  • 认知偏差:往往倾向于寻找和接受与自身观点和知识相符的信息,而忽视与之相抵触的信息。这也很容易造成很难接受与自己认知不符的观点

面试是候选人和公司之间的双向选择,作为面试官或者作为技术面试官,和候选人之间的沟通应该是平等的,无论何种形式的“傲慢”都会引起候选人的不满,也很容易错过优秀的候选人。

目标清晰

技术面试的目的是考察候选人是否能够胜任所招聘的岗位,这个目标一定要明确。从这个目标出发,在面试的过程中要引导出候选人所擅长能力,让候选人在这个领域得到充分的表达,而不是追着候选人不熟悉的领域穷追猛打,最后得出候选人能力不行的结论。

技术面试的首要的是看候选人能力是否和所应聘的岗位能力是否相符,在没有一票否决或者难以接受的缺陷存在的前提下,还是要引导候选人在擅长的领域得到充分的表达,然后评估能力和岗位的适配度。

面试的方法千千万,目标要清晰,一定要引导出候选人的综合能力表达,才能挑选出合适的候选人。

面试实操

如何衡量候选人的技术水平或者说如何询问能最大程度的让候选人表达出自己的技术水平比较考验面试官的能力。

面试套路

如何去面试,每个人都有自己的方法,但是我认为需要注意的是面试时可以使用八股文作为问题,但是不要以八股文的答案去衡量候选人的技术水平。

下面介绍下我在技术面试时的一贯套路:基础能力 -> 场景化的问题 -> 闲聊沟通

自我介绍完成之后,结合简历和候选人的工作经历先以基础知识开始问,逐步的拓展到有具体场景的应用,举个例子,先问多线程应该怎么实现,线程池的核心参数,然后再问具体场景比如代码中有个接口的调用,如何使用多线程优化响应时间,类似场景下线程池的参数应该如何设置,应该考量哪些方面,异步任务失败后如何补偿,答案并不是太重要,是要看候选人的回答思路。

几个技术问题沟通过后,如果觉得候选人技术水平还不错,可以继续往下聊,进入闲聊沟通阶段,可以问问最近在学习哪方面的知识或者在工作中有哪些让自己比较骄傲有成就感的工作分享一下,主要是考量是否在持续学习或者是否有总结复盘的能力,也能进一步的考察以前的工作内容以及负责的工作是否属实。

选择合适的场景

前文也说了引导出候选人比较擅长的能力,让候选人在擅长的领域得到充分的表达是评估候选人能力非常重要的一步,那么如何引导出候选人擅长的能力呢?以下是我的一些总结

首先根据候选人简历中的工作经历,初步分析一下以往工作主要是做2B业务多些还是2C业务多些。

如果是2B业务,场景化的问题应该主要向代码结构、系统模块化、系统拓展性方面延申,比如结合具体的业务场景介绍一下复杂业务场景下的参数校验应该如何做?复杂业务场景下如何划分模块?模块之间如何解耦?设计模式的应用?

候选人如果2C业务多些,场景化的问题应该向分布式、高并发、缓存方向延申,比如缓存一致性的实现,分布式锁的实现以及应用,如何减少接口的响应时间等

当然相关知识也可以穿插着问,在回答没有明显错误的前提下,答案并不重要,实现方案有很多种,重要的是回答的思路。

如果候选人回答的并不是很完善或者还想进一步的对问题进行一些提升,可以根据问题适当的做一些引导,比如如何减少接口的响应时间,大多数都会回答多线程解决,在问完多线程如何实现相关的问题后,可以再问下如果想要发挥整个集群的性能用以提升接口的响应,应该如何做?接着再看候选人的回答。

如何评估能力

面试最终的目的是对候选人能力进行评估,用以确定是否和招聘岗位相符,那么如何根据候选人的面试表现去评估候选人的技术能力呢?首先要有标准,下面是我总结的一些标准,比较笼统,可以作为参考

  • 初级应该能够掌握基础知识以及常见中间件的使用,能够根据业务要求完成系统设计以及实现,对业务分析和系统设计有一定的理解和经验
  • 中级应该熟悉常见中间件的原理,对问题排查有自己的思路,对特定问题域的业务分析和系统设计要有较丰富的经验和自己的理解
  • 高级和资深应该能够对常见的业务场景能够给出自己的解决方案,并保证整个系统的稳定性拓展性,能够协调完成整个系统的统筹工作

有了标准之后就是根据候选人面试表现评估技术水平,按照我的标准其实相对简单,会用初级,会用并知道为什么用中级,用的好高级

举个例子,比如面试的问题:用户个人信息出生日期、身份证号等现在数据库中都是明文存储,由于业务要求现在要求加密后存储,应该如何实现?查询的接口比较多,如果不想每个接口都改动,应该如何实现?

如果候选人能够给出切换方案,比如持久层如何实现,查询的时候如何实现,并且方案具备一定的可行性,那么差不多就是中级水平,如果候选人能够在给出方案的时候,能够结合系统设计给出回滚方案,如果系统出现问题但是数据库部分数据已被加密情况下如何回滚,如何保证业务的正常运行,如果能给出综合的解决方案那么差不多就是高级水平

还是那句话,答案并不重要,重要的是回答问题过程中的思路。比如上面的这个问题,就能够看出设计技术方案的时候只是根据业务要求完成系统设计即可还是统筹全局的思维给出解决方案。

合适的选择

  1. 在面试过程中,候选人的气质和交流方式对面试官的印象确实起着重要作用,这个问题比较玄学,可能一眼就觉得这是我找的人,可能一眼就决定要尽快结束面试,每个人都喜欢和自己气质相符的人一起工作,但是这样可能会对团队建设不利,尽管候选人的气质与面试官不太相符,但他们可能为团队带来新的思维方式、观点和经验。在这种情况下,除非是候选人引起了特别大的反感,在技术没有太大问题前提下,我个人倾向于将候选人推到下轮面试。
  2. 在面试时经常会遇到感觉能力比自己强的候选人,这些候选人经过交流会感觉自己探不到人家的底,这种果断推到下一轮面试,让后续面试官继续评估
  3. 面试时经常会遇到和岗位匹配度比较差的候选人,个人感觉应该果断终止面试,不要浪费双方的时间
  4. 心胸问题,是否将特别优秀的候选人推荐到下一轮面试,是考验面试官的一道难关

标签:面试官,如何,技术,能力,面试,做好,候选人
From: https://www.cnblogs.com/wrxiang/p/17651998.html

相关文章

  • 软件测试|如何使用ChatGPT生成自动化测试脚本
    前言自动化测试在软件开发中起着至关重要的作用,它可以帮助开发团队在快速迭代的环境中保证代码的质量和稳定性。然而,编写测试脚本可能是一个繁琐且耗时的任务。在这方面,借助人工智能技术如ChatGPT,可以显著简化测试脚本的生成过程。本文将介绍如何使用ChatGPT来生成自动化测试脚本,从......
  • 如何使用图形数据库构建实时推荐引擎
    推荐:使用NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景“这是给你的”,“为你推荐的”或“你可能也喜欢”,是大多数数字业务中必不可少的短语,特别是在电子商务或流媒体平台中。尽管它们看起来像一个简单的概念,但它们暗示了企业与客户互动和联系方式的新时代:推荐时代。老实说......
  • 如何复制word的图文到CKEditor中自动上传
    ​ 在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper。通过知乎提供的思路找到粘贴的原理,通过TheViper找到粘贴图片的方法。其原理为一下步骤:监听粘贴事件;【用于插入图片】获取光标位置;【......
  • 如何在Linux中使用SSH动态端口转发代理
    本文将介绍如何在Linux中使用SSH动态端口转发代理,让你轻松畅享网络自由,保障个人隐私和数据安全。SSH(SecureShell)是一种加密的远程登录协议,广泛用于提供安全的远程访问和数据传输。而动态端口转发代理,则是利用SSH的强大功能,将本地机器的网络流量通过SSH连接转发到远程服务器,实现访......
  • 如何进行PMP英文报名?
    【什么是PMP?】1、PMP®是ProjectManagementProfessional的简称,是美国PMI协会在全球推出的「项目管理专业人士资格认证」;2、PMI是全球最大、最具权威的项目管理专业认证机构。3、PMP®是被世界公认为全球项目管理标准体系;PMP是具备国际水准的项目管理专业素质、实战技能、综合型的......
  • 如何在k8s中部署nfs-client-provisioner实现nfs共享存储的动态PV创建?
    0、背景说明 正常的情况,如果使用nfs的网络共享存储,需要手动的创建pv,然后创建pvc和pv进行绑定。 最后在应用程序的pod中来挂载使用这个pvc,达到挂载外部共享存储的目的。 那么,要实现动态的PV的创建,该怎么做呢? 在今天的内容里面,介绍一个nfs-client-provisoner工具,通过它......
  • Python面试重点(基础篇)
    Python面试重点(基础篇)注意:只有必答题部分计算分值,补充题不计算分值。第一部分必答题(每题2分)简述列举了解的编程语言及语言间的区别?python简单,python开发效率快,python代码简介,python跨平台,python学习成本比较低列举Python2和Python3的区别?python2:print、ascii、类:金......
  • 如何复制word的图文到FCKEditor中自动上传
    ​ 如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>......
  • python面试题01
    基础题写一个带参数的闭包fromfunctoolsimportwrapsdefouter(n):@wraps(n)defwrapper(func):definner(*args,**kwargs):print("inner")print(n)returnfunc(*args,**kwargs)returninner......
  • Lnton羚通视频算法算力云平台【PyTorch】教程:学习基础知识如何保存和加载模型
    保存和加载模型是指将训练好的神经网络模型保存到文件中,以便在需要时重新加载该模型进行预测、推断或继续训练。保存模型的过程是将模型的参数和其他相关信息(如优化器状态等)保存到文件中。通过保存模型,我们可以在不重新训练的情况下保留模型的状态,方便后续使用。加载模型的过程是从......