📜  ThoughtWorks 面试经历 | (在校园)(1)

📅  最后修改于: 2023-12-03 15:35:19.733000             🧑  作者: Mango

ThoughtWorks 面试经历 | (在校园)

最近在学校的招聘活动中,参加了 ThoughtWorks 的面试。下面分享一下我的面试经历。

一面

首先是一面面试,主要是询问我的个人信息、项目经历、以及技术栈的掌握情况。之后,又让我对一些技术问题进行了简单的回答。

问:什么是 RESTful 接口?他们有什么特点和优点?

答:RESTful 接口是一种基于 HTTP 协议的 Web Service。它具有以下特点和优点:

  • 可读性高,易于理解和编写
  • 可扩展性强
  • 与 HTTP 协议无缝集成,无需额外定义简单易于开发

问:你是否使用过 GitHub?有多久了?

答:我已经使用了 GitHub 两年多了,主要用于个人项目管理、学习资料的整理和协作开发。

问:什么是单元测试?你有没有进行过单元测试?

答:单元测试是针对软件中最小的可测试单元的一种测试方法,可以对代码进行快速、简便的测试。我有过使用 JUnit 进行单元测试的经历,对于重要的逻辑,我一定会进行覆盖测试。

二面

在一面结束之后,我顺利地过了一面,进入了接下来的二面。这一轮主要是编程题目和项目经历的具体问题。

题目如下:

问题描述:给定两个字符串 a 和 b,它们的长度分别为 n 和 m。其中一个字符串中间有 k 个空格,将它们拼接在一起得到一个新的字符串,并求出这个字符串的最长不重复子串的长度。

例子:a = "abcde", b = "vf kghj", 则新的字符串为 "abcdevf kghj",最长不重复子串为 "devf kghj",长度为 8。

算法实现:先将两个字符串拼接在一起,得到新的字符串。然后利用哈希表记录每个字符出现的位置,维护一个滑动窗口进行遍历和更新,并记录最长的不重复子串长度。

项目经历问题:

问:你所开发过的最难的项目是什么?

答:我参加过一个在线求职招聘网站的项目,这个项目涉及到了很多用户信息的管理,还有庞大的工作岗位信息的维护。而且,由于涉及到大量的请求和定时任务,所以需要进行一些性能上的优化,确保网站的稳定运行,这是我一直觉得比较有挑战性的项目。

三面

在经过了二面之后,我接到了面试官的电话邀请,进入了最后一轮的面试。这一次主要是文化匹配和技术深度的问题。

问:你对敏捷开发的理解是什么?

答:我认为敏捷开发是一种迭代式开发方法,主张“人性化”、“简洁化”的开发态度,强调快速响应用户需求、高效协作和有效沟通。通过团队内部不断整合并融入用户使用反馈,来不断优化产品,改进程序。敏捷开发不仅仅是一种开发方式,更是一种开放的沟通方式和文化。

问:你觉得自己最大的技术优势是什么?

答:我认为我最大的技术优势是能够结合业务需求进行有效的技术实现。我会根据实际需要,在技术实现过程中权衡各种技术解决方案的利弊,选择最适合现有业务的解决方案。同时,我也很喜欢关注前沿的技术动态,能够及时吸收新知识,提高自己的技术水平。

结束语

三轮面试结束后,我收获了一个非常难得的学习和成长机会。感谢 ThoughtWorks 的面试官们,让我体会到了优秀公司的文化和氛围,也更加认同了自己未来的职业方向。