📜  Adobe 面试体验 | 4年经验

📅  最后修改于: 2021-11-18 01:53:58             🧑  作者: Mango

技术回合(1小时):本回合考查解决问题的能力

  1. 类似于 https://www.geeksforgeeks.org/closest-perfect-square-and-its-distance/。我被要求在不使用 sqrtRoot() 函数的情况下找到最接近数字的平方根。

    例如:

    Input:10
    Output:3
    Input:15
    Output:4
  2. https://www.geeksforgeeks.org/block-swap-algorithm-for-array-rotation/。我先讲了蛮力术,然后是阵法反转术。他要求另一种可能的解决方案,例如分而治之。
  3. https://www.geeksforgeeks.org/minimum-number-of-squares-whose-sum-equals-to-given-number-n/
  4. https://www.geeksforgeeks.org/connect-nodes-at-same-level-with-o1-extra-space/。我讲了层序遍历的方法。但面试官要求在恒定空间内进行。告诉递归解决方案
  5. 给定一个盒子数组。每个盒子都有 l,w,h。堆叠盒子以获得最大高度,这样盒子上方的面积较小。

    我问是否 l,w,h 是固定的,或者可以使用任何维度。他要求首先考虑固定尺寸,然后再继续:

    Variable dimensions.
    3. 2,5,4  
    2. 3,4,28
    1. 2,6,18    
    Ans:
    28+4

    告诉方法根据面积和高度对数组进行排序,然后线性遍历数组并存储最大值。区域 val 的高度值。

    然后问题修改为 https://www.geeksforgeeks.org/box-stacking-problem-dp-22/

技术回合(1 小时):由于我对Java不太熟悉,他们主要问了概念相关和 OOPS 相关问题

  1. 单例类的代码以及所有与其同步的相关问题,双锁检查,早期初始化,早期初始化的缺点。
  2. 什么时候单例类被垃圾收集?
  3. Java的内存管理?堆/栈
  4. 为什么在Java需要字符串池概念?为什么 String 类在Java不可变的?
  5. 如何在Java创建自己的不可变类?
  6. 继承还是组合?哪一个是首选,为什么?
  7. 依赖注入?
  8. 垃圾收集技术?
  9. 内存泄漏?
  10. HashMap 内部如何工作?我们需要覆盖哪些方法才能使关键类有资格作为 Key 工作?
  11. 如果 2 个对象引用指向同一个对象,那么哈希码是否相同?为什么我们需要定义我们自己的 hashcode() 函数?
  12. https://www.geeksforgeeks.org/override-equalsobject-hashcode-method/
  13. Java的哪个集合遵循策略模式?
  14. 集合。排序();这是否遵循策略设计模式?
  15. 观察者模式?
  16. 如何将多个线程连接起来并相互交互?

管理回合(~50 分钟):

  1. 二叉树的螺旋顺序遍历。

    我使用 2 个堆栈编写代码。然后他要求将 2 个堆栈减少到 1 个。我提到用 1 个堆栈是不可能的,但是可以使用 deque。

  2. 删除字符串所有相邻的相似字符
    Ex:
    mississippi->m
    mississi->m  

    使用 2 个循环的强力方法,时间复杂度 (n*n)。他要求优化它并提示使用一些空间。

    https://www.geeksforgeeks.org/recursively-remove-adjacent-duplicates-given-string/

  3. https://www.geeksforgeeks.org/a-program-to-check-if-strings-are-rotations-of-each-other/
  4. 有多少种多态性?
  5. 不可变类。我们如何创建一个不可变的类?

导演回合(1小时):

  1. https://www.geeksforgeeks.org/print-a-given-matrix-in-spiral-form/。按 n*m 和 n 和 m 顺序排列的矩阵大小可能相等,也可能不相等。
  2. https://www.geeksforgeeks.org/find-the-point-where-maximum-intervals-overlap/
  3. 在Java崩溃程序的方法以及在每种情况下会抛出什么异常?
  4. 基于输出的程序
    Java
    Activity A{
        Rect mRect = new Rect(10,20);
      
        Void foo(Rect r)
        { r = null; }
      
        Void foo1()
        {
         ……
         Foo(mRect);
         Println(mRect.left, mRect.right); // what will it print?  
        }
     }


  5. https://www.geeksforgeeks.org/make-class-whose-objects-can-dynamically-allocated/