cswork / libraryOpen practice workspace

Interview guides · Altice

Altice Software Engineer Interview Guide

Altice Software Engineer interview guide: four reported rounds, Java, OOP, Spring Boot and networking questions with approaches and a 7-day plan.

The 60-second brief

Altice is described by candidates and in its role listings as a telecommunications and media business. The infrastructure behind it covers mobile networks, broadcast systems and digital services. The Software Engineer role is reported to span internal tools, network management systems and customer-facing applications, with infrastructure work on mobile networks, TDT systems and sensor management. That work involves communication protocols, and troubleshooting means chasing performance bottlenecks and system alarms. Engineers are described as working beside systems architects, operations engineers and product managers, and as taking part in code reviews, team meetings and planning sessions.

This guide is for candidates applying to Altice as a Software Engineer, from internship and junior level upward. It covers the four reported rounds, the ten questions candidates report (OOP principles, networking experience, site configuration and alarms, database work, a Spring Boot and Maven connection to an external address, plus background, teamwork, motivation, learning speed and goals), and a seven-day plan. Candidates report that the exact questions shift with seniority, location and team, so treat the list as a map of themes rather than a script.

Candidates report four stages over roughly 3-5 weeks: a high-level screening, technical interviews, an online coding challenge that only some candidates get, and a meeting with the hiring manager or team. Format varies by location and team.

Focus areas

  • Object-Oriented Programming (OOP)
  • Spring Boot
  • Networking fundamentals

Overview

The work described for this role sits between application code and live infrastructure. Reported responsibilities include writing tools and backend services, supporting mobile-network, TDT and sensor-management projects, and resolving bottlenecks and system alarms. The stack candidates mention is Java with Spring Boot and Maven, plus network protocols and databases. For preparation that means two things: Java and object-oriented design you can explain with real code, and enough networking knowledge to talk about how a request travels, fails and recovers in a system with many moving parts.

The ten reported questions split evenly. Five are technical-knowledge questions: how you would explain POO (the Spanish, Portuguese and French form of the abbreviation for OOP), your experience with networking protocols, your familiarity with site configuration, alarms and remote network access, how you handled databases and data management, and how you would design a connection to an external address with Spring Boot and Maven. The other five are conversational: your academic and professional background, teamwork and disagreement, motivation for joining, learning a technology quickly, and short and medium term goals. Almost every question asks about your own experience, so evidence from your projects matters more than textbook recall. Candidates are also told that every line of the resume is open for discussion.

Reports describe the style as ranging from informal conversation to multi-interviewer panels, with an online coding challenge for some candidates. Practise two ways: explaining decisions out loud in plain language, and writing working Java under your own control. Where you have no experience with something in the questions, such as alarm management, say so plainly and describe the closest thing you have done and how you would learn the rest.

The Altice interview process

Candidates report four stages over roughly 3-5 weeks. The online coding challenge appears for only some candidates, and the final meeting ranges from a conversation to a panel depending on location and team.

High-level Screening

Candidates report this as the first conversation, often with HR, used to judge whether you fit the role. Reported fit-oriented questions include your academic and professional background, your motivation for joining Altice and your short and medium term goals. Expect to be asked to introduce yourself, so the practical goal is a clear account of who you are, a reason for applying that refers to the work actually described for the role, and a resume you can defend line by line.

What to demonstrate

  • Fit for the Software Engineer role as a first-contact judgement
  • Clarity of your background narrative and the projects you highlight
  • Whether your motivation is specific to the work described (mobile networks, broadcast and TDT systems, sensor management, Java backend)

How to prepare

  • Write a short spoken pitch in four beats: education, roles, the two projects you are proudest of, and what you want next.
  • Audit every technology on your resume and write one decision you made with it; remove or flag anything you could not discuss for a few minutes.
  • Write a motivation answer that names two concrete features of the role and the experience of yours that matches each one.

Technical Interviews

Candidates report one or more interviews focused on technical skills and problem-solving. The technical areas reported are Java, Spring Boot and network protocols, core CS fundamentals (data structures, algorithms, object-oriented design), how components of a network or application interact, and writing clean code for tasks such as connecting to external services. Candidates also report case studies or technical scenarios where the point is to show how you break down an ambiguous problem and explain your reasoning even without an immediate answer.

What to demonstrate

  • Command of Java and object-oriented design, explained with examples
  • Working knowledge of network protocols and how components interact in a larger system
  • Ability to break down an open-ended scenario and justify each technical decision

How to prepare

  • Explain encapsulation, inheritance, polymorphism and abstraction in Java using classes from your own projects, and be ready to contrast abstract classes with interfaces and inheritance with composition.
  • Review TCP versus UDP, DNS, HTTP over TLS, timeouts and retries, and write out what you would check first when a remote call is slow or failing.
  • Prepare short accounts of your database work and of any alarm, configuration or remote-access tasks you have handled, or the nearest equivalent.

Online Coding Challenge

Candidates report that some people complete an online coding challenge or practical assessment to show hands-on development skills. Nothing reported describes the platform, language, number of problems or time limit, so prepare for ordinary algorithm and data-structure tasks written in Java and for a small practical task such as calling an external service from a Spring Boot project built with Maven. Because the stage does not apply to everyone, ask the recruiter whether it is part of your loop and what it covers.

What to demonstrate

  • Working, readable code written independently
  • Core data structures and algorithms applied to a concrete task
  • Practical application, such as clean code that connects to an external service

How to prepare

  • Solve the stream-merging, interval-overlap and rolling-failure-rate practice questions in Java without an IDE's autocomplete, and write complexity and edge cases beside each solution.
  • Build a small Spring Boot and Maven project that calls an external HTTP address, with the URL in configuration, connect and read timeouts, error handling and a test against a mock server.
  • Practise reading input carefully, writing a brute-force version first and then improving it, and running your own test cases before submitting.

Meeting with Hiring Manager

Candidates report a final meeting with the hiring manager or the team you would join, used to gauge technical intuition and how well you would fit the existing group. Reports range from informal conversations to panels with several interviewers. Expect your projects and technical choices to be revisited in more depth, along with how you work with architects, operations engineers and product managers.

What to demonstrate

  • Technical intuition, shown through how you reason about your own past systems
  • How you would integrate into an existing team and collaborate across roles
  • Clarity of communication, including with several people in the room

How to prepare

  • Choose two projects you can discuss end to end: the decision you owned, the alternative you rejected, what it cost and what you would change now.
  • Prepare a disagreement story and a fast-learning story that each include a technical detail someone could probe.
  • Write three to five questions about the team's current challenges, its stack and how engineers handle alarms and incidents. If a panel is present, answer the person who asked, then include the others.
  • Be ready to talk, in plain language, about how you work with people who are not engineers.

Where candidates lose points

Reciting OOP definitions without showing them in Java

For each principle, name a class or interface from your own work and say what it bought you. Be able to explain abstract class versus interface, inheritance versus composition, and a case where inheritance caused a problem.

Saying you have networking experience without naming a protocol, a failure mode or a tool

Prepare one system and trace its calls: DNS, TCP, TLS, HTTP, timeouts and retries. Add one real debugging story and name the tool you used.

Describing database work as "I used SQL" with no schema, index, transaction or migration detail

Prepare a story with the table design, a query you tuned or an index you added, how you handled concurrent writes and how you changed a schema safely. The practice questions on concurrent caps and join fan-out give you vocabulary.

Answering the external-connection design question with one HTTP call and nothing about failure

Cover configuration of the address outside the code, connect and read timeouts, error mapping, retries only where requests are safe to repeat, authentication, logging, a Maven dependency choice and a test with a mock server.

Giving a memorised pitch, or a project story that says "we" throughout and cannot survive a follow-up

Know your contribution to each resume line well enough to discuss it in conversation. Use your outline as a skeleton and practise with a friend who interrupts, because reports say authentic conversation is preferred to a recited answer.

Questions & practice

Merge partitioned event streams into one ordered feed with bounded lateness

Hard · k-way merge · watermarks · out-of-order streams

The read-model service consumes 64 log partitions carrying about 4,000 events per second in total. Each partition is ordered within itself, but partitions drift by up to 30 seconds, and the activity feed must present a tenant's events in occurred_at order. Produce the merge. State its complexity, the buffer it requires in events and in bytes, what happens when one partition is idle, and what you do with an event that arrives after you have already emitted its position. Payloads average 1 KB.

