JavaRush /Java 博客 /Random-ZH /开发人员职位的典型测试任务分析
Uniges
第 35 级
Санкт-Петербург

开发人员职位的典型测试任务分析

已在 Random-ZH 群组中发布
今天我想看一下实习开发人员职位的职权范围。曾几何时我写过:我想分享一下我对这件事的看法,对于初学者在找工作时了解未来等待着他们的是什么会有帮助。
开发人员职位的典型测试任务分析 - 1
职位空缺如下: 见习 PostgreSQL 开发人员 ,起薪 30,000 卢布。扣除个人所得税前 LLC Business Technologies St. Petersburg, Kolomyazhsky Prospekt, 33k2 Business Technologies 所需工作经验:不需要
  • 全日制,全日制
职责:
  • 在开发人员的指导下实施低复杂度任务
  • 资质持续增长
要求:
  • 了解结构化编程原理、关系数据库理论。
  • 责任、独立、主动
  • 沟通技巧、团队合作的能力和愿望
  • 高学习能力
理想的:
  • 知识
  • sql;
  • pl\sql;
  • pl\pgSql;
  • C++、Java、帕斯卡。
状况:
  • 在稳定、动态发展的公司工作
  • 舒适的工作条件
  • 杜绝形式主义、官僚主义
  • 广泛的专业和职业发展机会
  • 薪资根据面试结果而定
  • 根据劳动法登记,根据劳动法带薪休假。
  • 请在信头注明职位代码:Project04
测试任务描述: 该测试旨在进行自我控制,以便申请人自行决定是否值得花时间参加面试。 伪代码 该伪代码用于描述算法。
  1. 左边距的缩进表示嵌套的级别。
  2. 循环 while、for、repeat 和条件结构与 Pascal 中的含义相同。
  3. 符号“--”表示注释
  4. 符号“:=”表示赋值
  5. 除非另有说明,变量对于过程来说是局部的
  6. 数组索引写在方括号中,结构A[i]表示数组A中的第i个元素
  7. 可以使用由多个字段组成或具有多个属性的对象;字段值写为 FieldName[ObjectName]。

    例如数组A的长度写为Length[A];方括号的含义由上下文决定(表示数组的变量,或对象是指向其组成数据的指针)。为任何字段 f 分配 y:=x 后,将满足等式 f[y]=f[x];确定属性是函数、变量还是其他任何东西是通过上下文来完成的。

  8. 指针可以具有特殊值 NIL,它不指向任何对象。
  9. 参数按值传递:被调用的过程接收其自己的参数副本;过程内部参数的更改从外部不可见。传递对象时,会复制指向与该对象对应的数据的指针。
问题 对元素数组 A 进行排序的函数: Sort(A,p,r) 1 if p < r 2 then q := round_half_down((p+r)/2) 3 Sort(A,p,q) 4 Sort (A,q +1,r) 5 Merge(A,p,q,r) 数组示例:A = (5,2,4,6,1,3,2,6) 运行示例:Sort(A,1 ,length[A ]) 必需: 使用您方便的任何语言开发 Merge(A,p,q,r) 函数的算法,无论是否使用额外内存,以您实现速度更快或更方便为准。如果您成功,我们将很高兴欢迎您进行额外的测试。 我的回答: 伪代码示例中描述的算法是合并排序算法。我们函数的主要任务是对无序数字数组进行排序:例如,按升序排列。该问题分为多个子任务:将数组中的数字序列分为更小的数组,直到数组变成单值,比较数组的元素,替换它们(较小的被较大的,按索引),并合并。
开发人员职位的典型测试任务分析 - 2
public class Main {
    public static void main(String[] args) {
        int[] massif = {13, 3, 8, 1, 15, 2, 3, 7, 4};
        System.out.print("Массив до сортировки: ");
        for (int i = 0; i < massif.length; i++)
            System.out.print(massif[i] + " ");
        System.out.println("");
        massif = sort(massif);
        System.out.print("Массив после сортировки: ");
        for (int i = 0; i < massif.length; i++)
            System.out.print(massif[i] + " ");
    }

    public static int[] sort(int x[]) {
        if (x.length == 1) //Рекурсия идет до тех пор, пока массив делится
            return x;
        else {
            int half = (int) Math.floor(x.length / 2); //Разбиваем массив на 2 части
            int halfFirst[] = new int[half]; //1 часть, пустой массив
            int halfSecond[] = new int[x.length - half]; //2 часть, пустой массив
            for (int i = 0; i < x.length; i++) { //Заполняем новосозданные массивы значениями
                if (i < half)
                    halfFirst[i] = x[i];
                else
                    halfSecond[i - half] = x[i];
            }
            halfFirst = sort(halfFirst); //Рекурсия
            halfSecond = sort(halfSecond); //Рекурсия
            x = sortNext(halfFirst, halfSecond); //Отправляем заполненные значениями массивы в следующий метод
            return x;
        }
    }

    public static int[] sortNext(int x[], int y[]) {
        int c[] = new int [x.length + y.length]; //Создаем результирующий массив из суммы длин массивов из аргументов метода
        int a = 0, b = 0;
        for (int i = 0; i < x.length + y.length; i++) { //Сравниваем массивы, меняем местами элементы, заполняем новосозданный массив
            if (a == x.length) {
                c[i] = y[b];
                b++;
            }
            else if (b == y.length) {
                c[i] = x[a];
                a++;
            }
            else if (x[a] > y[b]) {
                c[i] = y[b];
                b++;
            }
            else {
                c[i] = x[a];
                a++;
            }
        }
        return c;
    }
}
开发人员职位的典型测试任务分析 - 3
与 Ideone 的工作代码链接:这里 任务成功完成,之后我被邀请参加面试,他们没有接受面试,而是向我扔了另一批类似的任务,然后离开了两个小时,给了我一支笔和2张A4纸。他们看也不看叶子就接过叶子,说等会再打电话。我从这种消遣中获得的乐趣无法用经过审查的言语来形容。但至少,这是许多人在旅程开始时必须面对的严酷现实。
开发人员职位的典型测试任务分析 - 4
我真诚地祝愿您的采访有趣且有建设性。明智地选择你的雇主。祝一切顺利!) P.S.:我对 2018 年 4 月(圣彼得堡)用人公司的评论可以 在这里找到
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION