📜  FactSet 面试经历 |校园 2021(1)

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

FactSet 面试经历 | 校园 2021

近日,本人有幸参加FactSet的校园招聘面试,以下是我的面试经历,供广大程序员参考。

一面
上午

我和 HR 达成面试时间后,准时参加了面试。在一开始, HR 先对 FactSet 的公司背景和业务进行了介绍,然后开始了技术面试。

  1. 自我介绍:

面试官让我自我介绍,我介绍了我的个人背景、技术栈和项目经验。

  1. 计算机网络:TCP 连接建立的过程以及 DNS 解析的过程。

该问题是一个经典的计算机网络问题,我先介绍了 TCP 连接建立的三次握手过程,然后简单介绍了 DNS 解析的过程。

  1. 操作系统:进程和线程的区别,以及进程间通信的方式。

我首先解释了进程和线程的定义,然后详细介绍了它们之间的区别。之后,我解释了常见的几种进程间通信方式,比如管道、消息队列和共享内存等。

  1. 数据库:索引的作用以及 B 树和 B+ 树的区别。

我先简单介绍了索引的定义和作用,然后详细介绍了 B 树和 B+ 树的区别,重点介绍了 B+ 树的优势。

下午

当天下午,面试官给我打了电话,让我进一步解释一些技术问题。

  1. 项目经验:我在项目中遇到的最大困难以及解决方法。

我详细介绍了我在某个项目中遇到的问题,主要是数据不准确和数据量太大导致的性能问题。我解释了我是如何找到问题的瓶颈,以及如何解决这些问题的。

  1. Java 基础:讲讲 Java 中常见的数据结构及其对应的使用场景。

我首先介绍了 Java 中常见的数据结构,比如 ArrayList、LinkedList、HashSet 和 TreeMap 等,然后详细说明了它们的使用场景和特点。

二面

经过初试后,我通过了进入二面的机会。

一些基础问题
  1. Java 反射的概念及使用场景。

经过简短的介绍,我给出了一个实际应用反射的例子,着重讲了反射的强灵活性。

  1. Collections 框架中的 List、Set 和 Map 集合。

我用简短的语言说明了 Collections 框架中的 List、Set 和 Map 集合的特性和适应场景。

  1. 接口和抽象类的区别。

我详细介绍了接口和抽象类的概念及差异,并阐述了哪种更适合在实际应用操作中。

基础编程题目

接下来的环节是编程题。

一、 给定一个字符串,去掉其中连续两个及以上的 "ab" 。

输入

字符串 s (1 <= s.length() <= 10^4)

输出

字符串 s 中去掉所有连续两个及以上的 "ab" 。

public String removeSubstring(String s) {
    if (s == null || s.length() <= 1) return s;
    StringBuilder sb = new StringBuilder();
    sb.append(s.charAt(0));
    int i = 1;
    while (i < s.length()) {
        if (sb.charAt(sb.length() - 1) == 'a' && s.charAt(i) == 'b') {
            i++;
        } else {
            sb.append(s.charAt(i++));
        }

    }
    return sb.toString();
}

二、 判断一个链表是否有环

输入

链表的头节点

输出

若链表有环,输出 true,否则输出 false。

public boolean hasCycle(ListNode head) {
    ListNode fast = head, slow = head;
    while (fast != null && fast.next != null) {
        fast = fast.next.next;
        slow = slow.next;
        if (slow == fast) return true;
    }
    return false;
}
总结

FactSet 的面试中考察了多个方面,包括计算机网络、操作系统、Java 基础以及算法和数据结构。同时还有编程题的部分,主要是考察申请者在时间安排与代码质量方面的能力。个人感觉 FactSet 面试较为注重实际操作,不会过多考虑 理论层面,很适合没有从事过实际工作的程序员来历练。