所以你想成为一个软件工程师?命名为由美国新闻和世界报告2020年的第一名工作,软件开发商的平均年薪为103,620美元,失业率为1.6%。显然,这是一项高需求的工作。

然而,尽可能可爱,发现一份工作作为软件工程师并不总是容易的。完美合格的软件工程师有时会失败面试部分,主要是因为他们没有准备它。技术面试可能具有挑战性,并将测试甚至经验丰富的开发人员的限制。

但是你可以规划,为您的采访做好准备的最佳方式是了解时间到来的期望。软件工程师面试问题可能因公司而异。尽管如此,我们将看看采访者在软件工程面试中提出的四种主要问题。

IT和软件的顶级课程

[新]终极AWS认证云从业者 - 2021
Stephane Maarek | AWS认证解决方案架构师和开发者助理
4.7 (35,009)
畅销书
总:CompTIA A+认证(220-1002)。
研讨会总计•750,000多名招生,Mike Meyers
4.7 (10,463)
Comptia Security +(SY0-501&SY0-601)完成课程和考试
Jason Dion•全球500,000多名招生,Dion训练解决方案•ITIL和Prince2的Ato
4.6 (18,846)
畅销书
总计:Comptia A +认证(220-1001)。
研讨会总计•750,000多名招生,Mike Meyers
4.7 (39,786)
畅销书
CompTIA Network+ (N10-007)完整课程和实践考试
Jason Dion•全球500,000多名招生,Dion训练解决方案•ITIL和Prince2的Ato
4.7 (11844)
收视率最高
Ultimate AWS认证Sysops管理员关联2021
Stephane Maarek | AWS认证解决方案架构师和开发者助理
4.7 (7559)
畅销书

更多信息技术和软件课程

一般的问题

无论您申请的工作如何,这些都是所有面试的问题。面试官问的原因是公司可以更好地了解你是谁。其中许多问题将是您的简历和您以前工作的经验。诚实在回答这些问题时总是很重要,因为你和面试官正在寻找一个良好的合适,诚实将帮助双方做出最好的决定。

以下是一些普通问题面试官可能会问:

你为什么离职呢?

这是一个非常常见的面试问题,因为它同时也是一个“地雷”。要避免的答案是说你以前工作的坏话,提到与同事的分歧,或者让人觉得你只关心钱。面试官通常寻找的答案是那些强调推进你的职业发展或寻求新挑战的答案。

我们为什么要雇佣你?

面试官要求你卖掉自己。这是对公司的一点研究将有所帮助的地方。你想成为自己,但你也想看看自己最适合公司的目标。

查看作业描述。他们列出了哪些技能,适合您可以做的事情?你有没有“很高兴有”技能?您是否有任何过去的工作或项目,显示您有他们正在寻找的技能?你对他们的任何事情都有热情吗?提到所有这一切。显示面试官,您将在那里兴奋,并拥有完成工作所需的技能。

3)你的职业目标是什么?

通常,开发人员要么选择一条技术道路,最终成为某种架构师,要么选择一条管理道路,最终成为经理、主管,甚至是CTO。在强调你的领导能力或技术倾向的同时,提到那些你感兴趣的、对公司有利的事情。如果他们正在开发一个机器学习团队,提到你对此的热情和你参加的Kaggle比赛。

技术问题

由于您申请作为软件工程师,您的大部分问题将是技术性的。公司希望工程师聪明,并知道如何在它归结时进行工作。为他们雇用最佳候选人,他们需要提出具有挑战性的问题。有时候,您将被问到不完全适合您的工作描述的问题,因此刷新其他编程语言和陌生的概念是明智的。

如果您需要扩展您的软件工程知识基础,为您的面试做准备,我们有广泛的课程。例如,如果你正在申请成为一名JavaScript工程师,你很可能会被问到关于jQuery和网页浏览器如何工作的问题。如果你想成为一名前端工程师,你可以期待他们会问一些问题来说明你的知识反应或者棱角概念。一定要刷新他们希望您在您申请的工作中了解的一切。

同样需要注意的是,所问的技术问题将涵盖各种主题,包括算法、数据结构、网络、系统设计、面向对象编程和api。很多时候,所问的问题没有正确或错误的答案,这意味着你完全可以解释为什么你这样回答他们。通过这类问题,面试官试图了解你如何解释复杂的技术概念。

