Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Zaelsius en 20 de Enero de 2004, 02:44:55 PM

Título: Entrevista De Trabajo En Ea
Publicado por: Zaelsius en 20 de Enero de 2004, 02:44:55 PM
 Un usuario del foro de Irrlicht Engine acudió hace poco a una entrevista de trabajo en EA(creo que USA). Podeis leer algunos comentarios acerca de la entrevista en el foro de Irrlicht.

Esto es lo que le preguntaron:
Citar



Joined: 15 Dec 2003
Posts: 260
Location: Los Angeles, California, USA  Interview at EA Games

I had my interview at EALA yesterday, and it went pretty well.

The questions they asked were:
1) in code: write a function to delete a node from a linked list
2) in general: design for a spirograph screen saver (polar or cartesian coordinates? what periods/radii will create stable patterns?)
3) in code: write an interface class to a mouse, which could be using several different actual mice (ie: hide their differences) --basically use a Singleton abstract base class with a pure virtual method
4) if you were given a chunk of memory as an animation programmer, and wanted to make sure you only used that memory, how would you write a memory manager for it? --basically, he wanted me to create a virtual memory table, but INSIDE of the memory i was allocating.
5) explain the dot-product (its use, not the math) **i then went on to volunteer information about the cross product, normalization, normals, etc
6) where are quaternions normally used, and why?

thats all I could remember off the top of my head for now.

Siempre viene bien que la gente comparta este tipo de experiencias  :)  
Título: Entrevista De Trabajo En Ea
Publicado por: Loover en 20 de Enero de 2004, 02:47:50 PM
 ¿Cómo se hace el 2? ¿Qué es un spirograph? :P
Título: Entrevista De Trabajo En Ea
Publicado por: Zaelsius en 20 de Enero de 2004, 02:58:19 PM
 En el enlace que he puesto se resuelven esas dudas y comentan algunas cosas más sobre la entrevista y cómo la consiguió.
Título: Entrevista De Trabajo En Ea
Publicado por: tamat en 23 de Enero de 2004, 12:37:56 AM
 mmmm, me esperaba algo más bestia, vosotros no? se que este debe ser un examen para cribar a los 'flipados' que van esperando currar en la maravillosa y famosa EA pero aun así se me hace raro, será que nunca he ido a una entrevista de trabajo...
Título: Entrevista De Trabajo En Ea
Publicado por: Zaelsius en 23 de Enero de 2004, 10:25:32 AM
 A mí me parecen unas pruebas adecuadas. Se supone que quien llega a la entrevista es porque ha "demostrado" un cierto nivel con demos, juegos amateur, etc.

En la entrevista hay que comprobar que efectivamente el tio sabe de lo que habla(no sea que se haya dedicado a copiar/pegar código o que simplemente no  tenga ni idea), y que tiene una mínima base matemática que maneja con fluidez.

Por ejemplo, si preguntas que son los quaternions, aunque lo sepas más o menos... en la respuesta se nota quien los ha usado regularmente y quien no, no sé si me explico. Vamos, que aunque parezcan preguntas sencillas hay que tenerlo todo muy claro para convencer al entrevistador(además hay que tener en cuenta el factor nervios)
Título: Entrevista De Trabajo En Ea
Publicado por: ethernet en 23 de Enero de 2004, 04:25:11 PM
 Yo no he usado nunca un quternion y se para que sirven
Por otra parte la pregunta del dot product es bastante ambigua y abierta, que vas a decir ahi? yo diria q es el factor de proyeccion de un vector sobre otro, no se me ocurre nada mas XDD

El otro dia hablando con un tio que ha entrado en MS le hicieron tb pruebas y algunas de ellas eran crear un
strncpy, o hacer cosas con listas enlazadas (insertar, borrar, etc)

Por cierto, en el codigo fuente del unreal usa una virtual table (que dice el).

saludos
Título: Entrevista De Trabajo En Ea
Publicado por: Zaelsius en 23 de Enero de 2004, 04:37:16 PM
 Yo creo que en el tema del producto escalar habría que comentar tambien un poco para qué lo has usado, alguna técnica de la que te acuerdes donde se utiliza, etc.
No sé, por ejemplo decir que se usa en el descarte de caras ocultas, en el bump-mapping, cosas asi  :huh: .
Título: Entrevista De Trabajo En Ea
Publicado por: Thenend en 23 de Enero de 2004, 04:47:45 PM
  Que este test nos sirva para convencernos de que ir a la universidad sirve para algo. Todas esas preguntas podrían estar perfectamente en algunos de los exámenes que he tenido a lo largo de la carrera (bueno, excepto la 6, pero igual en alguna asignatura optativa...)

