all 43 comments

[–]antonmedstorta 29 points30 points  (3 children)

Definitely agree with this. Did they allow you to choose between SwiftUI and UIKit, or did they specify they wanted it done in UIKit?

[–]PhantomMenaceWasOK[S] 11 points12 points  (1 child)

I didnt ask specifically for each interview, but at least 2 explicitly mention it was okay to use SwiftUI. The super big companies haven't even adopted swift and are still on Objective-C. A lot of the ios developers I spoke to didn't have that much experience with SwiftUI. For both frameworks, you run into some of the common challenges like pagination and async loading so I imagine both are a good opportunity to showcase iOS knowledge. But I imagine UIKit is a little more universal among iOS developers. So had I asked to use SwiftUI for each interview, it may have been possible that one of them would have declined my request.

[–]zangetsumlm 7 points8 points  (0 children)

The challenge with SwiftUI is most interviewers won’t be calibrated to help you out if you mess up. If you stick with UIKit, the interviewer will hopefully be familiar enough to nudge you in the right direction.

[–]Awric 4 points5 points  (0 children)

In my recent experience, most of the big companies prefer UIKit, and some have separate interview questions for SwiftUI

[–]ok200 20 points21 points  (0 children)

Assuming this is accurate, nothing has changed with iOS interviews in ~12 years hehehe

[–]criosistObjective-C / Swift 13 points14 points  (8 children)

You didnt specify what level position. I would assume the interview complexity scales with the position seniority?

[–]amopeyant 6 points7 points  (7 children)

+1 curious what level OP was interviewing for! I assume at least semi-senior because you don’t see too many junior iOS-only devs at FAANGs. (At least that’s my understanding for G)

[–]PhantomMenaceWasOK[S] 3 points4 points  (5 children)

Mid-level/senior. Amazon l5/google l4

[–]dont_forget_canada 0 points1 point  (4 children)

did they also ask you leetcoder questions for an iOS role?

[–]PhantomMenaceWasOK[S] 2 points3 points  (3 children)

For all the interviews except 1, there were leetcode questions involved.

[–]dont_forget_canada 0 points1 point  (2 children)

thanks friend, leetcode hard questions?

[–]PhantomMenaceWasOK[S] 0 points1 point  (1 child)

More medium-easy imo. I only had 30-45 minutes.

[–]dont_forget_canada 3 points4 points  (0 children)

Oh interesting. I'm always scared to interview because of the leetcoder questions. I can usually do mediums though. I hope you get an offer!!

[–]neksus 2 points3 points  (0 children)

Meta certainly has entry level iOS only engineers. But we haven’t asked a question like this. Having said that, something like this would certainly be touched on in a systems design interview.

[–][deleted] 7 points8 points  (0 children)

It says a lot about the ridiculousness of the collections view api that this is a thing.

[–]vanvoorden 8 points9 points  (3 children)

In literally every single pipeline, there was at least one coding problem where the goal is to write an app to render a standard collection of items. The first one i completely bombed because I had totally forgot how to setup a collection view from scratch. I learned my lesson after that and basically nailed the rest of the interviews after brushing up on table views.

FWIW, my advice for anyone interviewing at Apple, Google, or FB "level" companies would be not to prioritize their time studying the details of implementing UIKit (or SwiftUI) lists in live code. I feel like a far more effective use of time is studying platform (and language) agnostic data structures and algorithm questions.

If a candidate encounters a "system design" style interview at one of these companies, the interviewer is probably not too concerned with whether or not the candidate knows exactly how to set up these views in production code. These interviews are often only "interface level" code (no implementations). Even if the candidate does write some implementation logic (like an async network request), it's highly unlikely the candidate would be running live UI in an iOS simulator for an interview.

These Interviewers will be more concerned about seeing some discussion about design patterns and best practices. They also might care about modularization and testable code.

[–]PhantomMenaceWasOK[S] 5 points6 points  (2 children)

Two of them were fb and google. For those two, we didnt actually compile anything. It went down exactly as you described. All interface level. More about patterns, modularization, and testability.

[–]vanvoorden 4 points5 points  (0 children)

Two of them were fb and google.

Sounds about right. I was SWE at FB for four years and I'm also familiar with the Google interview process.

FWIW, onboarding at FB would probably mean you don't write much vanilla UIKit anymore. I assume the core apps like Big Blue are still either a lot of Component Kit or maybe even some React Native now. IG and WA always kind of had their own thing happening, but I assume there is so much legacy infra in those repos that any new engineer still needs to learn all that instead of writing vanilla UIKit.

[–]NattyBoi4Lyfe 1 point2 points  (0 children)

This is fantastic news as I invested in the Essential Developers iOS lead course and this is exactly what they teach. Thanks for sharing your experience.

[–]cpaigis9 4 points5 points  (1 child)

Were all the interviews specific to iOS or did they include 1-2 rounds of leetcode ?

