📜  AppDynamics 面试经验 |校园(虚拟)2020 年 7 月(1)

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

AppDynamics 面试经验 |校园(虚拟)2020 年 7 月

简介

AppDynamics 是一家位于美国旧金山的 IT 公司,创建于 2008 年,致力于提供应用程序性能管理和 IT 操作分析解决方案。其客户群涉及金融、电子商务、通讯、制造、保险、物流等行业,涉及全球多个国家和地区。

面试准备
面试岗位

校园(虚拟)2020 年 7 月的面试岗位主要有两个,分别是研发和技术支持。

  • 研发岗位要求对计算机科学、数据结构、算法等基础知识有扎实的掌握能力,熟悉 Java 编程语言,有前端开发经验更佳。
  • 技术支持岗位要求对 Linux 系统管理、网络架构、数据库、Web 开发有一定了解,能够理解常见应用程序的架构与运作,具备良好的中英文沟通能力和团队协作能力。
面试环节

面试分为在线写代码、电话面试、视频面试三个环节。

  • 在线写代码主要考察基本的编程能力,包括 Java 的语法熟练程度、数据结构与算法的编写能力等。
  • 电话面试主要考察人际交往能力、问题解决能力和语言表达能力等。
  • 视频面试是最后一个环节,主要考察综合素质以及对职位的理解和认识。
面试经验
在线写代码

在这个环节中,我收到了一个题目:实现一个堆栈,支持 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;
}
视频面试

在视频面试中,我和面试官就我对公司文化的认知、对职位的了解、个人项目经验等进行了讨论。

我向面试官介绍了我在学校期间参与的项目,以及我的一些思考和感悟。

面试官也向我介绍了公司的一些发展历程和未来的发展方向,让我更好地了解公司的文化和价值观。