C job test
I need a little advice here. I applied for a C programming job at a game company and there is an all-day at-home test involved. Other than studying up on everything, which may not be practical, I'd like some ideas from the experienced people out there on good things to brush up on and what I may likely expect.
I know plenty, which is why I got a reply, but it's my first programming job opportunity, so I lack actual real world experience and don't want to screw it up over something stupid.
> and there is an all-day at-home test involved.
Oh, how is this supposed to winnow the wheat from the "google all the answers chaff" ?
On the face of it, it seems unlikely that you're going to be faced with several hundred multi-choice questions.
An all-day thing seems more like an actual programming challenge for a mini game - lets say implement 3D tic-tac-toe.
If the company is good, they will have pre-googled for existing answers, to easily spot the cheaters.
I guess being a game company, it will heavily focus on your graphical API abilities, as well as some of your design abilities.
If you've already done several such games, then it should be easy for you.
Well of course, granted, I figured it's not going to be a test of the standard kind in school, but more of an actual project. Though, I totally forgot about the 3D part of it (games, duh), since they were asking about all skill and experience levels. I was mainly thinking more along the lines of structures and concepts. For example, in my classes we did go heavily into stacks, queues, linked lists, trees, binary trees and hash tables. We only briefly touched on AVL trees. Definitely no moderate or extensive work in them, and only a brief overview and handful of exercises in graphs, maps, and heaps. Certainly nothing more than a passing mention of B-Trees, Red-Black Trees and some other things. Which is unfortunate, because it seems that a lot of the structures in the previous two sentences are what most modern applications use anyhow. So I think I need to do some practice with those.
I guess I'll just have to study and practice and get as much of it to the point of familiarity and learning it cold as I can.
You'll be surprised how infrequently (if ever) you end up using those exotic data structures you learned in classes.
97% of containers used are arrays/vectors, 2% linked lists and simple trees, and you don't have to code them up 99.9% of the time. Either just using a library, or someone in the company has already coded it up and everyone is using it.
It's good to have a fairly good intuitive understanding of those data structures and know their advantages vs shortcomings, etc, but don't worry about the nitty gritty implementation details (self-balancing algorithms, sentinel pointers, etc). Unless you happen to need to implement one. Just read Wikipedia when/if you ever do.
Most of the programming tests issued now are quite simple. The Microsoft test was by far the easiest with game company tests coming in a close second. I have taken a few programming tests from game studios that were quite challenging and quite fun. You will run into very complex issues in game programming, however, that being said most of them have already been solved by the engine or scripts from past games by the same studio. Very rarely are you going to attack something like a massive physics problem from scratch. You will probably be using Havok or some other 3rd party API. However it is good to understand how to go about solving problems and how to take the classroom example and modify it to work in a real time game. Some problems range from implementing a singly linked list (cake) to writing a design for a race car game taking into account position calculation (1st, 2nd, 3rd, etc), if the cars are going the right way...etc, etc. I will not reveal too much out of respect for the company who uses this question (b/c it is a very good question). That same test also created a fake assembly language with limited instructions and then wanted you to write a program that did a calculation. Another very good question.
If you understand vectors and operations on vectors and matrix transformations you can pretty much solve any game programming related question.
I think I failed miserably. I did my best, so I don't have to wonder "What if?..." The problems seemed simple enough in my head; they weren't hard to think out or follow through. But I guess turning it into code wasn't as straight-forward as it sounded in my head (given that their goal was 3-5 hours, and even after 8 I wasn't done).
Oh well. good experience I suppose, and now I know what sorts of things I can practice on.
Thanks for the thoughts and feedback guys, I appreciate it.
But did you actually finish it (even if it took longer than someone else's estimate)?
Moreover it would be very kind of you if you provided what kind of code did they ask you to develop?
If yes, I suggest seeing if any of the code would be worth creating your own reusable code modules in case you get a similar problem in the future.
Originally Posted by Salem