📜  FinIQ 面试经历 |设置 1(校内)(1)

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

FinIQ 面试经历 | 设置 1(校内)

介绍

FinIQ 是一家提供金融技术解决方案的公司,他们在校园招聘中会面试程序员。本篇文章是我在 FinIQ 面试时的经历。

面试前准备

在面试前,我对 FinIQ 的业务进行了一定的了解,并提前做了一些准备。我自认为有扎实的计算机基础,因此我主要准备了以下事项:

  1. 数据结构和算法
  2. Java 核心知识点
  3. 数据库和SQL
  4. 操作系统和网络
面试过程

FinIQ 的面试整个过程大概分为三部分:笔试环节、技术面试和 HR 面试。

笔试环节

面试的第一步就是进行笔试环节,这一部分主要考察编码能力和对数据结构和算法的掌握。我在这一部分顺利地完成了两道算法题,也比较自信地完成了代码编写。

// 第一题 对于给定数组以及目标值,找到数组中所有的组合,满足组合元素的和等于目标值
class Solution {
    public List<List<Integer>> combinationSum(int[] candidates, int target) {
        List<List<Integer>> list = new ArrayList<>();
        backtrack(list, new ArrayList<>(), candidates, target, 0);
        return list;
    }

    private void backtrack(List<List<Integer>> list, List<Integer> tempList, int[] candidates, int remain, int start) {
        if (remain < 0) return;
        else if (remain == 0) list.add(new ArrayList<>(tempList));
        else {
            for (int i = start; i < candidates.length; i++) {
                tempList.add(candidates[i]);
                backtrack(list, tempList, candidates, remain - candidates[i], i);
                tempList.remove(tempList.size() - 1);
            }
        }
    }
}

// 第二题 实现阻塞队列
class BlockingQueue<T> {
    private Queue<T> queue;
    private int capacity;

    public BlockingQueue(int capacity) {
        this.queue = new LinkedList<>();
        this.capacity = capacity;
    }

    public synchronized void put(T element) throws InterruptedException {
        while (queue.size() == capacity) {
            wait();
        }

        queue.offer(element);
        notifyAll();
    }

    public synchronized T take() throws InterruptedException {
        while (queue.isEmpty()) {
            wait();
        }

        T element = queue.poll();
        notifyAll();
        return element;
    }
}
技术面试

在通过了笔试环节后,我进入了技术面试的阶段。面试官主要考察我 Java 的核心知识点、数据库和 SQL 的理解以及操作系统和网络的基础。以下是其中一些问题:

  1. 你如何理解 Java 中的多态?请举个例子。
  2. 在 MySQL 中如何进行数据的存储和索引的优化?
  3. 请简要介绍一下 TCP/IP 协议栈的功能和作用。
  4. 如何解决 Java 中的内存泄漏问题?
HR 面试

最后便是和 HR 面试官的面试。在这一部分中,我被问及了一些对公司文化和团队的认识,以及我个人的职业规划和期望。在这一部分结束后,整个面试过程便结束了。

总结

整个 FinIQ 面试的过程以及问题都相对较为全面和深入,考验了我的编码能力和对计算机技术的掌握。我从中收获了很多,也更清晰地认识到自己的不足之处。希望这篇文章能够对正在准备 FinIQ 面试的程序员们有所帮助。