📅  最后修改于: 2023-12-03 15:03:26.343000             🧑  作者: Mango
OYO Rooms是一家印度的酒店预订公司,成立于2013年,是印度酒店预订市场上增长最快的公司之一。该公司已经在全球27个国家开设了超过9000家酒店,2019年3月,该公司已经成为了印度最有价值的初创企业之一。
OYO Rooms的面试流程包含在线笔试,技术面试和HR面试。
笔试包含了算法和编程题,时间限制为90分钟。考察内容涉及到字符串和数组处理,链表操作等算法题目以及Java或Python编程题,难度与SDE-1对应。
技术面试主要包含技术问题以及代码实现的问题。 面试官会提出几个项目和使用场景,希望你能够详细描述你的实现方法和思考过程。另外一些常见题目包括Java基础,设计模式,数据结构,常用算法,网络等等。
HR面试主要是在了解求职者的工作经验,项目经验,以及一些其他的诸如职业规划和薪酬期望等方面的问题。
以下列举一些我在面试中遇到的具体问题:
public static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int p = partition(arr, left, right);
quickSort(arr, left, p - 1);
quickSort(arr, p + 1, right);
}
}
public static int partition(int[] arr, int left, int right) {
int pivot = arr[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (arr[j] < pivot) {
i++;
swap(arr, i, j);
}
}
swap(arr, i + 1, right);
return i + 1;
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
class LRUCache {
private Map<Integer, Integer> map;
private Deque<Integer> deque;
private int capacity;
public LRUCache(int capacity) {
this.capacity = capacity;
this.map = new HashMap<>();
this.deque = new LinkedList<>();
}
public int get(int key) {
if (map.containsKey(key)) {
deque.remove(key);
deque.offer(key);
return map.get(key);
} else {
return -1;
}
}
public void put(int key, int value) {
if (map.containsKey(key)) {
deque.remove(key);
} else if (deque.size() == capacity) {
int k = deque.poll();
map.remove(k);
}
map.put(key, value);
deque.offer(key);
}
}
HTTP/2的主要特点是二进制分帧传输、多路复用、头部压缩和服务器推送四个方面。二进制分帧传输可以将请求和响应分割成更小的二进制数据帧,从而方便传输、管控和处理。多路复用可以在同一TCP连接上并行处理多个请求和响应,从而避免了HTTP/1中频繁创建和断开TCP连接的开销。头部压缩可以将请求和响应的header字段压缩,从而减小了数据传输量。服务器推送可以将客户端可能需要的资源主动推送给客户端,从而减少客户端的请求次数。这些优化可以大大提高HTTP/2的效率。
OYO Rooms的面试难度较大,需要面试者具备较好的算法及编程能力,同时还需要掌握Java或Python等语言的相关知识。但是,通过面试,你可以体验到一个世界领先的产品团队的氛围和产品设计理念,是一次很有价值的体验。