Language-Level Concurrency and Multithreading Questions

Per-language and per-runtime concurrency: the threading and async APIs each language and platform provides (goroutines, channels, worker pools and pipelines in Go, threads, executors, ThreadPoolExecutor tuning and CompletableFuture in Java, Kotlin coroutines, dispatchers, Flow and structured concurrency, Swift GCD with queues and QoS, DispatchGroup, OperationQueue, actors and async/await, Android Handler/Looper, HandlerThread and thread pools, Flutter isolates, C++ std::thread and atomics, Python threads versus multiprocessing versus asyncio tasks, gather and graceful shutdown), each language's memory model and visibility guarantees (Java happens-before and volatile, C++11 memory orders such as relaxed, acquire and release, Objective-C and Swift atomic versus nonatomic), mobile main-thread rules and JNI thread attachment, cancellation and shutdown idioms, and the idioms for coordinating shared state safely in that language, including thread-safe caches, singletons and bounded queues. Also covers reproducing, testing and diagnosing races and deadlocks in a specific language or app, and migrating callback, GCD or thread-pool code to structured concurrency. Covers choosing and using a language's concurrency primitives correctly. Boundary: general synchronization theory, deadlock and lock-free algorithm internals, OS scheduling, database isolation levels, and callback or event-loop architecture are covered elsewhere.

EasyTechnical
25 practiced

What is the difference between concurrency and parallelism? Give examples in Python, Go and Java of code that is concurrent but not parallel and code that is truly parallel, and say what that means for CPU-bound versus I/O-bound work.

MediumTechnical
26 practiced

Explain the practical differences between concurrency models in Python: threading, multiprocessing, and asyncio. For each model, state when it is appropriate (network-bound, CPU-bound, I/O-bound), how the Global Interpreter Lock (GIL) affects behavior, and how you would pick one for a systems scripting task that polls thousands of sockets.

EasyTechnical
26 practiced

Explain the meaning and use-cases of the volatile keyword in Java and compare it with the volatile qualifier in C++ prior to C++11 and with C++11 atomics. What visibility and reordering guarantees does Java volatile provide?

MediumTechnical
21 practiced

In Go, implement a concurrent worker pool that accepts tasks via a channel, supports N workers, applies backpressure when the queue is full, and supports graceful shutdown which stops accepting new tasks but finishes in-flight tasks. Provide function signatures and a sketch of key goroutine behavior (no need for full compiler-ready code).

MediumTechnical
23 practiced

Legacy services use nested asynchronous callbacks causing hard-to-maintain code and resource leaks. Explain structured concurrency concepts and how modern features (async/await, task groups in Python 3.11, StructuredTaskScope in Java) help. Provide a pragmatic plan to refactor a legacy callback-based service to structured concurrency to improve lifecycle management and error propagation.

Unlock Full Question Bank

Get access to all 27 Language-Level Concurrency and Multithreading interview questions and detailed answers.

Sign in to Continue

Join thousands of developers preparing for their dream job.