IMHO far too many interviewers place a disproportionate amount of emphasis on language minutiae and familiarity of technology X, or latest trend Y during technical interviews. Instead, the interviewee should be given the opportunity to show you their problem solving capabilities (preferably through code). In the process of doing so you will get an idea not only about their cognitive faculties but also their coding standard and practices. Furthermore, if the problems dispensed are crafted to require certain knowledge the interviewee will clearly indicate if they possess that requisite knowledge OR are able to acquire it quickly if they make rapid progress after a little prompting.
With this in mind here's a list of language-agnostic questions that will challenge even the uber geek. Some of them are, admittedly, rather academic in nature and heavily biased towards mathematical knowledge but I make no apologies for that - it's an approach also taken by Amazon, Facebook, Google and numerous other industry heavyweights in their fight for the "best of the best" developers.
- General Programming
- How would you implement a 2-thread Peterson lock?
- What is a trampoline and how does it help achieve tail recursion?
- With regard to garbage collection explain how a semi-space, mark-and-sweep process works? Is that more efficient than Cheney's algo? What approach does Haskell use for GC?
- Which are worst- heisenbugs or mandelbugs ? Justify your answer.
- When would you consider the use of reverse Polish notation a good thing?
- Currying a dyadic function produces...?
- What's the difference between single and double dispatch ?
- Should strings be immutable in strongly-typed imperative languages?
- Explain how a vtable works.
- Explain the relationship between continuations and closures.
- What problems are amenable to memoization?
- Explain how duck typing gives you polymorphism without the need for inheritance.
- What's the subtle conceptual difference between streams and lists?
- How do logical and arithmetic shift bitwise operations differ?
- Many programming languages use twos-compliment to store negative numbers. Explain how this works.
- How can you circumvent the concurrent request limit in the HTTP 1.1 specification?
- What are the salient elements of recovery-oriented computing?
- Do you think a good design exhibits irreducible complexity? Explain your answer.
- Compare object composition to inheritance explaining the circumstances when one is preferred to the other.
- How does inheritance weaken encapsulation?
- What is orthogonal design?
- Rich or Anemic domain model - which do you prefer and why?
- Is adherence to the Open-Closed principle worth it?
- What developer practices can lead to Rube Goldberg machines?
- How is cyclomatic complexity calculated?
- What problem does the MVC/MVP/MVVM patterns solve? What problems do they introduce?
- Should you care if developers prefer Allman indenting over KR indenting in a C++ codebase?
- A component exhibits low efferent coupling and high afferent coupling. What does that imply about this component?
- Name 3 algorithms that employ binary splitting?
- Is asymptotic notation still useful?
- What things might you try to improve speedup in an algorithm?
- When might you use the shunting yard algorithm?
- Is there a closed-form (non-recursive) solution to calculate the i-th Fibonacci number?
- When is an in-place algorithm undesirable?
- Can you name a cache oblivious algo?
- What's the best way to tally the number of set bits in a binary number?
- For what sort of problems would you use the Levenstein and Manhattan distances?
- What logic would you use to implement dead-code elimination in a compiler?
- Explain how Monte Carlo simulation can be used to approximate Pi.
- Assuming P != NP, which is worst - NP Hard or NP Complete ?
- Define a constant time, constant space, real-time algo to identify the dominant search term used across all queries of a search engine.
- What's the difference between a B-tree and an R-tree?
- What sort of problems does transitive closure of directed graphs solve?
- When would you use an abstract syntax tree?
- Is there a way to store matrices so matrix multiplication operations achieve good locality of reference?
- Explain why XOR is useless as a mechanism to merge 2 disparate secret values in a secure fashion.
- In a memory-constrained device would you prefer the Sieve of Aitken or Erathosthenes?
- Give 3 ways to multiply really, really large integers using an arbitrary precision number system.
- Explain the Chinese remainder theorem.
- What does the Reimann Hypothesis say about the distribution of prime numbers?
- Name a probabalistic primality test?
- What's the time and space complexity of Euclid's algo?
- Why does modular exponentiation lend itself so well to crypto applications?
- Should Fermat's Last Theorem be called a theorem or a conjecture?
- How has the Fundamental Theorem of Arithmetic affected the development of crypto algorithms?
- What benefits come from crafting idempotent database scripts?
- Deviations from 5NF - when should you do it?
- What's the difference between theta join and ansi join syntax?
- Do you consider MapReduce+BigTable+ChubbyLock to represent a distributed database?
- Would you rather scale out , or scale up a large database running a commercial RDBMS?
- If you were building a distributed database what functionality would be considerably harder to implement than that found in non-distributed databases?
- Do you think H-Store is likely to be a commercial success?
- Explain the impact of Metcalf's Law in measuring the utility of a social network.
- How is Metcalf's Law different from the principle of economies of scale?
- How does the iPhone application store "monetize the long tail"?
- Explain the theory of "wikinomics". How is it different from the wisdom of crowds?
- What's the value proposition for users of web-delivered services that store user data in "the cloud"?
- When is a "land grab" more appropriate than organic growth?
- How would you identify the critical mass, cost-value crossover point for a new IM service?
- Does the availability of cheap utility ("cloud") computing obviate the need for externally-raised seed funding for new SaaS offerings?
- How is Google's web-based mail service, GMail, differentiated from its' competitors offerings?
- Explain what split A/B testing is, and how the results should be utilised.
- What's the economic upper limit for user acquisition costs for a IM network with 10k users and per message revenue of .005 USD?
- Explain what founder's dilution is.
- What do you consider to be the "killer apps" of the past 10 years?
- Apart from reduced bandwidth costs, what are the benefits of employing a P2P network for application delivery?
- Explain why Microsoft Office is the dominant desktop word-processor / spreadsheet / presentation tool.
- At what point in a business can inelastic demand be exploited?
- Explain why major records labels view the sale of non-DRM digital music as a disruptive technology.
- What are these people famous for: James Gosling, Yukihiro Matsumoto, Grace Hopper, Bjarne Stroustrup, Anders Hejlsberg, Guido van Rossum, E.F. Codd, Simon Peyton-Jones, Alonzo Church.
- What's an Erdos Number?
- What IT entrepreneur had some success establishing a new lower bound on the solution to the burnt pancake problem?
- What IT entrepreneur has some success writing a lexer?
- Who was the entrepreneur who sold Hotmail to Microsoft?
Trivia (Not at all Appropriate for Interviews)
22 Feb 2009 Damien Wintour