Skip to content

A repository of practice problems to help people get intro software engineering jobs

Notifications You must be signed in to change notification settings

Underdog-Devs-Mentors/ud-problem-sets

Repository files navigation

ud-problem-sets

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.

How to approach this material

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!

The order of the material

We recommend the following order:

  1. problem-set-1 (Beginner level) - More basic problems to help prepare you for the wordplay problems.
  2. wordplay-problems (Beginner level) - These are the ones you need to successfully complete in order to try and get into the UnderdogDevs cohort.
  3. problem-set-2 (Intermediate level) - This and the later steps are usually used as material during the UnderdogDevs cohort.
  4. problem-set-3 (Intermediate level)
  5. basic-applications (Intermediate level) - These problems can optionally include some UI if you want to.
  6. mini-interview-questions (Intermediate level) - Real 30 minute interview problems.
  7. interview-questions (Interview Ready level) - 60 minute interview questions
  8. advanced-topics (Interview Ready level) - Miscellaneous topics that would be good to learn more about.
  9. 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.

How to get started

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.

Using git

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!

Using a ZIP file

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.

Set up your developer environment

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!

Other resources

Make sure to check out these resources in our mentee Drive!


Practice problem attribution

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.

About

A repository of practice problems to help people get intro software engineering jobs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published