Approach

  1. Merge with a min-heap over the 64 partition heads keyed on (occurred_at, event_id): O(log P) per event and O(n log P) overall. The tie-break on event_id is what makes the output deterministic when two partitions carry the same millisecond, which matters because the feed is paginated and a non-deterministic order reorders pages under the reader.
  2. Emitting the heap head is only correct once every partition has produced everything up to that timestamp, so the emit condition is a watermark: the minimum across partitions of the highest occurred_at seen, less the allowed lateness. Events are held until the watermark passes them, which is what turns individually ordered streams into a jointly ordered one.
  3. Size the buffer from the lateness rather than guessing: 4,000 events per second times 30 seconds is 120,000 buffered events, and at 1 KB each about 120 MB of heap. That number is the real price of the ordering guarantee and belongs in front of whoever asked for it.
  4. Handle the idle partition explicitly, because it fails the feed rather than corrupting it: a partition with no traffic never advances its own maximum, so the watermark freezes and output stops entirely. Either every partition emits a periodic idle marker carrying the broker's current time, or the watermark falls back to wall clock for a partition silent beyond a threshold.

Follow-up

  • The lateness budget is raised to five minutes. What is the new buffer, and what besides memory changes?
  • The consumer restarts. Where does it resume from, and what does the feed look like for the first 30 seconds?

Find overlapping job attempts and peak concurrency from lease records

Medium · sweep line · intervals · leases

A day of job_run history yields about 50,000,000 attempt records: (job_run_id, job_type, attempt, started_at, finished_at which is NULL when the worker died, lease_expires_at). Leases expire on a clock, so a job that outran its lease ran twice. Produce (a) every job_run_id whose attempts overlapped in wall-clock time and (b) the peak number of simultaneously running attempts per job_type with the minute it occurred. Target O(n log n). State how you treat a NULL finished_at and what clock skew does to your answer.

Approach

  1. Define the interval before sorting anything: an attempt occupies [started_at, COALESCE(finished_at, lease_expires_at)). finished_at is observed and lease_expires_at is only a promise, so every attempt without a finish contributes an estimate and the whole result is a lower bound on overlap rather than an exact count.
  2. For peak concurrency, sweep: emit 2n endpoints, sort by (timestamp, kind) with ends ordered before starts at equal timestamps, then walk the sequence maintaining a counter per job_type and record each type's maximum with its timestamp. O(n log n) dominated by the sort, O(n) space, or O(1) extra if the sort is external and the walk streams.
  3. For overlap detection, do not compare attempts pairwise. A single global sort by (job_run_id, started_at) gives both the grouping and the order; within a group, keep the maximum end seen so far and report an overlap exactly when the next start is less than that running maximum, which is one linear pass after the sort.
  4. Half-open intervals matter and are easy to get wrong: with closed intervals an attempt ending at the same millisecond another begins reads as concurrency two, and across 50,000,000 records that artefact swamps the real signal.

Follow-up

  • A handler is not idempotent and you have found 400 overlapping jobs. Which of them actually caused damage, and what would you query to find out?
  • Peak concurrency for one job_type is 4 against a configured cap of 4. Is the cap working, or is the data hiding attempts that never started?

Track a rolling failure rate per destination for circuit decisions

Easy · sliding window · ring buffer · circuit 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?

Hold a per-tenant active cap against concurrent creates

Hard · write skew · isolation levels · constraints

A tenant on the standard plan may hold at most 50 resources with status='active'. The create handler runs SELECT count(*) FROM resource WHERE tenant_id = $1 AND status = 'active', compares to 50, then inserts. Two creates arrive 3 ms apart on different instances and the tenant lands at 51. Name the anomaly, say whether PostgreSQL 16 READ COMMITTED or REPEATABLE READ prevents it and why, then give an implementation that holds the cap at READ COMMITTED with the exact statements. Finally, say what changes when the cap is 'at most one running export per tenant' on job_run.

