0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件工程师面试前需要准备什么

工程师人生 来源:网络整理 作者:工程师吴畏 2018-10-24 09:49 次阅读

本文作者 Connor Leech 是在湾区工作的一名 Web 开发人员,他在本文中面向那些正寻求找到一个软件工程师岗位的求职者,探讨了他们在面试环节可以采取的准备工作。虽然各个公司对于评估人才有自己不同的标准,但软件工程岗位面试大致可分为两类:特定领域知识面试和计算机科学基础知识面试。求职者了解公司评估方式之后,也就可以有的放矢,分别采取相应的准备策略。

作为一名软件工程师,能否通过技术面试对于自己的职业发展至关重要,但是求职者往往很难知道具体怎样去为面试做准备。因为不同的软件公司采用不同的方式对工程师进行评估,而在这种压力很大、同时又很重要的场合,毫无防备的前去面试似乎是最糟糕的一种状态。

幸运的一点是,这些技术面试通常可以分为两大类:特定领域知识面试和计算机科学基础知识面试。对于想走上软件工程师职业发展道路的求职者来说,了解这些评估人才的不同方法是很重要的一点,从而可以在他们最需要改进的地方采取措施进行进一步的提升。本篇文章介绍了每种面试类型可能出现的问题,以及你可以采取的准备措施。

特定领域知识面试

特定领域知识面试通常涉及到你最熟悉的技术领域的具体知识点。例如,如果你主要使用 Angular 1.x 进行前端开发,并且面试公司又有 Angular 前端,那他们就可能问你关于 Angular 控制器、指令和服务的相关内容。也就是说,你需要做好准备去建立、展示和讨论 Angular。

特定领域的面试重点关注的是你已经实际构建起来的东西,因此要想顺利通过这些面试,最好是你已经构建过相关技术的项目。你应该为自己的工作而感到自豪,不必感觉不好意思,而应该深入探讨具体项目的技术细节。项目最好是近阶段完成的,没人会愿意去听你去年写的那些代码,你自己也会对这种陈旧的项目感觉厌倦,面试效果也欠佳。

特定领域面试的另一个常见策略是看求职者能否构建一些非常棒的产品或者是排除实际存在的一些问题和故障。这通常是让求职者带回家去完成的一种测试,求职者一般有 24-48 个小时的时间来完成这些测试。例如,如果你是一名 Laravel 开发人员,并且你面试的公司恰好也使用 Laravel,那他们可能会要求你构建公司产品或者是公司定期创建的产品的微缩版本。对于这种带回家做的测试,做好投入大量工作的心理准备。准备好启动模板,不要抗拒去 Google 搜索答案,发送电子邮件寻求帮助和使用外部工具包这些做法。因为能否通过特定领域面试最重要的一个衡量标准是你能否构建出有效的产品。

计算机科学基础知识面试

计算机科学和基础编程面试明显不同于上文所探讨的特定领域面试。计算机科学和基础编程面试是为了评估你解决问题的能力,更多的是关注找到最佳解决方案的能力,而不是简单的去完成某些特定任务。因此,面试官通常也不会问关于你是谁、你过去的工作经历或者你构建过的项目方面的问题。对于计算机科学基础面试这一类型来说,面试官的工作就是评估你的原始编程能力,通常他们是通过数据结构和算法相关的问题来进行评估。

计算机科学基础面试的问题有章法可循。因为学习数据结构和算法需要大量的准备工作和长时间的学习,你需要了解你所选择的编程语言、数据结构和算法来解决问题。计算机科学基础知识面试通常可以用六种不同类型的算法来解决:

深度优先搜索算法/广度优先搜索算法

贪心算法

滑动窗口算法

分治算法

递归算法

动态规划算法

你需要研究每一种算法,可以在 Pramp 上与其他软件工程师一起练习面试和面试问题。应对面试是一门独立于软件工程师之外的技能,你可以通过练习和重复来提升自己在面试时的表现。

