Objective-C | Swift | C

This interview summary is short and has no answers to interview questions, just a few words for non-professional iOS developers like me.

I had my first video interview yesterday. It was a total of three hours of technical work, but I haven’t seen anyone yet, so I must have hung up.

But the whole process down feeling or quite a lot, in addition to feel the interviewer’s ox X, but also know their own shortcomings in the usual study.

First, let me introduce the questions that I find difficult in the interview:

  1. If you were asked to implement the weak attribute, how would you do that?
  2. If you were to implement atomic properties, how would you do that?
  3. Why did KVO create a subclass to implement it?
  4. The composition of the class structure, what does the ISA pointer point to? (Metaclass and root metaclass should also be mentioned here.)
  5. How many event sources does RunLoop have? How many modes are there?
  6. What is the data structure of the method list?
  7. How is classification implemented? Why does it override the original method?

It is also worth mentioning that I have asked about the things in my blog (JSONModel analysis, EOC notes) and so on.

This interview made me deeply aware of two points:

  1. For every design, you need to understand how it is implemented, and almost every design is related to data structures. Understanding data structures and Pointers will help you understand these designs.
  2. Once you understand how design works, you also need to know why: Why? It is also good to know what is the flaw in the design, which is not in a design that solves similar problems?

The first question is “how” and the second question is “why”. However, I believe that many people only focus on “what” and “using”.

During the interview, I strongly felt the interviewer’s capability of the deep: give me feeling, for him, almost all of the design can be explained in some kind of data structure (sometimes also can combine pointer), understanding of knowledge point very clear: even if is very simple knowledge, also can say so many things to deep. As I just started to learn data structure, I almost have no idea when it comes to data structure.

What I want to say:

Therefore, I think for the majority of non-professional iOS development, if you want to go far in iOS development, you must supplement data structure, algorithm, Pointers and other basic computer knowledge as soon as possible, otherwise it will form a great resistance to the understanding of knowledge. Because only by knowing these basic knowledge, can we understand each technical point more deeply, and if we learn other languages in the future, we will be more efficient.

In a nutshell: First programmers, then iOS programmers. Only by thinking in this way can the road be wider, faster and farther away.

With iOS development in such a bad state, it’s understandable that the market is trying to filter out people with weak computer fundamentals.

What is “bad” now is only bad relative to what was “abnormally good” before. Now the industry is “bad” because it is getting better, and we should be happy about it.

So for those of us (non-professional iOS developers), it’s important to be aware of what’s going on, and be prepared for a rainy day, which is already here.





Image credit: pixabay.com