go-interview-practice
Interactive Go Interview Platform - 30+ coding challenges with instant feedback, AI interview simulation, competitive leaderboards, and automated testing. From beginner to advanced levels with real-world scenarios.
Top Related Projects
Standard Go Project Layout
Learn Go with test-driven development
ā¤ļø 1000+ Hand-Crafted Go Examples, Exercises, and Quizzes. š Learn Go by fixing 1000+ tiny programs.
Go Training Class Material :
A curated list of awesome Go frameworks, libraries and software
Curated list of Go design patterns, recipes and idioms
Quick Overview
The RezaSi/go-interview-practice repository is a collection of Go programming exercises and solutions designed to help developers prepare for technical interviews. It covers various data structures, algorithms, and common coding problems, providing a valuable resource for those looking to improve their Go programming skills and interview readiness.
Pros
- Comprehensive coverage of common interview topics and data structures
- Clear, well-commented Go code solutions for each problem
- Organized structure with separate directories for different problem categories
- Includes both problem descriptions and solutions, allowing for self-study
Cons
- Limited explanations for some of the more complex algorithms
- Not regularly updated, with the last commit being over a year ago
- Lacks unit tests for verifying the correctness of solutions
- Some advanced topics or newer interview trends might be missing
Code Examples
Here are a few examples from the repository:
- Implementing a stack data structure:
type Stack struct {
items []int
}
func (s *Stack) Push(i int) {
s.items = append(s.items, i)
}
func (s *Stack) Pop() int {
l := len(s.items) - 1
toRemove := s.items[l]
s.items = s.items[:l]
return toRemove
}
- Reversing a linked list:
func reverseList(head *ListNode) *ListNode {
var prev *ListNode
current := head
for current != nil {
nextTemp := current.Next
current.Next = prev
prev = current
current = nextTemp
}
return prev
}
- Implementing binary search:
func binarySearch(arr []int, target int) int {
left, right := 0, len(arr)-1
for left <= right {
mid := left + (right-left)/2
if arr[mid] == target {
return mid
} else if arr[mid] < target {
left = mid + 1
} else {
right = mid - 1
}
}
return -1
}
Getting Started
To use this repository for interview practice:
-
Clone the repository:
git clone https://github.com/RezaSi/go-interview-practice.git -
Navigate to the desired problem category directory.
-
Read the problem description in the comments or README file.
-
Implement your solution in Go.
-
Compare your solution with the provided solution in the repository.
-
Run the code to test its correctness:
go run filename.go
Competitor Comparisons
Standard Go Project Layout
Pros of project-layout
- Provides a standardized structure for Go projects, making it easier for developers to navigate and understand the codebase
- Includes detailed explanations and best practices for each directory and file in the project structure
- Offers a more comprehensive and production-ready approach to project organization
Cons of project-layout
- May be overly complex for smaller projects or beginners learning Go
- Lacks specific code examples or implementations, focusing primarily on structure
- Requires more setup time and effort compared to simpler project layouts
Code Comparison
project-layout:
āāā cmd
ā āāā myapp
āāā internal
ā āāā pkg1
ā āāā pkg2
āāā pkg
ā āāā public_package
āāā vendor
go-interview-practice:
āāā algorithms
ā āāā sorting
āāā data_structures
ā āāā linked_list
āāā design_patterns
āāā singleton
Summary
project-layout offers a more structured and comprehensive approach to organizing Go projects, suitable for larger and more complex applications. go-interview-practice focuses on providing specific implementations of algorithms, data structures, and design patterns for interview preparation. While project-layout may be overkill for smaller projects, it provides valuable insights into best practices for Go project organization. go-interview-practice is more suitable for learning and practicing specific coding concepts.
Learn Go with test-driven development
Pros of learn-go-with-tests
- Comprehensive coverage of Go concepts with a test-driven approach
- Well-structured, step-by-step learning path for beginners
- Regularly updated with new content and improvements
Cons of learn-go-with-tests
- Focuses primarily on testing, which may not be ideal for all learners
- Less emphasis on specific interview preparation techniques
- May be overwhelming for absolute beginners due to its depth
Code Comparison
learn-go-with-tests:
func TestHello(t *testing.T) {
got := Hello("Chris")
want := "Hello, Chris"
if got != want {
t.Errorf("got %q want %q", got, want)
}
}
go-interview-practice:
func reverseString(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
The code comparison shows that learn-go-with-tests focuses on writing tests for Go functions, while go-interview-practice provides implementations of common interview problems. learn-go-with-tests is more suitable for learning Go with a testing mindset, whereas go-interview-practice is better for preparing for coding interviews in Go.
ā¤ļø 1000+ Hand-Crafted Go Examples, Exercises, and Quizzes. š Learn Go by fixing 1000+ tiny programs.
Pros of learngo
- More comprehensive and structured learning path for Go beginners
- Includes hands-on exercises and quizzes to reinforce learning
- Regularly updated with new content and improvements
Cons of learngo
- May be overwhelming for those seeking quick interview preparation
- Focuses more on general Go learning rather than specific interview topics
- Requires more time investment to complete the entire course
Code Comparison
go-interview-practice:
func reverseString(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
learngo:
func main() {
words := []string{"hi", "hello", "there"}
for _, word := range words {
fmt.Printf("%q\n", strings.ToUpper(word))
}
}
The go-interview-practice example focuses on a specific algorithm (string reversal), while the learngo example demonstrates basic Go concepts like slices, loops, and string manipulation. This reflects the different approaches of the two repositories, with go-interview-practice targeting interview preparation and learngo providing a broader learning experience.
Go Training Class Material :
Pros of gotraining
- More comprehensive and structured learning material
- Regularly updated with new content and examples
- Includes advanced topics like concurrency and performance optimization
Cons of gotraining
- May be overwhelming for beginners due to its extensive content
- Requires more time investment to work through all materials
- Less focused on interview-specific questions and problems
Code Comparison
go-interview-practice:
func reverseString(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
gotraining:
func BenchmarkSliceMapRange(b *testing.B) {
for i := 0; i < b.N; i++ {
for range slice {
m[rand.Intn(9)] = "test"
}
}
}
The go-interview-practice example focuses on a common interview question (string reversal), while the gotraining example demonstrates performance benchmarking, showcasing its emphasis on more advanced topics.
go-interview-practice is tailored for interview preparation with concise examples, whereas gotraining provides a broader learning experience with in-depth explanations and practical exercises covering various aspects of Go programming.
A curated list of awesome Go frameworks, libraries and software
Pros of awesome-go
- Comprehensive collection of Go resources, libraries, and tools
- Well-organized and categorized for easy navigation
- Regularly updated with community contributions
Cons of awesome-go
- Lacks specific interview preparation focus
- May be overwhelming for beginners due to its extensive content
- Does not provide code examples or explanations
Code comparison
go-interview-practice includes code examples for interview questions:
func reverseString(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
awesome-go does not provide code examples directly, but links to resources:
## String Manipulation
* [xstrings](https://github.com/huandu/xstrings) - Collection of useful string functions for Go.
* [sttr](https://github.com/abhimanyu003/sttr) - Cross-platform, cli app to perform various operations on string.
Summary
go-interview-practice is focused on interview preparation with code examples and explanations, while awesome-go is a comprehensive resource for Go developers, covering a wide range of topics and tools. go-interview-practice is more suitable for those specifically preparing for interviews, while awesome-go serves as a valuable reference for Go developers at all levels.
Curated list of Go design patterns, recipes and idioms
Pros of go-patterns
- Comprehensive collection of design patterns and idioms in Go
- Well-organized with clear explanations and examples
- Covers a wide range of patterns, including creational, structural, and behavioral
Cons of go-patterns
- Less focused on interview-specific questions and problems
- May be overwhelming for beginners due to its extensive coverage
- Not regularly updated (last commit over 3 years ago)
Code Comparison
go-patterns example (Singleton pattern):
type singleton struct {}
var instance *singleton
var once sync.Once
func GetInstance() *singleton {
once.Do(func() {
instance = &singleton{}
})
return instance
}
go-interview-practice example (Reverse a string):
func reverse(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
The go-patterns repository focuses on design patterns and idiomatic Go code, while go-interview-practice concentrates on common interview questions and algorithms. go-patterns provides a broader understanding of Go programming concepts, whereas go-interview-practice is more targeted towards interview preparation.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Go Interview Practice
Welcome to the Go Interview Practice repository! Master Go programming and ace your technical interviews with our interactive coding challenges.
Our interactive platform is now live at app.gointerview.dev ưĀĀĀ Explore challenges, track your progress, and elevate your Go skills with AI-powered mentorship.
Visual Overview
Interactive Challenge Platform
Our comprehensive web interface provides everything you need to practice and master Go programming:
A brief introduction to the project
Code & Test Experience
|
Interactive Code Editor Write, edit, and test your Go solutions with syntax highlighting and real-time feedback |
Instant Results & Analytics Get immediate test results, performance metrics, and detailed execution analysis |
Competitive Leaderboard
Beautiful leaderboard showcasing top developers with challenge completion indicators, rankings, and achievements
ưĀĀĀ Top 10 Leaderboard
Our most accomplished Go developers, ranked by number of challenges completed:
Note: The data below is automatically updated by GitHub Actions when challenge scoreboards change.
| ưĀĀĀ | Developer | Solved | Rate | Achievement | Progress |
|---|---|---|---|---|---|
| ưĀ„ | PolinaSvet | 30/30 | 100.0% | Master | Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀĀ |
| ưĀ„ | odelbos | 30/30 | 100.0% | Master | Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀĀ |
| ưĀ„ | mick4711 | 23/30 | 76.7% | Master | Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â¬Āâ¬ĀĆ¢ĀĀ
Ć¢ĀĀ
⬠âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ â¬Āâ¬Āâ âĀ â¬Āâ¬ĀĆ¢ĀĀ |
| 4 | Gandook | 22/30 | 73.3% | Master | Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â¬Āâ¬ĀĆ¢ĀĀ
â¬Ā⬠â¬Āâ âĀ âĀ â¬Āâ âĀ âĀ âĀ âĀ âĀ âĀ â¬Āâ¬ĀĆ¢ĀĀ |
| 5 | y1hao | 21/30 | 70.0% | Master | Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â¬ĀĆ¢ĀĀ
â¬Āâ¬ĀĆ¢ĀĀ
Ć¢ĀĀ
⬠âĀ âĀ âĀ âĀ âĀ âĀ âĀ âĀ â¬Āâ¬Āâ¬Āâ â¬Āâ¬ĀĆ¢ĀĀ |
| 6 | JackDalberg | 20/30 | 66.7% | Master | Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â¬ĀĆ¢ĀĀ
â¬Āâ¬ĀĆ¢ĀĀ
Ć¢ĀĀ
⬠â¬Āâ âĀ âĀ âĀ âĀ âĀ âĀ â¬Āâ¬Āâ¬Āâ â¬Āâ¬ĀĆ¢ĀĀ |
| 7 | Cpoing | 17/30 | 56.7% | Expert | Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â¬ĀĆ¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â¬Āâ âĀ â¬Āâ¬Āâ â¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬Ā⬠|
| 8 | ashwinipatankar Ć¢Ā¤ï¸ | 17/30 | 56.7% | Expert | Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â¬ĀĆ¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â¬ĀĆ¢ĀĀ
Ć¢ĀĀ
â¬Āâ¬ĀĆ¢ĀĀ
Ć¢ĀĀ
⬠â¬Āâ âĀ âĀ â¬Āâ¬Āâ âĀ â¬Āâ¬Āâ¬Āâ â¬Āâ¬ĀĆ¢ĀĀ |
| 9 | t4e1 | 15/30 | 50.0% | Expert | Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â¬Āâ¬ĀĆ¢ĀĀ
â¬Āâ¬ĀĆ¢ĀĀ
â¬Ā⬠â¬Āâ âĀ âĀ â¬Āâ âĀ â¬Āâ¬Āâ¬Āâ¬Āâ â¬Āâ¬Ā⬠|
| 10 | Hikitak | 14/30 | 46.7% | Advanced | Ć¢ĀĀ
Ć¢ĀĀ
Ć¢ĀĀ
â¬ĀĆ¢ĀĀ
Ć¢ĀĀ
â¬Āâ¬Āâ¬ĀĆ¢ĀĀ
â¬Āâ¬ĀĆ¢ĀĀ
â¬Ā⬠âĀ â¬Āâ âĀ â¬Āâ âĀ âĀ â¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬ĀĆ¢ĀĀ |
Ć¢ĀĀ Completed Ć¢ĀĀ¢ ⬠Not Completed
All 30 challenges shown in two rows
Updated automatically based on 30 available challenges
Challenge Progress Overview
- Total Challenges Available: 30
- Active Developers: 147
- Most Challenges Solved: 30 by PolinaSvet
ưĀĀĀ Package Challenges Leaderboard
Master Go packages through hands-on challenges! Each package offers a structured learning path with real-world scenarios.
Note: The data below is automatically updated by GitHub Actions when package challenge scoreboards change.
| ưĀĀĀ | Developer | Total Solved | Packages | Achievement | Challenge Distribution |
|---|---|---|---|---|---|
| ưĀ„ | odelbos | 17 | 4 pkgs | ưĀĀĀ„ Package Master | cobra: 4 Ć¢ĀĀ¢ fiber: 4 Ć¢ĀĀ¢ gin: 4 Ć¢ĀĀ¢ gorm: 5 |
| ưĀ„ | PolinaSvet | 8 | 2 pkgs | ưĀĀĀŖ Package Advanced | cobra: 4 Ć¢ĀĀ¢ gin: 4 |
| ưĀ„ | RezaSi | 7 | 6 pkgs | ưĀĀĀŖ Package Advanced | cobra: 1 Ć¢ĀĀ¢ echo: 1 Ć¢ĀĀ¢ fiber: 1 Ć¢ĀĀ¢ gin: 1 Ć¢ĀĀ¢ gorm: 1 Ć¢ĀĀ¢ mongodb: 2 |
| 4 | BrianHuang813 | 3 | 1 pkg | ưĀĀĀ Package Intermediate | gin: 3 |
| 5 | ashwinipatankar Ć¢Ā¤ï¸ | 3 | 1 pkg | ưĀĀĀ Package Intermediate | cobra: 3 |
| 6 | 22-7-co | 2 | 1 pkg | ư± Package Beginner | gin: 2 |
| 7 | q1ngy | 2 | 1 pkg | ư± Package Beginner | gin: 2 |
| 8 | GleeN987 | 1 | 1 pkg | ư± Package Beginner | gin: 1 |
| 9 | MarioPaez | 1 | 1 pkg | ư± Package Beginner | gin: 1 |
| 10 | kelvin-yong | 1 | 1 pkg | ư± Package Beginner | gin: 1 |
ưĀĀĀ Package Challenges - Learn Go packages through practical, real-world scenarios
ư¦ Per-Package Progress
Cobra Package
| Rank | Developer | Completed | Progress |
|---|---|---|---|
| ưĀ„ | PolinaSvet | 4/4 | ưĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀĀ© 100% |
| ưĀ„ | odelbos | 4/4 | ưĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀĀ© 100% |
| ưĀ„ | ashwinipatankar | 3/4 | ưĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©â¬Āâ¬Ā⬠75% |
| 4 | RezaSi | 1/4 | ưĀĀ©ðĀĀ©â¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬Ā⬠25% |
Echo Package
| Rank | Developer | Completed | Progress |
|---|---|---|---|
| ưĀ„ | RezaSi | 1/4 | ưĀĀ©ðĀĀ©â¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬Ā⬠25% |
Fiber Package
| Rank | Developer | Completed | Progress |
|---|---|---|---|
| ưĀ„ | odelbos | 4/4 | ưĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀĀ© 100% |
| ưĀ„ | RezaSi | 1/4 | ưĀĀ©ðĀĀ©â¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬Ā⬠25% |
Gin Package
| Rank | Developer | Completed | Progress |
|---|---|---|---|
| ưĀ„ | PolinaSvet | 4/4 | ưĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀĀ© 100% |
| ưĀ„ | odelbos | 4/4 | ưĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀĀ© 100% |
| ưĀ„ | BrianHuang813 | 3/4 | ưĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©â¬Āâ¬Ā⬠75% |
| 4 | 22-7-co | 2/4 | ưĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©â¬Āâ¬Āâ¬Āâ¬Ā⬠50% |
| 5 | q1ngy | 2/4 | ưĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©â¬Āâ¬Āâ¬Āâ¬Ā⬠50% |
Gorm Package
| Rank | Developer | Completed | Progress |
|---|---|---|---|
| ưĀ„ | odelbos | 5/5 | ưĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©ðĀĀĀ© 100% |
| ưĀ„ | RezaSi | 1/5 | ưĀĀ©ðĀĀ©â¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬Āâ¬Ā⬠20% |
Mongodb Package
| Rank | Developer | Completed | Progress |
|---|---|---|---|
| ưĀ„ | RezaSi | 2/5 | ưĀĀ©ðĀĀ©ðĀĀ©ðĀĀ©â¬Āâ¬Āâ¬Āâ¬Āâ¬Ā⬠40% |
ưĀĀĀ Package Challenge Statistics
-
Total Package Challenges Available: 26
-
Active Package Learners: 10
-
Available Packages: 6 (cobra, echo, fiber, gin, gorm, mongodb)
-
Most Package Challenges Solved: 17 by odelbos
Key Features
- Interactive Web UI - Code, test, and submit solutions in your browser
- Automated Testing - Get immediate feedback on your solutions
- Automated Scoreboards - Solutions are automatically scored and ranked
- Profile Badges - Beautiful auto-updating badges for GitHub profiles, LinkedIn, and portfolios
- Performance Analytics - Track execution time and memory usage for your solutions
- Comprehensive Learning - Each challenge includes detailed explanations and resources
- Progressive Difficulty - From beginner to advanced Go concepts
- AI Interview Simulation - Practice with AI-powered code review and interviewer questions
AI Interview Simulation
Transform your coding practice into realistic interview scenarios with our AI-powered features:
Real-Time Code Review - Get instant feedback on code quality, complexity analysis, and improvement suggestions
Dynamic Interview Questions - AI generates follow-up questions based on your solution approach
Progressive Hints - 4-level hint system from subtle nudges to detailed explanations
Multi-LLM Support - Works with Gemini (recommended), OpenAI, or Claude
Simply add your API key to experience interview-style feedback that adapts to your code and challenges you with realistic technical questions.
AI Interview Experience
|
AI Code Review Get instant feedback on code quality, complexity analysis, and improvement suggestions from AI |
Dynamic Interview Questions AI generates follow-up questions based on your solution approach and coding patterns |
Quick Start
Important: You must fork this repository first before cloning, otherwise you won't be able to push your solutions or create pull requests!
Option 1: Web UI (Recommended)
# 1. First, fork this repository on GitHub
# Go to https://github.com/RezaSi/go-interview-practice
# Click the "Fork" button in the top-right corner
# 2. Clone your forked repository (replace 'yourusername' with your GitHub username)
git clone https://github.com/yourusername/go-interview-practice.git
cd go-interview-practice
# 3. Start the web interface
cd web-ui
go run main.go
# 4. Open http://localhost:8080 in your browser
# 5. Optional: Enable AI Features (Recommended) ư¤Ā
# Add your free Gemini API key to enable AI interview simulation
echo "AI_PROVIDER=gemini" > web-ui/.env
echo "GEMINI_API_KEY=your_actual_api_key_here" >> web-ui/.env
# Get your free API key: https://makersuite.google.com/app/apikey
# Note: .env files are automatically ignored by git for security
After solving challenges and submitting solutions:
- Your solutions will be automatically saved to your local repository
- Follow the provided Git commands to commit and push your changes
- Create a pull request to contribute your solutions back to the main project
Option 2: GitHub Codespaces (Cloud Development + Web UI)
Want to get started instantly without setting up anything locally? Use GitHub Codespaces!
- Fork this repository (if you haven't already)
- Open in Codespaces: Click the green "Code" button on your forked repository, then select "Codespaces" tab
- Create Codespace: Click "Create codespace on main"
- Start the Web UI: Once the codespace loads, open a terminal and run:
cd web-ui go run main.go - Optional: Enable AI Features: Add your Gemini API key:
echo "AI_PROVIDER=gemini" > .env echo "GEMINI_API_KEY=your_actual_api_key_here" >> .env - Access the Web UI: Click on the "Ports" tab in the bottom panel, then click the "Open in Browser" button next to port 8080
Benefits of using Codespaces:
- No local setup required
- Pre-configured Go environment
- Full VS Code experience in the browser
- Automatic port forwarding for the web UI
- All dependencies pre-installed
- Works on any device with a browser
Option 3: Railway Deployment (One-Click Cloud Hosting)
Deploy your own instance of the platform to the cloud with Railway!
Perfect for:
- Teams & Organizations: Private instance for internal use
- Educators: Custom environment for students
- Customization: Fork and modify for specific needs
- Always Available: 24/7 cloud hosting with automatic scaling
Setup Steps:
- Click Deploy Button above
- Configure AI Features (optional but recommended):
- Choose AI provider:
gemini(recommended - free tier) - Add API key: Get free Gemini key
- Choose AI provider:
- Access Your Platform: Railway provides instant public URL
- Start Using: Full platform with all challenges immediately available
Option 4: Command Line
# 1. Fork the repository first (see step 1 above)
# 2. Clone your fork and set up a challenge workspace
git clone https://github.com/yourusername/go-interview-practice.git
cd go-interview-practice
./create_submission.sh 1 # For challenge #1
# 3. Implement your solution in the editor of your choice
# 4. Run tests
cd challenge-1
./run_tests.sh
Profile Badges for Contributors
Showcase your Go programming achievements with auto-updating profile badges for GitHub profiles, portfolios, and personal websites.
Examples
Quick Usage
[](https://github.com/RezaSi/go-interview-practice)
After contributing solutions, your badges are automatically generated in badges/YOUR_USERNAME_badges.md with multiple formats ready to use.
Complete Badge Guide & Examples Ć¢ĀĀ
Challenge Categories
Beginner
Perfect for those new to Go or brushing up on fundamentals
- Challenge 1: Sum of Two Numbers
- Challenge 2: Reverse a String
- Challenge 3: Employee Data Management
- Challenge 6: Word Frequency Counter
- Challenge 18: Temperature Converter
- Challenge 21: Binary Search Implementation
- Challenge 22: Greedy Coin Change
Intermediate
For developers familiar with Go who want to deepen their knowledge
- Challenge 4: Concurrent Graph BFS Queries
- Challenge 5: HTTP Authentication Middleware
- Challenge 7: Bank Account with Error Handling
- Challenge 10: Polymorphic Shape Calculator
- Challenge 13: SQL Database Operations
- Challenge 14: Microservices with gRPC
- Challenge 16: Performance Optimization
- Challenge 17: Interactive Debugging Tutorial
- Challenge 19: Slice Operations
- Challenge 20: Circuit Breaker Pattern
- Challenge 23: String Pattern Matching
- Challenge 27: Go Generics Data Structures
- Challenge 30: Context Management Implementation
Advanced
Challenging problems that test mastery of Go and computer science concepts
- Challenge 8: Chat Server with Channels
- Challenge 9: RESTful Book Management API
- Challenge 11: Concurrent Web Content Aggregator
- Challenge 12: File Processing Pipeline
- Challenge 15: OAuth2 Authentication
- Challenge 24: Dynamic Programming - Longest Increasing Subsequence
- Challenge 25: Graph Algorithms - Shortest Path
- Challenge 26: Regular Expression Text Processor
- Challenge 28: Cache Implementation with Multiple Eviction Policies
- Challenge 29: Rate Limiter Implementation
How to Use This Repository
1. Explore Challenges
Browse challenges through the web UI or in the code repository. Each challenge includes:
- Detailed problem statement
- Function signature to implement
- Comprehensive test cases
- Learning resources
2. Implement Your Solution
Write code that solves the challenge requirements and passes all test cases.
3. Test & Refine
Use the built-in testing tools to validate your solution, then refine it for:
- Correctness
- Efficiency
- Code quality
4. Submit & Compare
Submit your passing solution to be added to the scoreboard:
- Your solution is automatically tested and scored
- Execution time and resource usage are recorded
- Your solution is ranked among other submissions
- Access detailed performance metrics to optimize further
5. Learn & Progress
Review the learning materials to deepen your understanding of the concepts used.
Contributing
We welcome contributions! You can contribute in several ways:
Submit Solutions:
- Solve existing classic or package challenges
- Submit your solutions via pull request
Add New Challenges:
- Package Challenges: Framework-specific practical applications (Gin, Cobra, GORM, etc.)
Quick Steps:
- Fork the repository
- Choose challenge type (classic or package-based)
- Follow our template structure
- Submit a pull request
See CONTRIBUTING.md for detailed guidelines on both challenge types.
ưĀĀĀ¢ Premium Business Sponsors
Thank you to our premium sponsors who make this project possible!
Interested in premium sponsorship? Contact us to feature your company logo here and on our platform!
License
This project is licensed under the MIT License - see the LICENSE file for details.
Stargazers over time
Happy Coding! ưĀĀĀ»
Top Related Projects
Standard Go Project Layout
Learn Go with test-driven development
ā¤ļø 1000+ Hand-Crafted Go Examples, Exercises, and Quizzes. š Learn Go by fixing 1000+ tiny programs.
Go Training Class Material :
A curated list of awesome Go frameworks, libraries and software
Curated list of Go design patterns, recipes and idioms
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot