Skip to content

The roadmap is made for anyone who wants to become a modern back-end developer, focusing on the world of REST and microservices architecture. It covers everything from basic stuff to advanced technology including publicly available sources, topic-related tasks, and projects to have an idea of the full cycle of developing the backend of modern pr…

License

Notifications You must be signed in to change notification settings

ashish111333/Backend-Roadmap

 
 

Repository files navigation

Backend Roadmap

The roadmap is made for anyone who wants to become a modern back-end developer, focusing on the world of REST and microservice architecture. It covers everything from basic stuff to advanced technology including publicly available sources, topic-related tasks, and projects to have an idea of the full cycle of developing the backend of modern projects.

1.1 Basics of CS(Computer Science)

1.2 Introduction to Data Structures and Algorithms

1.3 Introduction to OS(Operating System)

1.4 Linux OS

1.5 Terminal Commands

1.6 Shell Scripting

  • Sources

  • Practices

    • Task1: Write a bash script(screenshot.sh) that screenshots your screen every given n seconds from terminal input. Name and store each screenshot file(ex: Screen Shot 2022-03-28 at 17.48.06.jpg) in a folder(ex: 2022-03-28) named based on a timestamp of each screenshot respectively. If a folder does not exist, your script should create it and store it into a folder that is named screenshot data placed next to the script file.

* Project1

  • Write a bash script(remove_duplicates.sh) that removes duplicate files in a folder.

2.1 Git

* Project2

  • Create folders with names of the Bootcamp topics and include your practical tasks in those folders respectively:
    • On the Terminal Commands folder: create a README.md including your practical tasks commands with the explanation of it, also include some of the output examples that your command produced.
    • On the Shell Scripting folder: include your scripts file on that folder from the practical tasks and exclude the data folder not to be tracked by git by inserting it on the .gitignore file.
    • On the Git folder: Include README.md with your essay in it.
  • And commit each step with meaningful messages and push everything to the main branch of your repo.

3.1 HTML+CSS+JS

3.2 JS

* Project3

  • Create a simple X&O game using HTML and JS.
    Example:
    tic_tac_toe.gif

4.1 NodeJS

4.2 REST

  • Develop simple in-memory Blogpost CRUD REST APIs using NodeJS+Express.

4.3 Postman TOOL

* Project4

  • Create a simple blogpost website using NodeJS as a web server.

5.1 Golang

  • Sources

  • Practices

    • Task1: Swap 2 numbers. In this task, a user is asked to enter two numbers and the program will swap two numbers without using the third variable.
    package main
    
    import "fmt"
    
    func main() {
        var a, b int = 3, 4
    
        // fmt.Scanf("%d", &a)
        // fmt.Scanf("%d", &b)
        fmt.Printf("a = %d, b = %d\n", a, b)
        //
        // WRITE YOUR CODE HERE
        //
        fmt.Printf("a = %d, b = %d\n", a, b)
    }

    Example:

    a = 3, b = 4
    a = 4, b = 3
    
    • Task2: isOdd and isEven. Write go functions to check whether a number is even and is odd.
    package main
    
    import "fmt"
    
    func main() {
        var a, b int = 3, 4
    
        // fmt.Scanf("%d", &a)
        // fmt.Scanf("%d", &b)
        fmt.Printf("a = %d, b = %d\n", a, b)
    
        // fmt.Println(a, "is odd: ", isOdd(a))
        // fmt.Println(b, "is even: ", isEven(b))
    }
    
    // func isEven(num int) bool {
    // 	//
    // 	// WRITE YOUR CODE HERE
    // 	//
    // }
    
    // func isOdd(num int) bool {
    // 	//
    // 	// WRITE YOUR CODE HERE
    // 	//
    // }

    Example:

    a = 3, b = 4
    3 is odd:  true
    4 is even:  true
    
    • Task3: Area of a circle inscribed in a square. Find the shaded region by given R(radius of the circle).
      Task 3 Image
    package main
    
    import (
        "fmt"
    )
    
    func main() {
        var r float32 = 10.04
    
        // fmt.Scanf("%f", &r)
        fmt.Println("R =", r)
    
        fmt.Printf("Area: %0.2f\n", area(r))
    }
    
    func area(r float32) (area float32) {
        //
        // WRITE YOUR CODE HERE
        //
        return area
    }

    Example:

    R = 10.04
    Area: 86.53
    
    1. FizzBuzz
    package main
    
    func main() {
        for i := 1; i <= 100; i++ {
            FizzBuzz()
        }
    }
    
    func FizzBuzz() {
        //
        // WRITE YOUR CODE HERE
        //
    }
    1. Find a weekday from a given date
    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
        dobStr := "20.04.1998" // Replace this date with your birthday
        givenDate, err := time.Parse("02.01.2006", dobStr)
        if err != nil {
            panic(err)
        }
        fmt.Printf("%s is %s", givenDate.Format("02-01-2006"), FindWeekday(givenDate))
    }
    
    func FindWeekday(date time.Time) (weekday string) {
        //
        // WRITE YOUR CODE HERE
        //
        return
    }
    1. Display numbers from 1 to 100 in reverse order using DEFER
    package main
    
    func main() {
        DisplayNumberInReverseOrderWithDefer()
    }
    
    func DisplayNumberInReverseOrderWithDefer() {
        for i := 0; i < 100; i++ {
            //
            // WRITE YOUR CODE HERE
            //
        }
    }
    1. Write a function to calculate square root. Given a positive number n and precision p, find the square root of the number up to p decimal places using binary search.
    package main
    
    import (
        "fmt"
    )
    
    func main() {
        fmt.Println(MySquareRoot(10, 12))
    }
    
    func MySquareRoot(num, precision uint) (result float64) {
        // DO NOT USE math.Sqrt!
    
        //
        // WRITE YOUR CODE HERE
        //
    
        return
    }
    1. Find the Minimum Number. Link: https://www.hackerrank.com/contests/w30/challenges/find-the-minimum-number/problem
    package main
    
    func main() {
        n := 12
        // Read n from input
        DisplayMinimumNumberFunction(n)
    }
    
    // https://www.hackerrank.com/contests/w30/challenges/find-the-minimum-number
    func DisplayMinimumNumberFunction(n int) {
        //
        // WRITE YOUR CODE HERE
        //
    }

* Project5

  • Task1: Write a bigint package.
    • func NewInt(num string) (Bigint, error)
    • func (z *Bigint) Set(num string) error
    • func Add(a, b Bigint) Bigint
    • func Sub(a, b Bigint) Bigint
    • func Multiply(a, b Bigint) Bigint
    • func Mod(a, b Bigint) Bigint
    • func (x *Bigint) Abs() Bigint
      Example:
    a, err :=bigint.NewInt("988847123412385995937737458959")
    if err != nil {
        panic(err)
    }
    b, err :=bigint.NewInt("21231231231231231231231231233")
    if err != nil {
        panic(err)
    }
    err = b.Set("1") // b = "1"
    if err != nil {
        panic(err)
    }
    c:=bigint.Add(a, b) // c = "988847123412385995937737458960"
    d:=bigint.Sub(a, b) // d = "988847123412385995937737458958"
    e:=bigint.Multiply(a, b) // e = "988847123412385995937737458959"
    f:=bigint.Mod(a, b) // f = "0"
  • Task2: Write tests on your own bigint package.

5.2 Gin

5.3 PostgreSQL

5.4 Go + SQLX

5.5 Migrations

5.6 Go + Swaggo

* Project6

  • Develop a simple blogpost REST APIs using Golang + Gin + SQLX(PostgreSQL) + Swaggo (+Include testing).

6.1 Protocol Buffers (protobuf) and gRPC

6.2 Go + gRPC

7.1 Docker

* Project7

  • Building A Containerized Microservices for a simple blogpost project.

Loading...

8.1 MongoDB - Pending...

8.2 NodeJS + gRPC - Pending...

* Proejct8 - Pending...

9.1 DB modeling - Pending...

10.1 EDA - Pending...

11.1 Web Socket - Pending...


References

Feedback

If you have any feedback, please reach out to me at saidamir.botirov@gmail.com

Roadmap by Saidamir Botirov (Inspired by Udevs)


Shield: CC BY 4.0

This work is licensed under a Creative Commons Attribution 4.0 International License.

CC BY 4.0

About

The roadmap is made for anyone who wants to become a modern back-end developer, focusing on the world of REST and microservices architecture. It covers everything from basic stuff to advanced technology including publicly available sources, topic-related tasks, and projects to have an idea of the full cycle of developing the backend of modern pr…

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published