📅  最后修改于: 2023-12-03 15:05:07.674000             🧑  作者: Mango
本次是我作为一名程序员应聘 SDE2 Traveloka 的面试体验,以下是我的经历与感想。
共分为四轮面试,面试官均为 Tech Lead 或 Senior Engineer。
第一轮由两个部分组成:一部分是编程题目,另一部分是系统设计。
编程题目是一个基础的字符串匹配算法,需要使用正则表达式判断给定的字符串是否符合指定的模式。我用 Java 实现了该算法,并且用了少量的正则表达式库,代码风格和命名语义都较为合理,最后得到了肯定的回应。
系统设计则是一个让我思考线上电影售票系统的场景,从用户界面、数据持久化、高并发、分布式等各个方面对系统进行了概括化的设计。我使用了类似微服务架构的思路,以票务作为核心服务进行拆分,采用云原生技术栈来实现。面试官对我给出的解决方案和思路都表示满意,但也提出了一些建议和可优化的地方。
第二轮是纯粹的编程题目,难度略有提升。题目是这样一个场景:给定两个长度为 n 的字符串 A 和 B,以及一个整数 k,需要求出两个字符串中的所有长度为 k 的公共子串。
我使用了暴力枚举和哈希计算子串的方式求解,最后通过部分样例测试用例,但并没有通过全部测试用例。面试官提出了一些优化建议,如使用 Rabin-Karp 或 KMP 算法来加速哈希计算,以及对子串长度进行二分查找。
第三轮是一场行为面试(Behavioral Interview),主要考察我的职业生涯发展规划、自我认知、沟通能力等方面。面试官提出了一些针对 SDE2 职位的问题,如如何处理高压力、高难度的任务,如何协作团队等等。
随后是一轮技术面试,主要考察我的基础知识、技术深度和可解释性。面试官从算法、架构设计、数据库等多个方面进行提问,并且逐步加深难度和细节。我在这一轮中遇到了一些困难,但也尽力地去回答问题。
第四轮是最后一个面试环节,也是我觉得最难的一轮。面试官提出了一个实际业务中遇到的问题,需要我能够在 45 分钟内设计出相应解决方案。这个问题牵涉到了大量的技术细节和业务逻辑,但也正是因为它的真实性和复杂性,最终让我印象深刻。
我采用了类似分布式事务的方式来解决问题,根据业务特点和交互流程,设计了一个多阶段提交的方案,支持 ACID 特性和高可靠、高一致性的场景。面试官对我的方案表示了肯定,但也提出了一些技术局限和业务风险。
整个面试过程持续了 4 个小时,其中时间分配相对合理,面试官的态度和专业程度也都很高。虽然遇到了一些问题和挑战,但我在面试的过程中也学到了很多东西,包括大公司 如何招聘高级工程师的标准、如何体现自己的技术水平、如何提升自己的商业意识等等。
总体来说,作为一名程序员应聘 SDE2 Traveloka 的面试经历是一次难得的成长机会,不仅让我更全面地认识了自己,也使我对业界的技术和趋势有了更深入的了解。无论是能否顺利入职,我的这次求职体验都是很宝贵的。