|
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? |