I am a junior majoring in software engineering in Shuangfei University. I sent a lot of resumes in the spring recruitment season. This article first records my interview experience with Tencent.

The online application started in early March and I received the interview notice on March 15. I applied for iOS mobile development position, no department requirements. The interview invitation I received was from Tencent OMG Business Division in Beijing.

One side

The interview place is in Tencent’s Office building in Beijing (Higma Building, Zhichun Road, Haidian District), and the content of one side is roughly as follows:

  1. What language are you familiar with? Objective-c (OC for short during interviews) or Swift? I usually write OC more, Swift is also working on it.
  2. Describe the differences between OC and Java and JavaScript in terms of performance and execution. Here IS a brief overview of what I understand, mainly around Runtime, VM, and type systems.
  3. What is the difference between OC and Java in memory management? A typical look at the difference between GC and reference counting is simple.
  4. Do you understand the GC mechanism of OC?

    OC actually used to support GC in macOS, but it was abolished,NSZoneIt was created for GC. I’ve only mentioned it briefly here.
  5. Talk about impressive projects, major technical difficulties. Here I talked about my own app, PicSaver, where the main technical challenge is to get images that users click on on a web page (using JavaScript script injection, JS Bridge communication).
  6. Talk about JavaScriptCore, how JS Bridge works, and the difference between UIWebView and WKWebView.

    There was a wave of analysis and talk around OC RuntimeWKWebViewMulti-process rendering of.
  7. Have you seen the source code of the open source framework? I talked briefly about AFNetworking and ReactiveCocoa.
  8. The design of AFNetworking. NSURLSession and NSURLConnection.
  9. Briefly describe the memory layout of objects in OC.
  10. The realization principle of KVO in OC. isa Swizzling
  11. Handwriting algorithm to determine whether x is a power of 2. It’s very simple. I wrote a recursive method first, and then I wrote a Bit Counting method (an efficient implementation of Bit Counting) when the interviewer suggested that I should not use four operations and modulus.
  12. The longest string without repeating substring. Look at the time complexity and the space complexity. Two Pointer + hash table. The worst case is O(n).

It was easy, the interviewer seemed satisfied and asked me to wait for a second interview.

Second interview

  1. Talk about the difference between nil in Swift and nil in OC.

    I thought it was an expeditionOptionalType, actually the interviewer wants to test OCnilIs a value of type pointer, whereas in SwiftnilYou can assign value types and reference types at the type level.
  2. Struct in Swift and class in OC. It also looks at the difference between value types and reference types.
  3. Performance issues when value types are passed between functions. Description Copy-on-write (COW).
  4. Describe the entire process of an HTTP request. What if there’s HTTPS? Are you familiar with HTTP/2 (and SPDY implementations)?
  5. Algorithm problem, filling matrix: 1, 2, 3, 4, 10, 11, 12, 5, 8, 7, 6 Considering the boundary situation, the general idea is to use the direction vector to control x, Y coordinates, according to the direction of the filling, use a reasonable method to deal with collision detection. You can write pseudo code.
  6. What format is commonly used for network communication? Other than JSON? Here I briefly talked about Protobuf, the interviewer went on to ask about the benefits of Protobuf binary, I briefly talked about the bandwidth optimization (smaller size) that the structure brings, and the general process of Parser parsing.
  7. I hear you know something about the front end? Can you tell me something about vue.js for the “layman”?
  8. Describe the similarities between Vue.js and Angular. How are they different from React? Briefly talk about Virtual DOM, MVVM design mode.
  9. C++ understand!! Oh, my god. Routine? Just a little bit. Can read code, can write simple programs.
  10. Do you have any questions? I simply asked about the work of interns. Tencent prefers interns to do some research work and explore some new directions of technology. Of course, you can also choose to write business.

Generally remember these questions, there are more trivial small questions in the interview process, I will not repeat, both sides of the interview for a total of more than 1 hour, the overall process is very easy, the questions are basically satisfied with the interviewer.

HR side

About an hour after the second interview, the resume status changed to HR interview. If nothing goes wrong, I will have the so-called HR interview in the next week or so, and the technical aspect should come to an end.


Let me talk about my current situation. I joined graphite Document on March 19 as a front-end development intern (my technical direction is too complicated 😂), mainly responsible for the development and performance optimization of Electron + React graphite desktop client. The next career plan will be decided according to the progress of the interview of other companies, including ant Financial Alipay team. Well, let me start here