Questions About Languages Flashcards
Tell me the 3 worst defects of your preferred language
Why is there a rising interest in Functional Programming?
What is a closure, and what is useful for? What’s in common between closures and classes?
What are generics useful for?
What are higher-order functions? What are they useful for? Write one, in your preferred language.
Write a loop, then transform it into a recursive function, using only immutable structures (i.e. avoid using variables). Discuss.
What does it mean when a language treats functions as first-class citizens? Why is it important that in a language functions are first class citizens?
Show me an example where an anonymous function can be useful.
There are a lot of different type systems. Let’s talk about static and dynamic type systems, and about strong and weak ones. You surely have an opinion and a preference about this topic. Would you like to share them, and discuss why and when would you promote one particular type system for developing an enterprise software?
What are namespaces useful for? Invent an alternative.
Talk about interoperability between Java and C# (in alternative, choose 2 other arbitrary languages)
Why do many software engineers not like Java?
What makes a good language good and a bad language bad?
Write two functions, one referentially transparent and the other one referentially opaque. Discuss.
What is a stack and what is a heap? What’s a stack overflow?
Some languages, especially the ones that promote a functional approach, allow a technique called pattern matching. Do you know it? How is pattern matching different from switch clauses?
Why do some languages have no exceptions by design? What are the pros and cons?
If Cat is an Animal, is TakeCare<Cat> a TakeCare<Animal>?</Animal></Cat>
In Java, C# and many other languages, why are constructors not part of the interface?
In the last years there has been a lot of hype around Node.js. What’s your opinion on using a language that was initially conceived to run in the browser in the backend?
Pretend you have a time machine and pretend that you have the opportunity to go to a particular point in time during Java’s (or C#, Python, Go or whatever) history, and talk with some of the JDK architects. What would you try to convince them of? Removing checked exceptions? Adding unsigned primitives? Adding multiple-inheritance?