Apple Timeline:
2/10 – Went to my school's Apple Intern Networking Event, chatted with the hiring manager for a bit, and got a same-day 30-minute interview that afternoon.
2/11 – HR reached out with a positive signal and scheduled three more rounds (back to back, though one got rescheduled).
2/16, 2/19 – Interviews.
2/24 – Followed up by email; HR said they were still syncing.
2/27 – Offer call.
3/2 – Official offer.
Interview experience:
2/10 HM round:
Asked about fork/join, join_none, join_any usage; using constraints to generate five non-overlapping random memory regions; what components a testbench has (I think this was testing UVM knowledge, but I hadn't used it); given a date, how to find the closest palindrome date before it (just talk through the approach, no need to write code). The HM was really nice — I hadn't used SystemVerilog in a while and had forgotten most of the syntax, but he gave me a lot of hints and even walked me through the basic UVM framework. When it was my turn to ask questions, I asked about the progress of the chip his team was working on. At the end he told me to go review SV.
2/16 First round:
Started by asking how I tested the projects on my resume, since I had an out-of-order (OoO) project — asked some related questions (how OoO is implemented, branch predictor, register renaming).
Coding problem in any language: given a binary tree, output the value of every leaf node.
A few simple SV constraint questions (upper/lower bounds, weighted distributions), then some general computer architecture questions: what is VLIW; cache coherence protocols; asked if I'd worked with async FIFOs — I said no, so we skipped that line of questions.
My question for them: what projects do interns get to work on.
Second round:
Went straight into problems after my self-introduction — first implement an edge detector, then a bunch of SV questions: constraints, class inheritance/polymorphism (mainly testing virtual functions); write assertions to test the edge detector I'd just built, the probability of generating b given a->b (and what changes if you add or remove solve...before). I think I did seven or eight questions in one go — none of them were hard, I got through basically all of them, though I did run a few minutes over at the end.
My question for them: what it's like working at Apple, plus I threw in some praise for the chips they build.
2/19 Third round:
A few SV problems, noticeably harder than the first two rounds. Opened by asking if I'd used UVM, then tested semaphores/mailboxes, which I'd never learned and had no idea how to do; use constraints to generate 10 non-repeating random numbers; 10 random numbers where exactly three of them repeat twice; use constraints to simulate drawing playing cards — random rank/suit, no repeats, and even probability each draw; class virtual functions; and finally asked if I could write Python, and had me write a sort — I used bubble sort.
My question for them: their thoughts on DV as a discipline.
The interviewers wrote code and problems on CoderPad but never actually ran anything. I had a hard time hearing what the first- and third-round interviewers were saying, and their attitude felt lukewarm too — especially in the third round, where the interviewer never told me whether what I wrote was right or wrong, just kept asking "do you think it will work?" I'd say I thought so, and they wouldn't really respond.
Overall the process moved fast — HR even called me on a Friday right before the end of the workday to update me on the offer, saying they didn't want to drag it into the next week. Every follow-up before that was answered almost instantly too, a sharp contrast with Google.
Google DV intern:
Applied through a referral in October, got a screen scheduled in early December, but it kept getting pushed until it finally happened on January 10th — two 45-minute rounds back to back.
First round: Started with the OoO project on my resume, asked what the most memorable bug was. Then gave me a very simple cast problem, but I hadn't prepped OOP so I couldn't write it — the interviewer gave me a lot of hints and I eventually got it out, though honestly it was basically him writing it and me just stating the idea, which in hindsight was probably a mistake. Then tested some basic OoO knowledge, plus a register renaming question — given a snippet of code, write out the final state of the RAT. The interviewer was really nice, said my comp arch fundamentals were solid and that I moved through the problems quickly. Said it was fine that I didn't know SV yet, that architecture knowledge mattered more to him. Then we chatted for twenty minutes, and at the end he said we'd probably be in touch soon. At the time I felt like I had it in the bag — turns out you can't trust what an interviewer says.
Second round: This interviewer seemed to work on front-end (verification) and also knew memory systems. Asked how the branch predictor in our OoO project was implemented, then had me implement a task updating the gshare counter and history register. Then asked a ton of memory-related questions — first about the load-store queue/store buffer in my project, whether it was speculative; whether the tag should use virtual or physical addresses; then asked about an OS project from undergrad, whether I'd implemented fork, and if a forked process wants to share memory (copy-on-write), how does it know to allocate a new page when it writes (the exception mechanism). Finally did a cache problem — given cache capacity, block size, and associativity, work out how the cache functions, and how VIPT avoids aliasing. This interviewer seemed really busy, the questions felt made up on the spot, and they weren't phrased very clearly — I had to ask for clarification multiple times to understand what was being asked. I got through all the problems, but some of my answers on the memory questions were mediocre.
The recruiter said results in two weeks, but then ghosted me for a month. Only after I kept following up did they tell me in early February that I didn't pass — but that there was another team's manager who wanted to set up a call. This team does design work; the call was 45 minutes total, mostly going over the projects on my resume, focusing heavily on the superscalar and branch predictor work, then asking how comfortable I was with simulators/C++. I said so-so, but that I was taking a class on it that semester (still being too honest). After that call the recruiter said they'd get back to me in a week — and then ghosted me again. Sigh.
Compared to SDE roles, DV interviews feel easier — going through ChipVerify once basically covers it — but DV offers are still hard to land. Good luck with the job search, everyone.
Discussion
Loading comments…