Interviewing for Engineering
1. Phone Screening
Goal: Get a feel for high level technical background and culture fit
-
Introduce self
- Role
- Time at Revver
- Family
- Hobbies
-
Get to know them
- tell me about you (family, hobbies, etc)
- tell me about your education
- tell me about your work history
-
Describe Revver
- Document Management Software
- History
- desktop, EFCO, SD, Utopia
- Have some legacy systems
- Utopia Architecture
- Atlantis Architecture
- Challenges
- Delivering new features while maintaining and migrating architecture
- Great Team
- Executive Team cares about you
- 4 day work week
- Really fun team
- Great people across entire product group
- Executive Team cares about you
- History
- Document Management Software
-
Describe the Role
- Senior Engineer
- Tackle Complex Work
- Help Architect and Drive Technical Direction
- Mentor Other engineers
- Technical owner of functionality, elements, or processes
- Take on leadership roles
- Senior Engineer
-
Experience with Technology
- Git
- Pull Requests
- Back end web development
- C# and .NET
- Front End Web Development
- React and Typescript
- Azure and AWS
- Serverless (Azure Functions)
- App Service
- Other Cloud Services
- SQL and No SQL (Database)
- Postgresql and Cosmos
- Testing
- Unit, Integration, Load
- CI / CD
- Azure Dev Ops
- Daily Releases
- Clean Code
- are they passionate about it
- Architecture
- How involved have you been?
- Documentation?
- How do you stay up to date w/ Technology?
- Any other experience?
- IT / Dev Ops / Testing / Project Management / Design
- Git
-
Experience w/ Process
- Agile and Scrum
- ADO, JIRA
- PO / Scrum Master Experience
- Story Points
- Code Review
- What is it?
- Why is it important?
- Last time you saw bad code?
- Collaboration
- Working w/ PM's and Design
- Designing and collaborating on features
- Working w/ QA
- Mentoring
- Agile and Scrum
-
Culture Fit
- Remote vs In Office
- Gauge if they have fun and enjoy software engineering?
- What is your passion and what do you enjoy working on the most?
- Team Player?
- What has you team interactions been like in previous roles?
Leave time for candidate to ask questions at the end
2. Technical Interview
General
- "What is your passion, what do you enjoy working on the most?"
- "What does your current/previous work-day like?"
- "Describe the project you've worked on that you're most proud of. What did you do that worked out particularly well?” (Tells us a lot about what they know, value, and have done on teams)
- “Describe the project you've worked on that you're least proud of. What would you do differently?” (Tells us a lot about how good they are at learning from their mistakes and how difficult it is for them to admit they made a mistake)
Pair Programming
White Board
reference: https://www.tryexponent.com/blog/how-to-whiteboard-for-system-design-interviews (in particular video on facebook messenger app design)
Text Messaging App (like Facebook Messenger)
-
Requirements
- Two users need to be able to send messages to each other back and forth
-
Other details
- date and time of each message
- who sent each message
How would you design the database to store required data?
- in Postgres / relational database?
- would it look and different in CosmosDB / NoSql db?
Requirements to add and see how db design changes (perhaps design it out in sql with all requirements and then see difference in design for no sql)
- Name a conversation
- show if a user is online or not
- add more than 2 users to a conversation
Architecture and Technical Goals - Interviewers can draw a simple architecture of users => load balancer => api servers => db - they can add to the architecture if needed
Low Latency - what are some strategies you could use to make sure users get new messages quickly? - try and get them to give pros and cons of each strategy - short polling (pulling data periodically) - long polling (server holds request until response is available) - web sockets (signal r, for server to client communication)
- High Volume
- What are some strategies you could implement to handle really high volume? and how will each help with handling that high volume?
- db?
- no sql, how?
- partitioning data correctly so load is distributed across many partitions
- caching?
- less traffic to the db
- no sql, how?
- api
- serverless functions
- better scalibility
- serverless functions
- db?
- What are some strategies you could implement to handle really high volume? and how will each help with handling that high volume?
- Reliability
- What could you do to make the system more reliable / robust?
- queueing system (azure storage queues, rabbit mq)
- more responsive api server
- throttle database load
- publisher / subcriber
- push model to allow services / users recieve updates in real time and not add load to system to see if anything is available
- event grid
- queueing system (azure storage queues, rabbit mq)
- What could you do to make the system more reliable / robust?
3. Collaborative / Team Interview
Goal:
- Will this person fit into our team culturally
- Do they seem to have the skills you would hope for in a senior engineer
Who is in this interview?
- 3 or 4 people
- Brock and / or Logan
- Bryan, Rachel, Josh
- Eric
Introductions
- Introduce each person interviewing
- Have Interviewee introduce themselves
Feature walkthrough
- Show a mock up of {insert here} and walk through design
- Explain high level architecture
- Web app (react), App Server (c# asp.net backend), Postgres DB / relational db
- Questions to ask after design walkthrough
- What pieces of work need to be completed to implement this design?
- What challenges do you anticipate with implementing this design?
- and others
General Questions
- In you experience working w/ component library, what has gone well what hasn't?
4. Follow Up
-
Follow Up Questions for Candiate
-
Questions from Candidate
-
If you like them sell Revver
- Great Management
- 4 day work week
- IL sprints
- autonomous teams
- stay up to date on tech
- very collaboritive
- perhaps share your own experience
-
-
How they would be a good fit
-
-
- if early on in process
- may not move super quickly on an offer
- that doesn't mean it didn't go well or we're not interested
- I'll keep in touch and try to be transparent with where we're at on our end
- it would be awesome if you could also keep us in the loop as far as like other substantial opportunities developing
- if early on in process