📜 ⬆️ ⬇️

The most common questions on the interview programmer graphics

Recently, I was interviewed in game studios at a junior graphics programmer. As a result, I learned what skills they expect from a novice programmer and what questions they can ask. In this article, I put the questions into a handy list. The point is that other novice programmers can use it to prepare before going on the first interview. But I want to make a reservation that I do not recommend simply memorizing the answers to these questions . Topics in the list are topics that should be understood and mastered in order to solve the real problems of graphics programming. They need to understand, not to remember the answers.

Questions are divided by topic: C ++, math, optimization and computer graphics . Obviously, these are the main topics in everyday work. C ++ is often used in real-life tasks, so it’s natural that people ask a lot of questions about the interview. In addition, a better knowledge of mathematics is required in graphics programming than in most other types of programming, so math skills are paramount. Finally, in order to achieve 60 FPS and render with high graphic accuracy, strong optimization skills are essential. Let's look at popular questions in each category.

C ++ Questions



As a rule, nothing is asked about the advanced functions of the language. For example, I have never been asked to perform template metaprogramming, fortunately.

Mathematics Questions


In fact, questions in mathematics are pretty monotonous.
')

Probably, they will offer to solve some practical problems associated with the use of scalar products, vector products and quaternions.

Optimization questions



It looks like gaming studios suggest that you should have experience profiling and optimizing code with tools like NVIDIA Nsight, so familiarize yourself with them. Here is another good book on computer architecture, including cache memory.

Computer Graphics Questions



The latter question is especially common during interviews. If you are not quite sure about all parts of the pipeline, then I advise you to write a small software rasterizer. Such an exercise provides a deep understanding of the pipeline, since the creation of a software rasterizer is in many ways similar to the implementation of a graphics pipeline from scratch.

Many of the above are warm-up questions. After them, deeper questions will follow (I will not disclose them, so as not to expose the company). Nevertheless, the above list of questions gives a good understanding of what knowledge the employer expects from a novice programmer.

Some of you are still learning and choosing subjects of the curriculum for working in computer graphics. My advice is to focus primarily on high-performance computing and applied mathematics. From programming subjects, try to master multi-threading, computer architecture and GPGPU, as well as other topics related to high-performance computing. Of the mathematics courses, linear algebra, multidimensional calculus (I think, in the USA this course is called Calculus III), probability theory, numerical optimization, differential equations and computational geometry. First of all, focus your attention on applied mathematics, and not on more abstract mathematical topics such as topology and abstract algebra, since they are not so necessary in computer graphics.

In general, they do not expect from you that you understand all the nuances of computer graphics. The term “computer graphics” covers a wide range of topics, such as global illumination, occlusion culling, shadow generation, path tracing, fluid modeling, geometry processing, GPGPU, physically correct rendering, and so on. It would be unreasonable to expect the June to know all the nuances of these topics. But if you specify something in the resume, be prepared to respond in detail to this topic.

Thus, it is not necessary to know EVERYTHING about computer graphics. It often happens that you are asked to tell about the main projects you have worked on. Then the interviewer will ask a lot of additional questions and ask you to explain in detail the details of your project. Therefore, my advice: before the interview, select a few projects that are particularly proud of - and get ready for a detailed explanation.

In my opinion, the best way to prepare for an interview is to work in your free time on a large number of third-party projects. Demonstrating the projects you have worked on is a good way to show yourself and demonstrate that you are really passionate about this business. Finally, working on third-party projects will hone programming skills. And this, in turn, will greatly help answer all the questions that I have listed in this article.

Source: https://habr.com/ru/post/351698/


All Articles