📜  Flipkart 软件工程师面试经验-2(1)

📅  最后修改于: 2023-12-03 14:41:14.249000             🧑  作者: Mango

Flipkart 软件工程师面试经验-2

在这篇文章中,我们将分享一个Flipkart软件工程师的面试经验。我们将看到面试者如何通过技术、思维、组织与沟通四个方面,成功通过面试。

技术
  1. 面试官会考察候选人的编程能力。他们可能会要求候选人用所熟悉的语言来解决一些简单或复杂的问题。在这个过程中,候选人需要注意代码的质量、性能与可读性。
//给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 
//示例 1:
//输入: s = "abcabcbb"
//输出: 3 
//解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
class Solution {
    public int lengthOfLongestSubstring(String s) {
        int n = s.length(), ans = 0;
        int[] index = new int[128]; // current index of character
        // try to extend the range [i, j]
        for (int j = 0, i = 0; j < n; j++) {
            i = Math.max(index[s.charAt(j)], i);
            ans = Math.max(ans, j - i + 1);
            index[s.charAt(j)] = j + 1;
        }
        return ans;
    }
}
  1. 候选人应该了解操作系统的基础知识,如进程、进程间通信、线程、信号量等等,并能够用自己的话描述清楚。

  2. 面试者应该具备数据库方面的知识,包括 SQL 查询、数据分析等。

-- 查询员工薪水比部门平均薪水高的员工和部门信息
SELECT e.employee_name, e.salary, d.department_name, d.location
FROM employees e
JOIN departments d ON e.department_id = d.department_id
WHERE e.salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id)
ORDER BY d.department_id, e.salary DESC;
  1. 面试官可能会问候选人有关数据结构与算法的问题,并期望听到最优解法。
//给定一个未排序的整数数组 nums ,找出其中没有出现的最小的正整数。 
//示例 1:
//输入:nums = [1,2,0]
//输出:3
class Solution {
    public int firstMissingPositive(int[] nums) {
        int n = nums.length;
        for (int i = 0; i < n; ++i) {
            if (nums[i] <= 0) {
                nums[i] = n + 1;
            }
        }
        for (int i = 0; i < n; ++i) {
            int num = Math.abs(nums[i]);
            if (num <= n) {
                nums[num - 1] = -Math.abs(nums[num - 1]);
            }
        }
        for (int i = 0; i < n; ++i) {
            if (nums[i] > 0) {
                return i + 1;
            }
        }
        return n + 1;
    }
}
思维
  1. 面试官通常会询问候选人的发布过的项目,并询问候选人为什么如此设计。候选人应该尽可能表达自己的方案与迭代过程,并说出自己项目中的成功与失败。

  2. 在面试中解决问题的能力很重要,因此面试者应该对面试官所问问题的每一个方面进行分析,并提供有关的解决方案。

  3. 候选人应该考虑对当前问题的面试官感兴趣的方面进行深入的研究,并扩大对这个行业的认识。

# 小区监控
import cv2
import numpy as np

VIBE = cv2.bgsegm.createBackgroundSubtractorMOG()

video = cv2.VideoCapture("video.mp4")
while True:
    ret, frame = video.read()
    if not ret:
        break
    fgmask = VIBE.apply(frame)
    fgmask[fgmask < 255.0] = 0
    fgmask = cv2.dilate(fgmask, None, iterations=2)
    im2, contours, hierarchy = cv2.findContours(
        fgmask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE
    )
    if contours:
        for c in contours:
            x, y, w, h = cv2.boundingRect(c)
            if w > 80 and h > 80:
                cv2.rectangle(
                    frame, (x, y), (x + w, y + h), color=(0, 0, 255), thickness=2
                )
                cv2.putText(
                    frame,
                    "Person Detected",
                    (x, y - 5),
                    cv2.FONT_HERSHEY_SIMPLEX,
                    1,
                    (0, 0, 255),
                    thickness=2,
                )
    cv2.imshow("real-time video", frame)
    if cv2.waitKey(1) & 0xff == 27:
        break

video.release()
cv2.destroyAllWindows()
  1. 在面试中,求解某一基本原理的方案也很重要。候选人必须能够将所学应用于实践。
组织与沟通
  1. 候选人应该尝试以一种很容易理解的方式与面试官进行沟通,并尽可能的做到地道与流畅。

  2. 在面试过程中,候选人应该向面试官证明自己对所研究领域的热情,并向面试官提出有意义的问题。

  3. 面试者需要维护清晰,有组织的思维,将想法与解释结构化,以便面试官更好地理解。

  4. 候选人需要在回答问题时结合自己的申请并保持自信和积极。

通过阅读本文,你已经了解了这个Flipkart软件工程师的面试经验。如果你正在寻找一份工作,不妨从中吸取经验,提高自己的面试技能。