Contribution Guidelines

Help build the most authoritative, open-source iOS interview and practice curriculum. Questions live as Markdown files and compile into deterministic quizzes with verified references.

View Repository on GitHub

How to Contribute in 4 Steps

1

Fork & Clone Repository

Fork sokpichdev/ios-qa and clone your fork locally:

git clone https://github.com/<your-username>/ios-qa.git
2

Choose Topic & Author Markdown

Navigate to content/questions/<topic-slug>/. Append your question block to an existing file or add a new .md file.

Available topics: swift, swiftui, concurrency, architecture, oop, networking, testing, uikit, xcode-tools, security, interview-prep.

3

Validate with Build Scripts

Run the build validation script to check question syntax, MCQ option generation, and reference URLs:

npm run build-data && npm run build
4

Open a Pull Request

Push your branch and open a PR against main. Provide a brief summary of the questions and concepts added.

View open PRs

Markdown Format Specification

## Q: What is [Question Title]?

**Answer:**
A concise, standalone first sentence summarizing the answer accurately. Follow with any further technical explanation, architectural details, or context.

**Code Example:**
```swift
// Provide a realistic, idiomatic Swift or UIKit/SwiftUI snippet
let example = "Idiomatic Swift"
```

**Key Points:**
- Concise summary bullet point 1
- Important nuance or trade-off bullet point 2

**Tags:** #topic #concept #interview
**Difficulty:** Intermediate
**References:**
- [Topic Documentation — Apple Developer](https://developer.apple.com/documentation/...)
- [Deep Dive Article — Swift by Sundell](https://swiftbysundell.com/articles/...)

Field Requirements:

  • ## Q: [Title]: Starts a single question block.
  • **Answer:**: Must open with a standalone, complete sentence.
  • **Tags:**: Space-separated hash tags (e.g. #swift #arc).
  • **Difficulty:**: Beginner, Intermediate, or Advanced.

MCQ Auto-Generation Rules:

  • Questions opening with What is, Which, When should, How does become candidate MCQs.
  • The first sentence of the answer becomes the correct option (≤ 200 characters).
  • Distractor options are deterministically sourced from the same topic.

Authoritative Reference Sources

All questions should include credible references. The build validation script verifies that links use https:// and originate from approved primary domains:

Apple Developer(developer.apple.com)
Swift.org(swift.org)
Swift by Sundell(swiftbysundell.com)
Point-Free(pointfree.co)
Kodeco(kodeco.com)
objc.io(objc.io)
Hacking with Swift(hackingwithswift.com)
GitHub(github.com)
Firebase Docs(firebase.google.com)
Fastlane Tools(docs.fastlane.tools)

Best Practices for Contributions

DO:

  • Write concise, direct answers that stand on their own.
  • Include modern Swift 5.9+ and concurrency syntax.
  • Provide realistic, syntax-highlighted code snippets.
  • Append questions at the end of files to maintain stable IDs.

AVOID:

  • Do not insert questions into the middle of existing files (resets user progress IDs).
  • Do not use insecure http:// links.
  • Avoid opinion-based or framework-war discussions without technical basis.
  • Avoid deprecated Objective-C APIs unless explicitly contrasting.

Have an idea for a topic or question that isn't covered yet?