📅  最后修改于: 2023-12-03 14:44:26.351000             🧑  作者: Mango
最近我参加了 Mylo 公司的校园招聘,并通过了技术实习生的面试,接下来分享一下我的面试经历。
我认为这次面试的难点在于算法问题和编程测试。我分享一下有关这两个方面的问题。
面试官首先问了我两个基础的算法问题:
由于我在大学中进行了算法学习,并且在实际项目中应用了哈希表和快速排序,因此我很快回答了这两个问题。
但是,在接下来的测试中,面试官向我提出了一个难点:
假设有 N 个数,其中出现次数超过一半的数字为 X,如何在 O(N) 的时间内找到 X?
我的思路是使用字典(哈希表)来存储每个元素出现的次数,如果有某个元素出现的次数超过了数组长度的一半,那么就是要找的那个数。但是面试官问我能不能使用 O(1) 的空间复杂度解决这个问题,我有些不知所措。最终,面试官给了我一个提示:
用一个变量 candidate 存储可能的数字,用一个计数器 count 统计 candidate 出现的次数。当遍历到一个不等于 candidate 的新数字时,将次数减 1。当 count 变为 0 时,将 candidate 更新为当前数字。
我在面试后进行了仔细的思考和查找资料,认识到这个方法是需要有一定逻辑思维和对算法的深入理解和掌握才能解决问题的。
除了算法之外,另一个难点是编程测试。面试官给了我一个简单的题目:
给定两个字符串 s 和 t,判断 t 是否为 s 的字母异位词。
我使用哈希表算法解决了这个问题,并通过了测试。
这次面试让我认识到了自己在算法和编程测试方面的不足,但同时也让我对我自己的优势更有自信。我相信通过这次经历,我可以更好地提升自己的技能,为未来的工作做好充分准备。