This project is a coding interview prep platform based on Next.js server-side rendering, Spring Boot, Redis, MySQL, and Elasticsearch. Its live version is available at https://www.mianshiya.com and currently only operates in China. This repository implements the platform's core features, including the ability for administrators to create question banks, questions, and solutions, and to associate multiple questions with a question bank in bulk. Users can register, log in, search questions with full-text search, practice coding problems online, and view their practice history in a calendar format.
The platform enhances performance through the use of a connection pool, hot key detection, caching, and advanced data structures. Security is bolstered by rate limiting, circuit breakers, dynamic IP black/whitelisting, conflict detection for simultaneous logins, and multi-level anti-scraping strategies.
Question detail:
Sign in
Admin:
The project follows a step-by-step development strategy, divided into three phases:
- In the first phase, the focus is on developing a basic coding platform using Next.js for server-side rendering and rapid development with Spring Boot applications. The main goal is to implement basic CRUD operations.
2)In the second phase, the project expanded its functionality by incorporating several mainstream enterprise backend technologies, such as Redis caching and advanced data structures, Elasticsearch search engine, Druid connection pool, concurrent programming, and Hotkey detection.
3)In the third phase, the project focused on optimizing security with implementations such as traffic control and circuit breaking using Sentinel, dynamic IP blacklisting/whitelisting with Nacos, conflict detection for simultaneous logins using Sa-Token, and multi-level anti-scraping strategies based on Redis. The final goal was to launch the project and ensure its availability.
If using a diagram to summarize the technical architecture of this webisite, it would be presented as shown in the following image

Core features of the project:
- CRUD operations of all pages
- Pages Development (Login, Registration, Management Pages, Homepage, Problem-Solving Page and Search Page)
- Problem-Solving History Calendar
- BitMap and Performance Optimization
- Question Full-Text Search
- Elasticsearch Data Synchronization
- Bulk Management of Questions
- Batch Processing Optimization
- Druid Connection Pool
- Automatic Caching of Popular Question Banks
- Hotkey detection
- Introduce Sentinel
- Single Interface Rate Limiting and Circuit Breaking
- Hot Parameter Rate Limiting and Circuit Breaking
- Sentinel Rule Persistence (BloomFilter + Configuration Center)
- Introduce Nacos
- Dynamic IP Blacklisting
- Conflict Detection for Simultaneous Logins(Sa-Token)
- Anti-Scraping Solution Design
- Multi-Level Anti-Scraping Based on Redis
Java Spring Boot + Maven mutil-module build
MySQL + MyBatis-Plus + MyBatis X
Redis + Caffeine
Redission (Distributed Locking) + BitMap + BloomFilter
⭐️ Elasticsearch
⭐️ Druid (database connection pool)
⭐️ Sa-Token (Access control)
⭐️ HotKey
⭐️ Sentinel (Traffic control)
⭐️ Nacos (configuration center)
React 18
⭐️ Next.js Server-side render framwork
⭐️ Redux (state management)
Ant Design (UI libaray)
⭐️ ESLint + Prettier + TypeScript
- Using Nacos Configuration Center to Store and Manage IP Blacklists
- Custom Annotation for Hot Key Detection
- Encapsulating Rate Limiting Component as a Spring Boot Starter
- Notification for Concurrent Login Conflict
Contributions are welcome! Follow these steps:
- Fork this repository
- Create a new branch (git checkout -b feature/your-feature)
- Commit your changes (git commit -m 'Add some feature')
- Push to the branch (git push origin feature/your-feature)
- Open a Pull Request
This project is licensed under the MIT License.