Interview at EA Games
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.
They're going to call me back on Monday or Tuesday.
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.
They're going to call me back on Monday or Tuesday.
a screen cap is worth 0x100000 DWORDS
-
- Posts: 602
- Joined: Sat Aug 23, 2003 2:03 am
- Location: Pottstown, PA
- Contact:
could you help me?
could you say your question aboat
2-3-4-6 ?
or could you help me to find exact answers ?
and if you remember more Iwii thank you more.
I hope you success.
razial
2-3-4-6 ?
or could you help me to find exact answers ?
and if you remember more Iwii thank you more.
I hope you success.
razial
-
- Posts: 271
- Joined: Sat Aug 23, 2003 5:52 pm
- Location: Hurricane Central, Florida
hey Keless what kind of position were you interviewing for? Programmer, Software Engineer, Junior Programmer, Senior Software Engineer? How much experience were they expecting you to have for this position? How much experience do you have?
Last edited by [dx/x]=HUNT3R on Fri Jan 16, 2004 9:47 pm, edited 1 time in total.
2) in general: design for a spirograph screen saver (polar or cartesian coordinates? what periods/radii will create stable patterns?)
if you dont know what a spirograph is, look here:
http://www.hasbro.com/pl/page.viewprodu ... N=70602193
http://math.dartmouth.edu/~dlittle/java/SpiroGraph/
http://pythoncard.sourceforge.net/sampl ... graph.html
a plastic cog rotates around another cog, and a pen is inserted in a hole in the first cog, as it rotates, the pen leaves swirly lines. Depending on the side of the cog, and the hole you chose, different patterns emerge.
I said I would do the whole thing in cartesian coordinates because the end result would have to be, and because it would make things simpler, even though the need for extra sin() and cos() functions would make it a little more CPU heavy.
furthermore, I suggested it be created as a scene graph, so that a 'ring' object would be a child of the 'ring' object it rotated around.
finaly, he wanted to ask about the main loop of the program. I suggested that the data be both Updated and Drawn every loop, and to aim for a rate of 30 loops per second. (because its drawing every loop, that also means 30FPS)
This means you're going to generate a dot every loop where the pen should be, but a series of dots does not make a solid line-- so how can we make these points look like a solid curve? Use the points as control points for a bezier curve. (if you dont know what a bezier curve is, google it)
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
NOTE: this is all purely theoretical, and has little to nothing to do with actuall mouse interface code
imagine you're writing a library class providing interface to use a mouse. you need to support the functionality of several different mouses, but the user doesnt want to have to know which mouse is being used-- you need to hide the differences.
so first you create an 'Interface' class. This will have the basic functions that the user will call. The actual implementations of these functions will be done by sub-classes that instanciate it for different mice. This is accomplished thru PURE VIRTUAL function definitions in the Interface class (which is an ABSTRACT BASE CLASS). There should only be one instance of it, so it should be a SINGLETON (a class that you cannot create your own instance of)
ex:
now that you have an ABC, you can create instances of it for new mice. because the Init() and getPos() functions are pure virtual, if you call those functions on a Mouse_Interface pointer that is pointing to a sub class, it will call the Init() or getPos() function belonging to that sub class.
So the user never knows what actual sub class is being used, all he knows is that he calls Init() to start it, and getPos() to get the position of the mouse.
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.
okay, this one is pretty complicated, especially if you dont know anything about memory management / fragmentation / heaps. Basically, imagine that you've been given a slice of memory. your team leader has told you thats all you get, and to make sure you never go outside of that. So, you create a class that will manage it for you. Any calls to 'new' or 'delete' will actually go thru this class (because you will overload 'new' and 'delete' in your animation classes to use this class).
When you ask it for a new piece of memory, it will grab the next available piece in the slice you've been given, and return that to you. And when you try to create something new that doesnt fit into the space, your mem allocator class will not let you.
this is great because now you will NEVER go outside of your memory space and none of the other teammates will yell at you for taking too much space, but then you come across a problem: if you keep adding new objects in this space, you'll eventually be deleting stuff too.. how do you keep track of what memory can and cannot be used?
You use a Virtual Page Table. (I think thats the right term, otherwise, i made that name up, but i'll use it anyway). basically, it points to different parts of your memory space, to the beginning of each block of memory. I'd probably keep a pointer to used and to free memory spaces, but it doesnt matter. anyhow, using this you can keep track of where your free and used spaces are.
But there comes another problem. where do you store this? because your team leader has said you can ONLY use this memory slice! that means you have to keep this table INSIDE the memory slice (typically at the top block).
And finally there is the issue of block size. How large is the smallest 'chunk' of memory you will let them allocate? If you let them allocate very small chunks, you'll have to keep a lot more pointers to them, which means your Virtual Page Table will have to take up more room (wasting your precioius space). However, if you make those chunks too large, while your VPT will be smaller, the pieces you're giving away will be larger and even if something only needs a tiny bit, it will have to reserve a whole block-- so you get wasted space that way too.
6) where are quaternions normally used, and why?
Quaternions are primarily used to combat the issue of Gimbal Lock. (if you dont know what Gimbal Lock is, use Google) They are primarily used in things like Animated Meshes, for SLERP Interpolation-- which provides smooth time-based frame calculation without Gimbal Lock. SLERP is also good for blending multiple animation frames.
if you dont know what a spirograph is, look here:
http://www.hasbro.com/pl/page.viewprodu ... N=70602193
http://math.dartmouth.edu/~dlittle/java/SpiroGraph/
http://pythoncard.sourceforge.net/sampl ... graph.html
a plastic cog rotates around another cog, and a pen is inserted in a hole in the first cog, as it rotates, the pen leaves swirly lines. Depending on the side of the cog, and the hole you chose, different patterns emerge.
I said I would do the whole thing in cartesian coordinates because the end result would have to be, and because it would make things simpler, even though the need for extra sin() and cos() functions would make it a little more CPU heavy.
furthermore, I suggested it be created as a scene graph, so that a 'ring' object would be a child of the 'ring' object it rotated around.
finaly, he wanted to ask about the main loop of the program. I suggested that the data be both Updated and Drawn every loop, and to aim for a rate of 30 loops per second. (because its drawing every loop, that also means 30FPS)
This means you're going to generate a dot every loop where the pen should be, but a series of dots does not make a solid line-- so how can we make these points look like a solid curve? Use the points as control points for a bezier curve. (if you dont know what a bezier curve is, google it)
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
NOTE: this is all purely theoretical, and has little to nothing to do with actuall mouse interface code
imagine you're writing a library class providing interface to use a mouse. you need to support the functionality of several different mouses, but the user doesnt want to have to know which mouse is being used-- you need to hide the differences.
so first you create an 'Interface' class. This will have the basic functions that the user will call. The actual implementations of these functions will be done by sub-classes that instanciate it for different mice. This is accomplished thru PURE VIRTUAL function definitions in the Interface class (which is an ABSTRACT BASE CLASS). There should only be one instance of it, so it should be a SINGLETON (a class that you cannot create your own instance of)
ex:
Code: Select all
//SINGLETON, ABSTRACT BASE CLASS
class Mouse_Interface {
protected:
Mouse_Interface(); //these are protected because its a SINGLETON
~Mouse_Interface();
public:
virtual bool Init() = 0; //these are PURE VIRTUAL functions
virtual pos2d getPos() = 0;
};
So the user never knows what actual sub class is being used, all he knows is that he calls Init() to start it, and getPos() to get the position of the mouse.
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.
okay, this one is pretty complicated, especially if you dont know anything about memory management / fragmentation / heaps. Basically, imagine that you've been given a slice of memory. your team leader has told you thats all you get, and to make sure you never go outside of that. So, you create a class that will manage it for you. Any calls to 'new' or 'delete' will actually go thru this class (because you will overload 'new' and 'delete' in your animation classes to use this class).
When you ask it for a new piece of memory, it will grab the next available piece in the slice you've been given, and return that to you. And when you try to create something new that doesnt fit into the space, your mem allocator class will not let you.
this is great because now you will NEVER go outside of your memory space and none of the other teammates will yell at you for taking too much space, but then you come across a problem: if you keep adding new objects in this space, you'll eventually be deleting stuff too.. how do you keep track of what memory can and cannot be used?
You use a Virtual Page Table. (I think thats the right term, otherwise, i made that name up, but i'll use it anyway). basically, it points to different parts of your memory space, to the beginning of each block of memory. I'd probably keep a pointer to used and to free memory spaces, but it doesnt matter. anyhow, using this you can keep track of where your free and used spaces are.
But there comes another problem. where do you store this? because your team leader has said you can ONLY use this memory slice! that means you have to keep this table INSIDE the memory slice (typically at the top block).
And finally there is the issue of block size. How large is the smallest 'chunk' of memory you will let them allocate? If you let them allocate very small chunks, you'll have to keep a lot more pointers to them, which means your Virtual Page Table will have to take up more room (wasting your precioius space). However, if you make those chunks too large, while your VPT will be smaller, the pieces you're giving away will be larger and even if something only needs a tiny bit, it will have to reserve a whole block-- so you get wasted space that way too.
6) where are quaternions normally used, and why?
Quaternions are primarily used to combat the issue of Gimbal Lock. (if you dont know what Gimbal Lock is, use Google) They are primarily used in things like Animated Meshes, for SLERP Interpolation-- which provides smooth time-based frame calculation without Gimbal Lock. SLERP is also good for blending multiple animation frames.
a screen cap is worth 0x100000 DWORDS
On the Interview Schedule paper they gave me it says:[dx/x]=HUNT3R wrote:hey Keless what kind of position were you interviewing for? Programmer, Software Engineer, Junior Programmer, Senior Software Engineer? How much experience were they expecting you to have for this position? How much experience do you have?
"Position: SW Engineer"
Im not sure whether they consider a different between SW Eng and Programmer-- but I'd likely be comming in as Junior level. I have been involved with a company that is porting cell phone games from one phone to another, and have written a game engine to make this easier. I am currently making Ninja Gaiden (liscensed from Sonnari) on my engine for that company. I have also written 2D games: FuzzPop and IrrLicht Tetris. I am, however, also versed in 3D math and practices. Just dont have any projects with that right now since I wanted to get games out that would be finished in time for this interview.
I also have a BS in Computer Science, graduated from USC in early '03. All told, I've only really got about 1.5 yrs experience, but i've done some pretty cool stuff during that time. Including an interactive 3D demo connected to an art exhibit-- when you touched things in the 3D scene (using a Haptic input device) it would change the lighting of the sculpture.
You can look here for what they've posted that they want:
http://jobs.ea.com/viewjob.html?optlink ... qsvbi1.JS1
though I dont think thats entirely accurate.
a screen cap is worth 0x100000 DWORDS
-
- Posts: 271
- Joined: Sat Aug 23, 2003 5:52 pm
- Location: Hurricane Central, Florida
Cool, I was wondering b/c I'm trying to get a job in gaming right now too and EA never gives me more than an automated response. Although, I did just graduate last month and I was applying to them a few months before I graduated just to see what kind of reponses I could get. Most of the jobs I've seen EA advertise say they want 3-5 yrs industry exp. like the one you applied for and I definitely don't have that because I live in Louisiana which is the toilet of the US and there are no gaming companies at all anywhere in the state. I think most people throw away my resume b/c I live so far away from them and they don't want to pay to relocate a junior level programmer. You're lucky you live in Los Angeles, near all the action.
So anyway, good luck. Let me know if they call you back. I'm just gonna keep sending out my resume...
So anyway, good luck. Let me know if they call you back. I'm just gonna keep sending out my resume...
i should point out that i didnt really get the interview from just sending them my resume.
the head of the company doing cell phone stuff I work with had some contacts there, and told them about me. then, at a gaming expo hosted by my college, I met with their PR lady who said she'd heard of me (because of said guy) and that she'd forward my resume to the appropriate person.
I think part of their interest in me is because I wrote that cell phone game engine, and I think they're imagining something on the PSP, though thats pure speculation. I had to sign an NDA before I went there, so I figured I shouldnt ask too many sensitive questions incase I unwittingly let something slip when I talked about my visit there (like right now )
the head of the company doing cell phone stuff I work with had some contacts there, and told them about me. then, at a gaming expo hosted by my college, I met with their PR lady who said she'd heard of me (because of said guy) and that she'd forward my resume to the appropriate person.
I think part of their interest in me is because I wrote that cell phone game engine, and I think they're imagining something on the PSP, though thats pure speculation. I had to sign an NDA before I went there, so I figured I shouldnt ask too many sensitive questions incase I unwittingly let something slip when I talked about my visit there (like right now )
a screen cap is worth 0x100000 DWORDS
-
- Posts: 271
- Joined: Sat Aug 23, 2003 5:52 pm
- Location: Hurricane Central, Florida
You see that's exactly why Louisiana sucks. No PR reps come to the schools here and there are no gaming conventions or expo's. There is nothing here, this place sucks. The only programming jobs here deal with database driven business applications and mostly VB or COBOL or some other stupid language. I'm probably just gonna have to move closer to all the action myself so I can meet some people and make some friends in the industry. I hear that is how almost everyone gets in, by knowing someone. Only problem with that is I need to get a job first so I can make money to move and I can't get a job doing what I want to be doing here. I'm stuck.
Anyway, it sounds like you have some good projects to show off on your resume. Again, good luck.
Anyway, it sounds like you have some good projects to show off on your resume. Again, good luck.
yeah, it'd definately help you if you got out here somehow. but its a big gamble as to whether you'd succeed in getting into the game industry, but there are more tech jobs out here anyway. Though, DBAs are in demand everywhere.
im not offering myself as a hostel, but if you ever find yourself stranded out here, I can offer a couch for a few nights
and of course, if you need help getting situated, i could help with what little knowledge and contacts i have: where to live, etc.
im not offering myself as a hostel, but if you ever find yourself stranded out here, I can offer a couch for a few nights
and of course, if you need help getting situated, i could help with what little knowledge and contacts i have: where to live, etc.
a screen cap is worth 0x100000 DWORDS
-
- Posts: 271
- Joined: Sat Aug 23, 2003 5:52 pm
- Location: Hurricane Central, Florida
Cool thanks, I'll keep that in mind.keless wrote:yeah, it'd definately help you if you got out here somehow. but its a big gamble as to whether you'd succeed in getting into the game industry, but there are more tech jobs out here anyway. Though, DBAs are in demand everywhere.
im not offering myself as a hostel, but if you ever find yourself stranded out here, I can offer a couch for a few nights
and of course, if you need help getting situated, i could help with what little knowledge and contacts i have: where to live, etc.
The only gaming company that is here in St.Louis is PopTop games (makers of Tropico).
My company only owns my soul from 7 am to 4 pm. The rest of the day, I use my paycheck to bankroll my development hobbies. =)
If/when my hobby comes to fruition, I can sit back and just do it.
The gaming industry was started by Mom and Pop companies and the way things are looking, games are comming from Mom + Poppers again and are just picked up and published by a big name like EA.
My company only owns my soul from 7 am to 4 pm. The rest of the day, I use my paycheck to bankroll my development hobbies. =)
If/when my hobby comes to fruition, I can sit back and just do it.
The gaming industry was started by Mom and Pop companies and the way things are looking, games are comming from Mom + Poppers again and are just picked up and published by a big name like EA.
Crud, how do I do this again?
i disagree sai, and here is why:
(the following vague statistics are what im recalling from a series of actual numbers provided at different lectures and conventions)
of all the games published and _widely_ distributed (ie: target, walmart, etc), only about 10% make their money back. And only about 5% make a very profitable ammount of money. it generally takes about 5 million dollars and 2-3 years (or 4-5 in Blizzards case ) of development.
This means that game companies have to put out a bunch of games, and survive off of the one or two that make money that year to pay for the rest.
This is not so in the Sports catagory, where games like NFL XXXX have been making consistent money every year-- because its the same game, just with improvements. This is the power of name branding: consistent returns. That is what EA is hoping to get in their other departments, so thats why their Medal of Honor and Command and Conquer titles get so many sequels. EA is all about maximizing their profits thru branding, and thats why they survived the last few years when all the mom and pop shops have been starving. (sad but true)
an aspect of the market where this is NOT true is cell phone games. I'd like to say handheld games in general-- but mom and pops cant really get on the GBA since the royalties for it are so high (something Sony hopes to avoid with the PSP). The cell phone game industry is largely like the wild west right now, and individuals can really stake a claim if they can get hooked up with a publisher/distributor which can happen locally or globally. Also, since cell phone games are so much quicker to develop, and much less technically advanced, its easier for people who dont have 5 yrs of experience to produce top quality work.
(the following vague statistics are what im recalling from a series of actual numbers provided at different lectures and conventions)
of all the games published and _widely_ distributed (ie: target, walmart, etc), only about 10% make their money back. And only about 5% make a very profitable ammount of money. it generally takes about 5 million dollars and 2-3 years (or 4-5 in Blizzards case ) of development.
This means that game companies have to put out a bunch of games, and survive off of the one or two that make money that year to pay for the rest.
This is not so in the Sports catagory, where games like NFL XXXX have been making consistent money every year-- because its the same game, just with improvements. This is the power of name branding: consistent returns. That is what EA is hoping to get in their other departments, so thats why their Medal of Honor and Command and Conquer titles get so many sequels. EA is all about maximizing their profits thru branding, and thats why they survived the last few years when all the mom and pop shops have been starving. (sad but true)
an aspect of the market where this is NOT true is cell phone games. I'd like to say handheld games in general-- but mom and pops cant really get on the GBA since the royalties for it are so high (something Sony hopes to avoid with the PSP). The cell phone game industry is largely like the wild west right now, and individuals can really stake a claim if they can get hooked up with a publisher/distributor which can happen locally or globally. Also, since cell phone games are so much quicker to develop, and much less technically advanced, its easier for people who dont have 5 yrs of experience to produce top quality work.
a screen cap is worth 0x100000 DWORDS
a wish, a dream...
game development is what i always wanted to do. congrats keless, whether you get the position or not, you are livin the dream just by tryin. best of luck of course
i doubt i could have come up with necessarily the "correct" answers for ALL those questions(the memory manager bit lost me a little), but i certainly could have had a nice creative solution for each. if you do get the job, maybe put in a good word for me lol j/k no pressure
my hope is that by doin this i can learn enough to make myself useful and down the line get to where you're at(network administration is EASY, but not much fun!).
here's hopin'
-Ted
i doubt i could have come up with necessarily the "correct" answers for ALL those questions(the memory manager bit lost me a little), but i certainly could have had a nice creative solution for each. if you do get the job, maybe put in a good word for me lol j/k no pressure
my hope is that by doin this i can learn enough to make myself useful and down the line get to where you're at(network administration is EASY, but not much fun!).
here's hopin'
-Ted
My irrlicht-based projects have gone underground for now, but if you want, check out my webcomic instead! http://brokenboomerang.net