Cuando alguien me pregunte (una vez mas  <_< ) que si lo que se aprende en la Uni sirve para algo le mandaré a este post  :D

Otra cosa es que puedas aprender todo esto fuera de la universidad también sin tener que soportar a los profesores sin vocación  (grrr)  y la presión de los exámenes (nooo) , pero ya nadie puede decir (como he oído a algunos compañeros) que aprender a hacer listas enlazadas es una tontería porque la STL ya las tiene. O que para qué queremos saber cómo hace la paginación el Windows si ese proceso no está a la vista.

Bueno, ya tengo un poco mas de moral para atacar los exámenes y terminar de una vez la carrera...  ;)  
Título: Entrevista De Trabajo En Ea
Publicado por: ethernet en 23 de Enero de 2004, 05:00:32 PM
 - punto por punto

- la carrera sirve para saber hacer todo eso... y ademas hacerlo bien.
- La paginacion que hace windows no tiene q ver con nada de lo q dice ahi, la memoria virtual es otra cosa. En ese caso se refiere a tener un trozo de memoria e ingeniartelas para meter todo lo q pidan con new ahi, pidan lo q te pidan, 8 bytes, 10 megas o 3kb.
Título: Entrevista De Trabajo En Ea
Publicado por: Zaelsius en 23 de Enero de 2004, 05:18:45 PM
 
1) Por desgracia mucha gente borra de su memoria todo lo que aprende con una velocidad asombrosa..(muchos monkeys de mi carrera)

2) Las técnicas de gestión de memoria de un SO más comunes son la paginación y la segmentación. Se trata, como dice ethernet, de intentar utilizar la memoria disponible eficientemente. Éso es lo que piden en la entrevista, y en mi asignatura de Sistemas Operativos 2 hicimos una práctica que consitía exactamente en hacer eso.

La memoria virtual es un mecanismo complementario en la gestión de memoria de un SO y thenend no la ha nombrado. Windows 2000 p.ej. usa paginación + memoria virtual. No voy a explicarla asi que o mirais en google o haceis la carrera xD.

.. thenend no ha metido la pata en ese sentido, creo.
Título: Entrevista De Trabajo En Ea
Publicado por: ethernet en 23 de Enero de 2004, 05:26:52 PM
 que diferencia hay entre paginacion y memoria virtual?
Título: Entrevista De Trabajo En Ea
Publicado por: Mars Attacks en 23 de Enero de 2004, 05:34:23 PM
 También se puede decir que leyendo foros como éste se puede aprender todo lo que dice ahí. Yo sé de los cuaterniones por vosotros ;)

Ethernet: puedes tener paginación a nivel de caché o de RAM. La memoria virtual usa almacenamiento secundario.

Un saludo tras mi examen de tratamiento de imágenes.
Título: Entrevista De Trabajo En Ea
Publicado por: ethernet en 23 de Enero de 2004, 05:38:42 PM
 Mi pc usa memoria virtual y no toca el dispositivo de almacenmiento secundario en ningun momento. Tampoco estoy deacuerdo a llamar pagina a un bloque de la cache.

Título: Entrevista De Trabajo En Ea
Publicado por: Zaelsius en 23 de Enero de 2004, 05:42:00 PM
 Copiando de la wikipedia:

Citar
PAGING: (paginación)

In computer operating systems, paging is the algorithm that divides computer memory into small partitions, and allocates memory using a page as the basic building block.

Advantages

A key advantage that this method has over simpler methods such as the buddy memory allocation technique and dynamic allocation techniques is that the memory allocated to a program does not have to be contiguous, and because of that, there is very little internal fragmentation - thus little memory is wasted.

Because programs rarely use all parts of their code and data at one point in time, the concept of virtual memory can be implemented by writing pages to disk, and reading pages from disk when they are needed. This is another advantage of paging over other memory allocation techniques.

Lo mismo se aplica para la segmentación(el programador especifica al compilador los segmentos del programa). La memoria virtual tambien permite trabajar con espacios de memoria más amplios que la memoria física, ya que que es el hardware el que luego traduce las direcciones virtuales de memoria a direcciones físicas(ram o hdd).

