JavaRush /Java Blog /Random-TL /Pagsusuri ng isang tipikal na gawain sa pagsubok para sa ...
Uniges
Antas
Санкт-Петербург

Pagsusuri ng isang tipikal na gawain sa pagsubok para sa isang posisyon ng developer

Nai-publish sa grupo
Ngayon gusto kong tingnan ang mga tuntunin ng sanggunian para sa posisyon ng intern developer. Noong unang panahon, isinulat ko ito: Gusto kong ibahagi ang aking mga saloobin sa bagay na ito. Magiging kapaki-pakinabang para sa mga baguhan na magkaroon ng ideya kung ano ang naghihintay sa kanila sa hinaharap kapag naghahanap ng trabaho.
Разбор типичного тестового задания на позицию разработчика - 1
Ang bakante ay ang sumusunod: Trainee PostgreSQL developer mula RUB 30,000. bago bawas sa personal income tax LLC Business Technologies St. Petersburg, Kolomyazhsky Prospekt, 33k2 Business Technologies Kinakailangang karanasan sa trabaho: hindi kinakailangan
  • Buong oras, buong oras
Mga responsibilidad:
  • Pagpapatupad ng mga gawaing mababa ang kumplikado sa ilalim ng gabay ng isang developer
  • Patuloy na paglaki ng mga kwalipikasyon
Mga kinakailangan:
  • Pag-unawa sa mga prinsipyo ng structured programming at ang teorya ng relational database.
  • Responsibilidad, kalayaan, inisyatiba
  • Mga kasanayan sa komunikasyon, kakayahan at pagnanais na magtrabaho sa isang pangkat
  • Mataas na kakayahan sa pag-aaral
kanais-nais:
  • Kaalaman
  • Sql;
  • Pl\sql;
  • Pl\pgSql;
  • C++, java, pascal.
Kundisyon:
  • Magtrabaho sa isang matatag, dynamic na umuunlad na kumpanya
  • Kumportableng kondisyon sa pagtatrabaho
  • Kakulangan ng pormalismo at burukrasya
  • Malawak na pagkakataon para sa propesyonal at paglago ng karera
  • Ang suweldo batay sa mga resulta ng panayam
  • Pagpaparehistro ayon sa Labor Code, bayad na bakasyon alinsunod sa batas sa paggawa.
  • Pakisaad ang job code sa header ng sulat: Project04
Paglalarawan ng gawain sa pagsusulit: Ang pagsusulit ay inilaan para sa pagpipigil sa sarili upang matukoy ng aplikante para sa kanyang sarili kung ito ay nagkakahalaga ng paggugol ng kanyang oras sa isang pakikipanayam. Pseudocode Ang pseudocode na ito ay ginagamit upang ilarawan ang mga algorithm.
  1. Ang indentation mula sa kaliwang margin ay nagpapahiwatig ng antas ng nesting.
  2. Ang mga loop habang, para sa, umuulit at may kondisyong mga konstruksyon ay may parehong kahulugan tulad ng sa Pascal.
  3. Ang simbolo na "--" ay nagpapahiwatig ng komento
  4. Ang simbolo na ":=" ay nagpapahiwatig ng pagtatalaga
  5. Ang mga variable ay lokal sa pamamaraan maliban kung iba ang nakasaad
  6. Ang array index ay nakasulat sa square bracket, ang construction A[i] ay nangangahulugang ang i element sa array A
  7. Posibleng gumamit ng mga bagay na binubuo ng ilang mga patlang o pagkakaroon ng ilang mga katangian; ang mga halaga ng patlang ay nakasulat bilang FieldName[ObjectName].

    Halimbawa, ang haba ng array A ay isinusulat bilang Haba[A]; kung ano ang ibig sabihin ng mga square bracket ay tinutukoy ng konteksto (isang variable na nagsasaad ng array, o isang object ay isang pointer sa constituent data nito). Pagkatapos magtalaga ng y:=x para sa anumang field f ang pagkakapantay-pantay f[y]=f[x] ay masisiyahan; Ang pagtukoy kung ang isang katangian ay isang function, isang variable, o anumang bagay ay ginagawa sa pamamagitan ng konteksto.

  8. Ang isang pointer ay maaaring magkaroon ng espesyal na halaga na NIL, na hindi tumuturo sa anumang bagay.
  9. Ang mga parameter ay ipinasa ayon sa halaga: ang tinatawag na pamamaraan ay tumatanggap ng sarili nitong kopya ng mga parameter; ang mga pagbabago sa mga parameter sa loob ng pamamaraan ay hindi nakikita mula sa labas. Kapag nagpapasa ng mga bagay, ang isang pointer sa data na naaayon sa bagay na iyon ay kinokopya.
Задача Функция сортирующая массив элементов 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) на любом удобном вам языке, с использованием дополнительной памяти or без нее, How вам будет быстрее or удобнее в реализации. Если у вас получится - с радостью ждем вас для прохождения дополнительного тестирования. Мой ответ: Алгоритм, описываемый в примере "Псевдоcodeа" - это алгоритм сортировки слиянием (Merge sort). Основная задача нашей функции - отсортировать массив неупорядоченных чисел: например, по возрастанию. Задача разбирается на подзадачи: последовательность чисел из массива разбивается на массивы меньшего размера до тех пор, пока массив не станет однозначным, происходит сравнение элементов массивов, их замена (меньшее на большее, по индексу), слияние.
Разбор типичного тестового задания на позицию разработчика - 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
Ссылка с рабочим codeом на Ideone: ТУТ Задача была успешно сдана, после чего пригласor на интервью, где, instead of собеседования, в меня кинули очередную порцию подобных задач и удалorсь на два часа, выдав ручку и 2 листочка А4. Забрали листочки, не посмотрев в них, и сказали, что перезвонят. Мое удовольствие от подобного времяпрепровождения не описать цензурными словами. Но, How минимум, это та суровая реальность, с которой многим придется столкнуться в начале своего пути.
Разбор типичного тестового задания на позицию разработчика - 4
Искренне желаю Вам интересных и конструктивных собеседований. С умом выбирайте работодателя. Всем добра!) П.С.: мой обзор компаний-работодателей за апрель 2018 (Санкт-Петербург) можно посмотреть ТУТ
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION