📜  OneDirect 面试流程

📅  最后修改于: 2021-09-23 05:31:10             🧑  作者: Mango

职位软件工程师1名(经验1-2年)
1. 恢复筛选回合
2. 分配回合
3. 技术回合
4. 技术+管理回合

第一轮是电话轮,包括来自你参与过的项目和技术的问题,一些问题是
你做什么来学习新技术?
您热衷于哪种技术?
您在当前项目中的职责/角色是什么?
解释你工作过的模块?
您在项目中遇到的挑战?
你在目前的组织中取得了什么成就?
在数据结构和解决问题的技能方面给自己打分?
你为什么要寻求改变?

第二轮是分配轮
其中包括 4 个问题(2 个编程 + 2 个设计问题)
1. 求二叉树中两个节点之间的距离。
2. 给定一个值 N,如果我们想换 N 美分,我们有无限供应 S = { S1, S2, .., Sm}
有价值的硬币,我们有多少种方法可以改变?
例如,对于 N = 4 和 S = {1, 2, 3},有四种解:{1, 1, 1, 1}, {1, 1, 2}, {2, 2}, {1, 3}。所以输出应该是4。
对于 N = 10 和 S = {2, 5, 3, 6},有五种解:{2, 2, 2, 2, 2}, {2, 2, 3, 3}, {2, 2, 6 }, {2, 3, 5} 和 {5, 5}。
所以输出应该是 5 并打印所有的解决方案。
3.使用Java和oops概念设计在线评估系统。
4. 设计用于发送邮件、通知的通信系统。用户可以一次向不同的用户发送邮件并接收多个通知。设计高级设计和低级设计。

第三轮和第四轮一些技术问题
简介,你在简历中提到的技术方面的基本问题以及一些更多的编程问题
1. 如果有结果不具体的设备。它的结果一直在变化。所以结果是通过计算结果中得到的最长公共序列来计算的。
例如:
结果 = {真、假、真、假、真、真、真、假}
计算“真”的最长序列
输出=3

结果 = {真、真、真、真、假、真、假、真、真、真、假}
输出 = 4

结果 = {真、假、真、假、真、假}
输出 = 1

结果 = {假,假,假}
输出 = 0

static void getLongestSeq(Boolean a[], int n)
{
    int max = 0, current = 0;
    for (int k = 0; k < n; k++) {
        if (a[k] == true) {
            current++;
        }
        else {
            if (current > max) {
                max = current;
            }
            current = 0;
        }
    }
    if (max > 0) {
        System.out.print("Count " + max);
    }
    else
        System.out.println("No true result");
    return;
}

2. 以最小成本连接 n 条绳索。(使用优先队列)
3. 使用下一个和随机指针克隆链表。
4.如何对20GB的数据进行排序
5. Hashmap 使用 Arraylist 实现
6. 管理分层数据