Today I would like to look at the terms of reference for the position of intern developer. Once upon a time I wrote it: I want to share my thoughts on this matter. It will be useful for beginners to have an idea of what awaits them in the future when finding a job.
The vacancy is as follows: Trainee PostgreSQL developer from RUB 30,000. before deduction of personal income tax LLC Business Technologies St. Petersburg, Kolomyazhsky Prospekt, 33k2 Business Technologies Required work experience: not required
Link with working code to Ideone: HERE The task was successfully completed, after which I was invited to an interview, where, instead of an interview, they threw another batch of similar tasks at me and left for two hours, giving me a pen and 2 A4 pieces of paper. They took the leaves without looking at them and said that they would call back. My pleasure from such a pastime cannot be described in censored words. But, at a minimum, this is the harsh reality that many will have to face at the beginning of their journey.
I sincerely wish you interesting and constructive interviews. Choose your employer wisely. All the best!) P.S.: my review of employing companies for April 2018 (St. Petersburg) can be viewed HERE
- Full time, full time
- Implementation of low complexity tasks under the guidance of a developer
- Constant growth of qualifications
- Understanding of the principles of structured programming, the theory of relational databases.
- Responsibility, independence, initiative
- Communication skills, ability and desire to work in a team
- High learning ability
- Knowledge
- Sql;
- Pl\sql;
- Pl\pgSql;
- C++, java, pascal.
- Work in a stable, dynamically developing company
- Comfortable working conditions
- Lack of formalism and bureaucracy
- Extensive opportunities for professional and career growth
- Salary based on interview results
- Registration according to the Labor Code, paid leave in accordance with labor legislation.
- Please indicate the job code in the header of the letter: Project04
- Indentation from the left margin indicates the level of nesting.
- Loops while, for, repeat and conditional constructs have the same meaning as in Pascal.
- The symbol “--” indicates a comment
- The symbol “:=” denotes assignment
- Variables are local to the procedure unless otherwise stated
- The array index is written in square brackets, the construction A[i] means the i element in array A
-
It is possible to use objects consisting of several fields or having several attributes; the field values are written as FieldName[ObjectName].
For example, the length of array A is written as Length[A]; what the square brackets mean is determined by the context (a variable denoting an array, or an object is a pointer to its constituent data). After assigning y:=x for any field f the equality f[y]=f[x] will be satisfied; Determining whether an attribute is a function, a variable, or anything else is done by context.
- A pointer can have the special value NIL, which does not point to any object.
- Parameters are passed by value: the called procedure receives its own copy of the parameters; changes to the parameters inside the procedure are not visible from the outside. When passing objects, a pointer to the data corresponding to that object is copied.
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