2010-01-27 6 views
2

je préparais pour des entrevues techniques et voudrais savoir comment pourrais-je aller à expliquer brièvement un enquêteur sur l'approche de la conception des programmes suivants sans entrer dans les détails inutiles4 questions d'entrevue de conception du programme

1. Program that lets people play tic tac toe with each other over the internet?    
2. A suitable data structure for a photo editor or text editor? Why? 
3. Implementing code to operate the elevators? 
4. Implementing the rendering engine of a web browser? 

je pouvais trouver ce qui suit:

  1. Il y a principalement 2 parties au programme. L'une concerne le rendu de l'affichage de la carte. L'autre est le moteur réel contenant des méthodes pour trouver le mouvement gagnant, IA, achèvement du jeu, etc. Ensuite, il y aura le code lié au réseau.

  2. Une liste chaînée de chaînes semble appropriée pour l'éditeur de texte, puisque l'élément principal est le texte et les manipulations connexes. Est-ce qu'une liste liée d'objets semble correcte pour l'éditeur de photos?

  3. Ceci implique à nouveau un affichage des ascenseurs avec la synchronisation des ressources.

  4. Ne pas avoir beaucoup d'idée sur la façon d'aborder celui-ci.

Est-ce que le nombre suffisant suffit? Ai-je manqué quelques détails importants dans l'approche de ces problèmes.

+0

cela ressemble à des devoirs ... –

+0

Non, je me préparais pour des entrevues techniques. Et, j'ai essayé de fournir mon approche pour résoudre ces problèmes aussi. – Epitaph

+0

Environ 4, quelques suggestions impliqueraient de créer un analyseur css et html avant le rendu lui-même (Une fois que ce n'est pas une vraie réponse, je mets des commentaires) –

Répondre

4

L'éditeur de photos est intéressant.

Vous devez prendre en compte les exigences d'un éditeur de photos: (16M +)

  • sélection rapide, decode et l'affichage d'une partie d'une structure de données multi-méga-octets
  • affichage réactif de fonctionnement de l'utilisateur de outils de peinture - le pinceau ne doit pas être décalé, même si vous frottez toute l'image
  • pouvez-vous utiliser efficacement les outils de peinture lorsque vous faites un zoom arrière? Considérez l'impact de toutes ces données sur la mémoire cache et la bande passante de l'UC. Notez que l'accès à la mémoire principale peut prendre 100 s de fois plus longtemps que l'accès à la mémoire cache. Comment faites-vous que la plupart des opérations se produisent dans le cache?
  • ce que dénominateurs communs éditeurs existants ont - retour, les couches, les effets, les modes de fusion en temps réel, la conversion gamma au col d'affichage finale

Je suggère maintenant plusieurs niveaux de zoom avec une résolution inférieure et profondeur de bits (comme mipmaps) en mémoire à la fois pour permettre un fonctionnement efficace à différents niveaux de zoom, l'encodage des modifications en tant que patches à l'image de base, pas directement l'édition de la base (couche chaque changement séparément). Les patches peuvent être codés sous forme de grille avec seulement des carrés peints auxquels de la mémoire leur est allouée. Les modifications peuvent être codées en tant qu'actions (par exemple, outil, souris, mouvement, souris) avant qu'elles ne soient rendues en pixels - cela permet d'obtenir une peinture bon marché en tant que patch au niveau mipmap actuel et rapidement affiché, tandis qu'un thread d'arrière-plan crée des patchs aux autres niveaux de mipmap.

Questions connexes