以下是您在接下来的求职面试时可能看到的一些基本技术问题的列表:

4)您过去使用的编程语言是什么?

面试官正试图看出您是否熟练熟练公司使用的语言。如果一到三个是您的最爱,请提及为什么。

示例答案:

“我精通PHP,Python和JavaScript。Python是我最喜欢的,因为语法很简单,我喜欢后端工作。“

5)您熟悉哪种类型的SDLC模型?

面试官想知道你是否适合他们的工作流程。

示例答案:

我熟悉瀑布式、敏捷式、v型、迭代式和大爆炸式软件开发生命周期模型。bob外围官网

存根和嘲笑的区别是什么?

示例答案:

“存根实现了一个最小的接口,它返回硬编码数据,而模拟是用于验证预期结果的输出的工具。单位测试功能都是。“

7)调试的意义是什么?

示例答案:

“调试是软件工程师追踪并纠正代码错误的过程。”

8)软件项目经理的角色是什么?

示例答案:

软件项目经理为软件开发人员、设计人员、涉众和其他参与项目的人计划、监控和沟通软件项目的进展。

9)软件范围是什么意思?

示例答案:

范围定义了软件项目可以交付什么,不能交付什么。范围概述了完成项目所需的活动。”

10)什么是软件配置管理?

示例答案:

“软件配置管理是控制软件中发生的更改的过程。”

11)什么改变控制?

示例答案:

“更改控制是用于跟踪软件产品中更改的系统,并确保所有更改符合企业标准。”

12)您如何向非技术利益相关者解释API?

示例答案:

API是一个应用程序如何被另一个应用程序访问的规范。

13)在审查同伴的代码时,您会注意什么?

示例答案:

“我会确保代码通过自动化测试,手动测试和棉绒测试。我会检查这些工具未涵盖的约定的代码。我会确保函数和变量名称有意义。我会寻找重复的代码。我也会寻找内存泄漏。“

14)代码质量的重要工具是什么?

这个问题可能需要事先对公司进行一点研究,因为开发人员可以自以为是有关这个主题。

示例答案:

“我认为单元测试、集成测试、手工测试和同行代码评审有助于提高软件质量。”

15)线程和过程之间有什么区别?

示例答案:

“一个过程是计算机程序的实例。单个程序可以有一个或多个线程。“

16)强大和弱键入的差异是什么?

示例答案:

“使用强键入的软件在编译时检查变量。在运行时键入弱键入的软件。弱键入的软件往往有更多的错误。“

17)堆栈和队列之间有什么区别?

示例答案:

“队列使用第一个,首先出局方法。堆栈使用最后一个out方法。“

18)描述面向接口,面向对象和面向方面的编程之间的差异。

示例答案:

“面向界面的编程是基于合同的。面向对象的编程使用封装来捆绑数据与该数据运行的方法。面向方面的编程允许分离不符合标准面向对象模型的横切问题。“

解决问题

解决问题的问题可能非常棘手。面试官想知道您是否可以采取复杂的现实生活问题并设计解决问题的解决方案。很多次,这些问题与您通常在您的工作中均无任何关系。因此,如果您不完美地回答这些问题,您不应该太失望。

其中一些问题可以像“谷歌面试”一样,在那个面试官会给你一个明确的问题,你必须找到一个工作解决方案。

19)你用什么方法来查找字典中的单词?

这是一个使用物理进程来检查如何处理许多数据的问题。

示例答案:

“我假设字典是按字母顺序排列的,所以我会从中间开始打开,然后确定我的单词是在那一页的前面还是后面。然后我会把我知道单词所在的部分再一分为二,重复这个过程,直到找到单词。”

20)你如何存储100万个电话号码?

这是测试您对排序和搜索知识的另一个问题。

示例答案:

“用一个单词查找树数据结构存储数据。将电话号码所有者的名称存储在叶节点中。“

21)一名男子把他的车推向了一家酒店,失去了他的财富。发生了什么?

这个问题是谜语。

示例答案:

“他降落在木板路上。”

22)你可以在校车中适应多少高尔夫球?

这不是必要时确切答案的问题的类型。这是对您的思维过程以及如何设计解决方案的测试。所以展示你的工作,不要只是用猜测来回答,尽管它将是一个受过教育的猜测。

示例答案:

