JavaRush /Blog Java /Random-FR /Analyse d'une tâche de test typique pour un poste de déve...
Uniges
Niveau 35
Санкт-Петербург

Analyse d'une tâche de test typique pour un poste de développeur

Publié dans le groupe Random-FR
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.
Analyse d'une tâche de test typique pour un poste de développeur - 1
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
  • Temps plein, temps plein
Responsabilités:
  • Mise en œuvre de tâches peu complexes sous la direction d'un développeur
  • Croissance constante des qualifications
Exigences:
  • 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
Souhaitable:
  • Connaissance
  • SQL ;
  • Pl\sql;
  • Pl\pgSql;
  • C++, java, pascal.
Conditions:
  • 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
Description de la tâche de test : Le test est destiné à la maîtrise de soi afin que le candidat puisse déterminer lui-même s'il vaut la peine de consacrer son temps à un entretien. Pseudocode Ce pseudocode est utilisé pour décrire des algorithmes.
  1. L'indentation à partir de la marge gauche indique le niveau d'imbrication.
  2. Les boucles while, for, répétition et les constructions conditionnelles ont la même signification qu'en Pascal.
  3. Le symbole « -- » indique un commentaire
  4. Le symbole « :=" » indique l'affectation
  5. Les variables sont locales à la procédure, sauf indication contraire
  6. L'index du tableau est écrit entre crochets, la construction A[i] signifie le i élément du tableau A
  7. 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.

  8. Un pointeur peut avoir la valeur spéciale NIL, qui ne pointe vers aucun objet.
  9. 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é.
Problème Une fonction qui trie un tableau d'éléments 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) Exemple de tableau : A = (5,2,4,6,1,3,2,6) Exemple d'exécution : Sort(A,1 ,length[A ]) Obligatoire : Développez un algorithme pour la fonction Merge(A,p,q,r) dans n'importe quel langage qui vous convient, avec ou sans utilisation de mémoire supplémentaire, selon ce qui est le plus rapide ou le plus pratique à implémenter pour vous. . Si vous réussissez, nous serons heureux de vous accueillir pour des tests supplémentaires. Ma réponse : L'algorithme décrit dans l'exemple de pseudocode est l'algorithme de tri par fusion. La tâche principale de notre fonction est de trier un tableau de nombres non ordonnés : par exemple, par ordre croissant. Le problème est divisé en sous-tâches : la séquence de nombres du tableau est divisée en tableaux plus petits jusqu'à ce que le tableau devienne à valeur unique, les éléments des tableaux sont comparés, ils sont remplacés (plus petits par plus grands, par index) et fusionnés.
Analyse d'une tâche de test typique pour un poste de développeur - 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;
    }
}
Analyse d'une tâche de test typique pour un poste de développeur - 3
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.
Analyse d'une tâche de test typique pour un poste de développeur - 4
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
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION