Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/nebupook/public_html/include.database.php on line 2
NebuPookins.net - NP-Complete - First computer-related job interview
 

Deprecated: Function ereg_replace() is deprecated in /home/nebupook/public_html/include.parse.php on line 32

Deprecated: Function ereg_replace() is deprecated in /home/nebupook/public_html/include.parse.php on line 33
First computer-related job interview
[Computer]

Wednesday, I got an e-mail from the McGill Undergraduates mailing list about an internship position at Castor Tech. What got me interested in the job was that it had what I considered to be a very obscure skillset: Java, JavaCC (the compiler compiler), JTB, BNF Grammars, XQuery and XUpdate, Abstract Syntax Trees and Eclipse Plugin Development. By complete fluke, I just happen to have this skill set, except for Eclipse Plugin Development. This combination is obscure enough that I wouldn't be too surprising if I was the only graduate from McGill with these skills. (I'll later learn that there were a total of 3 applicants including myself).

After some fumbling around and phone calls (the e-mail didn't say how to apply, so I e-mailed a couple of people and got the phone number from the company website), I managed to land myself an interview. That interview was today.

It was pretty cool, 'cause the interview was done by teleconferencing by someone in Miami. When I showed up at the Montreal office, they directed me to a room with a monitor, camera and speakerphone, and I apparently was using VOIP (combined with Video, I guess) to communicate (so no long distance charges either).

The project they want me to work on (assuming they hire me) is called IRIS, and it looks like it's a universal porting tool. The currently advertised use is to port Unix code to Linux or from the 32 bit architecture to 64 bit, but it looks like translating from COBOL or C++ to Java, for example, is in the works. This sounded a lot like the project I had worked on in my compiler course which converted from WIG to Python. So I imagine basically what happens is, like a compiler, IRIS parses the source code from the source language into an abstract syntax tree, does transformation to that tree using XQuery and XUpdate, and then outputs the AST into a Concrete Syntax Tree in the target language.

What makes this more complex that my academic project is that IRIS has to be able to read from multiple languages. In fact, I've infered that you probably just drop XML files describing source languages into a plugin directory (or something similar) to get IRIS to support whatever language you want. I'd assume that I don't personally have to know anything about COBOL, but rather some expert will write up the XML file describing the language and I just have to make IRIS understand those XML files.

The other thing that makes IRIS more complicated than my project is that it has to integrate with Eclipse as a plugin, such that whenever there is a difficulty in porting something, it has to be able to highlight in the Eclipse IDE the line and put a little icon and a warning or something. This is particularly difficut for languages like C++ which have a preprocessor, because IRIS has to be able to "un-preprocess" to be able to highlight lines, 'cause the AST doesn't match the source code after the preprocessor has ran.

Anyway, being autistic, I have only a vague idea how the Interview went. He seemed to be happy that I did a similar project, and that I've graduated already (I guess the other canditates were still students). I kind of fumbled around one question he asked. I don't have experience with JavaCC per say, but instead I used SableCC for my compiler course. He asked me if SableCC used an LL(1) language, and I couldn't remember, so I sort of mumbled about how I took a look at the JavaCC website and JavaCC and SableCC are similar. Now that I'm home, I found out that SableCC generates LALR(1) parsers (which is in some ways similar, but has significant differences). The other tiny mishap is that he asked me if I was familiar with JUnit, and I told him I was familiar with Unit Testing in general, but not with the JUnit tool in particular, but he seemed to take a "Better than nothing" attitude, so I figured maybe some of the other candidates didn't even know Unit Testing (hard to believe).

After the interview, I had to do a "written exam" which was basically two really easy programming questions. The first question was to write a method that, given a string, returns all the non-duplicate characters that appears in that string. The second was to write an abstract polygon class with interface setSize(int), setSize(int, int) and draw(), the last method drawing the polygon onto the console (as simple ASCII art), and then extend it with a Square, Rectangle and Triangle class (so a size 4 square is four rows of "****"). Extra points for documenting with JavaDoc and throwing exceptions at the appropriate place (e.g. setSize(3,2) on the Square class). Child's play, but I only had an hour to do it, so I didn't finish the JavaDoc documentation on all the classes. I did enough, though, to make it obvious that I am very familiar with JavaDoc notation. Given that I was way faster than average in completing assignments at McGill (In fact, I think I was always the first one to finish all my assignments and the first one to leave exams), since I ran out of time on the bonus question, I suspect the other candidates (if they are typical McGill students) did not finish the main question.

They said they'll contact me by Wednesday to let me know if I got accepted.

 
Deprecated: Function ereg_replace() is deprecated in /home/nebupook/public_html/include.parse.php on line 60

Deprecated: Function ereg_replace() is deprecated in /home/nebupook/public_html/include.parse.php on line 61
E-mail this story to a friend.

You must be logged in to post comments.