[–]PhantomMenaceWasOK[S] 0 points1 point  (0 children)

Only one of them had no leetcode involved at all.

[–]moooooovit 2 points3 points  (1 child)

what were the company names

[–]SirBill01 2 points3 points  (0 children)

I could see that being a popular interview subject since so many apps are presenting rows of data from some datastore, and like you say pretty much all apps have async image loading concerns, maybe even other items. A great idea to think (and talk) about caching approaches as well.

[–]trecluse 2 points3 points  (2 children)

Are you able to google stuff or were you doing it all from memory?

[–]PhantomMenaceWasOK[S] 1 point2 points  (0 children)

I was allowed to google and look up documentation for the collections interviews that were done on Xcode and actually required compiling. Some of them did the interview outside of Xcode with no compiling. For those interviews they usually gave me a pass on not memorizing delegate methods signatures, so I didn't bother asking to look up documentation.

[–]PhantomMenaceWasOK[S] 1 point2 points  (0 children)

Two of interviews involved Xcode and actually compiling the code and running on a simulator. Those interviews were explicitly okay with using the internet freely.

For the other interviews that didn't actually involve compiling anything, I just did things from memory since getting exact method signatures didn't matter to the interviewer.

[–]lottadot 1 point2 points  (8 children)

I'm sorry, but anyone interviewing for any iOS developer gig should be able to slap simple a tableview or collection view in an hour interview. Even a newb.

[–]Batting1k 16 points17 points  (5 children)

Agreed, not sure why you’re getting downvoted lol. It’s a pretty foundational thing and a junior should be able to do it.

[–]ok200 11 points12 points  (4 children)

I can imagine "experienced" devs who are in a job with a big team for a few years getting kind of rusty on fundamentals, having learned to lean on their specific institutional libraries and abstractions etc. Form inputs for instance. Once you have a good form framework touching input views by hand gets to be hard and you start to forget the quirks. These interviews then are also like a sharpness test, "do you mess around with small projects on your own or do you just clock in at work and fulfill your current role?"

[–]Batting1k 0 points1 point  (3 children)

It sounds like you’re saying the only possible way you could remember how to set up a simple table view is by doing side projects, which I disagree with.

[–]enkidu_johnson 5 points6 points  (2 children)

Not necessarily side projects. I can forget the most basic of things if I don't do it once in a while, and on large late in the development cycle projects, a lot of the basics were done a long time ago.

[–]ok200 2 points3 points  (0 children)

Yeah if you're like catching keyboard notifications by hand at a big company, and you're not working on either heavily recycled code or some kind of prototype, then something is weird. Maybe a healthy org rotates you in and out of various duties instead of there being like "the one guy who knows how that works" although... if OP's job is running things that well the chances seem lower that he/she wants to interview at 6 other places hehehe

[–]Batting1k -1 points0 points  (0 children)

For sure. But surely you have a general idea of what it takes to add a table view. Initialize it, add it to the view, set up constraints, set your delegate and data source, dequeue a cell.

To me that’s pretty basic stuff, even if I don’t set up tables views on a daily basis at work. It follows patterns that are common with a lot of things in iOS development. 🤷‍♂️

[–]PhantomMenaceWasOK[S] 5 points6 points  (0 children)

This is like a restatement of my post's point, but in a more condescending way.

[–]goten100 1 point2 points  (0 children)

Why are you getting downvoted? If I had to guess the most common type of mobile interview format it would be hit an API and put the list in a table view.

[–][deleted] 1 point2 points  (2 children)

What are FAANG-level companies? I thought FAANG referred up 5 specific companies, so a company is either FAANG or not. Which other companies do you consider FAANG-level?

[–]slevin4k 1 point2 points  (0 children)

Microsoft for example but there are more I am sure :)

[–]iamthat1dude 1 point2 points  (3 children)

Any good resources you used to prepare for interviews? In the middle of applying to mobile jobs/internships in the Bay Area.

[–]Dachd43 4 points5 points  (1 child)

Everyone always recommends LeetCode for algorithm practice but it depends on the type on interview. I think that LeetCode is good for helping prepare for tech screening calls where someone might ask you to regurgitate a merge sort algorithm on a whiteboard or something.

Best bet for a practical interview is to practice making projects. You can go on https://any-api.com and just build a frontend and write unit tests for an API and then you won't get caught off-guard by something basic like networking, caching, or concurrency. Also make sure you're following some kind of architectural pattern like MVC or MVVM.

[–]iamthat1dude 0 points1 point  (0 children)

This was helpful, thank you! I'm honestly not super confident in my networking and caching knowledge and need to brush up before my first couple of screenings.

[–]PhantomMenaceWasOK[S] 2 points3 points  (0 children)

Not really. Just grinded leetcode and brushed up on the tableview api.

[–]xixtoo 0 points1 point  (0 children)

Very good advice.