David Lindes's pool of Interview Questions
OK, it's my pool in that it's a pool I work from... this doesn't
necessarily mean I wrote the questions; anyway, though, here they are
(note: this document is in its infancy; I hope to expand it greatly over
time), with information about what sorts of answers I might look
for:
Specific technical questions:
General UNIX(/Linux/GNU) questions:
- Are you comfortable working in a UNIX shell environment?
- (whatever the truth is; perhaps some hints at comfort level by
phrasing of answer)
- Can you tell me the basics of what the following commands do: ls,
ps, ed, sed, awk, vi, sort, uniq, diff, ...
- ls: list files; ps: list processes, ed: line-editor, sed: stream
editor (...); awk: scripting language for reporting and such; vi: visual
editor (...); sort: sort text; uniq: remove duplicates of items in text;
diff: show differences in two files; ...
- What's an environment variable, and how would you set one?
- it's a named way of storing information, which is passed on to child
processes. How to set it depends on the shell, the main ways being: sh
(and derivatives): FOO=bar export FOO; bash/ksh/zsh: export FOO=bar;
csh: setenv FOO bar
Perl:
- Given the following three variable names (on board, write): $foo,
@foo, %foo -- say what each variable is
- A scalar, a list, and a hash
- Follow-up: Is $foo[0] necessarily related to $foo?
- No.
- Have you done object-oriented programming in perl?
- (the truth for this candidate)
- Follow-up (If OOP in Perl): What is the first element passed to each
"method" when called in an object-oriented way?
- "$self" (by convention), i.e. the reference to the object being
acted upon.
C/C++ (either/or questions):
- What's the function signature for "main"? (alternate wording: write
a function prototype for main) (if they need help: what are the return
and argument types, and the typical names for the latter)
- generic: int main(int argc, char *argv[]);
unix-centric: int main(int argc, char *argv[], char *envp[]);
alternate: char **argv instead of char *argv[]...
C++ specific questions:
STL:
(Mostly to be written... but here are some basics to start
with:)
- Are you familiar with the STL?
- The truth, whatever that may be. ;-)
- Follow-up: if so, describe it in brief
- Things they might mention: containers (list, queue, deque, map,
multipmap, etc.), iterators, templates, ...
XML:
- What does XML stand for?
- eXtensible Markup Language
- Describe what an empty tag is, and how it's indicated within a
document
- A tag with no content (save possibly attributes), and therefore no
(separate) close-tag. <tag-name/>.
- Possible follow-up (depending on the response above): If they don't
have any content, why are they useful?
- Two main ways they can be useful: (1) to signify something which
truly doesn't have any sort of "content" (like a "horizontal rule"); (2)
they may still have "attributes", which give them content of a
sort.
XSLT:
- What does XSLT stand for?
- eXtensible Stylesheet Language -- Translations
- What is the XPath notation for the current node?
- '.'
- Name two main ways templates might get called
- (1) as a "match" template; (2) as a named template
Databases, generic:
(TBD... something about normalization?)
Databases, SQL:
(TBD... basics of a select statement, etc?)
UML:
- What does UML stand for
- Unified Modeling Language
- What are a few of the things UML is useful for?
- modeling databases, workflow, program logic, ...
Generic "thinking" questions:
- Why are (so-called) "man-hole covers" round?
- Several significant reasons: (a) physically incapable of falling in;
(b) don't have to worry about getting correct orientation; (c) easier to
move once pulled (if you needed to move them...)
- You're in a room with three light switches, labeled A, B, and C.
Those switches are connected to 3 light bulbs in another room, the
inside of which you cannot see from the room with the light switches.
The lights are labeled 1, 2, and 3. Each switch controls exactly 1
of the lights, but the mapping is unknown. What's the fewest number of
trips you need to make to the room with the light switches to determine
the mapping, and how do you do it?
- One: Turn on A, and leave it on for a minute or so; Turn off A and
turn on B; go to the other room... You should have one light on (B),
one off and warm (A), and the other off and cool (C).
Non-technical:
- If you were to run into technical issues that were blocking your
work on a project (i.e. you're "stuck"), what would you do?
- Look for answers on online forums (e.g. web search, newsgroups,
interactive sessions, etc.); ask for help from peers and/or management;
etc.
- Follow-up (for "online forums" answer): What concerns would you
need to keep in mind when going on-line for technical answers?
- Proprietary technologies mean you have to be careful how you ask
your questions, so as to not give away too much information about what's
going on within the company.
- What are some of your weaknesses, as a potential employee?
- Looking for honesty here, basically... and for an ability to be
comfortable being self-critical
- What are some of your key strengths? (either not from your resume,
or that you think are particularly important among those listed)
- Giving them a chance to put themselves back up, after the last
question... ;-) Also looking for... something; not sure what.
hmm.