💻

Programming Languages & Core Development Topics

Programming languages, development fundamentals, coding concepts, and core data structures. Includes syntax, algorithms, memory management at a programming level, asynchronous patterns, and concurrency primitives. Also covers core data manipulation concepts like hashing, collections, error handling, and DOM manipulation for web development. Excludes tool-specific proficiency (see 'Tools, Frameworks & Implementation Proficiency').

Asynchronous and Event-Driven Programming

The programming model of a single asynchronous runtime: callbacks, promises and futures, async/await, event loops and task/microtask scheduling (including microtask starvation and where rendering fits), reactive streams and back-pressure, and how ordering, cancellation, timeouts, retries and error propagation behave across JavaScript, Node.js, mobile coroutine or async runtimes, and a comparison with Python asyncio and Java futures. Includes the async mechanics of a data fetch such as parallel versus sequential requests, partial failure, stale or out-of-order responses, abort, debounced live search, single-flight token refresh, and bounded concurrency; wrapping callback APIs as promises, streaming work through async consumers, moving heavy work off the main thread and back, and diagnosing unhandled rejections, race conditions and leaked subscriptions. Excludes message-queue and pub/sub system design, server throughput and thread-pool tuning, per-language threading and memory models, rebuilding standard APIs from scratch, and fetch caching or state architecture.

0 questions

Functional Programming

Functional programming as a paradigm and a way of structuring code: pure functions and side-effect isolation (a pure core with effects at the edges, and how effects are described versus run), immutability and persistent data structures with structural sharing, updating nested immutable data including lenses, higher-order functions, function composition, currying and partial application, folds and recursion over data (including tail recursion), algebraic data types and pattern matching, total functions and Maybe/Either style error values, functors, applicatives and monads as patterns for composing effects and threading state, parser combinators as a worked example, lazy evaluation and lazy or streaming pipelines, and property-based testing of pure code. Covers reasoning about programs as composed transformations rather than mutable state, in a dedicated functional language such as Haskell or Scala, or in a multi-paradigm language such as JavaScript, TypeScript, Kotlin or Python. Boundary: closures and the this binding as language mechanics, the event loop and reactive streams, threads and STM-style concurrency, performance profiling, and exception or resource handling are covered elsewhere.

0 questions

Language-Level Concurrency and Multithreading

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.

0 questions

Java Programming

The Java language and platform: type system, collections framework, generics, exceptions, the memory and JVM model, and idiomatic object-oriented Java. Covers writing correct Java and reasoning about its runtime and language semantics. A staple server-side and test-automation language surface.

33 questions

Programming Fundamentals

Language-agnostic building blocks of writing code: variables, primitive and composite data types, scope and lifetime, functions and callbacks, control flow, and expressions versus statements. Covers the mental model a candidate needs before any language-specific or algorithmic depth. The baseline literacy layer of a technical screen.

12 questions

Error Handling and Defensive Programming

Making code robust against bad input and failure: exceptions versus error returns, input validation, guard clauses, graceful degradation, and designing for the unhappy path. Covers where to handle versus propagate errors and how to fail safely without hiding bugs. A recurring probe of production maturity.

0 questions

JavaScript and TypeScript Fundamentals

The JavaScript and TypeScript language surface: scope and closures (including stale values captured in callbacks and what a closure keeps reachable), hoisting and the temporal dead zone, the this binding and method borrowing, prototypes and class inheritance, the object model (property descriptors, key enumeration order, freeze and seal, Map, Set, WeakMap, WeakRef, serialising Map and Set), number precision and BigInt, destructuring and modern ES syntax and modules, how JSX and newer syntax are transpiled and which gaps need polyfills, and the TypeScript type system (generics, narrowing, utility, mapped and discriminated-union types, typing component props, hooks, fetch wrappers and event emitters, validating untyped JSON, migrating a codebase to TypeScript). Covers language mechanics independent of any framework, in the browser and in Node.js. Event-loop and promise mechanics, rebuilding standard utilities from scratch, the functional paradigm, DOM and browser APIs, rendering performance, memory-leak diagnosis, and generic algorithm exercises are covered elsewhere.

0 questions

Polyfills and JavaScript Utility Implementation

Rebuilding standard JavaScript behavior and common utility libraries from scratch, the machine-coding interview genre where a candidate re-creates a familiar API to prove they understand its mechanics. Covers a minimal Promise built from first principles (chaining, asynchronous handlers, single settlement, thenable adoption, error flow) and Promise.allSettled-style combinators; polyfills for browser APIs such as IntersectionObserver, and a keyed virtual DOM diff; utilities such as debounce (leading and trailing, cancel, flush), throttle, and React hooks that debounce a value or a callback with stable identity and no stale closures; deep clone (cycles, shared references, Dates, RegExps), shallow and deep equality (typed arrays, Maps and Sets, NaN and -0), nested object helpers (safe path get, flatten and unflatten, deep merge), curry with placeholders and partial application, and memoize with cache keys and WeakMap-based caches; and small infrastructure such as event emitters (on, off, once, emit, context binding, listener leaks). Emphasizes edge cases, correct this binding, argument handling, spec fidelity, and complexity. Using these built-ins as a language feature, the event loop and async/await semantics, DOM traversal and event propagation, functional programming as a paradigm, and generic algorithm puzzles are covered elsewhere.

0 questions

Programming for Test Automation

General Java and Python language proficiency questions where the test-engineering framing is load-bearing: it changes what is actually being assessed, not just the flavor text. Covers designing for testability (polymorphism and interchangeable implementations so a test harness can substitute a fake), how exception-handling choices change what a test for that failure path looks like, choosing the right collection for test-result processing, methodology for testing concurrency correctness (writing a test that can actually reveal a race or a visibility bug, not just fixing one), serialization and diffing trade-offs for test fixtures and CI artifacts, detecting a hash/equality-contract violation through testing, memory-bounded generator and streaming I/O patterns for test data, and small test-engineering utilities (CI-config diffing, checksum-verified data sharding). Excludes writing or debugging the code inside a single automated test script (control flow, parameterization, translating a manual case, locator, wait, and retry mechanics), which belongs to test automation scripting. Excludes suite-wide or framework-wide structural and strategy decisions (Page Object Model, layering, tool or driver choice, CI wiring, governance, flaky-test-detection systems, scalable test infrastructure), which belongs to test automation framework architecture and design. Excludes classic array/string/graph technique problems with no real test-engineering judgment required, which belong to arrays, strings, and hashing. Also excludes generic OOP-principles surveys, generic concurrency-primitive implementation (singletons, thread pools, producer-consumer queues, lock-free structures) with no distinct testing angle, generic garbage-collection and memory-leak content, generic functional-programming surveys, and generic hash-function or hash-table design: each of these already has a dedicated, larger topic in the catalog (Object-Oriented Programming and Design, Concurrency Synchronization and Deadlock, Memory Management and Garbage Collection, Functional Programming, Hashing and Hash Tables), and a test-flavored costume on otherwise-identical content is not a reason to duplicate it here.

15 questions
Page 1/2