In the previous part of the article, we observed the process of preparation for the job interview. We paused our journey at the moment of receiving a sufficient amount of proposals and the need to pre-qualify them. To help you figure out this task, we provided you with an applicant screening rubric.
Now that you shortlisted your applicants and invited them to the interview, your next step will be to prepare for the call meetings. The main task for this phase will be setting a list of questions to qualify the proficiency of React Native programmers.
You could check the skills of interviewees due to three categories:
- General: communication and collaboration skills.
- Project-specific: understanding the product requirements.
- Technical: React Native programming skills.
Collaboration and communication are soft skills and directly impact your project strategy and the business itself. So, the main point is to make sure that the candidate will get on the same page with you.
What matters here is to clarify if the prospective candidate follows the best practices in the project delivery and lets you know about the risks upfront.
- Tell me about the most significant React Native application that you did in the past?
- What challenges did you encounter in the course of the development?
- What lessons did you learn while accomplishing the project?
- How would you manage a complex task that you never faced before?
- How do you meet the deadlines at work? What is your best suggestion at this point?
- What is the best advice to overcome a stressful situation that happens at work?
- How do you proceed with your work if you are missing some materials?
- Are you a solo or a team player?
- What do you think of the time and material approach? Did you have a chance to apply it in your previous work?
- Are you able to join the project soon? What is your current availability?
You could change or add your personal questions to this list. Or even improvise with them, asking ones in the context of your dialogue. When working on these suggestions, we wanted to inspire you rather than restrict you.
As far as you have the specification, your next step will be to figure out if the applicant is keen on understanding the project scope. You are well prepared now, so don't worry about discussing the details with the technical specialist.
- How do you conceive the product features? What would you like to propose to make them better?
- What is the most challenging part of the project? How would you manage that?
- What extra services or third-party solutions would we need to accomplish this service?
- What React Native libraries would you suggest for building this app? Have you worked with them before?
- What priorities would you like to set in the development process?
- Do you have any questions regarding the graphic designs? Are they would be enough for you to start?
- What do you think of the design animation? Do you consider it to be complex or not?
- What approach would you follow to make the UI rendering faster?
- Do you need any specifications or screens to complete the timeframe estimation?
- How long will it take to accomplish the front-end work?
A programmer who understands the requirements of your product will deliver the expected quality. That's the key to handling the current discussion.
The following part of the interview is the technical one. To run this session successfully, you could invite a CTO or a development consultant to accompany you. If that is not an option, our guidelines will help you. The below questions are based on the requirements of the middle-level React Native programmer.
Q1: What are the main advantages of React Native?
Of course, some specific mobile features require Swift and Java knowledge, but generally, 70-80% of React Native code is reusable in both platforms. What does it mean for the employers? They save their expenses, as there is no need to hire front-end designers specifically for each mobile OS.
The transition from React to mobile app development takes less effort. It gives one crucial benefit to the business: if they have in-house React developers, they could construct a mobile app by their means.
Q2: What are the advantages of native apps over cross-platforming apps?
Native apps are created with the same language as the programming environment where they are to run. Such an approach enables passing the rendering methods straight to the host platform and getting the native views immediately.
Usually, the native applications require fewer third-party libraries to operate with the hardware services. They could communicate straight with inbuilt components to enable the camera, calendar, GPS, etc.
Q3: What is JSX in React Native?
<span> it provides the component
<View>, which is responsible for the corresponding options. For the text markup React Native uses the self-named component
Q4: What is component-driven development?
The component-driven approach allows building the UI with reusable or repeated code patterns. These patterns are called components and contain the information reflecting the UI and logic.
The same as in React, React Native's components have a specific hierarchy and could be parents, children, and ancestors.
Two types of data have been processed by components: state and props. Props stand for properties. They are immutable data and can be fetched from a parent to a child. It works only in terms of the functional components.
The class components render the mutable or dynamic data only after a certain event happens. This data type is called State.
Besides class and functional components, React Native provides the core components. Their main categories are:
<ListView>, Android-specific and iOS-specific. They are ready-to-use and aimed to speed up the development work.
Q5: What components in React Native are?
React Native is like React, but it uses native components instead of web components as building blocks (React Native docs).
React Native components are built with React. But they are not the web views in a browser. They are the native views on the mobile OS platform.
Q6: What makes components native?
Q8: What are threads in React Native?
React Native application is processing the data within a few separated threads:
- Native (Main) Thread;
- Shadow Thread.
Multi-threaded data processing gets more advantages over single-threaded. It prevents performance issues due to distributing the tasks among several parts.
The UI thread is responsible for the native part of the application. It deals with the native views and checks for the events on the UI. Also, the UI thread contains the screen designs of the application. It fetches the data on layouts parameters to the native UI Manager, which updates the design on the screen.
Since React Native implements another type of layout tree, it needs to get translated to the native UI tree. The Shadow thread constructs a layout tree understandable by the host operating system. It is possible due to the Yoga engine.
The communication between the threads is available due to the React Native bridge.
Q9: What is the React Native Bridge?
The essential advantage of React Native is that it invokes the native UI views on the mobile platform. Due to the bridge technology, it becomes possible to connect the application logic with the UIView manager on the native side.
Thus, the data between the native and React Native sides are processed asynchronously. This way seems to be slower, but it is preventing message blocking.
With that said, React Native's architecture is suited to render 60 frames per second, which is quite acceptable for the user's perception.
Q10: What is React Native boilerplate?
React Native boilerplate is a set of tools needed to initiate mobile app development. It involves reusable code templates and libraries for user profile creation, authentication via social media, background themes.
The usage of boilerplate leverages the development speed and helps the team follow the unified standards. For example, React Native boilerplate helps development teams implement TypeScript in their processes.
Besides that, React Native boilerplate helps to apply new services and features to the project once they are needed: multi-language support, react hooks, automated UI tests and regular check-ups on the library updates.