Developement logiciel: Entrevue technique via codility

Répondre
Partager Rechercher
Je dois me préparer pour une entrevue technique qui aura lieu sur Codility. C'est la première fois en 6 ans que je suis intéressé par un poste donc on va dire que j'aimerais me rendre au bout.
L'entreprise est une compagnie de pointe qui dans le cadre de ses activités doit fournir du code très performant. Le poste que je me suis fait offrir consiste à faire de la qualité, mettre en place la stratégie de tests et l'intégration continue.

En conséquence je me suis acheté un petit cours sur le type de problèmes qui y sont posés et j'ai commencé à m’entraîner, cependant je rencontre quelques difficultés:

- Je n'ai pas du tout un profil algorithmique, et je déteste ça, c'est toujours du code illisible et dès que tu essaies de le rendre clair tout pète ou est moins performant. Les tests ne sont que pure algo.
- Codility ne donne pratiquement aucun cas de test. Hors si je suis capable de générer des tableaux de plusieurs centaines de milliers d'entrées, je ne suis pas capable de prédire le résultat attendu. Du coup ben je peux pas tester ou débugger mes soumissions. Ce qui est absurde en soit, c'est comme si j'envoyais mon code non testé chez le client. C'est l'inverse de la job qu'on me demande en fait.

Mes entrevues techniques habituellement c'est en face du gars, comme ça on peut discuter, il voit comment je réfléchis et comment je réagis à ses inputs/conseils. À la fin je trouve pas la réponse aux exos mais le gars est content. Sauf que là je suis tout seul devant un pc quoi.

Avez vous des ressources à me conseiller pour me préparer ? Peut - être des endroits ou je pourrais trouver des cas de tests appropriés ?

La plateforme: https://www.codility.com/

Merci
Je n'utilise pas codility mais je revois regulierement des candidatures de SDE, SDET, QAE qui ont eu un screening via une plateforme similaire.
Le recruteur va theoriquement pouvoir:
Voir ton code final,
voir la video de to code ce qui permet de voir si certains ont fait du copier/coller la vitesse, l'evolution etc... (bien qu'on ne va utiliser cette fonction qu'en cas de doute vis a vis des autres indicateurs)
voir le nombre de fois ou l'app/page a perdu le focus
voir le resultats des tests. Meme si tu n'ecris pas directement les tests, la plateforme elle a une suite de test pour chaque exo et donne un % de passage.

