Ayant dĂ©cidĂ© de m'essayer au marchĂ© Ă©tranger, j'ai commencĂ© Ă envoyer des CV Ă diffĂ©rents bureaux. Pas mĂȘme dans le but de trouver du travail, mais simplement d'Ă©largir ses horizons. Le choix s'est portĂ© sur le poste vacant de Java Developer. Je n'ai aucune expĂ©rience industrielle avec la langue, seulement une expĂ©rience personnelle, des certificats du centre de certification Oracle, des livres, etc. HonnĂȘtement, au dernier lieu de travail depuis un an et demi, je n'ai rien Ă©crit d'autre que «forov» et «ifas» (mais c'est une histoire complĂštement diffĂ©rente), alors j'ai dĂ©cidĂ© pourquoi pas.
AprÚs avoir ignoré l'historique des recherches et des conversations avec les employeurs, je vais en venir au fait. Une entreprise K de la ville G a écrit qu'elle souhaitait m'interviewer aprÚs avoir résolu le problÚme.
AprÚs avoir décidé et leur avoir envoyé la solution, K a répondu qu'aprÚs le code de révision, ils avaient décidé de ne plus considérer ma candidature. Ce fut un coup porté à mon estime de soi. Bien sûr, je comprends que le langage est nouveau, et en général, tout peut arriver, mais j'espérais au moins un retour sur ma décision. De plus, la tùche est vraiment simple ... J'espÚre que la tùche vous intéressera.
Voici le texte original de la tĂąche.
EXERCICE RESTAURANT

EXERCICE DE RESTAURANT (veuillez utiliser la syntaxe JAVA 7)
Votre restaurant dispose d'un ensemble de tables de diffĂ©rentes tailles: chaque table peut accueillir 2, 3, 4, 5 ou 6 personnes. Les clients arrivent seuls ou en groupe, jusqu'Ă 6 personnes. Les clients d'un groupe donnĂ© doivent ĂȘtre assis ensemble Ă une mĂȘme table, vous ne pouvez donc diriger un groupe que vers une table, qui peut tous les accueillir. S'il n'y a pas de table avec le nombre requis de chaises vides, le groupe doit attendre dans la file d'attente.
Une fois assis, le groupe ne peut pas changer de table, c'est-à -dire que vous ne pouvez pas déplacer un groupe d'une table à une autre pour faire de la place pour de nouveaux clients.
Les groupes de clients doivent ĂȘtre servis dans l'ordre d'arrivĂ©e Ă une exception prĂšs: s'il y a suffisamment de place Ă une table pour un petit groupe arrivant plus tard, vous pouvez les asseoir avant le ou les plus grands groupes dans la file d'attente. Par exemple, s'il y a un groupe de six personnes en attente d'une table Ă six places et qu'il y a un groupe de deux personnes faisant la queue ou arrivant, vous pouvez les envoyer directement Ă une table avec deux chaises vides.
Les groupes peuvent partager des tables, mais si en mĂȘme temps vous avez une table vide avec le nombre requis de chaises et suffisamment de chaises vides sur une plus grande, vous devez toujours asseoir votre ou vos clients Ă une table vide et non pas partiellement assise. , mĂȘme si la table vide est plus grande que la taille du groupe.
Bien sĂ»r, le systĂšme suppose que tout groupe plus important peut s'ennuyer Ă voir des groupes plus petits arriver et prendre leurs tables devant eux, puis dĂ©cider de partir, ce qui signifierait qu'ils abandonneraient la file d'attente sans ĂȘtre servis.
Veuillez remplir la classe RestManager avec les structures de données appropriées et implémenter son constructeur et trois méthodes publiques. Nous vous encourageons également à modifier d'autres classes (pour nous aider à les tester) et à ajouter de nouvelles méthodes à votre guise.
public class Table { public final int size;
Analyse des tĂąches
AprÚs avoir analysé la tùche, comme il me semblait et il semble maintenant, eh bien, il n'y a absolument rien de compliqué. Cependant, je veux immédiatement attirer l'attention sur deux points qui m'ont un peu dérouté.
- "Bien sĂ»r, le systĂšme suppose que tout groupe plus important peut s'ennuyer Ă voir des groupes plus petits arriver et prendre leurs tables devant eux, puis dĂ©cider de partir, ce qui signifierait qu'ils abandonneraient la file d'attente sans ĂȘtre servis."
- Structure de classe RestManager
En ce qui concerne le premier paragraphe, le fait est que notre systĂšme de distribution fonctionne selon les rĂšgles ci-dessus, de sorte que la situation dĂ©crite au paragraphe 1 ne peut ĂȘtre Ă©vitĂ©e. La seule chose que j'ai Ă©crite dans la lettre de rĂ©ponse est que vous pouvez ajouter un dĂ©lai avant d'Ă©mettre une table gratuite. Disons qu'un groupe de 3 personnes vient dans un restaurant. Pour le moment, il n'y a qu'une seule table le 6. Par convention, nous devons leur fournir une table (vous devez toujours asseoir vos clients Ă une table vide ... mĂȘme si la table vide est plus grande que la taille du groupe). Mais si vous ne le faites pas immĂ©diatement, mais au bout d'environ 5 minutes, pendant ce temps, il y a une chance, quoique petite, qu'un siĂšge ou une table avec une dimension infĂ©rieure soit libĂ©rĂ©. Mais cela a l'air frivole bien sĂ»r.
Pour le deuxiÚme point, du moins à mon humble avis, la méthode de recherche de table publique n'est pas dans sa classe. Nous pouvons obtenir la table avec un getter du client, qui, selon l'idée, devrait stocker un lien vers la table.
En général, j'ai souligné deux points principaux:
- Vous devez trier les tableaux dans le bon ordre. La logique de recherche de la table souhaitĂ©e peut ĂȘtre facilement transfĂ©rĂ©e au tri. La premiĂšre table pouvant accueillir un groupe de clients et sera nĂ©cessaire.
- Seuls deux événements obligent à rechercher une table pour un client ou un client pour une table. C'est l'arrivée d'un nouveau client et aprÚs que le groupe a quitté la table en conséquence.
En fait, tout le problĂšme est rĂ©duit aux deux points Ă©numĂ©rĂ©s ci-dessus. Soit dit en passant, il est inutile d'utiliser la collection. La file d'attente est une file d'attente et, par convention, n'importe laquelle des files d'attente peut ĂȘtre desservie, en fonction des emplacements libres et de la taille du groupe. Par consĂ©quent, nous n'utiliserons pas de mĂ©thodes liĂ©es Ă la file d'attente.
Je laisse un lien vers git avec une solution:
RestaurantTask