Interview Outline - fcrimins/fcrimins.github.io GitHub Wiki
- Only hire people smarter than you. - Gil
- Look for people who "geek out" about something, either (1) a project they've done or (2) a technology they think is exciting. - David
- (ask those 2 questions explicitly)
- From Gil: http://www.greenhouse.io/recruiting and https://newtonsoftware.com/
-
Li says http://indeed.com is good (confirmed here)- no! - Peter says: GQR and the Options Group ("head shops")
-
-
Great summary article on how to hire well: https://www.toptal.com/freelance/in-search-of-the-elite-few-finding-and-hiring-the-best-developers-in-the-industry
- "The best developers don’t waste time committing to memory that which can easily be found in a language specification or API document. Moreover, learning a new language, technology, or design pattern is a relatively trivial exercise for a strong developer"
- "intentionally beginning the interview process with a prescreen by a non-technical staff member"
- "Throughout the interview, look for opportunities to provide the candidate with constructive feedback. Observe carefully the reaction that this elicits."
- "Engage in non-technical 'chit chat' for the first 5 or 10 minutes of an interview as a means of obtaining insight into the candidate’s personality."
- Technical writing sample
-
How to improve the tenure process
- Perseverance and self-reflection
- Rule of 5 - ask candidates to reflect on their past 5 years; what are highlights?
- Try to differentiate between someone's individual contributions vs. group efforts
- From Rupa (2019-7-10):
-
In terms of what I generally look for in people, "table stakes" [FWC - minimum buy-in/requirements] are (a) analytical ability, (b) comfort with data and (c) attention to detail. But I also need people to be (d) curious and (e) always wanting to learn, (f) able to deal with ambiguity (because we usually don’t have all the information we need to make decisions), and (g) to be willing to take risks and “break things” - because I’ve usually been building new things and so need people who like to think outside the way things are currently done. Collaboration (h) has usually been important as well for me because it’s generally been critical for my teams to have good relationships across the organization since we have always relied on other people to do a lot of the work for us - but the extent to which that is important for a hiring manager will depend on the role: everyone needs to be able to work in a team but it may not be critical that they be really good at networking and relationships across the organization if what they are focused on is writing really good code or managing a portfolio, for example.
-
- From Bart (2019-12-30):
- Nvidia has a "failed with prejudice" classification when interviewing someone which is basically a veto over that person ever being hired by the company. It basically means the person outright lied in the interview.
- Take candidate out for dinner as final step before offer per here.
- Gives candidate chance to signal interest.
- "Informal conversation is where assholes out themselves as such on both sides"
- "Additive contribution" via here: https://hamstoo.com/my-marks/ABw8j2l94b4G5bVu-Two_Powerful_Ways_Managers_Can_Curb_Implicit_Biases
-
two, small — but more powerful — ways managers can block bias: First, by closely examining and broadening their definitions of success, and second, by asking what each person adds to their teams, what we call their "additive contribution."
-
We need to ask questions that help us determine how a person adds to the portfolio of experiences and skills across our entire team. Focusing on additive contribution
-
Run a gap analysis. Ask, "What skills and experiences am I missing on my team that this person has?" Be careful not to focus on one-dimensional characteristics.
-
Consider their journey. Ask, "What has this person learned from her experiences? Can she take risks and persevere through difficulties?" We often perceive being quickly promoted as an indicator of someone's talent. But using this criteria might lead you to overlook the value of grit and perseverance. If a person took a risk and it did not pay off, for example, they may have learned more than a person who took a safer path.
-
- From Ed (2020-6-20):
- Score each person 1-5 on 4 different dimensions
- Skip the "tell me about yourself" or "walk me through your resume" part of the interview b/c it wastes time
-
- tech skills, what tech does candidate enjoy
-
- coding walkthrough, code a little together, does the candidate think in terms of abstractions?
-
- communication & collaboration
-
- project fit, interest in space/business
-
On Inteviewing Programmers
-
As far as I'm concerned, this is The Answer. Accept that there are different perspectives on competence, and evaluate candidates based on their criteria. Ask them "What makes you think you could contribute around here?" and then listen to them. Mentally add "1-2 weeks of focused study on what we're doing, plus access to us, and the Internet" to your evaluation. Realize that most of your actual work isn't that hard. Presto, candidates galore.
-
First, select a few traits that are prerequisites for success in this position (technical proficiency, engaging personality, reliability, and so on). Don't overdo it--six dimensions is a good number. The traits you choose should be as independent as possible from each other, and you should feel that you can assess them reliably by asking a few factual questions. Next, make a list of those questions for each trait and think about how you will score it, say on a 1-5 scale. You should have an idea of what you should call "very weak" or "very strong."
These preparations should take you a half hour or so, a small investment that can make a significant difference in the quality of people you hire. To avoid halo effects, you much collect the information one trait at a time, scoring each before you move on to the next one. Do not skip around. To evaluate each candidate, add up the six scores. Because you are in charge of the final decision you should not do a "close your eyes." Firmly resolve that you will hire the candidate whose final score is the highest, even if there is another one whom you like better--try to resist your wish to invent broken legs to change the ranking. A vast amount of research offers a promise: you are much more likely to find the best candidate if you use this procedure than if you do what people normally do in such situations, which is to go into the interview unprepared and to make choices by an overall intuitive judgement such as "I looked into his eyes and liked what I saw."
- Work ethic, "burning the midnight oil," feeling of ownership
- Per the above: Don't overlook the value of grit and perseverance.
- Describe a time when you took a risk and it did not pay off. What did you learn from that experience?
- Per Mike: there is value in someone who has taken the wrong path many times.
- How many hours do you typically work per week?
- When you start a new project, how do you typically begin? Do you ask a lot of questions or prefer to try to figure out things yourself?
- Is this person a "bare minimum" kind of worker? Ask for an example of where he/she had to meet a deadline.
- Side projects?
- Ask for list of open source code samples--how many pointers to repos do they send?
- When were the last commits on said repos?
- Do the repos have READMEs, with build statuses?
- Have you ever built anything on your own? Contributed to open source?
- "If I called your current boss and asked him about you, what would he or she tell me?"
- How much time per day do you spend on social media? (the less, the better) And which ones? What TV shows do you watch?
- Per the above: Don't overlook the value of grit and perseverance.
- Interest in the position, likelihood of sticking around
- Okay slogging through busywork. We are going to implement cooler stuff, but you need to walk before you can run.
- How many job transitions in last 10 years?
- Where do you want to be in 5 years?
- General "techiness" / technical curiosity / willingness to learn
- "The strategic interview question that weeds out the know-it-alls... Huang even has an interview question that gets to the heart of overconfidence: He asks people to rate their knowledge of technology trends on a scale of 1 to 10. He doesn't believe anyone who answers with a 9 or a 10, because no one can know everything." [https://www.businessinsider.com/hiring-manager-google-amazon-says-shes-always-wary-of-candidates-with-one-red-flag-personality-trait-2019-4]
- What would you consider your technical specialty (if you had to pick)?
-
Which tech blogs do you read?
- How do you keep up-to-date with tech trends?
-
If you could learn a new technology tomorrow, what would it be? (kws: next)
- What was the last technology (or non-technology) that you learned? When was the last time you learned to do something new?
-
Which git command do you use to switch branches? A:
checkout
, notbranch
- Understanding of functional programming, immutability, and the problem with state
- Ask the following: FP, what's the hype all about?
-
What's the largest system you've worked on, in terms of number of lines of code?
- What was your contribution to that system?
- Tell me something I don't know about your technical specialty--teach me something.
- How old were you when you started programming?
- Java: https://www.toptal.com/java/interview-questions
- How is inheritance in C++ different from Java? (answer here)
- What are the two methods that you must override to implement instance equality in Java? (
equals
andhashCode
)- Which construct gets used as the default if you don't override
hashCode
?
- Which construct gets used as the default if you don't override
- What is the difference between Runnable and Callable?
- A: Callable (1) returns a value, not void, and (2)
throws Exception
.
- A: Callable (1) returns a value, not void, and (2)
- Difference between SoftReference and WeakReference?
- A: "Garbage collector can collect an object if only weak references are pointing towards it and they are eagerly collected, on the other hand Objects with SoftReference are collected when JVM absolutely needs memory." (per here)
- Benefits of dynamically typed vs. statically typed languages?
- Any opinion on which is better? Preferred?
- Difference between interfaces and abstract classes?
- Favorite programming language, and why?
- Thoughts on Python?
- https://www.toptal.com/java/job-description
- Python
- How is
dict
implemented under the covers? - Are you aware of any optimizations that have been made to Python hashmaps to make them faster than typical hashmaps?
- Why is Python so slow? Why are for-loops so slow / discouraged in Python? What operation is especially bad to do inside for-loops?
- What is the GIL?
- Dynamic vs. static typing--what's the difference? (also mentioned elsewhere on this page)
- What is memoization and how do you do it in Python? A:
functools.lru_cache
- PySpark - What is the difference between
cache
andpersist
? A:cache
just stores to memory whilepersist
stores to disk- We should have another question about why proper usage of
cache
is a leaky abstraction--and what that proper usage really is.
- We should have another question about why proper usage of
- How is
- Problem solving / math / puzzles / logic problems
-
The Cornered Circle Puzzle
- Find the ratio of
a/b
- Find the ratio of
- What's the most difficult bug you've ever had to track down?
- Quant Interview Job Questions & Answers
- Area inside the 1-3-4 rectangle: https://mindyourdecisions.com/blog/2019/12/16/what-is-the-area-inside-the-rectangle/
- What's the derivative of the sigmoid function? A:
f'(y) = y(1-y)
- Explain SVNs ("greatest difference")
- Simple pattern recognition
- 9, 13, 18, ?
- square cut into quarters -> 5, square cut into ninths -> ?
- Q: 8->72, 2->6, 5->30, 9->? (A: add 1 and multiply)
- Q: 126->76, 132->32, 208->58, 261->? (A: add 50, then 100, then...)
- 17*19 in 5 seconds (a la Michael Graves)
- If you spin a cube on one corner and look at the shape it makes from the side while it's spinning, what shape will you see?
- Matchstick Puzzle Make 3 Squares In 3 Moves http://mindyourdecisions.com/blog/2016/07/02/matchstick-puzzle-make-3-squares-in-3-moves/
-
Multiply a number with 10 without using multiplication operator A:
(n << 1) + (n << 3)
- Discrete math:
- What is the difference between a Set and a Group?
- What is a Cyclic Group?
- What is the approximate distribution of height at death in the US? Draw it.
- https://mindyourdecisions.com/blog/2019/02/07/the-folded-rectangle-area-puzzle/
- https://sharpbrains.com/brainteasers/
-
The Cornered Circle Puzzle
- Communication and commenting
- Understands the importance of maintaining institutional knowledge
- Ask: If I looked at your code, how much commenting would I see?
- When an exception gets thrown in your code, and you spend a day tracking down the problem, how do you document the problem and solution?
- Code comments, README.md, documentation (docstrings? JavaDoc?)
- Issue tracking?
- Knows what a wiki is and how to use one.
- Morals: "The strongest software developer can wreak untold havoc on a project if he or she lacks a properly calibrated moral compass." (ask these in-person because candidates screw up their face a bit when asked)
- "What do you enjoy the most about software development? What do you enjoy the least?"
- "What should we be concerned about in hiring you?"
- "What is the biggest mistake you think you ever made in your career?"
- "If you could paint the ideal position for yourself, what would it be? What would it look like in terms of your role and responsibilities, size and type of company, the work environment and so on?"
- "What are your greatest strengths? What would we gain by hiring you?"
- Extracurriculars, e.g.: When was the last time you made something with your hands?
- Dumbest thing you've ever done?
- Favorite book?
- Write down today's date in a code comment. Which date format does the candidate use? Is it a format that makes it clear that the candidate understands the ambiguity from different cultures?
- Software design principles
- Implement the quadratic formula in pseudo code?
- First, can test to see if candidate knows the formula.
- But then the goal here is really to look for proper error checking. Only 1/100 people properly look for the division-by-0. After being told of this though, 1/2 don't even get the sqrt-of-negative-number correct.
- What's the issue with globals?
- What are side effects?
- What is the issue with mutability?
- When is immutability most beneficial?
- Have you ever done any multi-threaded programming?
- What's the largest number of threads you've dealt with in a single application you've worked on?
- Difference between concurrency and parallelism?
- https://www.quora.com/What-is-the-difference-between-concurrency-and-parallelism
-
Concurrency is essentially when two tasks are being performed at the same time. This might mean that one is 'paused' for a short duration, while the other is being worked on. Importantly, a different task is begun before an ongoing task is completed. Parallelism requires that at least two processes/tasks are actively being performed at a particular moment in time.
-
Design patterns - what are they, name some?
- Explain Singleton, Subject-Observer
- When do statics get constructed/initialized in Java (by the JVM)?
- What's so great about the Builder pattern? A: Mutability.
- What's a race condition? Deadlock? What's the problem with double-checked locking?
- Explain Map-Reduce? - Ever read Neal Stephenson's Cryptonoicon?
- Knowledge of Demeter's Law (Single Responsibility Principle) with examples (e.g. UNIX command line)
- Benefits of "fail fast"? https://dzone.com/articles/fail-fast-principle-in-software-development
- Which do you prefer, "fail fast" or "fail safe?"
- Not catching/handling exceptions; letting them fail the program if they are indeed exceptional
- Examples (specifically wrt Agile): test-driven development (explain?), continuous integration (explain?)
- What is closure? Currying? How are classes different from closures? Which do you prefer?
- Implement the quadratic formula in pseudo code?
- Serendipity
- How random is the reason this person is looking for a job? Why is this individual out of work?
- Are we just happening to catch him/her at an opportune time?
- Management (much from here)
- Do you want to be an individual contributor or a manager? What percentage of each is your ideal job role?
- Tell me about a time you had to deal with a team member who constantly opposed your ideas. How did you handle it?
- What’s your approach to delegating work to employees? How do you ensure that tasks are completed?
- Describe a time you mentored someone. How did they grow? What were they doing initially, and what are they doing now?
- Have you ever had to fire someone?
- Red flags
- Putting the blame on someone/something else.
- Lack of interest.
- Inflexibility.
- Unrealistic answers.
- Uncomfortable with regular duties. Managers have to handle difficult responsibilities, like delegating tasks and giving negative performance reviews to employees who don’t reach their goals. Candidates who seem uncomfortable with these kinds of duties mightn’t be suited for the role
- AWS/DevOps (here)
- Name as many CI/CD platforms as you can.
- Jenkins, TravisCI, TeamCity, CircleCI (https://stackify.com/top-continuous-integration-tools/)
- How are stopping and terminating EC2 instances different from each other?
- Stopping and Starting an instance: When an instance is stopped, the instance performs a normal shutdown and then transitions to a stopped state. All of its Amazon EBS volumes remain attached, and you can start the instance again at a later time. You are not charged for additional instance hours while the instance is in a stopped state.
- Terminating an instance: When an instance is terminated, the instance performs a normal shutdown, then the attached Amazon EBS volumes are deleted unless the volume’s deleteOnTermination attribute is set to false. The instance itself is also deleted, and you can’t start the instance again at a later time.
- If I want my instance to run on a single-tenant hardware, which value do I have to set the instance’s tenancy attribute to?
- a. Dedicated
- b. Isolated
- c. One
- d. Reserved
- What's the difference between an Object Store (e.g. S3) and a File System (e.g. NFS)?
- When will you incur costs with an Elastic IP address (EIP)?
- When it is allocated and associated with a stopped instance. (FWC - or not allocated--wasn't in the multiple choices)
- Networking
- What's the difference between a private and a public subnet? A: latter has an Internet Gateway
- What's the purpose of private subnets if you can use security groups?
- What is a NAT Gateway? Transit Gateway?
- What is a Peering Connection?
- What's the difference between a private and a public subnet? A: latter has an Internet Gateway
- What's an AMI? Where do you think an AMI fits, when you are designing an architecture for a solution?
- What are the best practices for Security in Amazon EC2?
- There are several best practices to secure Amazon EC2. A few of them are given below:
- Use AWS Identity and Access Management (IAM) to control access to your AWS resources.
- Restrict access by only allowing trusted hosts or networks to access ports on your instance.
- Review the rules in your security groups regularly, and ensure that you apply the principle of least privilege (POLP), only open up permissions that you require.
- Disable password-based logins for instances launched from your AMI. Passwords can be found or cracked, and are a security risk.
- What's more secure, password-based login or key-based login? Why?
- What is the difference between EBS and EFS?
-
EBS is a block storage, EFS is a file system. They have different characteristics as they serve different roles. EBS is most commonly used as root volume for the instances and as such provides much higher IOPS and throughput than EFS. You could observe that in your test when "dd" command had been able to write data at a 460 MB/s [with EBS]. On the other hand, EFS can be used as a web serving and content management and it can be mounted on multiple instances. AWS EFS throughput results directly from its size and is dynamically scalable. Per every 1 GB of data 50 KiB/s of throughput is provided. During your tests, "dd" command has been able to write down at 208 kB/s maximum speed [to EFS].
-
- Name as many CI/CD platforms as you can.
- Docker
- What is the difference between the COPY and ADD commands in a Dockerfile?
- Although ADD and COPY are functionally similar, generally speaking, COPY is preferred. That’s because it's more transparent than ADD. COPY only supports the basic copying of local files into the container, while ADD has some features (like local-only tar extraction and remote URL support) that are not immediately obvious. Consequently, the best use for ADD is local tar file auto-extraction into the image, as in ADD rootfs.tar.xz /.
- What is the difference between a Docker image and a container?
- A container is a running image.
- How do you run an image? A:
docker run -it -d <image_name>
- Is there a way to identify the status of a Docker container?
docker ps -a
- How do you list all running containers?
docker ps
- Will you lose your data, when a docker container exits? (from here)
- A: No, you won’t lose any data when Docker container exits. Any data that your application writes to the container gets preserved on the disk until you explicitly delete the container. The file system for the container persists even after the container halts.
- What is the difference between the COPY and ADD commands in a Dockerfile?
-
Cloud/Cyber Security
- What are the key differences between Symmetric and Asymmetric encryption?
- Symmetric Encryption
- Same key for encryption & decryption
- Encryption is fast but more vulnerable
- DES, 3DES, AES and RC4
- Used for bulk data transmission
- Asymmetric Encryption
- Different keys for encryption & decryption
- Encryption is slow due to high computation
- Diffie-Hellman, RSA
- Often used for securely exchanging secret keys
- Symmetric Encryption
- How do you differentiate between IPS and IDS system?
- Explain SSL and TLS?
- What are salted hashes?
- What are the key differences between Symmetric and Asymmetric encryption?
- How to interview for "attention to detail?"
- SQL
- What are CTEs?
- What problems with SQL are NoSQL databases meant to address?
- What is ACID?
- Atomicity, Consistency, Isolation, Durability
- Do NoSQL databases implement ACID?
- Linux command line / Bash shell
- What is the difference between single and double quotes?
- grep
- What is the option to return all lines that do not match a particular pattern? -
-v
- What is the option to recursively grep through all directories? -
-r
- What is the option to return all lines that do not match a particular pattern? -
- find - How do you recursively find all files ending in .sql?
- wc - How do you count the number of lines in a file?
-
Data Science
- What is the difference between correlation and cointegration? This article reminded me of this question.
- Some question about multiple comparisons or false discovery rate?
- What does Hadoop stand for? A: Nothing; it was the name of the inventor's kid's stuffed elephant toy.
- What does YAHOO stand for? A: Yet Another Hierarchical Officious Oracle
- Misc. / Investing
- What are your 3 best investing/strategy/ML ideas? Could also use this question to assess ML chops.
Example evaluation table:
https://github.com/fcrimins/fcrimins.github.io/wiki/Interview-Outline (scale 0 to 4)
1. Work ethic:
2. Interest:
3. Techiness: 4
4. Java/Python/Bash: 2
5. Problem solving:
6. Communication and commenting: 1
7. Morals:
8. Software design principles: 2
9. Serendipity:
10. Management:
11. AWS: 2
12. Docker: 2
13. (Cloud) Security:
14. Attention to detail:
15. SQL:
- Find a duplicate, Space Edition™.
- We have a list of integers, where:
- The integers are in the range
1..n
- The list has a length of
n+1
- The integers are in the range
- It follows that our list has at least one integer which appears at least twice. But it may have several duplicates, and each duplicate may appear more than twice.
- Write a function which finds an integer that appears more than once in our list. (If there are multiple duplicates, you only need to find one of them.)
- We're going to run this function on our new, super-hip MacBook Pro With Retina Display™. Thing is, the damn thing came with the RAM soldered right to the motherboard, so we can't upgrade our RAM. So we need to optimize for space!
- We have a list of integers, where:
- What is a hash map? Explain how you would implement one? Complexity?
- Describe dynamic programming in general terms. Repeated substate or subproblems.
- Implement PercentRank
- Machine Learning
- Q: What is the difference between batch and on-line/stochastic gradient descent? A: Batch does steepest descent while on-line zig-zags around.
- Derivative of sigmoid function? Derive it.
- Difference between a BM and an RBM? Some question about a BM's optimization function.
- NLP: Describe what is "naive" about a Naive Bayes Classifier.