Aujourd'hui, j'aimerais examiner les termes de référence du poste de développeur stagiaire. Il était une fois je l'ai écrit : je souhaite partager mes réflexions à ce sujet. Il sera utile aux débutants d'avoir une idée de ce qui les attend dans le futur lorsqu'ils trouveront un emploi.
Le poste vacant est le suivant : Développeur PostgreSQL stagiaire à partir de 30 000 RUB. avant déduction de l'impôt sur le revenu des personnes physiques LLC Business Technologies Saint-Pétersbourg, Kolomyazhsky Prospekt, 33k2 Business Technologies Expérience professionnelle requise : non requise
Lien avec le code de travail vers Ideone : ICI La tâche a été accomplie avec succès, après quoi j'ai été invité à un entretien, où, au lieu d'un entretien, ils m'ont lancé un autre lot de tâches similaires et sont partis pendant deux heures, me donnant un stylo et 2 morceaux de papier A4. Ils ont pris les feuilles sans les regarder et ont dit qu'ils rappelleraient. Le plaisir que procure un tel passe-temps ne peut être décrit avec des mots censurés. Mais c’est au minimum la dure réalité à laquelle beaucoup devront faire face au début de leur voyage.
Je vous souhaite sincèrement des entretiens intéressants et constructifs. Choisissez judicieusement votre employeur. Bonne chance !) P.S. : mon bilan des entreprises qui emploient pour avril 2018 (Saint-Pétersbourg) peut être consulté ICI
- Temps plein, temps plein
- Mise en œuvre de tâches peu complexes sous la direction d'un développeur
- Croissance constante des qualifications
- Compréhension des principes de programmation structurée et de la théorie des bases de données relationnelles.
- Responsabilité, indépendance, initiative
- Compétences en communication, capacité et désir de travailler en équipe
- Haute capacité d'apprentissage
- Connaissance
- SQL ;
- Pl\sql;
- Pl\pgSql;
- C++, java, pascal.
- Travailler dans une entreprise stable et en développement dynamique
- Conditions de travail confortables
- Manque de formalisme et de bureaucratie
- De nombreuses opportunités d'évolution professionnelle et de carrière
- Salaire basé sur les résultats de l'entretien
- Inscription selon le Code du travail, congés payés conformément à la législation du travail.
- Veuillez indiquer le code d'emploi dans l'en-tête de la lettre : Projet04
- L'indentation à partir de la marge gauche indique le niveau d'imbrication.
- Les boucles while, for, répétition et les constructions conditionnelles ont la même signification qu'en Pascal.
- Le symbole « -- » indique un commentaire
- Le symbole « :=" » indique l'affectation
- Les variables sont locales à la procédure, sauf indication contraire
- L'index du tableau est écrit entre crochets, la construction A[i] signifie le i élément du tableau A
-
Il est possible d'utiliser des objets constitués de plusieurs champs ou possédant plusieurs attributs ; les valeurs des champs s'écrivent sous la forme FieldName[ObjectName].
Par exemple, la longueur du tableau A s'écrit sous la forme Longueur[A] ; la signification des crochets est déterminée par le contexte (une variable désignant un tableau ou un objet est un pointeur vers ses données constitutives). Après avoir attribué y:=x pour n'importe quel champ f, l'égalité f[y]=f[x] sera satisfaite ; Déterminer si un attribut est une fonction, une variable ou autre chose se fait par le contexte.
- Un pointeur peut avoir la valeur spéciale NIL, qui ne pointe vers aucun objet.
- Les paramètres sont transmis par valeur : la procédure appelée reçoit sa propre copie des paramètres ; les modifications apportées aux paramètres à l'intérieur de la procédure ne sont pas visibles de l'extérieur. Lors du passage d'objets, un pointeur vers les données correspondant à cet objet est copié.
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