计算机科学基础知识面试通常遵循的那些问题结构对于求职者来说只有通过几个小时的练习和准备才能发现。即便这些知识中的一部分并不适用于日常的编程任务,但只要你坚持这样做,你就能抓住更多的面试机会,就能收到更多公司发来的 offer。如果你的目标是获得更多的工作机会,那你一定要看一下《Cracking The Coding Interview》这本书,并且查看这一免费的面试资源来进行相应的准备工作。

哪种方法适合你?

作为一名正在寻找工作的软件工程师来说,在构建产品、学习新工具和练习面试之间存在着一定程度的相互冲突。选择关注哪一点其实取决于你所寻找的工作类型,如果你想进入 Google、Twitch、亚马逊、Uber 或 Square 等大型知名科技公司工作,那你基础知识一定要过关。在这样的情况下,你是否构建过最好、最复杂的产品其实并不重要,如果你无法通过计算机科学基础知识面试,那这些大型科技公司是绝对不会雇用你的。

相比较而言,小型初创企业通常是在与时间赛跑,他们会争取快速的构建出产品、推出产品并且推向市场。因此,这些公司通常会实行特定领域面试方式,因为他们希望了解捏可以构建什么样的产品,你最拿手的技术又是什么。

如何了解公司面试类型

在进行公司面试时,与你对接的招聘人员或者公司联系人就是你最好的朋友。你可以直接向他们询问关于公司的招聘流程以及他们用于评估候选人的标准等方面的问题。对于求职者来说,了解公司在招岗位的信息是非常重要的一点,因此他们需要主动提出这方面的问题并且仔细研究招聘职位描述信息。软件工程岗位招聘通常有好几个环节,可能包括电话面试、共享桌面远程面试和现场面试环节。

如果面试环节包括共享桌面远程面试这一环节,那最有可能考察的是求职者的计算机科学基础知识。他们会提供给求职者一个需要解决的问题,面试官会在这个过程中观察求职者的操作,求职者也可以解释自己的想法。

带回家做的项目通常考察的是特定领域的具体知识,这在一些机构和初创企业的招聘中比较常见,求职者需要在 24-48 小时内有所成就,之后再对你的代码进行展示。

普通的电话面试通常了解的是求职者的态度,进行相应的沟通并了解一些背景信息、招聘人员很难通过这已通电话获得有关你能力方面的信息。

现场面试可以涵盖任何问题,但通常是整个面试过程的最后一个环节。所以到这一环节,你应该是对你面前的这个机遇以及求职公司所用的评估方式有了一个清晰的认识。

想了解各个公司使用的是哪种类型的面试,你可以通过浏览 Glassdoor、Angel.co 上的评论或者是通过 Linkedin 联系公司当前员工的方式来获知。

小结

求职者可以通过与求职公司的招聘人员和联系人员交谈,来了解大致的面试过程。如果你不熟悉数据结构和算法,可以通过 Pramp 进行练习。做好心理准备,你可能需要细数你过去的工作经历和你已经构建而成的软件。要想在软件工程领域找到一份新工作,构建过令人惊叹的产品与了解计算机课科学基础知识这两方面同等重要。

“你越是不自信,就越是需要认真地采取行动。” – Tara Ploughman

记住这一点,并不只是公司在面试你,同时你也在面试这个公司。面试过程中你需要去处理的问题和工作往往与你被聘用之后,在这个岗位上需要去完成的工作类似。所以,你需要思考这样几个问题:他们为你安排的挑战是你所喜欢的工作类型吗?这个公司的人好吗?他们尊重你的时间和能力吗?如果这些问题的答案都是否定的,那你可以考虑寻找别的工作机会了。了解自己的长处和短处,并且享受这个找工作的过程。面试是一个很好的认识人的方式,也可是一种学习到新技术并且了解自己需求的途径。

失败和被拒本来就是生活的一部分,所以在任何时候,都要保持积极的心态,努力争取那些你所能控制的部分,对于超出自己控制的部分不要去过多的理会。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件工程师
    +关注

    关注

    8

    文章

    217

    浏览量

    20928
收藏 人收藏

    评论

    相关推荐

    Cognition发布首款AI软件工程师Devin

    据报道,Cognition公司今日公布了其首款人工智能软件工程师——Devin,掀起了打造软件模式变革的序幕。该产品在SWE-bench代码测验中展现出卓越表现,甚至超过了部分顶级人类工程师的水准。
    的头像 发表于 03-13 10:57 383次阅读

    企业老工程师和高校老师有啥区别

    电子工程师硬件
    电子发烧友网官方
    发布于 :2024年02月28日 17:50:00

    优秀电源工程师需要哪些必备技能?

    提升电源开发效率。电源新手在学习初期,如果实验设备不足,可以利用仿真软件进行电路模型搭建,从而快速、直观地了解电源的工作原理。2、器件参数选型参数选型时,需要工程师进行电路关键参数的计算,计算方法可以
    发表于 01-29 11:29

    嵌入式软件工程师常用的

    最近我换工作了,看见不同嵌入式软件工程师用的平台都不一样,所以我整理了一下。PlatformIO:多平台支持:PlatformIO支持多种嵌入式平台,包括Arduino、ESP8266、ESP32
    的头像 发表于 12-24 08:00 237次阅读
    嵌入式<b class='flag-5'>软件工程师</b>常用的

    硬件工程师面试时最常被问到的8个问题,看看你能答对几个

    晶振硬件工程师
    扬兴科技
    发布于 :2023年12月08日 18:21:15

    嵌入式硬件和软件哪个好?

    ,如复位电路、常用滤波器电路、功放电路、高速信号传输线的匹配电路等;故障定位、解决问题的能力;设计文档的组织编写技能! 那对于嵌入式软件工程师来说: 嵌入式软件工程师领域较新,他的发展也是很快的,像
    发表于 12-05 15:17

    硬件工程师需要了解主机厂的标准吗?

    公司最近购买了GMW14082-2010通用汽车的标准,要求硬件工程师进行阅读。我有点不清楚这个标准的作用对于我们来说有什么用,里面的内容需要全部都掌握吗?还是只要知道其中一些关键点就行?
    发表于 11-23 15:03

    硬件工程师经典面试题详解

    硬件工程师经典面试题详解
    的头像 发表于 11-20 15:08 778次阅读
    硬件<b class='flag-5'>工程师</b>经典<b class='flag-5'>面试</b>题详解

    FPGA工程师需要具备哪些技能?

    工程师需要考虑时序约束、时钟网络设计、数据路径优化等因素。较常用的布局布线工具有ALLEGRO PCB和Orcad等软件。在使用EDA工具之前,FPGA工程师
    发表于 11-09 11:03

    嵌入式软件好还是硬件好?

    电路、功放电路、高速信号传输线的匹配电路等;故障定位、解决问题的能力;设计文档的组织编写技能! 那对于嵌入式软件工程师来说: 嵌入式软件工程师领域较新,他的发展也是很快的,像这类技术都是看经验的,经验
    发表于 09-18 15:31

    为什么嵌入式软件工程师需要掌握 Linux?

    ,都默认支持 Linux 操作系统。 可以说, 打开 Linux 这扇门,你才是合格的软件工程师 。如果不能
    的头像 发表于 07-21 18:15 1345次阅读
    为什么嵌入式<b class='flag-5'>软件工程师</b><b class='flag-5'>需要</b>掌握 Linux?

    热门推荐:硬件工程师必备工具

    硬件PCB产品顺利投产。 华秋DFM可制造性检查软件,在硬件开发流程中起到了非常关键的作用,对于广大硬件工程师来说具有很大的便利性和实用性。 华秋DFM软件下载地址(复制到电脑浏览器打开
    发表于 06-21 10:15