How To Prepare for Your Engineering Interview at Upwork

January 26, 2021
5 min read

Welcome to Upwork!!

Context: We want to see the very best in our candidates as we evaluate whether to ask them to join our amazing team at Upwork! This document will help you prepare by understanding what to expect during the interview process, as well as best practices to follow when you are interviewing with us. Good luck! 

Logistics:

  • Show up to your video interviews on time
  • Make sure your internet connection is as fast as possible
  • Use wired connection vs Wi-Fi if possible
  • Reduce other traffic in your home
  • Test Google Meet with someone else to make sure you can see/hear each other clearly
  • Use a headset w/microphone if possible
  • Adjust your lighting so we can see you clearly
  • Go to a quiet place with no distractions
  • Dress comfortably and appropriately, but not formally

All Interviews / Roles:

  • Speak clearly and slowly so we can understand you
  • Prepare to deeply describe your past experiences
  • Describe what specific contributions you made to a project or role
  • Explain technology choices made and rationale for making them
  • Ask thoughtful questions of your interviewers. Show interest and enthusiasm
  • Example: How do you make sure remote developers are learning, progressing, engaged?
  • Do research on Upwork and your interviewers. Sign up for and use the product

Coding Interview:

Background: This interview is intended to see how well you can code up a solution to a medium level problem “On the fly”. We want to make sure you are comfortable using a development environment or REPL tool, you can understand a problem given to you, and how you build a program to solve it. We also want to make sure that you write clean, well-structured code, can take hints when needed, and can describe the code that you have written. Suggestions:

  • Have your IDE/Text editor ready to start coding
  • Be aware of how much time you have to complete the problem
  • Spend some time reviewing the problem statement before you start coding
  • Ask clarifying questions if you have any
  • As you write your program, communicate with interviewer about your approach
  • Keep coding style in mind as you code, i.e. structure, naming conventions
  • Plan to test your code, how to structure for that
  • Be prepared to explain the complexity, efficiency of your solution once completed
  • It’s ok to Google things like syntax and parameters, but try to do sparingly, as we expect you to be experienced at using tools/languages
  • To prepare, do a few practice exercises from books or interviewing websites

Algorithm/Foundation Interview:

Background: This interview is intended to see how well you understand the foundations of the technologies, processes, and best practices that are used to build world-class products and systems. Depending on the role you are interviewing for and your seniority level, you might be asked questions about the following

  • Algorithms, general CS concepts
  • Compare a heap vs a queue vs a stack. When would you use one vs the other?
  • Technical Project Deep Dive
  • Why did you choose Kafka vs AMQP? When would you use SQL vs No-SQL?
  • How did you choose between React and Angular? What are some of the tradeoffs you considered?
  • Tell us about a time you debugged a performance issue in your application.
  • System Design
  • Design Twitter, showing the major system components, interactions between them

Team Fit/Collaboration Interview:

Background: This interview is intended to see how well you would fit with Upwork and what you can bring to the team to make us even better! When responding to questions, think about specific examples from your past that show evidence of the point you want to make. Examples:

  • What will you bring to Upwork? How can you make an impact?
  • Can you work independently, but also collaboratively at a world class level?
  • How have you managed conflict, ambiguity, pressure?
  • How have you collaborated in a very cross-functional organization?

Home Automation Task:

Background: This is intended to see how well you can adapt to using Ruby language and to show us how well you can write an automation script based on the specific requirements.  This task will require you to only use the Selenium Webdriver gem; no additional gem should be use. We want to see you be able to do the following:

  • Browser (at least Chrome and Firefox) and <keyword> should be configurable. The test should run with any combination of them.
  • Create an OOP model/approach where it can be scalable later on.
  • Every action, every comparison result, etc should be logged accordingly (i.e. to stdout). Goal: when your script passes - detailed test-case steps should be logged in to STDOUT, so anybody can read it and repeat exactly the same steps and verifications but manually.

You might like