Edit:
Bueno lo importante es destacar que la memoria virtual por sí sola no constituye un algoritmo de asignación de memoria.
Título: Entrevista De Trabajo En Ea
Publicado por: ethernet en 23 de Enero de 2004, 05:47:00 PM
 ejem, tampoco estoy deacuerdo, se puede tener memoria virtual sin disco duro y sin tener hardware especifico (otra cosa es q sea rapido.). No estoy deacuerdo en la diferencia entre paginacion y segmentacion. La paginacion usa bloques de memoria de tamaño fijo y la paginacion de tamaño variable. El uso de la paginacion o segmentacion se hace con el fin de usar memoria virtual con eficiencia (imaginate una tabla de paginas ( o segmentos) para cada dir de memoria e imaginate como deberia ser la TLB XD).

EDIT:  Eso sin hablar de mecanismos de proteccion de procesos

Volviendo al tema:
como hariais vosotros ese algoritmo?

un saludo
Título: Entrevista De Trabajo En Ea
Publicado por: Thenend en 23 de Enero de 2004, 05:56:52 PM
 Carai, que lio.

Lo de la paginación lo he dicho sin querer porque es lo que primero que pensé al leer la pregunta ya que me pareció que los huecos que quedarían al borrar datos, podrían impedir que entraran otros datos mas gordos al no encontrar un cacho de memoria lo suficientemente grande y pensé que con la paginación podías amortiguar ese problema. Si no, habría que hacer una especie de "desfragmentación" igual que con el disco duro. Y luego el tio del post dice algo de "Virtual Page Table" que también me recrodó a "paginación" aunque no hace justo eso. Mas bien hace lo que dice ethernet de sobrecargar el new() (bueno, no se si yo haría eso) para que colocara las cosas donde pudiera.

La verdad es que la pregunta está bien pensada porque no tiene una respuesta clara. Puedes discutir varias posibilidades dependiendo del tamaño del buffer, tamaño de los datos a introducir... Y así se da pie a que el entrevistado se luzca o se atasque según controle el tema.
Título: Entrevista De Trabajo En Ea
Publicado por: Zaelsius en 23 de Enero de 2004, 08:09:11 PM
 Respondiendo a Ethernet, lo más sencillito seria algo así:

- Tenemos una zona de memoria de tamaño X.
- Podemos elegir entre particionamiento estático(asignariamos zonas de Z*k bytes siempre, aunque sobrase espacio. Z seria el tamaño del bloque y k un entero) o particionamiento dinámico(asignamos zonas de R bytes, donde R serian los bytes pedidos en el new). Cada método tiene pros y contras.

- Conforme llegan las peticiones(news) de memoria, asignamos bloques de acuerdo a la política elegida en el anterior punto, y guardamos el estado del bloque en una lista, vector, etc, indicando que está ocupado.

- Hay que elegir una política a la hora de buscar huecos libres. Podemos asignar el hueco más pequeño que exista(implica recorrer la lista y perder cpu, o asignar el primer hueco libre que encontremos). Hay más opciones pero esas son las más usuales.

- Llegan más peticiones(news o deletes), y vamos actualizando la lista de bloques libres y ocupados. La cosa se pone fea y empezamos a tener huecos libres muy pequeños que nos son inútiles. Hace falta un mecanismo para reagrupar esos huecos libres y formar zonas más grandes. La reagrupación se puede hacer tras cada petición(mucho coste), de vez en cuando, o sólo cuando no encontremos un hueco libre del tamaño deseado.


En la práctica de la uni teniamos que hacer un programita que leia de un fichero de texto información sobre procesos, la memoria que requerian y en qué instante de tiempo entraban. El programa debía devolver por pantalla los diferentes estados(bloques libres y ocupados) de la memoria para cada instante de tiempo.
Título: Entrevista De Trabajo En Ea
Publicado por: Mars Attacks en 24 de Enero de 2004, 09:30:54 PM
 
Cita de: "ethernet"ejem, tampoco estoy deacuerdo
Pues por mí como si te la machacas con dos piedras a ritmo de samba.
Con el libro "SISTEMAS OPERATIVOS" de Abraham Silberschatz y Peter Baen Galvin (quinta edición) en las manos:
MEMORIA VIRTUAL
-----------------------

En el capítulo 8 estudiamos diversas estrategias de gestión de memoria (nota marciana: habla, entre otras, de la paginación y la segmentación) que se han aplicado en sistemas de computador. Todas esas estrategias tienen el mismo objetivo: mantener muchos procesos en memoria simultáneamente y así hacer posible la multiprogramación. Sin embargo, en casi todas las estrategias es necesario que todo el proceso esté en memoria para que pueda ejecutarse.
La memoria virtual es una técnica que permite ejecutar procesos que podrían no estar totalmente en memoria. La principal ventaja tangible de este esquema es que los programas pueden ser mucho más grandes que la memoria física. Además, dicho esquema hace una abstracción de la memoria considerándola una matriz uniforme y extremadamente grande de almacenamiento, con lo que separa la memoria lógica que el usuario ve, de la memoria física. Esta técnica evita a los programadores tener que preocuparse por las limitaciones de la memoria. La memoria virtual no es fácil de implementar, y podría reducir sustancialmente el rendimiento si no se usa con cuidado. En este capítulo estudiaremos la memoria virtual en forma de paginación por demanada y examinaremos su complejidad y su costo.

