📅  最后修改于: 2023-12-03 15:05:07.451000             🧑  作者: Mango
本次面试是Zomato的SDE-1职位,主要考察候选人在数据结构、算法、系统设计和编程思想方面的能力。
首先需要通过在线编程测试,测试时间为90分钟,主要包含以下题目:
这一轮是语音面试,时间约45分钟。主要考察的是对面试官提出的问题的回答。
问题主要包括:
这一轮主要是群面,面试官和一位团队成员一起参加,时间约为45分钟。主要讨论一些设计和案例问题。
问题主要包括:
整个面试过程非常严格和有趣。通过这次面试,我收获了很多,不仅仅是技术上的收获,还有面对面试过程的经验和技巧。如果您想要在技术方面有所突破并开展一份职业生涯,Zomato必将是你优秀训练的好去处。
#include <iostream>
#include <vector>
using namespace std;
bool isPalindrome(string s) {
int i = 0, j = s.size() - 1;
while (i < j) {
while (!isalnum(s[i]) && i < j)
i++;
while (!isalnum(s[j]) && i < j)
j--;
if (tolower(s[i]) != tolower(s[j]))
return false;
i++, j--;
}
return true;
}
int minPathSum(vector<vector<int>>& grid) {
int m = grid.size(), n = grid[0].size();
vector<vector<int>> f(m, vector<int>(n));
f[0][0] = grid[0][0];
for (int i = 1; i < m; i++)
f[i][0] = f[i - 1][0] + grid[i][0];
for (int j = 1; j < n; j++)
f[0][j] = f[0][j - 1] + grid[0][j];
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++)
f[i][j] = min(f[i - 1][j], f[i][j - 1]) + grid[i][j];
}
return f[m - 1][n - 1];
}
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
for (int i = 0; i < n / 2; i++) {
for (int j = i; j < n - 1 - i; j++) {
int tmp = matrix[i][j];
matrix[i][j] = matrix[n - 1 - j][i];
matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j];
matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i];
matrix[j][n - 1 - i] = tmp;
}
}
}
int main() {
// 测试代码
string s = "A man, a plan, a canal: Panama";
cout << isPalindrome(s) << endl;
vector<vector<int>> grid = {
{1, 3, 1},
{1, 5, 1},
{4, 2, 1}
};
cout << minPathSum(grid) << endl;
vector<vector<int>> matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
rotate(matrix);
for (const auto& row : matrix) {
for (int num : row)
cout << num << ' ';
cout << endl;
}
return 0;
}