Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/saintzet/exchangequotes
Test assignment for position .NET middle developer.
https://github.com/saintzet/exchangequotes
math modular-design modular-monolith statistics test-assignment thread-safe threads udp xml xunit-tests
Last synced: 1 day ago
JSON representation
Test assignment for position .NET middle developer.
- Host: GitHub
- URL: https://github.com/saintzet/exchangequotes
- Owner: SaintZet
- License: unlicense
- Created: 2022-12-02T09:36:47.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2022-12-28T14:54:42.000Z (almost 2 years ago)
- Last Synced: 2023-04-16T17:20:19.259Z (over 1 year ago)
- Topics: math, modular-design, modular-monolith, statistics, test-assignment, thread-safe, threads, udp, xml, xunit-tests
- Language: C#
- Homepage:
- Size: 87.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Exchange Quotes
Test assignment on position .NET middle developer for a Ukrainian company [Profit Center FX](https://profitcenterfx.com).
The project used DepenedencyInjection, Modular Monolith design, xUnit tests for math logic, concurrent velues for thread safe math library.
## The task
### Server application
Infinitely generates random numbers in the range (to emulate the subject area - the flow of quotes from the stock exchange), sends multicast to
udp without delay.The range and multicast group is configured through a separate xml config.
### Client application
It accepts data by udp, counts for all received: arithmetic mean, standard deviation, mode and median.
The total number of packets received can be from a trillion or more.The calculated values are output to the console on demand (pressing enter).
The application must control the receipt of all packets, the number of lost packets must be displayed together with statistics (to force packet loss, you need to add a delay to receiving messages,
approximately once per second).Receiving packets and counting should be implemented in different streams with minimal delays.
Multicast group and receive delay must be configured through a separate xml config (not in app.config).
**Important requirement**: the application must be optimized for speed as much as possible
work, taking into account the amount of data received and issue a solution as quickly as possible (in
within a few milliseconds) - for exchanges, every microsecond matters.The application must work for a long time (week-month) without crashes
internal errors, as well as in case of network errors.## Getting Started
### Dependencies
.NET 6.0 Runtime
### Installing
Just clone repo on PC.
### Executing program
Set up a client and server multi-launch, or just launch a server instance and a number of client instances.
## Authors
Chepets Serhii
Contacts: [LinkedIn](https://www.linkedin.com/in/serhii-chepets-412b46223/) / [GitHub](https://github.com/SaintZet) / [Telegram](https://t.me/SaintZet)## Version History
* v1.0.0
* Initial Release## License
This project is unlicense.
## Acknowledgments
* [Median in a stream of integers](https://www.geeksforgeeks.org/median-of-stream-of-integers-running-integers/)
* [Heaps: Find the Running Median](https://www.hackerrank.com/challenges/ctci-find-the-running-median/problem)
* [Standard Deviation on Streaming Data](https://nestedsoftware.com/2018/03/27/calculating-standard-deviation-on-streaming-data-253l.23919.html)
* [Simple Moving Average calculator](https://andrewlock.net/series/creating-a-simple-moving-average-calculator-in-csharp/)
* [Thread safety in C#](https://medium.com/@supriyaghevade77/thread-safety-in-c-b144a5d9731c#:~:text=Thread%20safety%20is%20the%20technique,run%20concurrently%20without%20break%20function.)
* [Thread-Safe Collections](https://learn.microsoft.com/en-us/dotnet/standard/collections/thread-safe/)