update question
This commit is contained in:
32
README.md
Normal file
32
README.md
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# Junior Backend Engineer Interview
|
||||||
|
|
||||||
|
Imagine that you're building a fintech system. You're now building a small microservice that allow people to send money to each other.
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
|
||||||
|
1. Checkout into a new git branch with name like `YYYY-MM-DD-nickname`
|
||||||
|
|
||||||
|
1. Navigate into any language directory you're comfortable with
|
||||||
|
|
||||||
|
1. Implement the `POST /transfer` API endpoint that allows you to transfer money from one account to another.
|
||||||
|
|
||||||
|
The account balance has to reflect the new balance after transfer for both accounts and the transaction has to be recorded.
|
||||||
|
|
||||||
|
Example request look like below:
|
||||||
|
|
||||||
|
```
|
||||||
|
curl -X POST http://localhost:3000/transfer \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"amount": 100, "sender": "1", "receiver": "2"}'
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Implement a new API endpoint `GET /all-transactions` that shows all transactions in the system.
|
||||||
|
|
||||||
|
1. Commit & push your changes to the git upstream.
|
||||||
|
|
||||||
|
Bonus points:
|
||||||
|
|
||||||
|
- Implement the requests validation
|
||||||
|
- Handle errors appropriately
|
||||||
|
|
||||||
|
Good luck!
|
||||||
@ -1,6 +1,6 @@
|
|||||||
# Get started
|
# Get started
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
uv venv
|
||||||
fastapi dev main.py
|
uv run fastapi dev main.py
|
||||||
```
|
```
|
||||||
|
|||||||
@ -5,16 +5,18 @@ from pydantic import BaseModel
|
|||||||
|
|
||||||
class Transfer(BaseModel):
|
class Transfer(BaseModel):
|
||||||
amount: int
|
amount: int
|
||||||
sender: int
|
sender: str
|
||||||
receiver: int
|
receiver: str
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
accounts = {
|
accounts = {
|
||||||
'1': {'amount': 1000},
|
'1': 1000,
|
||||||
'2': {'amount': 1000},
|
'2': 1000,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
transactions: list[Transfer] = []
|
||||||
|
|
||||||
@app.post("/transfer")
|
@app.post("/transfer")
|
||||||
def transfer(transfer: Transfer):
|
def transfer(transfer: Transfer):
|
||||||
amount = transfer.amount
|
amount = transfer.amount
|
||||||
|
|||||||
7
go-stdlib/README.md
Normal file
7
go-stdlib/README.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Instructions
|
||||||
|
|
||||||
|
Start the API server using the following command:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
go run .
|
||||||
|
```
|
||||||
@ -18,6 +18,8 @@ var accounts = map[int]int{
|
|||||||
2: 1000,
|
2: 1000,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var transactions = []Transfer{}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Println("Starting server on port 8080")
|
fmt.Println("Starting server on port 8080")
|
||||||
http.HandleFunc("/transfer", transfer)
|
http.HandleFunc("/transfer", transfer)
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
|
# Instructions
|
||||||
|
|
||||||
|
Start the API server using the following command:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm install
|
npm install
|
||||||
npm run dev
|
npm run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
|
||||||
open http://localhost:3000
|
|
||||||
```
|
|
||||||
|
|||||||
@ -8,6 +8,8 @@ const accounts = {
|
|||||||
'2': {amount: 1000},
|
'2': {amount: 1000},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const transactions = []
|
||||||
|
|
||||||
app.post('/transfer', async (c) => {
|
app.post('/transfer', async (c) => {
|
||||||
const body = await c.req.json();
|
const body = await c.req.json();
|
||||||
const { amount, sender, receiver } = body;
|
const { amount, sender, receiver } = body;
|
||||||
@ -23,7 +25,6 @@ app.post('/transfer', async (c) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
console.log('transfer', transfe);
|
console.log('transfer', transfe);
|
||||||
|
|
||||||
return c.json(transfer)
|
return c.json(transfer)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user