These practice problems are intended to help mentees of the Underdog Devs program get intro software engineering problems.
See also our Mentee Google Drive and corresponding README file.
Work your way through the problem sets over time. We strongly recommend following our problem solving tips, especially the "Checklist for problem solving". Apply it to every problem that you do!
These problems are where you should be spending most of your time. Don't stress if it takes a while to complete a problem.
Put your solution file(s) in the solutions
directory of each problem set. You can delete the .placeholder
file that's in the directory.
We strongly recommend not using outside sources until after you've successfully solved a problem. That's not to say you can't look up syntax, but we don't recommend looking up how to approach a problem or possible solutions for it until you've successfully solved it yourself. It will only slow your progress by relying on outside resources to be able to solve problems. If you run into something you can't solve, please ask in the UD Slack channels and get some tips from others that way!
We recommend the following order:
- problem-set-1 (Beginner level) - More basic problems to help prepare you for the wordplay problems.
- wordplay-problems (Beginner level) - These are the ones you need to successfully complete in order to try and get into the UnderdogDevs cohort.
- problem-set-2 (Intermediate level) - This and the later steps are usually used as material during the UnderdogDevs cohort.
- problem-set-3 (Intermediate level)
- basic-applications (Intermediate level) - These problems can optionally include some UI if you want to.
- mini-interview-questions (Intermediate level) - Real 30 minute interview problems.
- interview-questions (Interview Ready level) - 60 minute interview questions
- advanced-topics (Interview Ready level) - Miscellaneous topics that would be good to learn more about.
- hard-interview-questions (Interview Ready level) - These interview questions are probably harder than you can expect for an intro software engineer position. But they're good practice!
If you're looking for additional practice problems to strengthen a certain concept, LeetCode is a good resource. You can filter by question tags to see more relevant questions to what you want to focus on. There's also other algorithms practice sites you could use.
After you've eventually completed these, we recommend spending most of your time working on your resume, your LinkedIn profile, and finding jobs to apply to. You can also practice other interview types, like soft skills interviews, debugging interviews, take-home interviews, UI breakdown interviews, and system design interviews. For more info and practice for these other interview types, ask your mentor.
We recommend downloading this entire repository and using it as your working space. You can even upload your work to your GitHub account if you'd like!
To download it, you can either use git or download the ZIP file.
This is our recommended way, but if you'd like to jump right into problem solving or run into troubles you can always go the ZIP route and then set up git later.
git is a version management system which is used in basically every software engineering job. To learn more about it, see TheCodingTrain's series on git and GitHub. The main video is cloning a repo.
Go ahead and clone this repo!
If you got the repo downloaded using git, skip this section.
First download the ZIP file by scrolling to the top of this page, clicking "Code", then clicking "Download ZIP".
Now you will need to use your file explorer to find that ZIP file and unzip it. This will create a new folder / directory that you can use as your working space.
There are a lot of code editors (also called IDEs) and setups for you to choose from. For whatever language you're using, use a search engine and search using the following format: "set up basic programming environment for [LANGUAGE] developers". But replace [LANGUAGE]
with your language of choice (like JavaScript, Python, etc.).
Then get started on the first problem set!
Make sure to check out these resources in our mentee Drive!
- UD Mentee Drive README - Provides an overview of the UnderdogDevs process.
- Mentee levels and requirements - How UD characterizes mentee's abilities and what we require of mentees.
- Building healthy habits – Some habits that we recommend that you have to be successful in this endeavor.
- Problem solving tips & tips for getting help – This document is key! We recommend coming back to this doc regularly, even having it open as you go through problems.
- General interviewing tips – Tips to keep in mind in every mentoring session and interview that you get.
- Live-coding interview tips – Tips to keep in mind while writing code live with someone else.
- Data structures and algorithms resources – Master algorithms interviews by mastering these resources!
- Time & space complexity – Learn some keys for analyzing programming solutions.
- Algorithms question bank – More algorithms sort of questions for you to practice.
- Servers, APIs, and authentication – Info about what you probably should know related to servers, APIs, and authentication.
- Databases roadmap – Info about what you probably should know related to databases.
- Project ideas – Ideas for projects that you can build to strengthen your resume.
- How to talk about your incarceration – Tips for when and how to talk about it.
- Resume & cover letter tips – Make your resume as strong as it can be.
- Tips for finding positions to apply to – Once you have a solid resume, projects, and are comfortable writing code, it’s time to start looking for jobs!
- Soft skills interview prep – How to prepare for non-coding interviews.
- Presenting your work – Tips on presenting your work and templates to start a presentation from.
We sourced some data from this list and this article. Some of the problems came from Harvard's CS50 course. Others were found in various places online or created by mentors at UnderdogDevs.