Tu as essaye de poser la question a ton recruteur? Certains peuvent te fournir de la doc sur le type de questions, exemple etc... Tu aurais aussi l'intitule du poste? Vu qu'il te font passe un test d'algo et de ce que tu decrit, le poste correspond a un QAE voir SDET. Du coup la partie algo est une part non negligeable du job et on part du principe que si le candidat doit avoir une bonne base d'algorithmique (similaire a celle d'un SDE-1).

Je dirais que t'oriente vers des exo de preparation pour SDE-1 pour tout ce qui est algorithmes et structure de donnees est un bon debut.
https://medium.com/afteracademy/100-...ws-269391b8ff8
sinon le classique: https://www.amazon.com/Cracking-Codi.../dp/0984782850
Ouais justement ça m'inquiète un peu car l'IDE interne est un peu pourri et je me suis mis à étudier le langage seulement depuis qu'ils m'ont contactés (ils le savent très bien, ils m'offrent aussi de le passer en C++ mais ça fait 8 ans, je préfère apprendre le C# en une semaine lol).

Du coup je préfère largement coder avec Rider puis copier coller mais ça risque d'être mal vu.

Voici les détails de l'offre:


Citation :
  • ✓ Définir et piloter les plans d’assurance qualité pour les projets
  • ✓ Collaborer avec l’équipe de développement pour tester les nouvelles fonctionnalités et corriger les bogues
  • ✓ Développer et améliorer nos tests automatisés, notre environnement et nos infrastructures
  • ✓ Inciter et aider l’équipe à constamment améliorer la qualité de nos projets
  • ✓ Collaborer avec notre équipe existante pour soutenir nos forums de développeurs
  • ✓ Compétences en langage C# et de script (python, js ou ruby)
  • ✓ Don naturel à enquêter afin de résoudre des problèmes en cherchant la meilleure solution, et non la plus rapide
  • ✓ Expérience en tant que spécialiste de l’automatisation dans le développement et l’exécution de plans de test pour des systèmes de code de bas niveau sur de grands projets logiciels complexes
  • ✗ (2/3) Expérience dans les outils de performance, d’analyse de code et de débogage
  • ✓ Expérience avec les outils d’intégration et de développement en continu
  • ✗ Expérience avec des caméras numériques, des lidars ou d’autres types de capteurs
  • ✓ Expérience des simulateurs utilisés dans le contexte de la robotique, des manufactures ou des véhicules autonomes
Citation :
Je dirais que t'oriente vers des exo de preparation pour SDE-1 pour tout ce qui est algorithmes et structure de donnees est un bon debut.

https://medium.com/afteracademy/100-...ws-269391b8ff8


J'ai fait le premier marqué "Moyen", c'était une joke comparé aux "Moyens" de codility (après mon code peut être amélioré, utiliser des structures qui permettent d'éviter la répétition, mais dans un environment timé aussi strict c'est quelque chose qui vient après, surtout pour m'assurer de garder les complexité en O(n) et O(1)).

Dernière modification par Zangdar MortPartout ; 05/04/2021 à 19h21. Motif: Auto-fusion
code dans l'IDE fournit, clairement.
Sinon ca risque d'etre un red flag pour le systeme ou celui qui va revoir ton code (s'il y a une revue humaine).

Si tu as des exos d'entrainement deja dispo sur la plateforme cible, clairement utilise les. Non seulement ca te permettra de voir le type de questions attendues mais cela va aussi te familiarise avec la plateforme (s'il y a la complétion de code, quelles sont les librairies dispo s'il y en a, ou si c'est juste un editeur avec coloration syntaxique).
Ouais c'est ce que je fais, ils ont une librairie publique, et un gars à fait un cours ou il présente les problèmes les plus classiques, des conseils et leurs solutions.

Voici un exemple de problème:


Citation :
A prime is a positive integer X that has exactly two distinct divisors: 1 and X. The first few prime integers are 2, 3, 5, 7, 11 and 13.
A prime D is called a prime divisor of a positive integer P if there exists a positive integer K such that D * K = P. For example, 2 and 5 are prime divisors of 20.
You are given two positive integers N and M. The goal is to check whether the sets of prime divisors of integers N and M are exactly the same.
For example, given:
Citation :
  • N = 15 and M = 75, the prime divisors are the same: {3, 5};
  • N = 10 and M = 30, the prime divisors aren't the same: {2, 5} is not equal to {2, 3, 5};
  • N = 9 and M = 5, the prime divisors aren't the same: {3} is not equal to {5}.
Write a function:
Citation :
class Solution { public int solution(int[] A, int[] B); }
that, given two non-empty arrays A and B of Z integers, returns the number of positions K for which the prime divisors of A[K] and B[K] are exactly the same.
For example, given:
A[0] = 15 B[0] = 75
A[1] = 10 B[1] = 30
A[2] = 3 B[2] = 5
the function should return 1, because only one pair (15, 75) has the same set of prime divisors.
Write an efficient algorithm for the following assumptions:
Citation :
  • Z is an integer within the range [1..6,000];
  • each element of arrays A, B is an integer within the range [1..2,147,483,647].
Le range des données implique que l'algo doit être CPU O(log n) et RAM O(1)/O(log n). Sinon il ne passe pas les tests extrêmes et tu perds entre 25 et 50%.

Moi si je suis capable de faire des rotations matricielles ou d'en sortir des spirales, je suis pas capable à froid de faire autre chose que de la force brute pour ce genre de problèmes.
Citation :
Publié par Zangdar MortPartout
Ouais c'est ce que je fais, ils ont une librairie publique, et un gars à fait un cours ou il présente les problèmes les plus classiques, des conseils et leurs solutions.

Voici un exemple de problème:




Le range des données implique que l'algo doit être CPU O(log n) et RAM O(1)/O(log n). Sinon il ne passe pas les tests extrêmes et tu perds entre 25 et 50%.

Moi si je suis capable de faire des rotations matricielles ou d'en sortir des spirales, je suis pas capable à froid de faire autre chose que de la force brute pour ce genre de problèmes.
Il faut coder ça en combien de temps ?
Mdr heureusement que dans ma vie de dév j'ai pas eu à passer des évaluations pareilles...j'aurais été hyper nul
Je suis sûr de savoir le faire en force brute mais je sais aussi que je serais lent...
Citation :
Publié par Ex-voto
Il faut coder ça en combien de temps ?
Mdr heureusement que dans ma vie de dév j'ai pas eu à passer des évaluations pareilles...j'aurais été hyper nul
Je suis sûr de savoir le faire en force brute mais je sais aussi que je serais lent...
Ça dépend mais celui là je dirais 30min.
J'ai jamais rien fait dans les temps à date, 20 min environ pour ceux à faire en 15, 40 pour ceux à faire en 30.

Après c'est mieux force brute que rien mais bon, ça met l'emphase sur "produire un résultat" alors qu'en qualité on cherche à faire "bien, robuste et maintenable", techniquement ce résultat à pour valeur 0, alors quand je fais passer des entrevues techniques (je suis aussi de l'autre bord), je préfère voir un candidat qui me montrer qu'il raisonne dans un but long terme et qui à la fin ne trouve pas de réponse, qu'un autre qui va me pondre un algo dégueulasse, pas performant, mais va s'arrêter là en disant "ça marche, j'ai pas le temps de faire mieux". En entreprise on a rarement "le temps de faire mieux" et la seule façon d'y arriver c'est de le prendre.
Je +1 Mordreck sur le fait de coder dans l'IDE intégré, même s'il est merdique. Là ou par contre j'utilise différemment ces outils, c'est qu'à moins vraiment d'un résultat final désastreux (genre le truc compile même pas), je vais quasi systématiquement voir l'enregistrement du code, vu que c'est justement ce qui va m’intéresser le plus: comment la personne est arrivée à son résultat final. Du coup clairement, avec un copier/coller direct, bin tu loupes 80% de ce qui est intéressant à apprendre.

Pour la durée de 30min, honnêtement je m'en ferai pas trop: une durée sans mettre en face la qualité de ce qui est produit, c'est un peu débile et si la boite a un hard critère là dessus, limite ce serait un motif suffisant pour moi pour ne pas aller plus loin, y a des chances que le reste de la boite soit à l'avenant. Même si ici le problème est plutôt bien borné, y a quasi toujours moyen de trouver des edges cases, de faire des tests U, se poser des questions etc... Ce qui pour moi est bien plus intéressant que de finir pile en 30min !

Et après ce genre de problèmes honnêtement, à part si tu candidates chez un GAFAM ou truc du genre qui reçoit des milliers de candidatures et doivent donc faire du tri, ça me donne vraiment pas confiance dans le boite: c'est le type d'exo d'algo classique que tu trouves dans tous les bouquins qui te préparent justement aux entretiens des GAFAM, du coup à part la capacité au bachottage (et donc à trier le volume), j'ai jamais trouvé que ça validait quoique ce soit chez un candidat
Ben là ce sont eux qui me débauchent donc je pense pas qu'il y ai trop de concurrence en ce moment (ils ont aussi contacté mes collègues par contre).

Je crois que c'est surtout pour standardiser leur process et éviter les biais. Cela dit comme tu le soulignes l'important dans ce genre de tests c'est le processus de réflexion mais aussi comment le candidat réagit aux conseils/indices qu'on peut lui donner et de voir sa réaction quand il est bloqué par une problématique, est-ce qu'il fige ou il stresse ? Et je crois que tout ça est perdu même avec un enregistrement.

De mon côté c'est évident que j'ai un biais avec certains candidats vu que le courant va plus ou moins passé, et que je vais plus ou moins les aider en fonction de la discussion que j'ai avec eux sur un problème. Mais bosser avec quelqu'un c'est aussi ça. Pour moi l'entrevue technique c'est un moyen de voir si le type est pas à la ramasse, et si je suis capable de travailler avec lui sur une problématique concrète.

Je donnerais le nom de la boite quand tout ça sera terminé (si j'ai une offre que j'accepte ! ). Ce n'est pas un GAFAM, mais vous la connaissez tous, et c'est pour un groupe "d'automation" (entre guillemets car c'est pas vraiment ça).
Ces tests sont surtout la pour faire le tri initial. la discussion, processus de reflexion etc... interviennent effectivement apres dans le processus quand tu vas avoir le ou les entretiens technique. Du moins j'espere que la boite ne se base pas exclusivement sur ce genre de tests puisqu'effectivement les interactions sont limites.
Dans les grosses boites (dans mon cas un GAFAM) le but c'est surtout de ne pas avoir de faux positif (un candidat qui n'est pas adapte au job) au risque (accepte) d'avoir des faux negatif (un bon candidat qui est refuse). Un candidat qui passe le screening initial, c'est a minima 2H par interviewer (et en general il va en avoir 4) entre la preparation, l'entretien lui-meme et le debrief. Soit une journee complete de boulot. Donc on filtre.
Citation :
Publié par Mordreck
Ces tests sont surtout la pour faire le tri initial. la discussion, processus de reflexion etc... interviennent effectivement apres dans le processus quand tu vas avoir le ou les entretiens technique. Du moins j'espere que la boite ne se base pas exclusivement sur ce genre de tests puisqu'effectivement les interactions sont limites.
J'ai déjà eu deux entrevues, une première de 40 min avec la rh, et une seconde de 1h30 avec le manager.
Après le test technique, c'est encore 1h d'entrevue avec le tech lead, et on parle du test justement.

Bon là je croise les doigts j'attends une réponse pour savoir si justement j'y vais au test ou pas.

Tu es à quel GAFAM ?
Bon j'ai eu l'appel et donc je vais bien passer le test technique. Les deux personnes qui m'ont rencontré on semble t'il beaucoup aimé les interviews.
Je vais recevoir les liens sous peu

Ils m'ont de prendre mon temps, 1 à 2 semaines si je voulais, avant de prendre le test.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés