← All topics

πŸ›  Interview Prep

Git, Tools & AI

Git, debugging, testing, the command line, Docker, CI/CD and working with AI: what proves you can work on a real team.

100 questions, most asked first

Ordered so the most useful questions for learning each pattern come first.

#1git merge vs git rebaseBranching & PRsMediumFree#2The everyday Git workflowGit basicsEasyFree#3The pull request workflowBranching & PRsEasyFree#4Resolving a merge conflictBranching & PRsEasyFree#5How do you use AI tools when coding?AI toolsEasyFree#6How do you debug a problem you've never seen before?DebuggingEasyFree#7Find and fix the bug, then test itTestingEasyFree#8git reset vs git revert vs git restoreGit internalsMediumFree#9git stashGit basicsEasyFree#10Unit vs integration vs end-to-end testsTestingEasyFreeUnlock 90 more Git, Tools & AI questions Β· all 1,200 questions for $39/year (about 11Β’ a day)See full access#11How do you review AI-generated code?Reviewing AI codeMediumπŸ”’#12Writing good prompts for coding helpPromptingEasyπŸ”’#13Giving and receiving code reviewsCode reviewEasyπŸ”’#14git cherry-pickBranching & PRsMediumπŸ”’#15Finding the commit that broke something (git bisect)DebuggingMediumπŸ”’#16Essential command-line skillsLinux & shellEasyπŸ”’#17Unix file permissions and chmodLinux & shellEasyπŸ”’#18Environment variables and managing secretsDocker & CI/CDEasyπŸ”’#19Docker basicsDocker & CI/CDEasyπŸ”’#20What is CI/CD?Docker & CI/CDEasyπŸ”’#21Semantic versioningDocker & CI/CDEasyπŸ”’#22Package managers and lockfilesDocker & CI/CDEasyπŸ”’#23Branching strategies (trunk-based vs Git Flow)Branching & PRsMediumπŸ”’#24Writing good commit messagesGit basicsEasyπŸ”’#25What belongs in .gitignore?Git basicsEasyπŸ”’#26Test-driven development (TDD)TestingMediumπŸ”’#27Mocks, stubs and fakesTestingMediumπŸ”’#28What does code coverage tell you (and not)?TestingEasyπŸ”’#29Debugging an issue in productionDebuggingMediumπŸ”’#30AI hallucinations in codingAI toolsEasyπŸ”’#31Using AI tools safely at workAI safetyEasyπŸ”’#32Calling an LLM API from your appAI in appsMediumπŸ”’#33What is RAG (retrieval-augmented generation)?AI in appsMediumπŸ”’#34What is an AI agent?AI toolsMediumπŸ”’#35Prompt injectionAI safetyMediumπŸ”’#36An effective AI pair-programming workflowAI toolsEasyπŸ”’#37When shouldn't you rely on AI?AI safetyMediumπŸ”’#38Testing AI features (evals)AI in appsHardπŸ”’#39Shell pipes and redirectionLinux & shellEasyπŸ”’#40Managing processes from the terminalLinux & shellEasyπŸ”’#41SSH keysLinux & shellEasyπŸ”’#42Debugging APIs with curlDebuggingEasyπŸ”’#43Scheduling tasks with cronLinux & shellEasyπŸ”’#44Docker Compose for local developmentDocker & CI/CDEasyπŸ”’#45Infrastructure as codeDocker & CI/CDMediumπŸ”’#46Releasing safely and rolling backDocker & CI/CDMediumπŸ”’#47Monitoring and alertingDebuggingMediumπŸ”’#48Incident response and blameless postmortemsTeamwork & processMediumπŸ”’#49Agile and Scrum basicsTeamwork & processEasyπŸ”’#50How do you estimate how long a task will take?Teamwork & processMediumπŸ”’#51Working with legacy codeCode reviewMediumπŸ”’#52Getting productive in an unfamiliar codebaseCode reviewEasyπŸ”’#53Writing useful documentationTeamwork & processEasyπŸ”’#54Technical debtCode reviewMediumπŸ”’#55Pair programmingTeamwork & processEasyπŸ”’#56How and when to ask for helpTeamwork & processEasyπŸ”’#57Handling critical code review feedbackCode reviewEasyπŸ”’#58Cleaning up commits before a PRGit internalsMediumπŸ”’#59Detached HEAD and recovering lost commitsGit internalsMediumπŸ”’#60Git tags and releasesGit basicsEasyπŸ”’#61Monorepo vs polyrepoTeamwork & processMediumπŸ”’#62Using a debugger instead of print statementsDebuggingEasyπŸ”’#63Finding performance bottlenecks with a profilerDebuggingMediumπŸ”’#64Linters and formattersCode reviewEasyπŸ”’#65Type checking as a safety netTestingEasyπŸ”’#66Handling vulnerable dependenciesDocker & CI/CDMediumπŸ”’#67You accidentally committed a secret. Now what?Git basicsMediumπŸ”’#68Dev, staging and production environmentsDocker & CI/CDEasyπŸ”’#69The twelve-factor appDocker & CI/CDMediumπŸ”’#70Load testingTestingMediumπŸ”’#71Flaky testsTestingMediumπŸ”’#72Property-based testingTestingHardπŸ”’#73Snapshot testingTestingEasyπŸ”’#74The AI coding tool landscapeAI toolsEasyπŸ”’#75Tokens and context windowsAI in appsMediumπŸ”’#76Controlling LLM cost and latencyAI in appsMediumπŸ”’#77Prompting vs RAG vs fine-tuningAI in appsMediumπŸ”’#78Embeddings and vector searchAI in appsMediumπŸ”’#79Structured outputs and tool callingAI in appsMediumπŸ”’#80Bias and responsible AIAI safetyMediumπŸ”’#81Can you use AI during an interview?AI toolsEasyπŸ”’#82"Explain this code line by line"Reviewing AI codeEasyπŸ”’#83Writing a simple shell scriptLinux & shellEasyπŸ”’#84Automating tasks with npm scripts and MakefilesDocker & CI/CDEasyπŸ”’#85Network debugging toolsDebuggingMediumπŸ”’#86Contributing to open sourceBranching & PRsEasyπŸ”’#87On-call and code ownershipTeamwork & processMediumπŸ”’#88Architecture decision records (ADRs)Teamwork & processEasyπŸ”’#89Refactoring safelyCode reviewMediumπŸ”’#90Large files in GitGit internalsEasyπŸ”’#91"It works on my machine"DebuggingEasyπŸ”’#92How would you deploy a web app for the first time?Docker & CI/CDEasyπŸ”’#93Connecting a custom domainDocker & CI/CDEasyπŸ”’#94Running a side project cheaplyDocker & CI/CDEasyπŸ”’#95Learning a new framework or tool quicklyTeamwork & processEasyπŸ”’#96Getting productive in your editorDebuggingEasyπŸ”’#97Quick text processing (grep, sed, awk, jq)Linux & shellMediumπŸ”’#98Using AI to debug effectivelyAI toolsEasyπŸ”’#99Letting AI write testsReviewing AI codeMediumπŸ”’#100Staying effective as AI tools keep changingAI toolsEasyπŸ”’