Nous continuons à parler des entretiens techniques (si vous n'avez pas lu, regardez les articles précédents de la série -
sur les entretiens avec les RH et les
techniciens ). Cette fois, il y aura une expérience plus subjective, un minimum de conseils, ainsi qu'un peu de tùches de test et de questions théoriques. Allons-y.
Avis de non-responsabilité: l'auteur n'est pas un développeur turbo, mais un macaque Web régulier sans aucune plainte. Par conséquent, les tùches et les solutions ci-dessus peuvent vous faire sourire, faire des fesses et désirer et vouloir indiquer à l'auteur son incompétence. J'ai hùte de vous voir dans les commentaires! :)Discussion des éléments de test terminés
Dans la
derniÚre partie, j'ai décrit comment j'ai effectué deux tùches de test: la premiÚre sur DevOps Engineer, la seconde sur Ruby Developer. Je vais vous dire ce qui s'est passé ensuite.
Entretien avec Ruby Developer - l'intervieweur n'a mĂȘme pas regardĂ© mon test, ne lui a pas posĂ© de questions, n'a pas complimentĂ© (j'ai terminĂ© la tĂąche mieux que tous les candidats prĂ©cĂ©dents, du moins le recruteur m'a flattĂ©). Il semble qu'il ne savait mĂȘme pas de lui. Cela m'a un peu bouleversĂ©, car alors ils ont commencĂ© Ă me demander la thĂ©orie, et, par consĂ©quent, ils ont refusĂ© par le biais de la thĂ©orie.
Interview sur DevOps Engineer - l'intervieweur a regardĂ© la mission, a fait un compliment (a dĂ©clarĂ© que je l'avais terminĂ© qualitativement) et a posĂ© quelques questions de contrĂŽle sur la solution: pourquoi cette ligne est-elle ici? si vous remplacez la condition par celle-ci, dans quel fichier devrez-vous procĂ©der? pourquoi cette approche est-elle utilisĂ©e ici? et ainsi de suite. Comme me l'a dit le recruteur, certains candidats n'ont pas effectuĂ© de tĂąches par eux-mĂȘmes et n'ont pas pu rĂ©pondre Ă ces questions. Par consĂ©quent, ici, j'ai rĂ©ussi sans problĂšme.
Dans le premier cas, je n'ai pas demandé à la personne interrogée s'il avait regardé ma tùche de test et ce qu'il en pensait. Mais c'était nécessaire! Si vous avez une telle situation, assurez-vous d'en parler à vos interlocuteurs.
TĂąches d'entrevue
Nous continuons le sujet des tùches de test de la partie précédente et considérons les tùches de codage lors des entretiens.
Il peut y avoir plusieurs types de tùches: implémenter un algorithme, écrire une solution en pseudo-code, refactoriser quelque chose, etc. Nos ingénieurs adorent les problÚmes algorithmiques.
Beaucoup de gens, y compris moi-mĂȘme, pensent que ces tĂąches ne montrent que la capacitĂ© du candidat Ă rĂ©soudre de tels problĂšmes, et ne montrent pas du tout comment il va faire face Ă des tĂąches de travail rĂ©elles, qui, en rĂšgle gĂ©nĂ©rale, sont de niveau supĂ©rieur. Pourquoi leur donnent-ils encore? Je pense que la raison est simple: les enquĂȘteurs ne sont tout simplement pas en mesure de trouver quelque chose de mieux. Et comme nous ne pouvons rien trouver de mieux, prenons les bonnes inversions de la vieille ligne, le tri, l'Ă©quilibrage des arbres, etc.
En tant qu'outils utilisés pour la solution, l'éditeur de code + repl + la possibilité de collaboration est le mieux adapté. De toutes les options sur le marché, j'aime
le plus CoderPad . Une salle est créée oĂč vous et les enquĂȘteurs vous connectez, vous pouvez Ă©diter, exĂ©cuter du code ensemble et regarder les rĂ©sultats de l'exĂ©cution. TrĂšs confortable. S'il n'y a pas d'argent pour un codepad,
repl.it se lance dans la bataille et le partage d'Ă©cran est fondamentalement le mĂȘme, mais sans possibilitĂ© de collaboration.
Mise Ă jour: pendant la traduction de l'article, repl.it a ajoutĂ© le mode multijoueur, qui permet Ă un nombre illimitĂ© de participants de travailler simultanĂ©ment avec le code. Totalement gratuit! CoderPad n'est plus nĂ©cessaire, cheers!J'ai eu un entretien avec l'entreprise pour le poste de dĂ©veloppeur Java . L'entreprise fait quelque chose comme CRM et Ă©crit un tas d'intĂ©grations. J'ai contactĂ© un spĂ©cialiste technique Zoom et il dit: "Commençons par le problĂšme algorithmique." Je rĂ©ponds: "D'accord, je vais faire la tĂąche, mais j'ai une question: avez-vous besoin de ces connaissances dans votre travail, avez-vous besoin de rĂ©soudre des choses similaires?" Ă quoi j'obtiens une rĂ©ponse phĂ©nomĂ©nale: "Nous Ă©crivons des points de terminaison de repos et conduisons json-chiki dans les deux sens, mais ce n'est pas intĂ©ressant d'en parler , alors rĂ©solvons le problĂšme." C'est-Ă -dire que l'intervieweur lui-mĂȘme a reconnu son incompĂ©tence. Je ne sais pas qui comment, mais Ă partir de ce moment, j'ai rĂ©alisĂ© que je n'aurais rien Ă attraper lĂ -bas. Cependant, par intĂ©rĂȘt sportif, la conversation s'est poursuivie.
Nous avons ouvert le pavé de codage et procédé à la tùche, dont la condition m'a été exprimée oralement: "Trouver la plus longue séquence de caractÚres uniques dans une chaßne donnée." AprÚs cela, l'intervieweur a déclaré que «l'on pourrait donner une tùche à la programmation dynamique , mais nous nous limiterons à une option plus simple». J'aimerais regarder sérieusement la personne qui se chargera de la programmation dynamique lors des entretiens.
J'ai rĂ©pĂ©tĂ© les conditions de la tĂąche Ă l'enquĂȘteur pour m'assurer de bien le comprendre, auquel j'ai reçu une rĂ©ponse affirmative et commencĂ© Ă travailler. Au bout de 5 minutes, il s'est avĂ©rĂ© que je comprenais tout de mĂȘme mal le problĂšme, car il fallait trouver non pas une sous-chaĂźne, mais sa longueur (c'est plus facile). Cependant, j'ai rĂ©pondu: "Eh bien, depuis qu'ils ont commencĂ©, rĂ©solvons le problĂšme avec un astĂ©risque, et pas avec un simple." L'intervieweur Ă©tait un peu confus, car il avait prĂ©parĂ© les tests spĂ©cifiquement pour ses conditions, mais j'ai dĂ©jĂ dĂ©cidĂ© que je ne donnerais pas le dos et essayerais de le faire tel quel. J'ai demandĂ© combien de temps j'avais (environ 40 minutes) et j'ai commencĂ© Ă coder. Je note que, malgrĂ© le fait que je savais qu'ils allaient confier des missions, je ne me prĂ©parais pas spĂ©cialement.
J'ai donc immĂ©diatement Ă©crit des tests et commencĂ© Ă chamaniser avec les indices i, j et k :) Boucles en boucles, etc. Au bout de 15-20 minutes, j'ai eu une solution Ă demi-travail, mais les cas limites que l'intervieweur a donnĂ©s n'ont pas Ă©tĂ© traitĂ©s. Encore 20 minutes leur ont pris, Ă la fin, j'ai toujours correctement terminĂ© la tĂąche. L'enquĂȘteur semblait satisfait, puis a commencĂ© Ă me poser des questions sur les structures de donnĂ©es. Il s'est avĂ©rĂ© que pour rĂ©soudre le problĂšme qu'il voulait donner au dĂ©part, il serait possible d'utiliser un hashset, ou quelque chose comme ça, et il s'attendait Ă une telle solution, mais j'ai tout cassĂ©.
Ensuite, nous avons parlĂ© un peu du projet (formes et piles). Et puis il dit: «AprĂšs cela, il y aura une interview sur la conception du systĂšme. En gĂ©nĂ©ral, je ne vois aucune raison de le faire, car nous ne le faisons pas ici et nous n'avons pas besoin de telles connaissances, mais l'ordre est l'ordre, donc la prochaine Ă©tape est la suivante. Eh bien, vous comprenez - deux (!) Entrevues sont menĂ©es pour comprendre si le candidat peut faire des choses qui ne sont pas nĂ©cessaires dans le travail quotidien dans cette entreprise. Puis je me suis permis de parler un peu du vide de sens de ces entretiens. L'enquĂȘteur Ă©tait d'accord avec moi, mais a de nouveau inclus la dĂ©lĂ©gation de responsabilitĂ© et a dĂ©clarĂ©: "Je ne dĂ©cide pas quel devrait ĂȘtre le processus, alors nous faisons ce que nous faisons." J'ajouterai que je suis passĂ© par la deuxiĂšme interview (sur la conception du systĂšme) et qu'elle Ă©tait aussi dĂ©nuĂ©e de sens que la premiĂšre.
Quelle erreur l'intervieweur a commise - il n'a pas fixé les conditions de la tùche dans le texte. Lorsque j'ai mené de tels entretiens, j'ai simplement copié les conditions de la tùche dans l'éditeur de code pour que le candidat n'ait pas de questions.
Quelle erreur j'ai commise - je me suis immĂ©diatement prĂ©cipitĂ© pour Ă©crire le code, sans prĂ©ciser trois fois si j'avais bien compris la condition. Si vous ĂȘtes chargĂ© de telles tĂąches lors des entretiens,
déconnectez-vous immédiatement du chat et trouvez-vous une leçon plus intéressante; vérifiez plusieurs fois si vous avez bien compris la condition, écrivez un test dans l'éditeur et vous recevrez une confirmation de l'intervieweur que tout est correct.
J'ai également eu une interview pour le poste de développeur Ruby . AprÚs avoir rencontré et posé des questions par défaut, on m'a confié la tùche d'écrire la méthode each_slice. Pour ceux qui ne le savent pas, c'est une telle chose qui frappe un tableau de sous-réseaux d'une taille donnée et exécute pour chacun d'eux un bloc que nous avons passé à la méthode, ou renvoie un itérateur sur ces sous-réseaux. Je me suis assis pour écrire, puis j'ai allumé le tuping. Le problÚme est que sur Ruby, pendant un certain temps, je n'ai été engagé avec succÚs que dans le web macing et, en tant que liste blanche de référence, je ne connaissais pas certaines des constructions de base du langage. à savoir - je ne savais pas que l'index de la boucle for est immuable (contrairement, par exemple, à Java).
J'ai Ă©crit la mĂ©thode elle-mĂȘme plus ou moins rapidement, mais cela n'a pas fonctionnĂ© et je ne comprenais pas pourquoi. J'ai commencĂ© Ă paniquer un peu, j'ai tout supprimĂ© et j'ai encore Ă©crit, mais mon code n'a pas fonctionnĂ© comme il se doit.
"Ăa n'a pas marchĂ©", ai-je pensĂ©, et j'ai dit Ă mes interlocuteurs: "Les gars, vous savez, je suis bon en hĂ©bergement de sites Web et en projets, mais je ne rĂ©ussis pas avec vos tĂąches stupides. Je comprends que c'est une tĂąche simple et qu'une personne avec 10 ans d'expĂ©rience est simplement obligĂ©e de le faire rapidement. Alors, ne me retardez plus et nous nous disperserons. » Les gars ont acceptĂ© et se sont sĂ©parĂ©s.
J'ai Ă©tĂ© sĂ©rieusement bombardĂ©e parce que je n'avais pas l'habitude de perdre si facilement. Afin d'entrer en quelque sorte dans un plus existentiel, j'ai Ă©crit Ă un recruteur que j'avais dĂ©composĂ© sur une tĂąche qui n'Ă©tait pas liĂ©e au vrai travail. Puis il s'est calmĂ©, s'est assis, a rapidement testĂ© le fonctionnement des index en cycles. J'ai rĂ©alisĂ© que j'avais fait une erreur junior, refait l'index et obtenu une solution toute faite. En fait, l'erreur que j'ai eue Ă©tait sur la mĂȘme ligne. J'en ai parlĂ© aux RH et lui ai suggĂ©rĂ© de transmettre le lien vers la solution aux gars s'ils Ă©taient intĂ©ressĂ©s, car j'ai toujours rĂ©solu le problĂšme. Mais elle a rĂ©pondu: "Vous n'ĂȘtes pas allĂ© plus loin parce que vous n'avez pas rĂ©solu le problĂšme, au revoir ." J'ai encore un peu compris les processus d'entrevue brisĂ©s afin de nous justifier en quelque sorte et nous nous sommes sĂ©parĂ©s.
AprĂšs cela, j'ai repensĂ© mon attitude face Ă de telles tĂąches. Habituellement, cela n'a jamais Ă©tĂ© un problĂšme pour moi de coder quelque chose sous supervision, mais plusieurs facteurs ont fonctionnĂ© ici: ma candidature Ă un poste sĂ©rieux, un manque de comprĂ©hension des constructions de base du langage (bien que je n'en ai jamais eu besoin, et si je l'Ă©tais, je pourrais google la solution en 5 secondes) et l'effet de l'observateur. Bien sĂ»r, j'ai lu que beaucoup de gens ne peuvent pas rĂ©soudre les problĂšmes quand ils les regardent, mais il m'a toujours semblĂ© que c'Ă©tait une excuse pour ma propre insĂ©curitĂ© et mon incompĂ©tence, jusqu'Ă ce que je tombe moi-mĂȘme sur ces gars durs avec chaque tranche.
J'ai également eu une interview pour le poste de développeur Java. Cette fois, elle s'est déroulée dans un format légÚrement différent. Nous avons contacté Zoom et l'intervieweur a déclaré: «Dites-moi votre e-mail, je vous enverrai une tùche, lisez-la, dites-moi si tout est clair. Vous aurez deux heures, je serai en sourdine et je ne regarderai pas ce que vous faites là -bas (nous ne jouons pas avec l'écran). Deux heures plus tard, nous entrons en contact, tùtonnons l'écran et voyons ce que vous y avez fait. Vous pouvez utiliser n'importe quoi. " J'ai lu les conditions de la tùche, en ai reparlé avec l'intervieweur, j'ai désactivé la vidéo (car le codage du flux mange le CPU) et je me suis trompé. Ouvert l'IDE et a commencé.
La tĂąche Ă©tait liĂ©e aux E / S - il Ă©tait nĂ©cessaire de crĂ©er une API pour Ă©crire des donnĂ©es dans un fichier sur le disque, afin que tout soit sĂ»r et rapide pour les threads, et Ă©galement d'Ă©crire des tests unitaires qui vĂ©rifieraient cela (y compris la sĂ©curitĂ© des threads). Je n'ai pas travaillĂ© avec la concurrence et les E / S depuis longtemps, j'ai donc dĂ» rapidement passer en revue les quais et me souvenir de ce qui se passait. J'ai Ă©crit une solution sur le front, vĂ©rifiĂ© qu'elle est thread-safe, etc. Tout sur tout m'a pris environ une heure et demie. J'ai cinglĂ© mon intervieweur, j'ai dit que j'Ă©tais prĂȘt, mais il n'y avait qu'une petite chose Ă polir, allons-nous chercher? Ă cela, il a rĂ©pondu: "Asseyons-nous pendant encore une demi-heure et terminons tout ce que vous n'avez pas terminĂ©." Ok, je me suis assis et j'ai pensĂ© Ă toutes les petites choses et Ă la rugositĂ©, j'ai fini le javadki, encore une fois j'ai lu tout ce que je pouvais sur les E / S et j'ai pensĂ© quels pourraient ĂȘtre les inconvĂ©nients de ma solution.
AprĂšs une demi-heure, nous sommes entrĂ©s en contact, j'ai partagĂ© l'Ă©cran, montrĂ© le code, exĂ©cutĂ© les tests, etc. La demi-heure suivante, nous avons parlĂ© strictement de la rĂ©solution du problĂšme et des options possibles pour sa modification lors du changement de certaines conditions. Je veux attirer l'attention sur le fait que dans les entretiens prĂ©cĂ©dents (et dans les suivants Ă©galement), personne n'a prĂ©parĂ© la base de la conversation par tĂąches, c'Ă©tait toujours juste une sorte de morceau abstrait, qui donnait 0/1 Ă la sortie, et nous sommes passĂ©s Ă la question suivante. Et ici, la tĂąche Ă©tait assez simple pour qu'elle puisse ĂȘtre effectuĂ©e en quelques heures, mais en mĂȘme temps suffisamment approfondie pour ajouter des conditions et discuter avec le candidat de la maniĂšre dont il allait finaliser la dĂ©cision.
J'ai vraiment aimé cette interview. J'ai pu montrer que non seulement le fizz buzz peut résoudre, mais aussi comprendre quelque chose dans les architectures. L'intervieweur était convaincu qu'il n'était pas assis en juin, mais un spécialiste qui tire quelque chose dans son travail. Ce fut la meilleure interview technique que j'aie jamais eue. Je pense que vous avez déjà deviné que l'intervieweur n'était pas l'un des nÎtres :) J'ajouterai également que je l'ai réussi, puis deux autres étapes et finalement reçu une offre. Mais c'est une autre histoire.
Quelle était la qualité de cette tùche?
- La proximité du vrai travail, de ce qu'ils font dans cette entreprise.
- Limite de temps.
- Manque d'observation.
- La possibilité d'utiliser n'importe quoi et non une vérification de la mémoire.
- Créer une base pour une conversation ultérieure.
- Tester les compétences du candidat pour coder, utiliser l'IDE et réfléchir en général.
Malheureusement, parmi toutes les interviews, je n'avais que trois tĂąches de ce type, donc la sĂ©lection est petite. Il y a peut-ĂȘtre des tests / tĂąches plus difficiles, mais je ne les ai pas obtenus.
Lacunes typiques des tĂąches d'entrevue
- La tùche n'a rien à voir avec un vrai travail. Cela m'énerve le plus. Les algorithmes sont autorisés à résoudre, bien qu'en réalité les piles soient rivetantes. Laissons la tùche pertinente, je vais vous faire un brut! Pourquoi avez-vous besoin d'une personne qui sait comment rechercher des sous-chaßnes dans des chaßnes?
- Organisationnel - il n'y a souvent pas d'outil normal pour une solution. Une fois qu'ils m'ont montré le code dans google docs, une fois que j'ai fouillé l'écran dans repl.it, une fois était CoderPad.
- La tùche ne crée pas de contexte pour une conversation ultérieure - c'est une conséquence du premier paragraphe. Pourquoi donner une tùche si nous n'en discutons pas plus tard?
- Tout le monde ne peut pas faire face Ă la tĂąche sous surveillance. En consĂ©quence, un bon candidat peut ĂȘtre Ă©liminĂ© Ă ce stade.
Questions théoriques
Ceci est ma partie préférée. Tout le monde aime demander de la théorie, revoyons cela un peu.
Pour une raison quelconque, il s'est avéré que la théorie m'était surtout demandée aux postes de l'ingénieur Ruby. Je la connaissais le pire de tous, alors je remplissais constamment les interviews et ressemblais à un juin jusqu'à ce que je réalise que ce n'était plus approprié de continuer comme ça. Je me suis assis et j'ai lu un manuel sur la langue, ce qui m'a permis de parler beaucoup mieux et sans pleurnicher «Les gars, pourquoi me demandez-vous cela? Je suis un bon développeur, quelle est la différence, quel est l'ordre de la méthode de recherche d'un objet? Qui a besoin de ça? "
La premiĂšre interview Ă laquelle je suis allĂ© en tant que dĂ©veloppeur Ruby Ă©tait exactement l'endroit oĂč la tĂąche de test devait ĂȘtre effectuĂ©e, mais il s'est avĂ©rĂ© que personne n'Ă©tait intĂ©ressĂ©. Timlid, qui Ă©tait censĂ© communiquer avec moi, n'est pas venu (il Ă©tait coincĂ© dans un embouteillage ou quelque chose), alors ils m'en ont donnĂ© un autre. AprĂšs la rĂ©union, il dit: "J'ai une rĂšgle - je mĂšne toutes les interviews en anglais, alors nous passons Ă l'anglais." Et puis mes oreilles sont tordues en un nanotube de graphĂšne, car l'intervieweur a un accent trĂšs fort. Cela m'a quelque peu troublĂ© (il m'est trĂšs difficile de communiquer avec mes compatriotes en anglais).
Viennent ensuite les questions: qu'est-ce qu'un module, qu'est-ce qu'un bloc, quel est le rendement, et j'ai commencĂ© Ă dĂ©poser. Au lieu de dĂ©finir "comme dans un manuel", j'ai commencĂ© Ă babiller: "Eh bien, je ne connais pas la dĂ©finition exacte, mais c'est probablement une chose pareille, je l'ai utilisĂ© comme ça." L'enquĂȘteur Ă©tait mĂ©content, j'ai commencĂ© Ă le ressentir et j'ai alors pensĂ© que tout le monde Ă©tait arrivĂ©.
Ensuite, il y a eu des questions sur des mĂ©thodes spĂ©cifiques, Ă savoir: "Quel est le nom de la mĂ©thode qui filtre tout le zĂ©ro dans la collection?" Puis j'ai allumĂ© le troll et j'ai rĂ©pondu: "Si vous vĂ©rifiez ma mĂ©moire pour connaĂźtre ces mĂ©thodes, je ne peux rien vous dire sur ce que je n'ai pas utilisĂ© rĂ©cemment. J'Ă©cris dans de nombreuses langues et plates-formes et je ne me souviens pas de toutes les mĂ©thodes du SDK. " Cela n'a pas satisfait l'intervieweur, et la question suivante Ă©tait quelque chose comme: «Qu'est-ce qui est Ă©numĂ©rable? Quelles sont les mĂ©thodes et qui vont les Ă©tendre. » "Mon oncle, nâavez-vous pas compris?", Me suis-je dit, mais j'ai dit Ă haute voix: "Je ne sais pas avec certitude, je pense quâil existe des mĂ©thodes comme map / rĂ©duire / slice et ainsi de suite." Cela ne lui convenait pas non plus.
Puis il m'a posĂ© une question standard sur l'endroit oĂč mettre la logique dans MVC. J'ai rĂ©pondu que dans le modĂšle, et si ça ne rentre pas dans le modĂšle, alors dans d'autres classes. Il s'est avĂ©rĂ© que les soi-disant objets de service Ă©taient la bonne rĂ©ponse (ces dĂ©chets sont-ils arrivĂ©s ici aussi?). J'ai marmonnĂ© quelque chose en rĂ©ponse, comme, eh bien, vous pouvez l'appeler comme ça, mais je n'aime pas ça.
Puis il a posé la question par défaut sur SQL, à laquelle j'étais déjà en mesure de répondre correctement, puis a posé une question sur RSpec, que je n'ai pas utilisé, c'est tout. Sur Rails (et ils avaient juste des rails), je n'ai reçu aucune question. De plus, je n'ai pas reçu une seule question sur mon expérience précédente.
AprĂšs cela, il m'a demandĂ© ce que je pensais des stand-up quotidiens. Ensuite, j'ai dĂ©cidĂ© de ne pas donner les rĂ©ponses socialement attendues (la grange a brĂ»lĂ© - brĂ»le et hutte!), Et j'ai immĂ©diatement dit que c'Ă©tait une perte de temps et Ă©tait pratiquĂ© dans des Ă©quipes oĂč le manager ne pouvait pas garantir la transparence et la facilitĂ© de rendre compte des progrĂšs. Et il a ajoutĂ© que Scrum est une poubelle dans de l'huile vĂ©gĂ©tale, et personne ne travaille normalement selon la mĂȘlĂ©e, mais tout le monde fait semblant. Ăvidemment, j'ai quand mĂȘme saisi le contre.
De plus, il a suggĂ©rĂ© de lui poser des questions (apparemment par politesse), et moi, de ma propre tĂȘte, j'ai posĂ© des questions sur le processus, l'architecture, etc. Ce que j'ai entendu, je n'ai pas aimĂ©, car ils faisaient beaucoup de vĂ©lo pour des tĂąches typiques. Je voulais faire comprendre au gars que je n'Ă©tais pas seulement un dĂ©veloppeur, mais je pouvais en faire un peu plus, mais tout Ă©tait en vain, et bientĂŽt il a dit qu'il devait aller au rallye et mettre les voiles.
Le lendemain, un recruteur m'a Ă©crit et m'a informĂ© du refus. "Et Dieu merci," pensai-je, mais toujours un peu brĂ»lĂ©. J'ai eu l'impression que l'intervieweur avait des prĂ©jugĂ©s depuis le tout dĂ©but, je ne sais pas. Ă propos, c'Ă©tait le mĂȘme bureau qui avait traĂźnĂ© un mois entre le premier contact et une entrevue technique.
Alors, ils m'ont refusé parce que je ne connaissais pas les bases de la langue (Ruby). Ok, passons.
Une autre interview chez Ruby Debeloper , deux intervieweurs dĂ©jĂ . C'est bien qu'au moins un soit parlĂ© en russe, le second - en ukrainien, donc je n'ai pas eu Ă me casser le cerveau. Ă ma grande surprise, la mĂȘme histoire commence: quels sont les modules, quels sont les blocs. Je n'avais pas encore lu le manuel, j'ai donc nagĂ© Ă nouveau dans les rĂ©ponses. Plus questionnĂ© sur les types d'associations dans Rails. Enfin, au moins quelque chose, pensai-je, et j'ai nommĂ© trois espĂšces de mĂ©moire. ( ), , : « ». , â each_slice. , , . : « , - Rack middleware?». , . , , ( Java Servlets, middleware - Laravel/Express), . , .
, , . . , , rack middleware, , .
. â . , , , , âŠ
Ruby Developer. , . , , . Proc, , :) : « , , , - ». 100% , - , . .
: « require». Rails Grape, , , . « , ». , . - -, « , ?». ActiveRecord â , .
concurrency ( ). , concurrency Ruby â . , , . , MRI â JVM , volatile synchronized , . , , ( !) concurrency . ? ?
, - SOLID. , « â », . , . , . - , . , « ». .
? . , , , . , ! ( ). , , Cracking Ruby Interview, . , - «» , , , :)
.
Fullstack Java Developer. â . , . , , Java.
, , , - . , , , , . , , .
. . , , , undefined null, var. JS WAT-. : «, WAT . , , , ». , -. «JavaScript: The Good Parts», .
, , . (?) , ( , ) , . . , :)
- , , . jQuery, . :)
DevOps Engineer , . : « ?». - :) , , â . , . , , , . . ( )?
( MVC). (-) 5-10 . ( GoF) . . Ruby-, , â , , ( MVC ActiveRecord ). Java- .
SOLID , , : Ruby-, â Java. DRY :)
?
- , .
- , .
- , .
- , .
, , :
- / . , . : « -AOP AspectJ Spring?» :) , , .
- LeetCode , .
, , . , , « » , .
( , ),
, !