Skip to content

Instantly share code, notes, and snippets.

@bf4
Last active May 28, 2018 17:52
Show Gist options
  • Save bf4/5716915 to your computer and use it in GitHub Desktop.
Save bf4/5716915 to your computer and use it in GitHub Desktop.
Interview questions
Good Interview Questions
"Give Him/Her the opportunity to impress you, and maybe even give you a revelation"
Ask open-ended questions, see
---> attitudes about the topic
---> how s/he thinks
---> what s/he's been thinking about lately
Q: Compare Ruby to another language.
---> requires knowledge of two languages
Q: What are you hacking on?
---> Open source, can mentor?
Q: Ruby/Rails Gotchas?
- maybe see https://github.com/gregstallings/ruby-trivia
Q: Server/System Linux know-how?
Q: How to decide if you will use Rails? vs. Sinatra, Rack, etc?
Q: Asynchronous Processing?
Q: How would you go about improving our XXXX where the code is not well-designed?
Q: Front End, jQuery?, YUI? Javascript inheritance type
Q: Do a code review on our code, see what
---> s/he likes
---> disklikes
---> would change and how
Q: When and how do you test?
Q: When and how do you refactor?
Q: NoSQL?
Q: What are
- MVC - model view controller
- CAP Theorem - consistency, availability, partition tolerance
- Dining philosophers - concurrency
- Object-Oriented - encapsulation, inheritance, polymorphism
- Encapsulation Enforces Modularity
- Inheritance Passes "Knowledge" Down
- Polymorphism Takes any Shape
--> the point of all of this is Modular Design, to minimize the cost of change
(agile) --> build it to make change cheap (not to support everything)
- DRY === SRP: don't duplicate knowledge.. only one representation
- Kent Beck's 4 rules of simple design
1. tests pass
2. no duplication of logical canonical representation (dry is concept, not lines of code)
3. reveals intent - communicate with other coders.. machine doesn't care about variable names
4. small - do the simplest thing that can possibly work -> flexibility to modify
- SOLID
- Single responsibility,
- Open (for extension) closed (for modification),
- Liskov substitution - subtypes should behave like supertypes, duck-typing
- Interface segregation - minimize surface area of public interface(s)
- Dependency inversion - depend on abstractions
Smells
- divergent change == SRP, multiple reasons for a class to change
- GRASP
- KISS
- YAGNI
Bad Interview Question:
What is the power of 2 that is closest to one billion?
Other things:
* culture fit, both directions
* pair on code
* https://www.braintreepayments.com/braintrust/how-braintree-interviews-exceptional-developers
* http://www.slideshare.net/slideshow/embed_code/1708020?startSlide=20
- tell me about a project that didn't go well, a teammate had trouble with --> is s/he a whiner? learn from mistakes? personal skills?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment