Que recherchons-nous pour les développeurs pour développer la plate-forme 1C: Enterprise

Notre rĂȘve est de crĂ©er la meilleure boĂźte Ă  outils pour dĂ©velopper des applications commerciales dans le monde. Nous avons beaucoup de bonnes idĂ©es, dont la mise en Ɠuvre nous permet de rĂ©aliser ce rĂȘve, de dĂ©velopper nos outils afin de rester les meilleurs. Eh bien, pour implĂ©menter ces idĂ©es au bon niveau, nous avons besoin de programmeurs sympas.

Bref, nous recherchons ceux qui:

  • aime (ou est prĂȘt Ă  aimer) crĂ©er des cadres rĂ©pliquĂ©s
  • veut fabriquer un produit que des millions de personnes utilisent

Pour montrer plus en détail les développeurs que nous recherchons et comment, nous avons réalisé de courtes interviews avec les responsables du recrutement de notre entreprise. Des questions ont été posées lors de l'entretien:

  • De quel type de dĂ©veloppeurs avez-vous besoin?
  • Que demandez-vous pour un entretien?
  • Quelles questions prĂ©fĂ©rez-vous dans l'entretien - thĂ©orique ou pratique?
  • Un programmeur doit-il Ă©crire des tests?
  • Posez-vous des questions qui ne relĂšvent pas du domaine d'activitĂ© professionnel?
  • DĂ©finissez-vous des tĂąches logiques pour une rĂ©flexion rapide qui ne sont pas directement liĂ©es Ă  la programmation? Type de tĂąche concernant une balle Ă  l'hĂ©lium dans une voiture :


Dans quels domaines les programmeurs peuvent-ils travailler dans le développement de notre plateforme? Eh bien, par exemple:


image

Groupe de développement Internet


image

Le groupe Ă©crit des services en ligne qui sont probablement utilisĂ©s par des millions d'utilisateurs finaux des produits 1C. Les services, par exemple, vous permettent d'obtenir des informations sur la contrepartie par TIN, de vĂ©rifier la fiabilitĂ© de la contrepartie, etc. Le domaine d'activitĂ© est trĂšs responsable, les services fonctionnent sous forte charge, les temps d'arrĂȘt sont extrĂȘmement indĂ©sirables, nous essayons donc de crĂ©er le produit le plus fiable. Nous fabriquons Ă©galement un produit appelĂ© systĂšme d'interaction . Il s'agit d'un mĂ©canisme qui transfĂšre des informations entre les applications clientes et les serveurs 1C: Enterprise; avec son aide, en particulier, le messager intĂ©grĂ© aux applications 1C est implĂ©mentĂ©.

Du dĂ©veloppeur, je veux qu'il dĂ©veloppe le produit dans son ensemble - analyse les besoins des utilisateurs, rĂ©flĂ©chit Ă  l'architecture, Ă©crit du code. Parce que les gens viennent souvent pour des interviews et disent que ce n’est pas intĂ©ressant pour moi d’analyser le sujet, je veux que l’analyste m’écrive un mandat, selon lequel je programmerai la fonctionnalitĂ©. Autrement dit, une personne ne s'intĂ©resse qu'aux aspects techniques de la programmation. Nous essayons de ne pas embaucher de telles personnes, car nous avons une petite Ă©quipe, nous devons traiter un grand nombre de domaines connexes. Par consĂ©quent, les principales exigences qui ne sont pas liĂ©es aux compĂ©tences professionnelles sont la capacitĂ© de formuler avec prĂ©cision et prĂ©cision les exigences du produit, de rĂ©flĂ©chir Ă  la mise en Ɠuvre, de dĂ©velopper un produit et d'ĂȘtre responsable du rĂ©sultat final. L’intĂ©rĂȘt personnel de la personne pour la qualitĂ© du produit final est important, de sorte que la personne fabrique un produit dont elle aimerait ĂȘtre fiĂšre.

Dans le livre d'Eric Evans, "Object-Oriented Design", l' une des idĂ©es principales est que le dĂ©veloppeur doit Ă©galement ĂȘtre un analyste, avoir une bonne comprĂ©hension du domaine qu'il automatise, comprendre ce qui est prĂ©cieux pour l'entreprise, et s'il ne comprend pas cela, alors il sera en mesure de dĂ©velopper un bon systĂšme qui satisfera toutes les exigences de l'utilisateur. Si le dĂ©veloppeur rĂ©sume le sujet, il ne prendra pas de dĂ©cisions clĂ©s sur l'architecture du produit, mais il devra mettre en Ɠuvre ces dĂ©cisions, et dans ce cas, il y a un risque de mise en Ɠuvre de mauvaise qualitĂ©. Le mĂȘme Evans recommande de distinguer deux parties dans le domaine - la partie qui est fondamentalement importante pour les entreprises, celle qui fait de votre produit votre produit et la deuxiĂšme partie, qui n'est pas trĂšs importante, qui est responsable du regroupement des infrastructures. Et les meilleurs dĂ©veloppeurs devraient recevoir la mise en Ɠuvre de la premiĂšre partie importante.

Comment se passe l'entretien? Nous avons un questionnaire, une dizaine de questions que nous posons aux candidats. Les questions du questionnaire ne sont pas thĂ©oriques, mais pratiques, par exemple - le code a soulevĂ© une exception avec une telle trace de pile, expliquez ce que vous allez faire. Ou - vous avez une requĂȘte sur la base de donnĂ©es qui s'exĂ©cute lentement (le texte de la requĂȘte est donnĂ©), il y a un plan de requĂȘte, Ă©valuez - que le plan de requĂȘte est mauvais, vous devez expliquer comment accĂ©lĂ©rer la requĂȘte. Cela n'a aucun sens de demander Ă  une personne quels types de JOIN sont - bien sĂ»r, il connaĂźt ces types s'il est mĂȘme un peu prĂ©parĂ© pour une entrevue. L'expĂ©rience pratique de l'utilisation de ces JOIN est intĂ©ressante. Si une personne a de l'expĂ©rience dans l'analyse des plans de requĂȘte, il ne lui sera pas difficile de parler des moyens de rĂ©soudre le problĂšme.S'il n'y a pas une telle expĂ©rience, le livre n'aidera pas ici. C'est lĂ  que passe la ligne qui distingue le dĂ©veloppeur qui vient de lire sur la fonctionnalitĂ© du dĂ©veloppeur qui a vraiment utilisĂ© cette fonctionnalitĂ©. Nous sommes plus intĂ©ressĂ©s par le deuxiĂšme type de dĂ©veloppeur, nous voulons que la personne "s'implique immĂ©diatement dans le jeu".

Certaines questions du questionnaire ont dĂ©jĂ  cessĂ© de fonctionner et nous avons remplacĂ© ces questions par de nouvelles. Par exemple, il y a quelque temps, lors des entretiens, ils ont souvent demandĂ© de mettre en Ɠuvre le modĂšle Singleton, et lorsque le candidat l'a fait, ils ont dit - maintenant, paresseux. Depuis, plusieurs articles ont paru sur HabrĂ©, qui dĂ©crivaient en dĂ©tail comment Ă©crire de telles choses, les gens venaient d'apprendre cette tĂąche par cƓur, et cela a cessĂ© d'ĂȘtre un test d'aptitude professionnelle.

Nous voulons Ă©galement que les dĂ©veloppeurs Ă©crivent des tests avec compĂ©tence; par exemple, que la signature du contrat que le systĂšme doit satisfaire est dĂ©crite dans la signature de test. Cela peut ĂȘtre fait, par exemple, en Java dans le style recommandĂ© par Roy Osher , lorsque le nom de la mĂ©thode contractuelle est divisĂ© en trois parties - «donné», «ce que nous attendons», «quel est le rĂ©sultat». Et vous pouvez le faire sur Groovy en utilisant Spock . Il est important de savoir si le candidat comprend exactement ce qui doit ĂȘtre testĂ©, s'il est nĂ©cessaire de tester les valeurs limites, s'il connaĂźt la pyramide des tests , etc.

Nous posons également des questions sur les projets auxquels la personne a participé, en particulier si elle a utilisé des technologies pertinentes pour nous. Par exemple, nous utilisons Hazelcast , jusqu'à présent, peu de gens l'utilisent en production (à partir d'implémentations récentes de grande taille - dans Yandex.Money ), et nous sommes trÚs intéressés par les personnes ayant de l'expérience avec Hazelcast. De plus, le candidat peut nous révéler des aspects inattendus et utiles de la nouvelle technologie, que nous ne connaissons pas encore.

Un sujet important pour nous est de savoir comment Ă©crire du code pour travailler dans un environnement multi-thread. Par exemple, il y a plusieurs nƓuds d'application dans un environnement trĂšs chargĂ©, et nous demandons au candidat de vous dire comment rendre le systĂšme fonctionnel et fiable, tout en minimisant son blocage.

Un programmeur doit-il écrire des tests? Un must, mais pas tous. Le programmeur doit écrire des tests unitaires sans condition. Soit dit en passant, nous, dans l'équipe, n'insistons pas sur l'utilisation obligatoire de méthodes, par exemple TDD ; certains développeurs utilisent TDD de leur propre initiative, ils l'aiment tellement. Nous écrivons également des tests d'intégration. Les développeurs effectuent également des tests de charge et rédigent des plans de test pour JMeter.

Équipe de dĂ©veloppement client Web


image

Bien que nous développions un client Web en JavaScript, nous préférons que le candidat, en plus d'une expérience en développement Web en JavaScript, ait une expérience dans le développement de langages OOP «classiques» - C ++ ou Java ou C #. Cela est dû aux spécificités du projet; Client Web 1C, écrit en JavaScript, mais ressemble plus idéologiquement à une application écrite en langage POO. Nous couvrons le code JavaScript avec des annotations JSDoc , donc la vérification de type statique se produit pendant l'assemblage. Cette approche a été choisie car nous utilisons le Google Closure Compiler , qui nous aide notamment à augmenter la vitesse de notre code et à réduire la quantité de mémoire consommée par celui-ci. Ainsi, l'expérience POO sera d'une grande aide pour le candidat.

Lors de l'entretien, nous demandons quelles tĂąches le candidat et son Ă©quipe ont dĂ» rĂ©soudre lors de travaux antĂ©rieurs, nous discutons de l'architecture des solutions mises en Ɠuvre par lui. Nous demandons aux candidats des tĂąches, certaines d'entre elles - sur l'esprit rapide et la pensĂ©e algorithmique. Par exemple, il y a des tĂąches qui sont "rĂ©solues" par une assez grande quantitĂ© de code, et si vous y rĂ©flĂ©chissez, alors sur une seule ligne.

Il existe un pool de tĂąches pour une connaissance spĂ©cifique de la mise en page, en JavaScript. Par exemple, nous dessinons une structure de page HTML sur une feuille de papier (la structure peut ĂȘtre dynamique, changer dans le temps selon un certain algorithme) et demander d'Ă©crire du code qui crĂ©e une telle structure et l'implĂ©mente en dynamique.

Nous essayons Ă©galement d'Ă©valuer la prĂ©disposition du candidat Ă  l'activitĂ© analytique; nous ne voudrions pas avoir un encodeur «propre» dans l'Ă©quipe, mĂȘme s'il Ă©crit du code de haute qualitĂ©, mais fonctionne strictement selon une spĂ©cification technique fixe. J'aimerais que le dĂ©veloppeur soit impliquĂ© dans les tĂąches, comprenne profondĂ©ment ce qui est fait dans le produit et pourquoi, idĂ©alement, il est Ă©galement le moteur de la nouvelle fonctionnalitĂ©.

Si le candidat est un Ă©tudiant ou un Ă©tudiant d'hier, nous pouvons poser des questions purement thĂ©oriques, par exemple, poser les principes de base de la POO ou autre chose. Si une personne ayant de l'expĂ©rience, de telles questions peuvent ĂȘtre dĂ©nuĂ©es de sens, le candidat connaĂźt probablement ces principes et les utilise dans son travail, une demande pour les formuler peut le conduire dans une impasse, car il a ringard oubliĂ© le libellĂ© du manuel.

Chaque entretien est unique. Il est intĂ©ressant de parler avec une personne sur certains sujets, avec une autre sur d'autres. À la fin de l'interview, nous parlons de notre produit, de l'Ă©tendue de son utilisation (et ils sont impressionnants - notre systĂšme compte des millions d'utilisateurs finaux), nous regardons Ă  quel point les gens sont intĂ©ressĂ©s.

Équipe d'Ă©volutivitĂ© des applications


image

Qui sommes nous


Notre équipe est experte dans le domaine de la construction de systÚmes fortement chargés sur la plateforme 1C: Enterprise. Ces ingénieurs relÚvent les défis de la fiabilité et de l'évolutivité. Ces tùches sont souvent à la croisée de l'administration et du développement. Le résultat de la résolution de tels problÚmes est un systÚme vraiment cool. Exemples de telles tùches:

  • DĂ©ployez une infrastructure tolĂ©rante aux pannes dans deux centres de donnĂ©es et simulez les pannes
  • assurer une dĂ©gradation des performances du systĂšme avec une augmentation du nombre d'utilisateurs de 10 fois, accĂ©lĂ©rer le calcul des coĂ»ts sur plusieurs heures de 3 fois,
  • d'enquĂȘter et d'Ă©liminer les interblocages,
  • assurer la rĂ©cupĂ©ration coordonnĂ©e de plus d'une douzaine de bases de donnĂ©es d'informations distribuĂ©es Ă  un instant donnĂ©, en tenant compte des Ă©changes entre ces bases de donnĂ©es.

Et ce n'est pas une liste complĂšte des tĂąches. Il est particuliĂšrement agrĂ©able que de nombreuses tĂąches nous viennent avec la formulation: "Est-il mĂȘme possible de le faire?" C'est-Ă -dire les gens ne croient pas au premier abord. Nous ne discutons pas et essayons toujours de convaincre d'essayer de vĂ©rifier dans la pratique, de le faire. À cela, nous devons ajouter une volontĂ© de se connecter au milieu de la nuit Ă  un grand systĂšme client, car les ingĂ©nieurs locaux ont cassĂ© quelque chose et personne ne sait quoi faire. Plus d'une fois, il a Ă©tĂ© nĂ©cessaire de restaurer la base dĂ©truite en l'absence de sauvegardes ou de dĂ©couvrir pourquoi la charge sur le systĂšme a augmentĂ© de 5%. Si vous le souhaitez, vous pouvez mĂȘme lire des critiques sur notre travail.

Qui recherchons-nous


Nous recherchons des ingénieurs qui veulent passionnément faire l'impossible. L'une des exigences les plus importantes pour un candidat est de se brûler les yeux, un désir et la capacité de comprendre rapidement ce qu'il n'a pas rencontré auparavant, en utilisant les connaissances existantes. Ce sont des ingénieurs et des développeurs de fiabilité réunis en un seul. Imaginez qu'un client vous contacte avec plusieurs milliers d'utilisateurs et vous indique qu'il essaie de mettre en service un mécanisme complexe que ses ingénieurs ont développé au cours d'une année. Et au fait:

  • n’ont pas encore rĂ©ussi Ă  terminer le dĂ©veloppement face Ă  des exigences en constante Ă©volution de la part du client;
  • alors que le dĂ©veloppement de mĂ©canismes clĂ©s de mise en Ɠuvre bat son plein, les ingĂ©nieurs n'ont pas encore atteint le mĂ©canisme de test avec des milliers d'utilisateurs;
  • mĂȘme maintenant, personne ne sait pourquoi, avec une augmentation du nombre d'utilisateurs sur cette implĂ©mentation, exactement dans ce mĂ©canisme, la productivitĂ© chute fortement;
  • le dĂ©veloppement a Ă©tĂ© rĂ©alisĂ© sous Windows avec le SGBD MS SQL Server, et au stade final, une dĂ©cision politique a Ă©tĂ© prise d'implĂ©menter PostgreSQL dans CentOS et le SGBD afin d'ĂȘtre au centre de la tendance de substitution des importations;
  • et vous dĂ©couvrez accidentellement qu'il y a des dĂ©lais d'attente lorsque mĂȘme 10 utilisateurs travaillent;
  • Vous devez calculer l'Ă©quipement pour ce mĂ©canisme, car le client a dĂ» l'acheter le mois dernier;
  • vous comprenez que vous devez Ă©laborer une implĂ©mentation parallĂšle des algorithmes de ce mĂ©canisme, les coordonner avec vos collĂšgues et dĂ©cider ensemble comment vous serez Ă  l'heure et sans introduire de nouvelles erreurs.

Oui, et encore une fois: tout le monde n'est pas prĂȘt Ă  aider Ă  identifier les erreurs et les anti-schĂ©mas dans leurs dĂ©cisions, vous devez donc ĂȘtre en mesure de communiquer de maniĂšre trĂšs diplomatique avec des ingĂ©nieurs travaillant en stress continu ces derniers mois.

Comment regardons-nous


L'entretien peut ĂȘtre stressant pour le candidat. Mais ce stress ne peut mĂȘme pas ĂȘtre comparĂ© au stress que vous obtiendrez dans une situation rĂ©elle si vous ne pensez pas et n'utilisez pas toute votre expĂ©rience existante.

Le problĂšme de nombreux candidats est qu'ils ne savent pas appliquer leurs connaissances et ne peuvent pas expliquer leur enfant de six ans. C'est pourquoi au cours de l'entretien, nous vous demandons pĂ©riodiquement de nous enseigner quelque chose dans lequel le candidat est le mieux versĂ©. Naturellement, je veux vraiment recruter des gens dont nous pouvons apprendre beaucoup. Dans de telles discussions, la profondeur des connaissances et une trĂšs bonne comprĂ©hension sont trĂšs importantes. Il y a eu une expĂ©rience quand Ă  7 heures du matin, nous avons interviewĂ© le candidat, sommes venus Ă  une discussion sur les composants de gestion de la mĂ©moire dans MS SQL Server et finalement nous sommes entendus sur la comprĂ©hension des pages et des Ă©tendues. Puis les RH sont intervenues en disant: «Avec quoi le tourmentons-nous?! Qui sait ça!? », Et nous avons quittĂ© la salle pour parler. Un collĂšgue endormi et bĂąillant est accidentellement passĂ© dans le couloir en direction du cafĂ©. On a posĂ© les mĂȘmes questions au collĂšgue, il a rĂ©pondu clairement, correctement, essentiellement, sans ouvrir un Ɠil et continuer Ă  bĂąiller.

Naturellement, nous essayons de tester la connaissance des mathématiques, des algorithmes. Ils concernent plutÎt les connaissances de base. Mais la connaissance des algorithmes distribués et la capacité d'appliquer un tel algorithme dans une tùche seront un atout certain pour le candidat.

Une autre façon est de demander au candidat de se prĂ©senter Ă  la place du dĂ©veloppeur 1C et de lui demander de rĂ©aliser une sorte de tĂąche appliquĂ©e. Dans les conditions de l'entretien et du stress du candidat, une telle tĂąche permet de voir comment le candidat pense. Nous examinons la solution du candidat, aidons le candidat Ă  voir un problĂšme technologique significatif dans sa solution, puis nous examinons comment le candidat changera la solution, ne permettant pas un autre problĂšme technologique. Parfois, nous effectuons 6-7 itĂ©rations, recherchons et Ă©valuons les faiblesses de la solution. Dans le mĂȘme temps, il devient immĂ©diatement possible non seulement de discuter et de comprendre ce qu'une personne sait, par exemple, sur les blocages, mais aussi de savoir comment rĂ©duire Ă  zĂ©ro la probabilitĂ© de leur occurrence dans son code.

La connaissance d'un langage de programmation particulier n'est pas un facteur super important. C'est plus important quand une personne pense en termes de programmation en utilisant un langage, et n'est pas limité aux constructions de langage.

Ce qui est utilisé dans le travail


Le premier outil et le plus fréquemment utilisé est la plate-forme technologique 1C: Enterprise. La connaissance de la plateforme est requise au niveau administrateur et développeur. C'est-à-dire vous devez comprendre comment implémenter une solution spécifique et l'exécuter dans le systÚme pour des milliers d'utilisateurs.

TrĂšs souvent, il est nĂ©cessaire d'analyser le fonctionnement des SGBD MS SQL Server et PostgreSQL, de sorte que l'utilisation d'outils de profilage, de vues dynamiques et de magazines est incluse dans le bagage de compĂ©tences actives. Et ici, la capacitĂ© de travailler avec de gros volumes est importante. Un bloc-notes Windows standard n'est pas trĂšs pratique lorsque vous travaillez avec 1 To de journaux de texte avec des requĂȘtes gĂ©nĂ©rĂ©es par machine et leurs plans. Il existe immĂ©diatement un besoin de connaissance des expressions rĂ©guliĂšres, ainsi que de tout un ensemble d'outils et de langages qui les prennent en charge. Pour analyser les plans de requĂȘte, vous devez comprendre ce que sont les index et en quoi la jointure de fusion diffĂšre de la jointure de hachage.

Les systÚmes du marché des entreprises fonctionnent souvent sous Linux. Il n'y a pas d'environnement graphique sur les serveurs. Les compétences de la console sont assez importantes.

Imaginez ce dont vous avez besoin pour savoir pourquoi la charge du processeur sur les serveurs PostgreSQL dans les processus CentOS by Postgre a augmentĂ© de 5%. Essayez d'Ă©crire sur un morceau de papier l'algorithme de votre enquĂȘte. Et immĂ©diatement, il y a une comprĂ©hension de ce qui est nĂ©cessaire

  • ĂȘtre en mesure d'appliquer non seulement la disponibilitĂ© , vmstat , sar , au sommet , perf ,
  • savoir utiliser pgbadger , psql et configurer la journalisation dans postgresql.conf,
  • ĂȘtre en mesure de trouver une requĂȘte souhaitĂ©e,
  • utiliser analyser, analyser son plan,
  • rĂ©Ă©crivez la demande et vĂ©rifiez que la charge a diminuĂ©.

Ce qui est important pour nous


Il est trÚs important qu'une personne pense à grande échelle et essaie toujours de voir la situation dans son ensemble. Par exemple, la plupart des candidats, résolvant la tùche de trier un fichier texte, proposent un algorithme adapté pour trier un fichier de 10 Mo. Mais combien leur compréhension et leur point de vue changent lorsqu'ils sont confrontés au tri d'un fichier de 10 To dans des conditions de mémoire et d'espace disque limités. Et vous devez vous rappeler que le coût d'accÚs au disque est plus élevé que le coût d'accÚs à la mémoire. Je veux vraiment que le candidat pense «à l'échelle» dans toutes les tùches.

1C: Groupe de développement de plate-forme d'entreprise


image

La principale chose qui est exigĂ©e de notre Ă©quipe de la part des candidats est la capacitĂ© de penser de maniĂšre analytique, d'analyser en profondeur le problĂšme et la capacitĂ© de peser les solutions. La plate-forme 1C: Enterprise a un cycle de dĂ©veloppement assez long (mois), il est donc impossible, comme dans le dĂ©veloppement Web, de mettre en Ɠuvre des fonctionnalitĂ©s en plusieurs parties, Ă©tape par Ă©tape. Cela nĂ©cessite la capacitĂ© de rĂ©flĂ©chir profondĂ©ment lorsque l'on considĂšre les dĂ©tails de la mise en Ɠuvre, vous devez essayer de faire "tout Ă  la fois". C'est-Ă -dire ne pas utiliser la premiĂšre mĂ©thode disponible que j'ai lue hier sur Habr pour rĂ©soudre le problĂšme, mais peser soigneusement tous les avantages et les inconvĂ©nients des diffĂ©rentes solutions.

Comprendre lors de l'entretien si le candidat possÚde de telles qualités n'est pas si simple. Le moyen le plus pertinent est de parler de l'expérience antérieure du candidat. Lorsqu'une personne dit quelle solution intéressante il a trouvée, nous demandons - et quel problÚme, en fait, a été résolu? Pourquoi cette solution particuliÚre a-t-elle été choisie et pas une autre? Et si les conditions du problÚme avaient un peu changé, comment la solution aurait-elle changé? En posant plusieurs questions similaires, vous pouvez comprendre à quel point la personne a été plongée dans le sujet.

Il y a un autre aspect illustrĂ© par la phrase: «Nous embauchons ceux qui savent travailler, puis pour une raison quelconque, nous voulons qu'ils veulent travailler.» Par consĂ©quent, lors de l'entretien, je veux comprendre ce qu'est le travail pour une personne. Si pour lui, c'est un passe-temps agrĂ©able qui vous permet de gagner de l'argent, alors avec une forte probabilitĂ©, rien de bon ne sortira avec le candidat. – , - , , - . , , , . , , , .

– , , , .

, . – ++ Java, - – JavaScript C++, 1, . 1, , , , , 1. , 1cFresh , , 1 ( 1 , ). , (bash, Python, Perl), .

– , . , , .

– , , Linux. – , , , . , , – , , . , .

. , .

? , . , , . – . , , , . . , , , . – , . , – . – .

- – 3-5 ? , , , .

. – , , . – . , , , , . , , , --. . , , .

1: –


– , ? , , .

, , .

, , , – , ?

Java – ; , - , , , .

- – , . ́ – . , , .

, . , , , . , .

, , – 1:. , , , .

. , , , .

. , C++, C# , C++ . , . , – .

, , stackoverflow, , . .


image

C++. , – , .

– , . STL , , , . , , map, . , .

. , . , , , .

, , - – . , . , .

– . 1: – , 10 , , .

, , – , « - ». , - , ; – . , , . . , – , , , , , . , , - , . «» , – , .

? ! , – , , . , , (Windows, Linux, macOS, - ), . , . , .

1C:Enterprise Development Tools


image

1C:Enterprise Development Tools Java, Java. , , . Java , , ; , , , . , ( EMF , Xtext , GEF , Lucene , Handly , 
) — . , – , .

– , , . – , . , , . – . , , . – .

, . , , . , , , – . – . , – , , . – , , ( , ) , . – , . , , – -, . – ?

! , : , 2 , 0 , 999999999 , –8 , qwertyuip , – ? – ( ) ; , , .

Conclusion


:)

job@1c.ru .

Source: https://habr.com/ru/post/fr432672/


All Articles