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.
Tue Feb 6 13:36:44 PST 2007
Third Apple Interview Complete
Mon Feb 5 22:49:35 PST 2007
Apple Interview 3 Approaches
Tue Jan 30 20:58:48 PST 2007
Onward with Apple
Despite that, early this morning I received another standard interview scheduling e-mail from a different college recruiter than the one I had been dealing with. The e-mail stated that "several members of Apple's Development team" would like to interview me, as opposed to the last e-mail which specified a single department. I was happy that they were still interested in me, but it seemed like they weren't impressed enough to accept me very quickly; rather, they wanted to bounce me around to different departments to find one that wanted me.
Later today I saw I had a voicemail. It was from the recruiter that had e-mailed me, and he called to get in contact with me to arrange this interview. He sounded more interested in talking to me than any other contacts have been, and he referenced an "opportunity in the Java team, in the development technologies division of software engineering." I don't know if this means they've found a place they'd like me to be, or if they're still tossing me between departments to see if anyone will take me.
I'll get in contact with this guy and see what he has to say. Hopefully they'll make a decision soon, and I can be done with interviews.
Mon Jan 22 17:47:13 PST 2007
Apple Interview, Round 2
Then the interview was over. Looking back on my answers, I don't know if I did as well as I had hoped to. I guess we'll see in the near future.
Thu Jan 18 19:08:23 PST 2007
Apple Interview Scheduled
Thu Jan 18 19:04:42 PST 2007
IBM Technical Interview
The interview questions were based on how I had scored my skills on the application. Most were asked over the phone; some involved code or had complex answers, and those were sent over AIM. The first questions were about my background and experience with software engineering and open source software, the general pros and cons of OSS, and my experience with development tools like CVS and Bugzilla.
Next she started asking questions based on the skills I claimed on the application. I was first asked questions dealing with database syntax. I didn't do too well on those - I might have scored myself too high on the application. I got most of the first question right (which would have been simple if I had much experience with SQL), but didn't know enough to answer the other questions.
Then we moved on to questions I was better at answering: questions about Java and C. I rated myself very highly on Java, and she asked a lot of questions to make me prove it. Some questions were about the nature of the language, some were about syntax, and some were about OO. In the middle, I got tongue-tied and forgot the keyword extends, until I was prompted and reminded it started with an 'e'. There were tricky questions involving variable initialization, the kind of thing that's almost to the level of trivia, and shouldn't come up for a coder that knows what he's doing. The interviewer said that there wasn't really room for questions about design patterns in the interview, because it all goes down onto a form, but she squeezed some in at the end of the Java portion.
The C questions were more specific about syntax and certain tricks and caveats. There were questions about variable scope void pointers, and fibonacci. I was asked about almost every section on the application, including experience with Eclipse, Linux, system programming, JVM programming, and whatever else I decided I was barely proficient in.
The final portion was a case study: I was given a hypothetical project, in this case involving medical records, and I was to brainstorm out loud all the aspects of the project, from what I would need to start with, to what technical requirements there would be, to who I would need on my team, to solving team problems, to completion of the (massive) project. I rambled on, "brainstorming" my way through the problem, with occasional prompts from the interviewer.
The verdict? I should really look into learning more about databases, and I did "okay" on the case study. I impressed her with my Java and C knowledge, and my OSS experience. In the end, I passed. I'm now a finalist, and I should be hearing eventually from one or more project mentors for more interviews with them.
Tue Jan 16 17:16:12 PST 2007
IBM Technical Interview Scheduled
I don't know what happened to my Apple interview. After I let them know what my availability was (in a nice letter, by the way), I heard nothing. I haven't yet done a technical interview with them. I'll start pestering them to tell me something.
I'll also get going on applying to Google's internship program, and I'll see what other nice companies are in the middle of their internship recruiting programs. Local internship recruiting tends to start later - I'll definitely be at the spring career fair on campus.
Tue Dec 12 18:01:38 PST 2006
Next Round of Apple Interviews
In the first on-campus interview, I was told that this phone interview (of which there might be more later) will be a technical interview. I'll have to be ready to show off my skills. I'll update with another post once I've had another interview.