Aptiv · Software Engineer
Updated · 2026-10-02

Aptiv Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Aptiv builds vehicle software. Candidates describe Software Engineer work on autonomous driving, advanced safety systems and connected-vehicle architectures. The work depends on the team. On the embedded side it covers AUTOSAR stacks and real-time code in C/C++. Other teams work on GPU driver development or on cloud infrastructure that supports AI workloads, where the requirements candidates describe list Golang or Python. Matlab, Simulink and C++ are also named for feature development. The role is described as end to end: requirements analysis and design, implementation, testing and deployment. It also includes integration work with hardware engineers to get software running on target vehicle hardware, plus code reviews and architecture discussions. For preparation, this means one loop can draw on very different stacks, and you need to know which one your team uses before you start.

This guide is for Software Engineer candidates interviewing at Aptiv, on either the embedded track (C/C++, RTOS, AUTOSAR, vehicle networks, GPU drivers) or the cloud track (Python or Golang, data processing, AI infrastructure). It covers both reported stages and gives question-specific approaches and follow-ups for every reported question. It also covers the safety vocabulary (ISO 26262) that candidates call a differentiator, the mistakes that cost points on these question types, and a seven-day plan. Compensation and team-specific details are out of scope.

Candidates report two stages over about 2-4 weeks. A Technical Screening checks core competencies. It is followed by a series of Deep-Dive Interviews on hands-on experience, design philosophy and cultural alignment.

AUTOSARGPU Driver DevelopmentRTOS (Real-Time Operating Systems)

33 min read

Browse Software Engineer questions

See the practice prompts

17Practice promptsAcross five skill areas

The reported questions fall into three groups. The first is automotive domain knowledge: communication inside an AUTOSAR architecture, memory and latency under an RTOS, GPU driver development for vehicles, and CAN versus Ethernet. The second is architecture: a fault-tolerant autonomous driving module, centralized versus distributed vehicle compute, AI workloads in a private cloud, and high-throughput Python or Golang processing. The third is behavioral: a legacy refactor, a technical disagreement, deadline pressure and learning a tool fast. The set covers both embedded and cloud work, so your first step is to find out which track the team is on and put most of your depth there.

On the embedded track, the reported topics are AUTOSAR, RTOS, GPU driver development and BCM. For embedded roles, candidate tips say the technical rounds go deep on C/C++, memory management and hardware-software integration. In practice, you should be able to trace one signal from a software component to the CAN controller and back, explain why heap allocation after startup is a risk in a real-time system, and describe priority inversion with its fix. You should also know the ISO 26262 terms (ASIL, safety goal, fault tolerant time interval, freedom from interference), because candidates report that familiarity with safety standards sets people apart.

On the cloud track, the reported areas are data pipelines for large vehicle datasets, containerization and orchestration in a private cloud, and performance tuning. Practise profiling before you optimize, Python's GIL and how to work around it, Go worker pools with backpressure, and GPU scheduling for training and inference jobs.

With only two stages reported, the screen carries the fundamentals and the deep-dives carry design and stories. Candidates advise that anything on your resume can be questioned down to how it works internally, and that you should explain why you chose one approach over another. So prepare each answer as a decision with its alternatives and a measured result, not as a list of features.

01

Technical Screening

reported

Candidates describe the Technical Screening as a first check of core competencies and technical rigor. Candidate tips say the technical rounds are specialized by domain. For embedded roles, that means depth on C/C++, memory management and the hardware-software interface. For cloud roles, the requirements candidates describe point to Golang or Python. Treat the screen as a fundamentals test in your own track. You should be able to explain memory ownership, concurrency primitives, interrupt handling and RTOS scheduling precisely without notes, or, on the cloud side, profiling and concurrency in Python and Go. Candidates also warn that any skill listed on a resume can be questioned down to its internals, so refresh or remove the ones you cannot explain.

What to demonstrate

  • Core competencies in your stated domain, which candidates name as the purpose of the screen
  • For embedded roles: C/C++, memory management and hardware-software integration, per candidate tips on the technical rounds
  • Whether you can explain the mechanics behind skills you list, not only how to use them

How to prepare

  • Write a fixed-size block pool allocator and a lock-free single-producer single-consumer ring buffer in C or C++. Explain volatile, memory barriers and why malloc is avoided after initialization.
  • Rehearse the RTOS memory-and-latency question with a three-task priority-inversion example and the priority-inheritance fix.
  • Cloud track: profile one Python script and one Go program, and practise a two-sentence explanation each of the GIL and goroutine scheduling.
  • List every skill on your resume and write one internals question for each that you can answer cleanly.
Aptiv Software Engineer candidate reports ↗
02

Deep-Dive Interviews

reported

Candidates describe the Deep-Dive Interviews as a series of conversations, run by engineers and leads, about hands-on experience, design philosophy and cultural alignment. The focus on design philosophy makes this stage the natural place to practise the architecture questions. The focus on experience and alignment covers the behavioral prompts. Prepare two projects you can defend at any depth: the constraints (timing, memory, safety level or data volume), the alternatives you rejected and the result you measured. In a design discussion, start from the hazard or requirement, then name the components, then explain how each failure is detected and handled. In a story, describe a decision you made yourself and the evidence that it worked.

What to demonstrate

  • Hands-on experience: depth on systems you built yourself
  • Design philosophy: how you reason through architecture choices and their trade-offs
  • Cultural alignment, discussed through how you acted in past situations

How to prepare

  • Write a one-page brief for each of two projects: the problem, the constraints, the rejected alternatives and the measured outcome.
  • Whiteboard the fault-tolerant module and the centralized-versus-distributed questions. Start from hazards and the safe state, not from boxes.
  • Learn the ISO 26262 vocabulary (ASIL, safety goal, FTTI, freedom from interference) so your design answers can use it accurately.
  • Prepare STAR stories for the four reported behavioral prompts, each ending in a concrete result.
Aptiv Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Answering the AUTOSAR question by listing layer names (application, RTE, BSW, MCAL) without tracing a signal through them.

Practise one sender-receiver signal end to end, both directions: Rte_Write, Com_SendSignal, I-PDU packing, PduR, CanIf, CAN driver, and back up to a DataReceivedEvent and Rte_Read. Add one sentence on timeouts and one on E2E protection.

02

Giving desktop-style answers to the RTOS question: heap allocation at runtime, 'use a faster CPU', average latency instead of worst case.

Anchor the answer on static allocation and block pools, priority assignment with schedulability analysis, short ISRs that defer work to tasks, and priority inversion with priority inheritance. Say how you would measure the worst-case latency on the target hardware.

03

Designing the fault-tolerant module as 'add a second computer' with no detection mechanism, no safe state and no answer for common-cause failures.

Structure the answer as hazard and safe state, then detection (watchdogs, plausibility checks, sequence counters), then diverse redundancy, then a degradation ladder with a defined arbiter. Use the ISO 26262 terms correctly, including FTTI and freedom from interference.

04

Optimizing Python or Go throughput before profiling, or adding threads to CPU-bound pure-Python code.

Open with the profiler you would use and how you would classify the bottleneck. Then match the fix to the cause: vectorization or multiprocessing for CPU-bound Python, bounded worker pools and fewer allocations in Go, batching and columnar formats for I/O. Mention backpressure for slow sinks.

05

Behavioral stories with no measurable result, such as a refactor told as a rewrite with no before-and-after numbers or a disagreement where you were simply right.

For each of the four reported prompts, write the result line first: a number, a shipped milestone or a reversed decision. Then build the story backwards so the evidence and your own decision sit at its center.

Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.

13 technical prompts0 include a worked solution

How do you manage memory and latency constraints in a real-time operating system (RTOS)?

medium
Technical Domain Expertise

How do you manage memory and latency constraints in a real-time operating system (RTOS)?

Approach
  1. Memory: allocate everything at initialization. That means static task stacks, statically created queues and semaphores, and fixed-size block pools instead of a general heap after startup, because malloc has unbounded timing and fragments over long uptime. Size stacks from the worst-case call depth plus interrupt frames, then verify with high-water marks and a stack canary.
  2. Scheduling: assign priorities by rate (rate-monotonic) or by deadline, and check schedulability with response-time analysis using measured worst-case execution times. The Liu-Layland bound n(2^(1/n) - 1), which approaches about 69 percent, is a sufficient test, not a necessary one.
  3. Interrupts: keep ISRs short. Acknowledge the hardware, copy the data into a lock-free single-producer single-consumer ring buffer, and defer the processing to a task through a semaphore or task notification. Every critical section and every interrupt-disable window adds directly to worst-case latency, so keep them bounded and short.
  4. Name priority inversion and its fixes: priority-inheritance mutexes or the priority-ceiling protocol. Do not use a binary semaphore as a mutex for a shared resource, and keep blocking calls out of high-priority tasks.
  5. Measure the worst case, not the average. Use a GPIO toggle, a cycle counter or a trace tool to get interrupt-to-task latency and jitter, and place hot code and data in tightly coupled or cached memory where the hardware allows it.
Follow-up
  • Walk through a priority-inversion scenario with three tasks and show exactly how priority inheritance resolves it.
  • A task misses its deadline once every few hours. How do you find the cause?
  • When would you accept dynamic allocation in an RTOS system, and how would you constrain it?

Diff a projection against the primary without per-row point reads

hard
reconciliationrange hashingthrottling

The listing projection has drifted and some rows show a stale version. The primary holds 40,000,000 resource rows across 12,000 tenants while serving 1,200 writes and 14,000 reads per second. The obvious repair, reading each resource row and comparing its version against the projection, is correct and would eventually finish. Explain precisely why it is unacceptable here, then give a diff that finds the differing rows, state its complexity, and make it safe to run against a live primary. Replication lag is usually under 100 ms and is not bounded.

Approach
  1. Quantify the naive cost rather than calling it slow: 40,000,000 point reads at even 0.5 ms each is over five hours serialised, and the only lever is concurrency, which is exactly what you cannot spend. The primary's pool is sized for the write path, and 40,000,000 random reads evict the buffer cache that sustains the 85 percent cache hit rate, so the audit degrades the system it is auditing.
  2. Replace random access with one ordered pass per side. Both sides can be read in (tenant_id, resource_id) order, which is a sequential scan on each and a merge join in O(n) time and O(1) memory. For a dense diff that is the whole answer, and it reads the primary once instead of 40,000,000 times.
  3. For the expected sparse case, compare range hashes instead of rows: partition the key space, compute per range an order-independent aggregate over hash(resource_id, version), compare aggregates, and descend only into ranges that differ. With d differing rows and branching factor B, at most d ranges mismatch per level, so the drill-down examines O(d log_B(n/d)) ranges and reads full rows only in mismatching leaves.
  4. Aggregate with a sum modulo 2^64 or a multiset hash, never XOR. XOR is order-independent but self-cancelling, so two rows wrong in the same way, or a row duplicated on one side, leave the range aggregate matching and the range is declared clean.
Follow-up
  • The diff reports 900 stale rows. How do you decide between patching those rows and rebuilding the projection from resource_revision?
  • Same job, but the projection lives in a search index that cannot be scanned in key order. What changes?

Track a rolling failure rate per destination for circuit decisions

easy
sliding windowring buffercircuit breaker

The egress service delivers about 1,500 webhooks per second across roughly 40,000 destinations, each call bounded by a 10 second timeout. Maintain, per destination, the failure rate over the trailing 60 seconds so a caller can ask before dispatch whether the circuit should open. Attempts arrive as (destination_id, finished_at_ms, outcome). Requirement: amortised O(1) per attempt, with total memory bounded by the destination count rather than by traffic. Give the structure, its exact memory, and the rule that stops a destination with three attempts from opening a circuit.

Approach
  1. Name the exact-deque version and then reject it as the default. Holding timestamps and advancing a tail pointer past anything older than now minus 60 seconds is a correct two-pointer window at amortised O(1) per attempt, but its memory tracks in-window traffic, so one destination in a retry storm holds hundreds of thousands of entries while thousands of quiet destinations hold none.
  2. Use a ring of 60 one-second buckets per destination, each bucket a pair of counters for attempts and failures. On an attempt, advance the ring by the elapsed whole seconds, zeroing at most min(elapsed, 60) buckets, then increment the head. That is amortised O(1) with a fixed footprint per destination.
  3. State the footprint: 60 buckets times two 4-byte counters is 480 bytes of payload per destination, so 40,000 destinations is roughly 20 to 25 MB with per-entry overhead, bounded by the catalogue rather than by the rate. The cost is granularity, since the oldest bucket ages out in whole seconds, which is far tighter than the decision needs.
  4. Require a minimum sample before the circuit may open. A destination with three attempts and three failures reads as 100 percent and is not evidence; a floor of roughly 20 attempts in the window makes the ratio meaningful, and below that floor use a run of consecutive failures as the trigger instead.
Follow-up
  • The fleet is 30 instances and each sees roughly a thirtieth of a destination's traffic. Where does the rate actually live, and what does a per-instance answer get wrong?
  • A destination answers in 9.5 seconds and succeeds. It is not failing but it is consuming your per-destination concurrency. What signal should open the circuit here?

Each day covers one cluster of the reported questions, in an order that suits the two stages: fundamentals for the Technical Screening first, then design and stories for the Deep-Dive Interviews. Cloud-track candidates should swap days 1-3 to a lighter review and spend extra time on day 5.

Small steps. Visible outcomes.0 / 7 completed
ONE WEEK · YOUR PACE

Prepare, practise & reflect

One practical outcome each day. Spend longer where you need it.

0 / 7 done
01C/C++ memory and RTOS fundamentals
  • Write a fixed-size block pool allocator in C with O(1) allocate and free, and note why it replaces malloc after initialization.
  • Write a lock-free single-producer single-consumer ring buffer for ISR-to-task handoff, and explain where volatile and memory barriers are needed.
  • Answer the RTOS memory-and-latency question aloud, including a three-task priority-inversion walk-through and the priority-inheritance fix.

Deliverable: A working block pool, a ring buffer with a short note on memory ordering, and a recorded RTOS answer that covers allocation, scheduling, ISRs and priority inversion.

Practice prompt ↗
02AUTOSAR communication and vehicle networks
  • Draw the transmit and receive paths of one sender-receiver signal through RTE, COM, PduR, CanIf and the CAN driver, marking where timeouts and E2E checks apply.
  • Build a comparison table of Classic CAN, CAN FD and automotive Ethernet: arbitration or switching, payload, bandwidth, determinism, error handling, security.
  • Explain CAN arbitration bit by bit for two simultaneous transmitters, then explain how TSN gives Ethernet bounded latency.

Deliverable: An annotated AUTOSAR signal-path diagram, a one-page protocol comparison table and a spoken arbitration walk-through.

Practice prompt ↗Practice prompt ↗
03GPU drivers and the hardware-software interface
  • Outline the kernel-mode and user-mode responsibilities of a GPU driver on a shared-memory automotive SoC, including IOMMU mapping and cache coherency.
  • Write a hang-recovery sequence: detection by watchdog, per-context reset, keeping a safety-relevant display alive, and logging.
  • Compare mutexes, spinlocks and interrupt disabling for driver code, and say when each one is correct.

Deliverable: A driver-layer outline, a step-by-step hang-recovery sequence and a three-row synchronization table, ready to talk through.

Practice prompt ↗
04Safety and vehicle architecture design
  • Learn the ISO 26262 terms: ASIL, safety goal, hazard analysis and risk assessment, FTTI, freedom from interference, ASIL decomposition.
  • Whiteboard the fault-tolerant autonomous driving module: hazards, safe state, detection, diverse redundancy, arbiter, degradation ladder.
  • Write a trade-off table for centralized and distributed vehicle compute, and place braking, perception and infotainment with a reason for each.

Deliverable: A glossary of the safety terms, one fault-tolerant design diagram and a placement table for three vehicle functions.

Practice prompt ↗Practice prompt ↗
05Cloud track: throughput and AI infrastructure
  • Profile a CPU-heavy Python script, then speed it up with vectorization or multiprocessing. Write the same stage as a Go worker pool with a bounded channel and benchmark both.
  • Outline a private-cloud GPU platform for training and inference: container image pinning, scheduling with quotas and preemption, checkpointing, data locality, monitoring.
  • Solve the rolling failure-rate practice question and the practice debugging question about one endpoint stalling every other delivery. Note how each relates to backpressure.

Deliverable: Before-and-after benchmark numbers for the Python and Go stages, a one-page GPU platform outline and two worked practice solutions.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
06Behavioral stories and project deep-dives
  • Write STAR outlines for the refactor, disagreement, deadline and fast-learning prompts, each with its result line written first.
  • Write a one-page brief for each of two projects: constraints, rejected alternatives, measured outcome.
  • Tell each story aloud and cut any part that describes the team's work rather than your own decision.

Deliverable: Four STAR outlines with measurable results and two project briefs you can defend in depth.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
07Mock both stages
  • Run a mock Technical Screening: answer the RTOS and AUTOSAR questions cold, then field three internals questions about skills on your resume.
  • Run a mock Deep-Dive: present one project brief, then design the fault-tolerant module from scratch and answer its follow-ups.
  • Finish with the technical disagreement story and list the weakest answer of the day for a final review.

Deliverable: Notes from both mock sessions and a short list of the answers to tighten before the interview.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗

Expand any day for tasks and deliverables. Your progress is saved on this device.

Candidates report that the Deep-Dive Interviews cover hands-on experience and cultural alignment alongside design. The reported behavioral prompts are about refactoring legacy code, technical disagreement, deadline pressure and learning quickly. For this role, each story should show an engineering decision made under real constraints (timing, safety, schedule) and how you checked that it worked.

Describe a time you had to refactor a legacy codebase to improve performance or maintainability.

medium
System Design and Architecture

Describe a time you had to refactor a legacy codebase to improve performance or maintainability.

Approach
  1. Pick a refactor you led that had a measurable starting point: latency, memory, build time, defect rate, or a concrete maintainability cost such as how long a typical change took.
  2. Show the safety net you built before changing anything: characterization tests that captured current behavior, profiling that located the real hot path and, for embedded code, timing checks on target hardware.
  3. Describe an incremental path (interface seams, the strangler pattern, feature flags or a staged rollout) rather than a big-bang rewrite, and explain how features kept shipping while it was under way.
  4. End with the before-and-after number, and say what you deliberately left alone and why. The story falls apart if there is no measurement or if the refactor was done for taste.
Follow-up
  • How did you prove the behavior did not change?
  • Which part of the legacy code did you leave untouched, and why?
  • How did you get time for the work approved?

Tell me about a time you had to resolve a technical disagreement with a team member.

medium
Behavioral and Leadership

Tell me about a time you had to resolve a technical disagreement with a team member.

Approach
  1. Choose a disagreement over a real technical choice, such as an architecture, a protocol, a memory strategy or a test approach, where both positions were defensible.
  2. Show that you stated the other engineer's position fairly, agreed on decision criteria (latency, safety, cost, schedule), and settled the question with evidence: a prototype, a benchmark, a specification reference or a third reviewer.
  3. Give the outcome and the state of the working relationship afterwards. If you turned out to be wrong, say so and what you learned. A story in which the other person was simply wrong and you won does not work.
Follow-up
  • What would you have done if the evidence had not settled it?
  • How did you handle it if they still disagreed after the decision?
  • What would you do differently next time?

How do you handle tight project deadlines while maintaining high code quality?

medium
Behavioral and Leadership

How do you handle tight project deadlines while maintaining high code quality?

Approach
  1. Use a real deadline with a concrete driver, such as a vehicle integration date, a release train or a customer milestone, and say what was at risk.
  2. Show how you prioritized: what you cut or deferred (scope, optional features), what you refused to cut (tests on safety-relevant paths, code review, static analysis), and how early you raised the trade-off with stakeholders.
  3. Explain how you tracked the debt you took on and when it was paid back. Answers that rely only on overtime, or that claim nothing was compromised, come across as weak.
Follow-up
  • What did you push back on, and with whom?
  • Did any shortcut cause a problem later?
  • How do you decide which tests cannot be skipped?

Describe a situation where you had to learn a new technology or tool quickly to solve a critical problem.

medium
Behavioral and Leadership

Describe a situation where you had to learn a new technology or tool quickly to solve a critical problem.

Approach
  1. Pick a case with a real forcing function: a tool, protocol or language you had not used before, needed to fix a specific defect or hit a milestone.
  2. Describe how you learned it: primary sources (the specification or reference manual), a minimal reproducible prototype, targeted questions to someone who knew it, and how you checked your understanding before relying on it in production code.
  3. State the result and what you left behind for the team, such as notes, a wiki page or a test harness. A story that amounts to reading documentation over a weekend, with no problem solved, does not show the skill.
Follow-up
  • What did you get wrong at first?
  • How did you know you understood it well enough to ship?
  • How would you get a teammate up to speed on the same tool?
  • 01

    Describe a time you had to refactor a legacy codebase to improve performance or maintainability.

  • 02

    Tell me about a time you had to resolve a technical disagreement with a team member.

  • 03

    How do you handle tight project deadlines while maintaining high code quality?

  • 04

    Describe a situation where you had to learn a new technology or tool quickly to solve a critical problem.

  • 05

    Tell me about a time you had to explain a software constraint to a hardware or systems engineer outside your specialty.

  • 06

    Describe a defect you found only during integration on target hardware, and how you tracked it down.

PracHub preparation framework ↗
How long does the Aptiv Software Engineer process take, and how many stages are there?

Candidates report two stages, a Technical Screening and then a series of Deep-Dive Interviews, over roughly 2-4 weeks. Timing varies by team and region, so plan to have your fundamentals ready before the screen and your design answers and stories ready for the deep-dives.

Aptiv Software Engineer candidate reports ↗
How should I prepare for the coding part?

Candidates suggest practising engineering-flavoured problems rather than only abstract puzzles. For embedded roles, write thread-safe and allocation-free structures in C or C++: a ring buffer, a block pool, a bounded queue. Also be ready to speed up a slow function. For cloud roles, practise profiling and parallelizing data processing in Python and Go.

Aptiv Software Engineer candidate reports ↗
Should I prepare for embedded or cloud questions?

Both kinds are reported, and candidates say the technical rounds are specialized by domain. Find out the team's track early. Go deep on that track (RTOS, AUTOSAR, C/C++ and vehicle networks, or Python, Golang, pipelines and GPU infrastructure) and be conversational on the other, because the reported architecture questions mix vehicle and cloud topics.

PracHub Software Engineer practice ↗
Do I need to know ISO 26262?

Candidates report that familiarity with ISO 26262 or similar safety standards is a differentiator. You do not need to recite the standard. Learn the terms well enough to use them in a design answer: ASIL levels and decomposition, hazard analysis and risk assessment, safety goals, the fault tolerant time interval and freedom from interference.

PracHub Software Engineer practice ↗
Which languages and tools come up for this role?

The requirements candidates describe list C/C++ with RTOS or AUTOSAR experience for embedded roles, and Golang or Python for cloud-native work. Matlab, Simulink and C++ are named for feature development. The reported topics also include GPU driver development and BCM. Prepare in the languages your target team uses and be ready to explain how they work internally.

PracHub Software Engineer practice ↗
Sources & methodology 3 sources ↗

No official company page is cited. Rounds and questions come from candidate reports and PracHub editorial material; each source shows the date it was read.