Approach

  1. Name it: write skew. The two transactions read an overlapping set and write disjoint rows, so there is no row-level conflict for the engine to detect and each commit is individually legal.
  2. Rule out the levels precisely. READ COMMITTED takes a fresh snapshot per statement and takes no lock on the counted rows, so both see 49. PostgreSQL's REPEATABLE READ is snapshot isolation: it removes non-repeatable reads and phantoms within the snapshot but still admits write skew, because the anomaly is not a re-read of a changed row, it is a read of a set that a concurrent transaction invalidates. Only SERIALIZABLE closes it, by tracking the read dependency and aborting one transaction with SQLSTATE 40001 — a guarantee that exists only if the application re-runs the whole transaction from the read.
  3. Convert the set predicate into a single-row conflict: keep tenant.active_resource_count and run UPDATE tenant SET active_resource_count = active_resource_count + 1 WHERE tenant_id = $1 AND active_resource_count < 50 in the same transaction as the INSERT. Zero affected rows is the cap, returned as 409. The row lock serialises the decision at any isolation level, and contention is bounded to one tenant's row — which is also the fair-scheduling unit, unlike a global counter that would convoy every tenant behind one row.
  4. State the cost you just took on: a counter is a second source of truth that can drift, so every path that changes status must adjust it inside the same transaction, and a periodic reconciliation has to exist, with resource_revision as the authority for what the count should have been.

Follow-up

  • A resource moves from archived back to active. Which statements change, and what breaks if the counter update and the status change land in different transactions?
  • The cap becomes plan-dependent and a plan can change mid-month. Where does the number 50 live, and who reads it?

Stop tag and share joins from fanning out a page

Medium · join fan-out · semi-joins · many-to-many

resource_tag is (resource_id, tag_id) with PK (resource_id, tag_id); resource_share is (resource_id, shared_with_user_id, permission). The tagged-and-shared listing inner-joins resource to both, filters tenant_id, tag_id = ANY($2) and shared_with_user_id = $3, orders by updated_at DESC and takes 50. Pages come back with fewer than 50 distinct resources and the total in the header is far too high. Explain the row multiplication, rewrite both the page query and the count query so each is correct, and name the index each one needs. PostgreSQL 16.

Approach

  1. Do the arithmetic against the predicates that are actually there. An inner join emits one row per matching child row, and both joins are filtered: tag_id = ANY($2) admits only the requested tags, shared_with_user_id = $3 admits one user's share rows. So a resource holding three of the requested tags and shared with $3 once yields three rows, not one — the multiplier is its count of matching tags times its share rows for that single user, and that second factor is 1 unless the table admits duplicate (resource_id, shared_with_user_id) pairs. LIMIT 50 then limits rows rather than resources, and COUNT(*) counts pairs — the header is the product, not the population.
  2. Reject DISTINCT as the fix. It deduplicates after the product has been built, so the planner must materialise and sort the fanned-out set before the LIMIT can apply, and it leaves any SUM or AVG in the same select list wrong.
  3. Rewrite both filters as semi-joins, keeping resource as the only row source: AND EXISTS (SELECT 1 FROM resource_tag rt WHERE rt.resource_id = r.resource_id AND rt.tag_id = ANY($2)) and the same shape against resource_share. A semi-join stops at the first match per resource and preserves the driving index order, so ORDER BY updated_at DESC, resource_id DESC LIMIT 50 still stops after 50 rows.
  4. Count with the same predicates and no join at all: SELECT count(*) FROM resource r WHERE r.tenant_id = $1 AND r.status = 'active' AND EXISTS (...) AND EXISTS (...). Nothing multiplies a resource, so the number is the population.

Follow-up

  • The filter changes from 'any of these tags' to 'all of these tags'. Rewrite it and state what it costs relative to the ANY form.
  • A resource can be shared with the same user twice under different permissions. Does your count change, and should it?

How would you explain Object-Oriented Programming (POO) principles in the context of our projects?

Medium · Technical and Domain Knowledge

Approach

  1. Define each principle with the Java feature that implements it. Encapsulation means private fields that change only through methods that enforce rules, not bare setters. Abstraction means callers depend on an interface, not its implementation. Inheritance is an is-a relation through extends. Polymorphism is runtime dispatch to an overridden method.
  2. Tie all four to one small model instead of four separate textbook examples. For example: a Sensor interface with readValue(), and TemperatureSensor and SignalSensor classes that implement it. An AlarmEvaluator loops over a List<Sensor> and never calls instanceof, so adding a new sensor type needs no change to the evaluator (open/closed principle).
  3. Explain when composition beats inheritance. A subclass depends on its parent's internals (the fragile base class problem), and Java allows only one superclass but many interfaces. To share behaviour, prefer delegating to a collaborator object over extending a concrete class.
  4. Connect it to Spring. With constructor injection of an interface type, a class depends on an abstraction (dependency inversion), and a unit test can pass in a mock or fake instead of the real implementation.
  5. Name one pitfall that shows real experience. If you override equals you must also override hashCode, or equal objects can land in different HashMap/HashSet buckets and lookups fail.

Follow-up

  • Since Java 8 added default methods, what is the difference between an abstract class and an interface, and when would you pick each?
  • Which is resolved at compile time, overloading or overriding, and what does that mean when you call a method through a superclass reference?
  • Show me a case where using inheritance caused a bug or a rigid design, and how you would refactor it.

What is your familiarity with site configuration, managing alarms, and remote network access?

Medium · Technical and Domain Knowledge

Approach

  1. Separate the three topics and say plainly which ones you have done hands-on and which you know from study. For anything you have not operated yourself, describe the closest work you have done.
  2. Site configuration: keep device or site configs in version control and generate them from templates plus per-site variables. Diff the intended config against the running config before applying, and keep a tested rollback path. Push changes in stages, not to every site at once.
  3. Alarms: describe the lifecycle (raised, acknowledged, cleared) and severity levels such as the ITU-T X.733 set (critical, major, minor, warning, indeterminate, cleared). Cover deduplication by source and alarm type, and hysteresis or hold-down timers so a flapping link does not page someone every few seconds.
  4. Collection: SNMP polling (requests to UDP 161) gives a regular sample but adds load and delay as the device count grows. Traps or notifications (UDP 162) arrive right away but can be lost because UDP has no delivery guarantee, so a periodic poll or resync is still needed to catch missed events. Syslog and streaming telemetry are the other common feeds.
  5. Remote access: use SSH (TCP 22) with key-based auth, not Telnet, which sends credentials in plaintext. Route sessions through a VPN or a bastion/jump host, give each account least privilege, and keep an audit log of who ran what. Keep an out-of-band console path for when the in-band network is down.

Follow-up

  • One upstream link fails and hundreds of downstream alarms fire. How would you correlate them so the operator sees the root cause?
  • You push a config change that cuts off your own remote access to the site. What safeguards should have been in place, and how do you recover?
  • How would you decide between polling and traps for a large fleet of devices?

How have you handled database-related tasks or data management in your previous projects?

Medium · Technical and Domain Knowledge

Approach

  1. Choose one project and give the facts: which database, roughly how much data, read-heavy or write-heavy, and what you personally owned (schema, queries, migrations, operations). Then go deep on one or two tasks; do not list every task.
  2. Schema and queries: explain why you normalized and where you denormalized. Show how you chose an index from an actual slow query, and how you confirmed the gain with the query plan (EXPLAIN ANALYZE in PostgreSQL, EXPLAIN in MySQL). Mention that a composite index helps only when the query filters on its leading columns.
  3. Correctness: wrap multi-row changes in a transaction and say which isolation level you relied on. For concurrent updates, compare optimistic locking (a version column, such as JPA @Version) with pessimistic SELECT ... FOR UPDATE. Use PreparedStatement or bound parameters, never string concatenation, to prevent SQL injection.
  4. Java access layer: name the N+1 query problem with lazy-loaded JPA/Hibernate associations and how you fixed it (fetch join, entity graph or batch fetching). Mention connection pool sizing, for example HikariCP, the Spring Boot default.
  5. Operations: run schema changes through versioned migrations (Flyway or Liquibase) with the expand/contract pattern. Add a nullable column, backfill it in batches, switch reads, then add the constraint. Mention backups whose restore you actually tested. For high-volume time-stamped data such as sensor readings, use time-based partitioning and a retention policy.

Follow-up

  • A query that used to be fast is now slow because the table grew. Walk me through how you would diagnose it.
  • How would you add a NOT NULL column to a large table in production without downtime?
  • When would you choose optimistic locking over pessimistic locking, and what does the application do when an optimistic update fails?

Can you explain how you would design a connection to an external address using Java Spring Boot and Maven?

Medium · Technical and Domain Knowledge

Approach

  1. First ask what the external address is: an HTTP(S) API, or a raw TCP endpoint such as a device or socket service. The client stack is different for each. Also ask whether the call is synchronous on the request path or can run asynchronously.
  2. Maven setup: inherit from spring-boot-starter-parent (or import the Spring Boot BOM) so dependency versions are managed for you. For a blocking HTTP client, add spring-boot-starter-web, which gives RestTemplate and, from Spring Framework 6.1 / Boot 3.2, RestClient. Add spring-boot-starter-webflux only if you need the reactive WebClient.
  3. Configuration: keep the base URL, timeouts and credentials out of the code. Put them in application.yml, bind them with @ConfigurationProperties, override them per environment with profiles or environment variables, and never commit secrets. Wrap the call in a dedicated client class behind an interface so callers never build URLs themselves.
  4. Failure handling: set connect and read timeouts explicitly instead of trusting library defaults. Retry only idempotent calls, with exponential backoff and jitter. Add a circuit breaker (for example Resilience4j) so a dead dependency fails fast. Translate 4xx responses (caller error, do not retry) and 5xx responses or timeouts (maybe retry) into your own exceptions. For raw TCP, use Socket.connect(address, timeout) and setSoTimeout for reads.
  5. Production details: use a pooled HTTP client (for example Apache HttpClient) so connections are reused. Load a custom truststore if the endpoint uses a private CA, rather than disabling certificate checks. Test with MockRestServiceServer or WireMock so tests never hit the real address.

Follow-up

  • The external service is down for an hour. What happens to your callers, and what would you change so the rest of the application keeps working?
  • How would you write an integration test for this client without calling the real endpoint?
  • The endpoint now needs mutual TLS. What changes in your configuration and in how you package the application?

One log partition stops advancing while the others drain

Easy · poison message · head-of-line blocking · consumer lag

Search results for a subset of tenants are hours stale; the rest are current. The projection consumer reports lag of zero on 15 of 16 partitions and 400,000 on one. Its error rate is flat and its CPU is idle. outbox_event has no pending rows older than a second, so the relay has published everything it holds. Identify the mechanism, give the ordered checks, and state what you do in the first ten minutes versus what you change permanently.

Approach

  1. Read the lag distribution first. A slow consumer lags everywhere; zero on fifteen partitions and 400,000 on one is not throughput. Idle CPU on the stuck partition means the consumer is not advancing its offset at all, which points at one message it cannot get past rather than at a rate problem.
  2. Exonerate the producer before touching the consumer. No pending outbox rows older than a second means the relay published, so the event exists in the log. This separates never sent from sent and never applied, which are different code paths and usually different owners.
  3. Read the message at the stuck offset and the handler's log lines for its event_id. A flat error rate with no progress has two explanations and you must distinguish them: the handler is throwing and the retry loop is swallowing it, or the handler is blocking on something and never returning. Idle CPU with no error lines favours the second.
  4. Mitigate before diagnosing further. Move the offending event to a dead-letter store and commit the offset past it. Adding consumers does nothing here, because a partition is consumed by exactly one member of the group, and the blast radius is every aggregate hashed to that partition, not only the aggregate that produced the bad event.

Follow-up

  • The dead-lettered event carried aggregate_version 7 and the projection had applied 6. What must the replay do differently if 8 and 9 landed in the meantime?
  • How do you show staleness to the user while the partition is behind, given the API already returns the projection's watermark?

Suggested practice checklist

The plan follows the four reported rounds and the ten reported questions: one day each for the resume, OOP, networking, databases plus the Spring Boot task, Java coding, and behavioral stories, ending with a full mock.

Day 1 — Map the loop and audit your resume

  • Write the four reported rounds in order (High-level Screening, Technical Interviews, Online Coding Challenge, Meeting with Hiring Manager) and next to each note what you need to be ready to explain.
  • List every technology on your resume, write one decision you made with it, and mark each item as defend, shaky or remove.
  • Compare the list with the reported stack (Java, Spring Boot, Maven, network protocols, databases) and mark the biggest gap.

Deliverable: A one-page loop map plus a resume audit table with a defend, shaky or remove mark for every listed technology.

Day 2 — Object-oriented design in Java

  • Write a Java example for each of encapsulation, inheritance, polymorphism and abstraction, preferably from one of your own projects.
  • Write short notes on abstract class versus interface, composition versus inheritance, and when a hierarchy becomes a problem.
  • Answer aloud the OOP question using a real project, then listen to the recording and cut vague sentences.

Deliverable: Four small Java examples, one page of design notes, and a spoken OOP answer outline built on a real project.

Day 3 — Networking and operating live systems

  • Write a one-page cheat sheet covering TCP versus UDP, DNS, HTTP over TLS, timeouts, retries and how to locate where a slow call is losing time.
  • Script a networking-experience answer using one system you worked on, including a debugging story with the tool you used.
  • Write an answer for site configuration, alarms and remote access: how you keep configuration versioned and reviewable, how you triage alarms by severity and duplicates, and how remote access is restricted and logged. If you lack direct experience, use your nearest equivalent.

Deliverable: A protocol cheat sheet and two scripted spoken answers, one on networking experience and one on configuration, alarms and remote access.

Day 4 — Databases and the Spring Boot external connection

  • Write a database story: schema, an index or query you tuned, a transaction or concurrency issue and a migration.
  • Build a small Spring Boot and Maven project that calls an external HTTP address, with the URL in configuration, timeouts, error handling and a test against a mock server.
  • Work the practice questions on holding a per-tenant cap under concurrent creates and on stopping join fan-out, noting what each teaches about data handling.

Deliverable: A database story outline, a working Maven project with a passing test, and written notes on both practice questions.

Day 5 — Hands-on Java coding and troubleshooting

  • Solve the practice questions on merging partitioned event streams, finding overlapping job attempts and peak concurrency, and tracking a rolling failure rate per destination, all in Java.
  • For each solution write the complexity, two edge cases and the brute-force version you started from.
  • Work the practice debugging question about one log partition that stops advancing, narrating your investigation as you would to a teammate.

Deliverable: Three Java solutions with complexity and edge-case notes, plus a written debugging sequence for the stalled partition.

Day 6 — Behavioral story bank

  • Write the background walk-through with two chosen projects, using "I" for your own contribution.
  • Write a disagreement story with the evidence that settled it, and a story about learning a technology quickly with what you verified.
  • Write the motivation answer with two concrete features of the role, then the short and medium term goals answer.
  • Record all of them, listen back and cut anything that could be said by any candidate.

Deliverable: A story bank of four written stories plus recorded motivation and goals answers.

Day 7 — Full dry run and questions for the team

  • Run a mock that opens with your background pitch, then takes an OOP question, a networking question and a short design scenario, ideally with a friend interrupting.
  • Practise answering as if a panel were present, addressing the person who asked and then including the others.
  • Write three to five questions for the team about its current challenges, stack and how engineers handle alarms and incidents.

Deliverable: A recorded mock with notes on your weakest answer and a list of three to five questions to ask the team.

Project stories, teamwork and motivation

Candidates report that the screening and the hiring-manager meeting lean on communication, project narratives, teamwork and why you want the role. Several of the reported questions that read as behavioral, such as the networking-experience prompt, still expect technical detail from your own work. Prepare each story with a specific contribution, a technical hurdle and an outcome.

Can you describe your experience with networking protocols and how they function in a large system?

Medium · Technical and Domain Knowledge

Approach

  1. Treat this as an experience question with technical depth. Pick one system you worked on and name the protocols actually in its path: HTTP over TCP, TLS, DNS, plus any messaging or device protocol you used. Say where each sits in the stack and why it was chosen, for example TCP for reliable delivery versus UDP when latency matters more than a lost packet.
  2. Explain how it behaves at scale: connection reuse and keep-alive, connect and read timeouts, retries with backoff, idempotent requests so retries are safe, health checks behind a load balancer, and what the caller does when the far end is unreachable.
  3. Add one concrete troubleshooting story: the symptom, the tool you used (curl -v, ss or netstat, traceroute, tcpdump or Wireshark, logs), what the evidence showed and the fix. Separate DNS time, connect time, TLS time and server time when you describe a slow call.
  4. If your protocol experience is thin, say so and describe the closest hands-on work, such as a socket exercise or a lab. Do not claim device or telecom protocols you have not touched. Since the role is described as involving sensors and communication protocols, be ready to contrast polling with push or subscription styles.

Follow-up

  • What happens between a client opening a URL and the first byte of the response arriving?
  • How does TCP detect and recover from packet loss, and when would you choose UDP instead?
  • A call to an external service has become slow. How do you tell whether DNS, the connection, TLS or the server is responsible?

Can you walk us through your academic and professional background, highlighting the projects you are most prou

Medium · Behavioral and Leadership

Can you walk us through your academic and professional background, highlighting the projects you are most proud of?

Approach

  1. Use a short chronological spine: education, each role in a sentence, then spend most of the time on two projects. A resume read aloud line by line is the usual way this answer goes wrong.
  2. For each project say the problem, your own contribution (I wrote, I designed, I debugged), the technology involved, one technical hurdle and how you overcame it, and the result. Speaking only in "we" hides what you personally did.
  3. Choose projects that overlap with the stack reported for this role (Java backend services, databases, network or infrastructure work) if you have them. If your best project is unrelated, say what carried over: debugging approach, testing habits, working with operations.
  4. End by linking your path to this role in one or two sentences, so the answer leads naturally into the motivation question.

Follow-up

  • What was the hardest technical problem in that project, and how did you find its cause?
  • Which part of that project would you design differently today?
  • What exactly did you build yourself, and what did teammates build?

How do you handle working in a team environment, and what do you do when you face a disagreement?

Medium · Behavioral and Leadership

Approach

  1. Use a real technical disagreement, such as a design choice, a code-review comment, an approach to retries or a database schema, not a personality clash. State the two positions fairly in a sentence each.
  2. Show how you moved the discussion to evidence: a small prototype, a benchmark, a log or incident, or the written requirement. For example, "I wrote a quick test showing the query pattern, and we compared results before deciding."
  3. Give the outcome honestly, including a case where you turned out to be wrong or accepted the other approach, and what happened to the working relationship afterwards.
  4. Cover the everyday side of teamwork too: how you handle review feedback, share status, and work with people from operations or product. The mistake that sinks this answer is claiming you never disagree, or casting a colleague as the villain.

Follow-up

  • What if the other person was more senior and still disagreed after you showed the evidence?
  • How do you give review feedback on code you think is wrong?
  • Tell me about a time you changed your mind in a technical argument.

What is your motivation for joining Altice, and what do you hope to contribute to our engineering team?

Medium · Behavioral and Leadership

Approach

  1. Make the answer specific. Name two or three features of the work as candidates describe it (mobile networks, broadcast and TDT systems, sensor management, reliability and troubleshooting, Java backend) and say what draws you to each, tied to something you have done.
  2. State what you would contribute as evidence rather than adjectives: for example, your Java and Spring Boot work, a time you diagnosed a production problem, or comfort with network protocols.
  3. Read the posting for the specific team and location before the screening, since reports say the process varies by both. Mention the team's work if it is public; do not assert facts about the company that you cannot back up.
  4. Avoid generic flattery and avoid an answer that would fit any employer. Finish with what you hope to learn, which shows realistic expectations about a role mixing code with infrastructure.

Follow-up

  • Why this team rather than a software company or another telecom employer?
  • Which part of this role looks hardest to you, and how would you ramp up on it?
  • What have you done so far that is closest to this work?

Can you describe a time you had to learn a new technology quickly to solve a problem?

Medium · Behavioral and Leadership

Approach

  1. Choose a story with a deadline and a gap: a technology you had to use within days, such as Spring Boot, Maven, a messaging system or a protocol. Open with the problem and the time pressure in two sentences.
  2. Describe how you learned efficiently: you scoped the minimum you needed, read the official documentation, built a small spike to test your understanding, asked a teammate a focused question, and wrote tests to check your understanding rather than trusting it.
  3. Show the result and what you verified: what shipped, how you confirmed it worked, and what you got wrong at first. Admitting an early mistake makes the story credible.
  4. Close with what stayed with you, such as a note for the team or a code-review checklist item. The mistake that sinks this answer is "I watched tutorials" with no problem solved and no outcome.

Follow-up

  • How did you know you understood enough to ship?
  • What did you get wrong at first, and how did you find out?
  • How do you decide between continuing to read and asking a teammate?

What are your professional goals for the short and medium term?

Medium · Behavioral and Leadership

Approach

  1. Split the answer into short term (the first months) and medium term (a couple of years). Short term: become productive in the team's stack, which reports list as Java, Spring Boot, Maven and network systems, take part in code reviews and learn how the team handles alarms and incidents.
  2. Medium term: choose a direction that this kind of role plausibly offers, such as owning a service end to end, deepening network and reliability knowledge, or moving toward design work with architects. Tie it to something you have already started, such as a course, side project or a recent responsibility.
  3. Be concrete about how you are building the skill now, so the goals read as a plan rather than a wish.
  4. The mistake is naming goals that have nothing to do with the job, or sounding as if the role is a stepping stone you are already planning to leave. Keep it honest and consistent with the background and motivation answers.

Follow-up

  • What would you need from a manager to reach that goal?
  • What skill are you actively building right now, and how?
  • If this role took a different direction from what you expect, how would your plan change?