Tue Feb 13 16:08:55 PST 2007
Return of the Server
Tue Feb 6 23:39:00 PST 2007
Apple Interview, Round 3
I managed this interview better than my last one. My mind wandered less, and I had practiced answers to questions I knew I was going to be asked. I haven't put together a transcript for this interview, and I don't know if I will. I'll list some of the questions asked, and maybe I'll write a transcript from my notes later.
- Tell me about the experience you have in writing in Java, specifically your OpenGL game engine.
- Tell me about your experience using JNI.
- Now some more basic questions: could you tell me what the difference between a set and a list is?
- What would a linked list be good at that an array wouldn't be good at?
- What is the level of complexity for lookup and insertion for: a hash table, binary tree, and linked list.
- How would you get two threads to deadlock?
- Is there an advantage to running a multithreaded application on a single-processor computer?
- Tell me about different kinds of locking structures.
- What does the Java synchronized keyword do?
- What is the difference between an abstract class, a concrete class, an instance, and an interface?
- Are you familiar with virtual methods in C++? Is there an analogous structure in Java?
- What is the difference between a checked and unchecked exception?
- What is your Objective-C experience?
- What's the mechanism to return values you no longer care about in Obj-C?
- How much experience do you have with Swing?
- What are some design patterns used in Swing?
- What are some design patterns in general?
How and when do finalizers get run in Java? - Referencing the SoC project again - did your JNI interact with the garbage collector? Did that factor into your design at all?
- Tell me more about the design you used in your JOGL game.
- Why didn't you use Java3D?
At this point he asked if he could have one of his colleagues call me - he mentioned the colleague's first name offhand. While I waited for the call, I did some Googling and quickly found the guy he was talking about, a tech lead in the Java team. This person called me and asked me questions about my Davinci project for twenty minutes. He especially focused on how I dealt with interactions between the threads, and I opened up (an older version of) the code and took him through a portion of the callback sequence.
Now, I wait. I have a feeling this is it - I think I would match best in the Java team. If I measure up, I hope they let me know quickly so I can stop being anxious. If I don't, maybe they'll kick me over to yet another department, or maybe they'll realize that this is my best chance, and let me go. I hope for the first result, because I'm feeling excited to work on the Java team - the other two interviews didn't give me that feeling.