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.
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
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.
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
- Pełny etat, pełny etat
- Realizacja zadań o niskiej złożoności pod okiem programisty
- Stały wzrost kwalifikacji
- Poznanie zasad programowania strukturalnego, teoria relacyjnych baz danych.
- Odpowiedzialność, samodzielność, inicjatywa
- Komunikatywność, umiejętność i chęć pracy w zespole
- Wysoka zdolność uczenia się
- Wiedza
- sql;
- Pl\sql;
- Pl\pgSql;
- C++, Java, Pascal.
- 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
- Wcięcie od lewego marginesu wskazuje poziom zagnieżdżenia.
- Pętle while, for, Repeat i konstrukcje warunkowe mają takie samo znaczenie jak w Pascalu.
- Symbol „--” oznacza komentarz
- Symbol „:=” oznacza przypisanie
- Zmienne są lokalne dla procedury, chyba że zaznaczono inaczej
- Indeks tablicy zapisany jest w nawiasach kwadratowych, konstrukcja A[i] oznacza element i w tablicy A
-
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.
- Wskaźnik może mieć specjalną wartość NIL, która nie wskazuje na żaden obiekt.
- 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.
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;
}
}
GO TO FULL VERSION