“首先,让我们假设公共汽车是20英尺x 8英尺x 6英尺,给我们960平方英尺或1.6亿立方英寸。高尔夫球半径约为.85英寸,所以高尔夫球填充2.5立方英寸。因此,如果公共汽车是空的,球没有定理,它将占有大约66万升高尔夫球。为了考虑高尔夫球的圆形圆形和座椅和公共汽车的其他设备,大约50,000个高尔夫球。“

23)为什么人孔覆盖圆形?

这是空间逻辑的测试。

示例答案:

“所以他们不会落在沙坑里。”

24) - 27)编码测试问题

很多时候你将作为面试的一部分给予编码测试。您可以将这种类型的测试视为先进的解决问题问题。有时,公司将在面试前几天为您分配编码测试,因此您和面试官将获得可用于审查的结果。其他时候,他们会给你考试在一次面试中带回家,然后回来进行随访。

面试官会提出一个你必须通过写代码来解决的问题。通常,会有一些限制来缩小您将要编写的代码的范围。一些常见的编码测试问题是:

1.设计一场纸牌游戏战争的软件版本。

2.设计URL缩短程序。

3.设计博客计划。

4.设计Twitter克隆。

虽然本文无法向您展示如何设计和代码软件项目,但我们可以为您提供一些解决房屋编码测试的提示。

仔细阅读说明。

有时对编码测试的说明没有多大的指示,但重要的是要仔细阅读它们。如果你误解了指示,你可能会浪费很多时间解决了错误的问题。一旦您对您必须构建的内容有所了解,您就可以开始构建解决方案。

使用版本控制

从您编写第一行代码的那一刻起使用版本控制。经常提交并使您的提交消息短而有意义。您的面试官可能会查看您的Git Commit日志以了解您的工作方式。

从基础开始。

决定您的代码测试的最小可行产品(MVP)是什么,并首先编写该代码。一旦您有工作,然后覆盖边缘案例并添加额外的功能。不要咬掉比开始咀嚼的更多。

写测试并使用TDD

许多公司通过测试驱动的发展发誓,有些人不在乎,但在编码测试中使用TDD是bob外围官网很好的,以显示您了解概念。添加并提交故障测试。然后写出将进行测试通过的代码。

写清洁代码

面试官可以了解如何从您编写代码的方式与他人合作。给出函数和变量有用的名称。使用Linting工具确保您的代码看起来很好,并且易于阅读。不要留下任何不必要的评论或记录完成的代码。

使用适用的设计模式

如果您知道某些设计模式,它们适合您正在创建的项目,请使用它们。但是不要在编码测试中首次使用设计模式。

添加自述文件

编码测试指令可能含糊不清,但运行代码的说明不应该是。将README文件添加到您的项目中,解释您使用的方法和使用该方法的方法。描述任何第三方库以及为什么选择它们。当然,解释如何运行项目。

在提交之前重构你的代码

当您完成了编码并且您的应用程序工作时,不要急于过早地提交您的代码。仔细检查一遍,看看你漏掉了什么。删除对您尝试过但从未使用过的库的引用。确保所有变量和函数名都有意义。有没有漏掉的边缘情况?你有时间为额外学分添加额外功能吗?

结论

为软件工程面试做好准备,但重要的是要记住,您无法知道您将事先得到的问题。每个技术面试都会略微或略微不同。但希望你能觉得更加舒适了解需要什么类型的问题以及面试官可能会寻找的问题。

你不想只是说面试官想要听到什么。面试应该允许您和雇主决定工作是否合适。你应该刷新你的知识并做一些测试准备,但最终是你自己。

软件工程的顶级课程

UML和面向对象设计基础
Karoly Nyisztor•专业软件架构师
4.5 (2,776)
畅销书
OAuth 2.0的螺母和螺栓
亚伦Parecki
4.7 (566)
畅销书
如何成为高级开发人员 - 超越编码技巧
oren abbou.
4.5 (95)
畅销书
学习Vert.x - Java的反应性微服务
丹尼尔普里尼斯
4.3 (65)
用木质仪器自动化软件测试
Kaniel Outis.
4.5 (591)
使用Java学习Micronaut——云原生微服务
丹尼尔普里尼斯
4.5 (143)
绝对初学者的Python - 2021 - (2.Part)
Mehmet TEK, Emparazon学院,Mustafa Eren
4.5 (86)

更多软件工程课程

软件工程学生也会学习

赋予你的团队。引领行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求演示