📜  Newzera 面试经历(1)

📅  最后修改于: 2023-12-03 15:33:06.401000             🧑  作者: Mango

Newzera 面试经历

最近我有幸参加了Newzera的面试,以下是我的面试经历。

面试环节

面试分为两个部分。第一个部分是在线笔试,涵盖了算法、数据结构、数据库等内容,时间为90分钟。第二个部分是视频面试,采用英文交流,时长为60分钟。

面试问题
在线笔试
  1. 请用Java实现一个LRU缓存。
class LRUCache {
    Map<Integer, Integer> map;
    Deque<Integer> queue;
    int capacity;
    
    public LRUCache(int capacity) {
        map = new HashMap<>();
        queue = new LinkedList<>();
        this.capacity = capacity;
    }
    
    public int get(int key) {
        if (map.containsKey(key)) {
            queue.remove(key);
            queue.offer(key);
            return map.get(key);
        } else {
            return -1;
        }
    }
    
    public void put(int key, int value) {
        if (map.containsKey(key)) {
            queue.remove(key);
        }
        while (queue.size() >= capacity) {
            int lru = queue.poll();
            map.remove(lru);
        }
        
        map.put(key, value);
        queue.offer(key);
    }
}
  1. 有一个长度为n(n<=1000)的整数数组,问最多能找到多长的等差数列?
public int maxLenArithmeticSeq(int[] nums) {
    int n = nums.length;
    if (n <= 2) {
        return n;
    }
    
    int[][] dp = new int[n][n];
    int res = 2;
    for (int j = 0; j < n; j++) {
        int i = j - 1, k = j + 1;
        while (i >= 0 && k < n) {
            if (nums[i] + nums[k] < 2 * nums[j]) {
                k++;
            } else if (nums[i] + nums[k] > 2 * nums[j]) {
                i--;
            } else {
                dp[i][j] = dp[j][k] + 1;
                res = Math.max(res, dp[i][j] + 2);
                i--;
                k++;
            }
        }
    }
    
    return res;
}
视频面试
  1. 请介绍一下自己的项目中的技术难点。 我向面试官介绍了我曾经参与的一个医疗信息管理系统的开发项目,主要介绍了权限管理、数据统计、嵌套表格等方面的技术难点,以及我的解决方案。

  2. 请问你觉得工作中最重要的技能是什么?并简单举例说明。 我认为工作中最重要的技能是沟通能力。在我的经验中,一个好的沟通者可以更好地将自己的想法传达给他人,协调不同团队之间的工作,提高项目完成的效率。

总结

这次面试让我感觉比较充实,面试官也给了我很好的反馈和建议。我觉得不管是否被录用,这次面试对我都是一个很好的学习和成长机会。