Hiring guide for Agora Engineers

Agora Developer Hiring Guide

The Agora programming language is a historical software development tool, first introduced in the 1980s. It was developed by French computer scientist Jacques Arsac as a teaching language for computer science students. The language is known for its simplicity and clarity, making it an ideal introductory tool for novice programmers. Agora's design emphasizes structured programming and data abstraction, aligning with the educational goals of many computer science programs. Information about Agora can be found in Arsac's book "Programming: An Introduction to Computer Science" (1986).

Ask the right questions secure the right Agora talent among an increasingly shrinking pool of talent.

First 20 minutes

General Agora app knowledge and experience

The first 20 minutes of the interview should seek to understand the candidate's general background in Agora application development, including their experience with various programming languages, databases, and their approach to designing scalable and maintainable systems.

How would you initialize the Agora SDK in a JavaScript project?
To initialize the Agora SDK, you need to first import the Agora SDK using 'import AgoraRTC from 'agora-rtc-sdk-ng';'. Then, create a client instance using 'const client = AgoraRTC.createClient({ mode: 'rtc', codec: 'vp8' });'.
What are the primary components of the Agora SDK?
The primary components of the Agora SDK are the RTC (Real-Time Communication) client, which handles the connection, and the RTC tracks, which handle the audio and video streams.
Describe the difference between 'audience' and 'host' roles in Agora?
In Agora, 'host' is the role for those who publish and subscribe to streams, while 'audience' is the role for those who only subscribe to streams. The 'audience' cannot publish streams.
How would you handle network quality changes in Agora?
In Agora, you can handle network quality changes by using the 'on' method to listen for the 'network-quality' event. This event provides statistics about the uplink and downlink network conditions.
What is the purpose of the Agora Token?
The Agora Token is used for authentication. It ensures the security of the communication happening between the users.
The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What you’re looking for early on

Does the candidate have a solid understanding of Agora SDK?
Is the candidate proficient in at least one of the programming languages supported by Agora?
Does the candidate have experience with real-time engagement (RTE) applications?
Can the candidate problem solve effectively?

Next 20 minutes

Specific Agora development questions

The next 20 minutes of the interview should focus on the candidate's expertise with specific backend frameworks, their understanding of RESTful APIs, and their experience in handling data storage and retrieval efficiently.

Describe the difference between 'push' and 'pull' CDN live streaming in Agora?
In 'push' CDN live streaming, the Agora SDK sends the streams to the CDN. In 'pull' CDN live streaming, the CDN pulls the streams from the Agora SD-RTN.
How would you handle audio mixing in Agora?
In Agora, you can handle audio mixing by using the 'startAudioMixing' method. This method plays the specified music file while simultaneously sending the music and the microphone streams.
What are the steps to implement screen sharing in Agora?
To implement screen sharing in Agora, you need to create a screen-sharing track using 'AgoraRTC.createScreenVideoTrack', then publish the track using the 'client.publish' method.
Describe the difference between 'communication' and 'live-broadcasting' mode in Agora?
In 'communication' mode, all users can publish and subscribe to streams. In 'live-broadcasting' mode, users have roles (host or audience) and only the host can publish streams.
How would you handle stream fallback in Agora?
In Agora, you can handle stream fallback by using the 'setStreamFallbackOption' method. This method sets the fallback option for the subscribed video stream based on the network conditions.
The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

The ideal back-end app developer

What you’re looking to see on the Agora engineer at this point.

At this point, a skilled Agora engineer should demonstrate strong problem-solving abilities, proficiency in Agora programming language, and knowledge of software development methodologies. Red flags include lack of hands-on experience, inability to articulate complex concepts, or unfamiliarity with standard coding practices.

Digging deeper

Code questions

These will help you see the candidate's real-world development capabilities with Agora.

What does this simple Agora code snippet do?
RtcEngine engine = RtcEngine.create(getContext(), APP_ID, eventHandler);
This code snippet creates an instance of the RtcEngine class. This instance represents the Agora RTC engine.
What does this Agora syntax do?
engine.joinChannel(null, 'test', 'Extra Optional Data', 0);
This code snippet makes the local user join a specific channel. 'test' is the channel name, 'Extra Optional Data' is optional data that can be passed into the channel, and '0' is the user ID.
What will be the output of this Agora code related to collection manipulation?
IRtcEngineEventHandler handler = new IRtcEngineEventHandler() {
  @Override
  public void onUserJoined(int uid, int elapsed) {
    userList.add(uid);
  }
};
This code snippet defines an event handler that adds the user ID of any new user who joins the channel to a collection named 'userList'.
What does this Agora code snippet related to threading do?
engine.setParameters('{"che.audio.keep.audiosession": true}');
This code snippet sets the audio session active in the background. This allows the Agora engine to maintain the audio session when the app is running in the background, which is a form of concurrency.

Wrap-up questions

Final candidate for Agora Developer role questions

The final few questions should evaluate the candidate's teamwork, communication, and problem-solving skills. Additionally, assess their knowledge of microservices architecture, serverless computing, and how they handle Agora application deployments. Inquire about their experience in handling system failures and their approach to debugging and troubleshooting.

What is the function of the 'AgoraRTC.createMicrophoneAudioTrack' method?
The 'AgoraRTC.createMicrophoneAudioTrack' method is used to create a local audio track representing a microphone audio. This can be used for publishing the audio.
Describe the difference between 'join' and 'leave' methods in Agora?
The 'join' method is used to join a channel, while the 'leave' method is used to leave the channel. When a user joins a channel, they can publish and subscribe to streams. When they leave, they can no longer publish or subscribe to streams.
How would you handle errors in Agora?
In Agora, you can handle errors by using the 'catch' method. This method catches any errors that occur when calling Agora methods and allows you to handle them appropriately.

Agora application related

Product Perfect's Agora development capabilities

Beyond hiring for your Agora engineering team, you may be in the market for additional help. Product Perfect provides seasoned expertise in Agora projects, and can engage in multiple capacities.