--------

Resumiendo, que si la memoria virtual es más grande que la memoria física no hay más huevos que utilizar almacenamiento secundario para almacenar las páginas.

Por cierto, recomiendo este pedazo de libro (unas 900 páginas) para quien tenga dudas sobre estos temas.
Aparte, los dinosaurios de la portada quedan muy bien como adorno friki de estantería.
Título: Entrevista De Trabajo En Ea
Publicado por: Grugnorr en 24 de Enero de 2004, 11:43:12 PM
 Sin ser tan gracioso como Mars....

A mí también me gustaría saber como leches se tiene memoria virtual sin un disco duro u otro medio de almecenamiento 2º... weno, terciario en cintas magnéticas se me puede ocurrir.... muy muy rápido  :P  
Título: Entrevista De Trabajo En Ea
Publicado por: Thenend en 24 de Enero de 2004, 11:54:22 PM
 A ver si esta web nos aclara algunas dudas, a mi por lo menos me lo ha dejado mas claro:

http://www.dia.uned.es/Asignaturas/Sistema...MARIO/tema4.htm

En ella se dice esto:

CitarNo obstante, se siguen presentando problemas de fragmentación externa. Una solución es permitir que los procesos puedan utilizar memoria no contigua, lo que se consigue mediante técnicas de paginación. En esta situación hay un mecanismo de traducción de las direcciones lógicas a las físicas mediante una tabla de páginas.

Que es a lo que yo me refería al decir paginación. La verdad es que, como ya he dicho, es lo primero que pensé. Ahora me parece un método que podria ser bastante lento e innecesario si el cacho de memoria es pequeño. Me gusta mas la idea de hacer el defrag que dice Zaelsius (yo lo haría llevando la cuenta de la memoria total disponible y cuando tienes suficiente pero no se encuentra esa cantidad seguida, pues ordenas la habitación un poco).

Y sobre la memoria virtual dice después de hablar de segmentacion y paginación:

CitarEn todos estos esquemas se supone que el proceso que se va a ejecutar está cargado totalmente en memoria. La idea de permitir ejecutar procesos que no están cargados totalmente en memoria e incluso que sus tamaños superen al de la memoria física instalada, da lugar al concepto de memoria virtual .

Pero bueno, si quereis, leedlo entero, que es cortito y esta muy bien.

EDIT: que curioso, en la URL sale de forma misteriosa mi nombre. Casualidad...
Título: Entrevista De Trabajo En Ea
Publicado por: Thenend en 25 de Enero de 2004, 12:49:39 AM
 
Citar(yo lo haría llevando la cuenta de la memoria total disponible y cuando tienes suficiente pero no se encuentra esa cantidad seguida, pues ordenas la habitación un poco)

Pues pensándolo mejor, si el tamaño del trozo de memoria es muy grande en relación a los datos individuales, lo de la desfragmentación puede tomarse su tiempo, lo que podría originar un salto muy feo en la ejecución del juego. Igual es mejor ejecutarla cada vez que se borren X datos...

Bueno, ya veis lo que hago en vez de estudiar  :(  A ver si consigo concentrarme en lo que debo O_O

Y mientras todo el mundo de juerga  (grrr)  
Título: Entrevista De Trabajo En Ea
Publicado por: [HiDDeN] en 30 de Enero de 2004, 12:44:27 AM
 
CitarEDIT: que curioso, en la URL sale de forma misteriosa mi nombre. Casualidad...

Sólo quería "desvelar" el misterio...  <_<

http://www.dia.uned.es/Asignaturas/Sistema...MARIO/tema4.htm

La URL completa es:

http://www.dia.uned.es/Asignaturas/Sistemas Operativos I/TEMARIO/tema4.htm

Se ve el misterio?  ;)  
Título: Entrevista De Trabajo En Ea
Publicado por: newen_2 en 30 de Enero de 2004, 01:13:26 AM
 nooooo porq se os ocurre hablar de paginaciones memorias virtuales etc HOY!!! hoy he tenido examen de arqitectura de computadores (una asignatura de teleco) y la he cagado pero bien cagada. Os voy a meter la MMU por donde yo me se.  (nooo)  (nooo)  (nooo)  (nooo)