JavaRush /Blog Java /Random-PL /Analiza typowego zadania testowego dla stanowiska program...
Uniges
Poziom 35
Санкт-Петербург

Analiza typowego zadania testowego dla stanowiska programisty

Opublikowano w grupie Random-PL
Dzisiaj chciałbym przyjrzeć się zakresowi obowiązków na stanowisko programisty-stażysty. Już kiedyś to pisałam: Chcę podzielić się swoimi przemyśleniami na ten temat.Początkującym przyda się zorientowanie, co ich czeka w przyszłości przy poszukiwaniu pracy.
Analiza typowego zadania testowego na stanowisko programisty - 1
Wolne stanowisko jest następujące: Stażysta programista PostgreSQL od 30 000 RUB. przed odliczeniem podatku dochodowego od osób fizycznych LLC Business Technologies St. Petersburg, Kołomyazhsky Prospekt, 33k2 Business Technologies Wymagane doświadczenie zawodowe: nie wymagane
  • Pełny etat, pełny etat
Obowiązki:
  • Realizacja zadań o niskiej złożoności pod okiem programisty
  • Stały wzrost kwalifikacji
Wymagania:
  • Poznanie zasad programowania strukturalnego, teoria relacyjnych baz danych.
  • Odpowiedzialność, samodzielność, inicjatywa
  • Komunikatywność, umiejętność i chęć pracy w zespole
  • Wysoka zdolność uczenia się
Pożądany:
  • Wiedza
  • sql;
  • Pl\sql;
  • Pl\pgSql;
  • C++, Java, Pascal.
Warunki:
  • Pracę w stabilnej, dynamicznie rozwijającej się firmie
  • Komfortowe warunki pracy
  • Brak formalizmu i biurokracji
  • Szerokie możliwości rozwoju zawodowego i kariery
  • Wynagrodzenie uzależnione od wyników rozmów kwalifikacyjnych
  • Rejestracja zgodnie z Kodeksem pracy, płatny urlop zgodnie z przepisami prawa pracy.
  • W nagłówku listu proszę podać kod stanowiska: Projekt04
Opis zadania testowego: Test ma na celu samokontrolę, aby kandydat samodzielnie mógł ocenić, czy warto spędzać czas na rozmowie kwalifikacyjnej. Pseudokod Ten pseudokod służy do opisu algorytmów.
  1. Wcięcie od lewego marginesu wskazuje poziom zagnieżdżenia.
  2. Pętle while, for, Repeat i konstrukcje warunkowe mają takie samo znaczenie jak w Pascalu.
  3. Symbol „--” oznacza komentarz
  4. Symbol „:=” oznacza przypisanie
  5. Zmienne są lokalne dla procedury, chyba że zaznaczono inaczej
  6. Indeks tablicy zapisany jest w nawiasach kwadratowych, konstrukcja A[i] oznacza element i w tablicy A
  7. Możliwe jest wykorzystanie obiektów składających się z kilku pól lub posiadających kilka atrybutów, wartości pól zapisywane są w postaci FieldName[ObjectName].

    Na przykład długość tablicy A jest zapisywana jako Długość[A]; znaczenie nawiasów kwadratowych zależy od kontekstu (zmienna oznaczająca tablicę lub obiekt jest wskaźnikiem do danych składowych). Po przypisaniu y:=x dowolnemu polu f równość f[y]=f[x] będzie spełniona; Określenie, czy atrybut jest funkcją, zmienną czy czymkolwiek innym, odbywa się na podstawie kontekstu.

  8. Wskaźnik może mieć specjalną wartość NIL, która nie wskazuje na żaden obiekt.
  9. Parametry przekazywane są przez wartość: wywoływana procedura otrzymuje własną kopię parametrów; zmiany parametrów wewnątrz procedury nie są widoczne z zewnątrz. Podczas przekazywania obiektów kopiowany jest wskaźnik do danych odpowiadających temu obiektowi.
Zadanie Funkcja sortująca tablicę elementów A: Sort(A,p,r) 1 jeśli p < r 2 to q := round_half_down((p+r)/2) 3 Sort(A,p,q) 4 Sortuj (A,q +1,r) 5 Merge(A,p,q,r) Przykład tablicy: A = (5,2,4,6,1,3,2,6) Przykład uruchomienia: Sort(A,1 ,length[A ]) Wymagane: Opracuj algorytm funkcji Merge(A,p,q,r) w dowolnym dogodnym dla Ciebie języku, z użyciem dodatkowej pamięci lub bez, w zależności od tego, który z nich jest szybszy lub wygodniejszy do wdrożenia . Jeśli Ci się to uda, z przyjemnością powitamy Cię na dodatkowych testach. Moja odpowiedź: Algorytm opisany w przykładzie pseudokodu to algorytm sortowania przez scalanie. Głównym zadaniem naszej funkcji jest posortowanie tablicy liczb nieuporządkowanych: na przykład w kolejności rosnącej. Zadanie podzielone jest na podzadania: sekwencja liczb z tablicy jest dzielona na mniejsze tablice, aż tablica stanie się jednowartościowa, elementy tablic są porównywane, zastępowane (mniejsze przez większe, według indeksu) i łączone.
Analiza typowego zadania testowego na stanowisko programisty - 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
Link z działającym kodem do Ideone: TUTAJ Zadanie zostało pomyślnie wykonane, po czym zostałem zaproszony na rozmowę kwalifikacyjną, gdzie zamiast rozmowy kwalifikacyjnej rzucili mi kolejną porcję podobnych zadań i zostawili na dwie godziny, podając długopis i 2 kartki formatu A4. Wzięli liście, nie patrząc na nie i powiedzieli, że oddzwonią. Mojej przyjemności płynącej z takiej rozrywki nie da się opisać ocenzurowanymi słowami. Ale przynajmniej jest to trudna rzeczywistość, z którą wielu będzie musiało się zmierzyć na początku swojej podróży.
Разбор типичного тестового задания на позицию разработчика - 4
Szczerze życzę ciekawych i konstruktywnych wywiadów. Wybierz pracodawcę mądrze. Wszystkiego najlepszego!) P.S. Mój przegląd firm zatrudniających za kwiecień 2018 (St. Petersburg) można zobaczyć TUTAJ
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION