I think it is very telling about the state of interviews in the tech world when:<p>1. I can NOT off the cuff answer those all correctly (at least not without a little Googling).<p>2. I can, largely off the cuff, implement an IO monad in Scala using higher-kinded types and compose instances of them in a hand rolled non-blocking server.
Related: The levels of Scala knowledge, according to Martin Odersky[1]<p>[1] <a href="http://www.scala-lang.org/old/node/8610" rel="nofollow">http://www.scala-lang.org/old/node/8610</a>
These are terrible. Not because they don't test knowledge of scala, but because language trivia is a terrible way to identify a quality candidate.
Original author here.<p>this post was never a "memorize this and you will know scala" statement, or that if you know those answers you will get a scala job. I simply found those questions a while ago and decided to provide answers by myself as an exercise. I do believe some answers may not be completely right (even completely wrong), and others may be a starter for a nice and productive discussion.<p>Also, knowing the answer to these questions doesn't make someone a good/better developer. These are just some small islands on the (scala) software developer knowledge!<p>In my opinion these are somehow basic concepts (that will only be valuable when applicable on 'real life' code), and there is a lot more to explore, specially about the type system. To know more about the type system have a look at this awesome article I found: <a href="http://ktoso.github.io/scala-types-of-types/" rel="nofollow">http://ktoso.github.io/scala-types-of-types/</a><p>Unfortunately, these are questions often done in several scala-related job interviews (I had my share. Coincidence or not, I never accepted an offer from a company which did that kind of questions) :(<p>Feel free to provide feedback or discuss some topics.
Those are generally pretty easy. Now ask me to recite all of the rules of implicit resolution, and I will be stumped. That is probably the only part of the language, other than delimited continuations, that I do not need to know for day to day things.