📅  最后修改于: 2023-12-03 15:34:34.979000             🧑  作者: Mango
最近我参加了 Quikr 的程序员职位面试,以下是我的经历和感受。
Quikr 的程序员职位面试大概分为三轮:
其中技术面试是最重要的一环,如果能够通过技术面试,后面的面试就会变得相对容易。
我参加的技术面试一共有两轮。面试官首先向我介绍了 Quikr 的业务和技术栈,然后让我解决一个编程问题。
问题是这样的:给定一个字符串,例如 "abcabcbb",请你找出其中不含重复字符的最长子串,例如 "abc" 是最长的非重复子串。
我首先列出了暴力解法,然后优化了一下,利用了 Set 和双指针的方法,将时间复杂度从 O(n^3) 降到了 O(n)。面试官对我的解法很满意,然后问了一些关于编程基础的问题,例如指针和引用的区别,虚函数和纯虚函数的区别等。
第二轮技术面试主要是测试我的算法和数据结构能力。面试官给了我一道经典的算法题目:如何判断一个字符串是否是另一个字符串的置换?我首先想到了暴力的方法,然后又想到了利用哈希表和排序的方法,最后面试官指导我使用了类似于滑动窗口的方法,将时间复杂度降低到了 O(n)。
设计面试主要是测试我的系统设计能力。面试官向我介绍了一个在线购物的系统场景,并要求我对该系统进行设计。我首先画了一张系统结构图,然后讲解了系统的各个组成部分,例如前端、后端、数据库、缓存等。面试官就我的设计提出了一些问题并进行了追问,我也进行了相应的解答和修改。
经理面试主要是测试我的职业规划和个人发展方向等方面的认知。面试官首先介绍了公司的文化和发展方向,然后问了一些与职业规划相关的问题,例如我希望在未来的五年内成为怎样的一名程序员,我自己在技术方面的优势和劣势等。
整个面试过程非常严谨和专业,面试官们也非常友好和耐心。通过这次面试,我不仅学到了很多新知识和思路,也对自己的技术水平和职业规划有了更清晰的认识。我相信 Quikr 是一个非常优秀的公司,我很期待如果能有机会加入他们的团队。