NetEase Interpolation: My Journey as a Non-Computer Science Student

NetEase Interpolation: My Journey as a Non-Computer Science Student

I still remember the day I received the offer to join NetEase as a C++ developer. It was a thrilling moment, and I’m grateful to the senior sister apprentice who gave me the opportunity. As a graduate student from a non-computer science background, I had to scrape together knowledge and skills to prepare for the interviews. In this article, I’ll share my experiences and the challenges I faced during the three interviews.

The First Interview: A Phone Call with a Twist

The first interview was a phone call that lasted for 33 minutes. I was a bit nervous, but the interviewer was very nice and accommodating. Despite the phone connection breaking once, we managed to continue the conversation without any issues. The questions were quite basic, but I’ll outline them below:

  1. Polymorphism: The interviewer asked me to explain the concept of polymorphism, including static and dynamic polymorphism, and how it’s achieved through virtual functions and function overloading.
  2. Dynamic Binding: The interviewer inquired about how dynamic binding is achieved, specifically regarding base class and derived class pointers and conversions.
  3. Type Conversion: I was asked to describe the four types of conversion, including implicit and explicit conversions.
  4. Operator Overloading: The interviewer wanted to know how to define the + operator for a class.
  5. Memory Alignment: I was asked to explain the principle of memory alignment and how it’s achieved.
  6. Template Metaprogramming: The interviewer inquired about how to achieve template metaprogramming.
  7. Const Pointers and Usage: I was asked to describe the usage of const pointers and how they differ from regular pointers.
  8. Virtual Functions: The interviewer wanted to know about virtual functions, pure virtual functions, and destructors.
  9. Inline Functions: I was asked to explain the differences and advantages of inline functions and macros.
  10. Const and Typedef: The interviewer inquired about the usage of const and typedef.
  11. Sorting Algorithms: I was asked to describe the quick sort algorithm and its time complexities.
  12. Linking: The interviewer wanted to know about the extern "C" keyword and its usage.
  13. C++ Language Fundamentals: I was asked to explain the differences between C and C++ languages, including inheritance, polymorphism, encapsulation, and exception handling.

The Second Interview: An On-Site Conversation

The second interview was an on-site conversation that lasted for 50 minutes. I was a bit nervous, but the interviewer was very nice and accommodating. The questions were a mix of basic and advanced topics, and I’ll outline them below:

  1. Qt Classes: The interviewer asked me to describe some of the Qt classes and their usage.
  2. Qt Signals and Slots: I was asked to explain the Qt signals and slots mechanism.
  3. PLC Development: The interviewer wanted to know about my experience with PLC development and C++ programming.
  4. Copy Function: I was asked to write the strcpy function.
  5. Binary Tree Traversal: The interviewer inquired about non-recursive binary tree traversal.
  6. Conversion Mechanisms: I was asked to describe the four types of conversion mechanisms.
  7. Inheritance and Object Conversion: The interviewer wanted to know about inheritance and object conversion.
  8. Virtual Function Tables: I was asked to explain how virtual function tables are allocated memory.
  9. Dynamic Allocation: The interviewer inquired about dynamic allocation of class objects.
  10. STL Containers: I was asked to describe the differences between vector and set containers.
  11. Red-Black Tree: The interviewer wanted to know about the red-black tree data structure.
  12. Const Keyword: I was asked to explain the usage of the const keyword.
  13. Template Specialization: The interviewer inquired about template specialization.
  14. Explicit Keyword: I was asked to describe the usage of the explicit keyword.
  15. Memory Overflow: The interviewer wanted to know about the factors that cause memory overflow.
  16. New and Malloc: I was asked to explain the differences between new and malloc.
  17. Static Cast: The interviewer inquired about the usage of static cast instead of C language conversion.
  18. Exception Mechanism: I was asked to describe the exception mechanism in C++.
  19. Iterator Removal: The interviewer wanted to know about what happens when an iterator is removed.
  20. Constructor Initializer: I was asked to explain the usage of constructor initializer.
  21. Class Access Specifiers: The interviewer inquired about the differences between private, protected, and public access specifiers.
  22. Auto_ptr Categories: I was asked to describe the categories of auto_ptr.

The Third Interview: A Conversation with HR

The third interview was a conversation with HR that lasted for 10 minutes. The questions were a mix of personal and professional topics, and I’ll outline them below:

  1. Internship Programs: The HR interviewer asked me to describe my experience with internship programs.
  2. Most Meaningful Project: I was asked to share my most meaningful project experience.
  3. Future Career Planning: The HR interviewer wanted to know about my future career plans.
  4. Hangzhou Living: I was asked to describe my plans for living in Hangzhou and how my parents feel about it.
  5. Other Companies: The HR interviewer inquired about whether I have other companies in mind.

Conclusion

My journey as a non-computer science student to join NetEase as a C++ developer was not easy, but it was worth it. I learned a lot about C++ programming, Qt development, and PLC programming. I’m grateful to the senior sister apprentice who gave me the opportunity and to the interviewers who asked me challenging questions. I hope that my experiences will help others who are interested in pursuing a career in software development.

Lessons Learned

  • Lay the foundation: As a non-computer science student, I had to lay the foundation by reading books and practicing programming skills.
  • Be prepared: I had to be prepared for the interviews by practicing programming problems and multiple-choice questions.
  • Good attitude: I had to maintain a good attitude throughout the interview process, and I’m grateful to the interviewers who appreciated my enthusiasm.
  • Persevere: I had to persevere through the challenges and rejections, and I’m grateful to have received the offer to join NetEase.

I hope that my story will inspire others to pursue a career in software development, and I wish everyone the best of luck in their job search.