Objective
There are some general questions in the interview questions that are usually asked. When interviewing an iOS candidate, the entry point is important, and different pointcuts lead to different results, and there is no suitable entry point or a comprehensive understanding of the candidate. So the following interview questions are more about providing directions, no fixed answers, and can lead to more interesting and deeper discussions based on the candidate's response.
Note: The following questions are the answer of the author, not the correct, the answer varies from person to person, please answer according to their actual situation, if it is not reasonable, please point out in the comments. The following all the reference answers, are the author stand in the perspective of the interviewer to analyze, different interviewers will not be the same. I interviewed some people, a question can know each other's base how, although so, does not mean that the reference answer is what each interviewer wants.
As a developer, there is a learning atmosphere with a communication circle that is particularly important this is my iOS communication group: 638302184, whether you are small white or Daniel Welcome to settle, share bat, a inside questions, interview experience, discuss technology, we exchange learning and growth!
1, Self introduction
When you introduce yourself, you must be concise and clear, not lengthy. Personally, I don't like to introduce myself to a lot of things, and at the end of the day I don't even remember what her name is.
Reference Answer:
When you introduce yourself, focus your attention, speak slowly, and sound a little louder at key points. I answer, simply say: I call xxx, do iosx years, has been in XX company as XX Post, in YY Company held xx Post, mainly responsible for ZZ work. Amateur like to do NN (to say the positive point), good at LL (to his own expertise to speak clear) and so on.
2, what knowledge/skills have you learned in the last two days?
For this question, the interviewer must know that as a job seeker, these two days must be busy looking for a job, interview. So, what is the purpose of the interviewer asking such questions? If I were an interviewer, what I'd most like to know is what you've prepared for the interview over the last two days rather than just telling the interviewer to learn a certain aspect of the day.
Reference Answer:
These two days in order to prepare for the interview, collated some of the previous project notes, looked back at the previous work log. One is to sort out some of the pits that are often encountered at work, such as cell reuse problems, IOS6 adaptation problems, and so on; and the other is to go back to the past self, in the mind, technology ushered in a brand-new ego; three to locate their next goal: in-depth research in the architect's direction.
3, have you ever done something cooler or more challenging lately?
The key to this problem is cool and challenging. In fact, the cool here corresponds to the animation in development, and the challenge corresponds to the sprint in development. For the author, actually did not do a particularly cool project, but did a challenging project. But there is no need to answer, the interviewer wants to see your ability to learn, apply and solve problems, not a word that has not been done or is not challenging.
Reference Answer:
Most of the projects I was responsible for were e-commerce projects, so it wasn't particularly cool, but the business was more and technically challenging. However, I also studied the iOS core animation in depth knowledge, for the commonly used animation is very familiar. In my opinion, the user experience is not so-called cool, but simple, convenient and clear. I am very concerned about the user experience problem, in the development will continue to stand in the user's point of view to ask yourself what users hate, what they like and how to make users feel easy to use and simple and so on. For example, I will be very concerned about the changes in the network state to the user's prompt, request the network when the upper right corner of the circle is turned on, scrolling the cell if there is a lag problem.
I have been to several companies, from one person to the lead team, from small company to big company, so the requirements for different companies on the project are completely dissimilar. For large companies, the general project management mechanism is relatively perfect, and there will be more experienced VP of technology, so the requirements for the work is relatively high, for the user's experience and feedback will be very concerned about, and for some small companies, may be a person in the development, and this person is often rookie of many, As a result, the project is patchwork, technically immature, level enough, and constantly being pressed to work overtime, so there is little focus on user experience issues, and of course there is no good framework for the project (except for start-up technology partners).
Now I am in the company is not big, also on the 1000+, and iOS is only 40th people around. The company is divided into multiple teams according to the direction of business, different teams to develop different business needs, so it is faced with technical architecture issues, security issues, team development How to do non-interference and other issues. And my main role in the team is to deal with the conflict between the team, how the code modularity to reduce dependencies outside the team, mobile security communication issues, project storage security issues, public framework and other issues, this series are very technical challenges, it takes a lot of non-work time to research, write demo, Write documents and so on.
4. What books/articles have you read recently?
Ask recently read the book or article, in fact, by the nature of the book to answer almost can guess the current status of the applicant's technical level roughly at what level.
Reference Answer:
Recently in the "iOS app reverse engineering", "the Swift programming Language". But I prefer to read blog posts and official documents, although the official documents are in English, reading relatively laborious, but on the one hand can improve English reading ability, on the other hand the English original expression of the semantics is the most accurate, other translated articles will have some taste.
5, why to learn programming, programming for you, where is the fun?
This kind of topic has appeared in many community, actually asked this question only wants to know the applicant's attitude. Through the applicant's answer, on the one hand can understand the candidate's understanding of programming, on the other hand can be from the applicant mouth out of the program for the candidate's attitude.
Reference Answer:
Speaking of this question, I have also asked myself why to learn programming. Think back when the results of the college entrance examination, the need to choose schools and professional time is very confused, I do not know what to learn in college. Later, I chose the computer science and technology major, and for this profession and choose the school. Because the college entrance examination is not good, although more than a line, but underachievement, a lot of college computer professional requirements of the total score reached 560 (at that time a line is 502 points) to Wenna to this major, and I only took 526 points, think of computer science is very strong university is difficult to enter. So choose from Guangxi to Shenyang so far from the place to school, unexpectedly is for computer professional, now in retrospect also stole their own laughter.
In the university, the big day in the library in advance to learn programming, because of the ability to stand out, to the sophomore when there are a lot of teaching computer teachers in advance to know that I, thank them for their recognition, in the university these years, is they guide me how to program the actual combat. The university has done many PC software (. NET development), to the Teacher Tutorial website (ASP), to participate in the study of ACM training and so on, everything, all thanks to those who teach my teachers.
Later through the seniors understand some of the future employment trends, understand how to find a job after graduation, learning the development of iOS, so more and more love her. If I have to say the fun of programming, I want to say that when discussing technology is like playing lol with classmates and friends, it is a kind of want to shout to the whole world to say: Yes,i can; when we work alongside the technical director to stay up late for the project, When the director bought supper for us, that was brotherhood, and it would have a brief encounter feeling.
6, if a function 10 times 7 times correct, 3 errors, where can the problem occur?
This kind of question through the candidate's analysis, may know the candidate's foundation. Many people's answers will be very simple, not in many ways to analyze. This problem is also very meaningful, in the project development of the bug, sometimes there will be such a situation, and the code is relatively large and complex business, through other tools can not analyze what is the bug, but we can be based on the frequency of the occurrence of speculation. The author of this question as the test department feedback from the bug description problem to analyze.
Reference Answer:
From the description of the problem, the bug does not need to be present, so it is impossible to locate the error directly. Analyze possible errors from the following perspectives:
There is no crash due to an error, so there is no error log to look at. The first step is to parse all the branches in the function and whether there is a problem with the syntax that might be missing the condition. So, check all the branches to make sure that each branch executes the result of the correct
Check the parameters of the function to ensure that the required arguments cannot be null, and if NULL should throw an exception. Therefore, it is important to use assertions to detect the correctness of the parameters.
The function called by each branch in the detection function returns the correct result, which is actually a recursive process (step 1, 2)
7, what is the greatest advantage of oneself, how to prove?
The greatest enemy of man is not others, but himself. To conquer oneself is the greatest victory. Many people do not know what their merits are, even many friends like to say that my greatest advantage is no shortcomings. If you say this to the interviewer, you may get a pass.
Reference Answer:
I'm not sure what my biggest advantage is, but I know I have a lot of advantages.
My ability to learn is particularly strong, and the ability to accept new things is particularly strong. For example, I will learn swift, PHP, JS and so on after work.
I like blogging, summarizing, sharing technology, helping others, and so on. I think the process of writing a blog, not only to have a deeper understanding of the relevant knowledge, but also to help others. Every time I make a demand, I will write a summary and record the pits. Each quarter of the company will do several technical sharing, driving the team's technical atmosphere. I also like to help others, I created their own technology group, just two months in the group of 1000 people, in the group by answering everyone's questions, but also let me know a lot of knowledge.
I support open source, like open source.
I have developed a plethora of apps and have a strong ability to solve problems. As a technical backbone in the team, any team member solves the bad problem, I will help to solve together.
I have studied the technical framework and how the team has decoupled. In team development, because often faced with the problem of team development, resulting in changes in demand caused a lot of problems, so studied how to make the team to reduce dependencies between the problem.
That's all! (Because interview officers usually talk for about 3 hours, so speak as much as you can, don't be afraid to take too long)
8, what is the technical challenge you have encountered recently? What's the deal?
Through the candidates to answer the technical challenges encountered, in fact, from the side can be seen how the level of the person. If the answer to the technical challenge is a simple question, and the candidate here is a technical challenge, then you can know that this level is primary. The candidate's solution to this technical challenge can also be seen in the face of technical challenges, and the ability of the candidate to deal with the problem can be seen.
Reference Answer:
The recent theft of user accounts in corporate projects is due to poor handling of communication security issues. Because the company's project has been a few years old project, including the interface of the server is a lot of old interface, the original is not processed any encryption, so it is easy to be stolen account. Now our VP of Technology is asking for a version of this issue. Because of the initiative to accept the challenge, so this task falls on me, I will take the lead to do this demand.
This is really a challenging technology project. The steps are as follows:
Need to research the more famous app in the market, how do they do the security communication problem;
Write technical documents, feedback the research results and write your own technical plan;
Open the preliminary Technical Program review meeting, will have the VP and each group leader to participate, will raise each kind of question, and give each answer, then make the meeting record, after will continue to improve the document;
Cross-section of the review meeting, only all have passed, in order to start the project.
Technical project, and then write all the necessary work documents.
Why so much trouble? Because we have to be compatible with all previous versions, and to ensure technical security, it will not be in our own right, and it is not just the client's problem.
9, what are the common tools for development?
By answering this question, you can see how deeply this candidate is in the iOS development field. If you only know Xcode and cocoapods, it means that you are beginner or unwilling to expend your energy in your spare time.
Reference Answer:
Common iOS development tools are:
Xcode development tools and supporting instruments tools
Common plugins for Xcode
Cocoapods third-party library management-dependent tools
Sourcetree is a git version management tool
Cornerstone is the SVN version management tool
Friends League Statistics bug Log analysis tool
10, are you familiar with Cocoapods? Can you tell me something about how it works?
It doesn't matter if the question is not answered, because many old projects don't use cocoapods, so they don't necessarily know. Replied that the use of Cocoapods wrote the demo, but do not understand the principle of work is not related. Because before I saw the problem, I didn't have a thorough understanding of how it works, I just know how to use it.
Reference Answer:
Read about cocoapods third-party library management dependency tools how to use
About its principle, everyone Baidu or Google a bit! Because I am not very clear about how it works, I only know that it will create a working range for us, and then introduce all the third-party libraries introduced in Cocoapods into our project in such a way that we can access the third-party libraries directly. However, more specific details are not understood, we want to know more, but also to find Google or Baidu.
11, what is the most common version control tool, can you tell me about the principle?
How this version control tool works is, in fact, the operation of this command.
Reference Answer:
The most common version control tools are Sourcetree (GIT) and Cornerstone (SVN):
Sourcetree is a git version management tool
Cornerstone is the SVN version management tool
12, what is the one technology you want to master this year? Why? To what extent has it been achieved at present?
Since it is technology, then it is necessary to explain what technology, as for why want to grasp, of course, want to be technically higher.
Reference Answer:
I am now studying the runtime knowledge. Mastering the runtime related technology, you can do a lot of normal conditions do not do, can make some automated processing work, solve the problem of code dependencies. At present, the runtime member variables, attributes, message forwarding, swizzling, etc. can be used skillfully. For the runtime topic, you can read my Blog special topic: IOS Runtime related knowledge points
13, how do you usually use instruments?
This is a matter of working experience. There are many options in the instruments tool, there is no need to answer each one,
Reference Answer:
Using allocations to detect memory and stack information
Use leaks to detect memory usage, including memory leak issues
Use Zombies to detect prematurely released zombie objects, through which you can detect where crashes are.
Use time Profiler to detect CPU memory usage
14, how do you usually debug a bug?
The question looks very general, but sharply. Through the applicant's answer, it is very intuitive to see the candidate's ability to deal with the bug, as well as its problem-solving thinking.
Reference Answer:
Bugs are categorized as bugs in the test and on-line bugs:
Online BUG: The project uses Friends League statistics, so there will be a crash log, by parsing Dysm can directly locate the majority of bug crashes. Solving the online bug requires pulling a new branch from the backbone, fixing the bug and testing it through, then merging it into the trunk and then going online. For multi-team development, you can integrate the Fix bug branch with the branches that other teams have recently launched, and then integrate the tests back online.
Test the bug: According to the test feedback bug description, if the semantics are not clear, then directly find the bug person, the operation for developers to see, it is best to be able to reproduce the bug. When solving a bug, if you can directly locate the error of the bug according to the description, then good processing; If you can't intuitively locate it, there are several ways to handle it depending on the bug type, such as a crash bug that can be detected by instruments and the bug that the data displays incorrectly, and you'll need to read the code step-by-step to see where
For crashes in development or when data is not displayed properly, it is necessary to detect possible errors based on experience or related tools. Of course, intra-team communication is the best solution.
15, what design patterns have you used in your project?
A lot of design patterns are used in the project, and I believe the interviewer should hear more than just the name of the design pattern, but what they want to hear is how the design patterns are applied in the project. Therefore, the author believes that this problem implicitly illustrates the need to answer the design pattern and its application in the project.
Reference Answer:
Singleton design pattern: In a project, a singleton is essential. For example, UIApplication and Nsuserdefaults are the single examples Apple offers. User data management is often encapsulated in a project as a singleton class, so the user's information needs to be used globally.
MVC design Pattern: Most of the projects are now based on the MVC design pattern, and now some developers are using MVVM, MVP and other modes.
Notification (nsnotification) mode: Notifications are essential in development, require notifications for class interactions across modules, and better use notifications for many-to-many relationships.
Factory design pattern: A lot of factory design patterns have been used in my projects, especially the APIs that generate controls, all of which are packaged into a set of extended class methods that simplify a lot of code.
KVC/KVO design pattern: Sometimes it is necessary to listen to the change of the property value of a class and make corresponding changes, this time will use KVC/KVO design mode. In the project, I need to listen for a change in the value of one of the properties in the model, and when it changes, the UI display needs to be updated, which is handy when using the KVC/KVO design pattern.
That's all there is to it, and there are many design patterns, but others are not so common.
16, how to achieve a single case, what are the drawbacks of a single meeting?
The singleton is essential in the project, and it allows us to share our data globally. This is just a simple question, and everyone answers according to their own situation.
Reference Answer:
First, there are several types of single-instance notation, usually based on thread-safe notation, combined with dispatch_once, to ensure that singleton objects are created only once. If you accidentally destroy the Singleton, then invoking the singleton generation method is no longer created.
Secondly, because the singleton is conventional, the memory management method is not usually rewritten in the actual development.
The single case does give us the convenience, but it also comes at a price. Once created, the entire app will not be freed, which will take up memory and therefore cannot be abused as a single case.
How does the 17,ios manage memory?
I believe many people answer is the golden rule of memory management, in fact, if I am the interviewer, I want the answer is not so. I hope the answer is how to handle memory management at work.
Reference Answer:
Block memory management: Because using blocks can easily cause circular references, you must be careful about memory management issues. It is best to rewrite dealloc under the base class controller and add a print log to indicate that the class can be freed. If there is no printing information, this class has not been released, indicating that it is possible to use the block where a circular reference occurs. For a property or member variable in a block that needs to reference an external controller, be sure to use weak references, especially member variables like _testid, where many people do not use weak references and cause memory to be freed.
For objects that are normally created, because they are now arc projects, remember that the golden rule of memory management can be solved.
18, which third-party libraries have been used?
If you've ever developed an app and answered that you haven't used a third-party library, then this person must have just started. If the respondents can say a lot of famous third-party library, and can explain the use of the scene, then you can highlight the interviewer's knowledge is still very wide, this can be added.
Learn such as riding, behind, hope you read this article after you have a certain receipt.
As a developer, there is a learning atmosphere with a communication circle that is particularly important this is my iOS communication group: 638302184, whether you are small white or Daniel Welcome to settle, share bat, a inside questions, interview experience, discuss technology, we exchange learning and growth!
The article originates from the network, if has the infringement, please contact the small compilation to delete.
Some common iOS interview questions to see the difference between iOS beginner and senior engineer at a Glance