📅  最后修改于: 2023-12-03 14:59:21.580000             🧑  作者: Mango
AppDynamics 是一家位于美国旧金山的 IT 公司,创建于 2008 年,致力于提供应用程序性能管理和 IT 操作分析解决方案。其客户群涉及金融、电子商务、通讯、制造、保险、物流等行业,涉及全球多个国家和地区。
校园(虚拟)2020 年 7 月的面试岗位主要有两个,分别是研发和技术支持。
面试分为在线写代码、电话面试、视频面试三个环节。
在这个环节中,我收到了一个题目:实现一个堆栈,支持 push、pop、peek 操作,并保证线程安全。
我使用 Java 语言编写了一个基于链表实现的堆栈,代码如下:
public class MyStack<T> {
private Node<T> top;
public synchronized void push(T item) {
Node<T> node = new Node<>(item);
node.next = top;
top = node;
}
public synchronized T pop() {
if (top == null) {
throw new NoSuchElementException();
}
Node<T> node = top;
top = node.next;
return node.item;
}
public synchronized T peek() {
if (top == null) {
throw new NoSuchElementException();
}
return top.item;
}
private static class Node<T> {
private T item;
private Node<T> next;
Node(T item) {
this.item = item;
this.next = null;
}
}
}
在电话面试中,面试官给了我一个问题:在一个排序数组中查找一个目标值,如果存在返回下标,否则返回 -1。
我使用二分查找的算法来解决这个问题,代码如下:
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
在视频面试中,我和面试官就我对公司文化的认知、对职位的了解、个人项目经验等进行了讨论。
我向面试官介绍了我在学校期间参与的项目,以及我的一些思考和感悟。
面试官也向我介绍了公司的一些发展历程和未来的发展方向,让我更好地了解公司的文化和价值观。