Hiring guide for Objective-J Engineers

Objective-J Developer Hiring Guide

Objective-J is a highly nuanced and multi-faceted programming language, deeply rooted in the rich lineage of object-oriented languages. As an intriguing blend of Objective-C and JavaScript, it offers programmers a unique platform that amalgamates the dynamism of JavaScript with the expressive syntax and robust feature set of Objective-C. The language's inception was driven by Francisco Tolmasky's vision to create a platform that possesses the power to build complex applications while maintaining simplicity in code organization. Objective-J is part of an ambitious project called Cappuccino, initiated by 280 North Inc. This project aimed at empowering web developers to build internet applications without getting ensnared in traditional web technologies such as HTML, CSS or even the Document Object Model (DOM). By abstracting these complexities, Objective-J allows developers to focus on crafting their application logic rather than grappling with intricate browser idiosyncrasies. What se

Ask the right questions secure the right Objective-J talent among an increasingly shrinking pool of talent.

First 20 minutes

General Objective-J app knowledge and experience

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

How would you define Objective-J?
Objective-J is a programming language that is a superset of JavaScript. It adds traditional inheritance and Smalltalk/Objective-C style dynamic dispatch to JavaScript.
What are the benefits of using Objective-J?
Some benefits of using Objective-J include: it's easy to learn for JavaScript developers, it adds traditional inheritance and dynamic dispatch to JavaScript, it supports both client-side and server-side development, and it's open source.
How would you create a class in Objective-J?
In Objective-J, a class is created using the @implementation keyword followed by the class name and the superclass name in parentheses. For example: '@implementation MyClass : SuperClass {} @end'.
What is the syntax for defining methods in Objective-J?
Methods in Objective-J are defined within the @implementation block. The syntax is '- (returnType)methodName: (parameterType)parameterName'.
What are protocols in Objective-J and how are they used?
Protocols in Objective-J are similar to interfaces in other languages. They define a set of methods that a class can implement. A class declares that it implements a protocol using the syntax in its declaration.
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 strong understanding of Objective-J?
Can the candidate solve problems using Objective-J?
Does the candidate have experience with Cappuccino, the web application framework that Objective-J is part of?
Is the candidate able to work effectively in a team?

Next 20 minutes

Specific Objective-J 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 a class method and an instance method in Objective-J.
Class methods are methods that are called on the class itself, whereas instance methods are called on instances of the class. In Objective-J, class methods are prefixed with a '+' symbol and instance methods with a '-' symbol.
How would you handle exceptions in Objective-J?
Exceptions in Objective-J are handled using the @try, @catch, and @finally blocks. The @try block contains the code that might throw an exception, the @catch block contains the code to handle the exception, and the @finally block contains the code that is executed whether an exception is thrown or not.
What are categories in Objective-J and how would you use them?
Categories in Objective-J allow you to add methods to existing classes without subclassing them. You define a category with the @implementation keyword followed by the class name and the category name in parentheses.
What is the purpose of the @selector in Objective-J and how is it used?
@selector in Objective-J is used to specify a method to be called. It is used in situations where the method is not known at compile time, but is determined at runtime.
How would you implement multithreading in Objective-J?
Multithreading in Objective-J can be implemented using the CPThread class. You can create a new thread by instantiating a CPThread object and calling its 'start' method.
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 Objective-J engineer at this point.

At this point, a skilled Objective-J engineer should demonstrate strong problem-solving abilities, proficiency in Objective-J 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 Objective-J.

What does this simple Objective-J code do?
@implementation MyClass : CPObject
- (void)printHello {
console.log('Hello World');
This code defines a class named MyClass that inherits from CPObject. Inside this class, a method named printHello is defined which, when called, will print 'Hello World' to the console.
What will be the output of this Objective-J code snippet?
@implementation MyClass : CPObject
- (CPString)getName {
return 'MyClass';
var myObject = [[MyClass alloc] init];
console.log([myObject getName]);
This code will output 'MyClass' to the console. It defines a class named MyClass with a method getName that returns the string 'MyClass'. Then it creates an instance of this class and calls the getName method.
What does this Objective-J code snippet do with the array?
var array = [1, 2, 3, 4, 5];
var newArray = [array map:function(item) {
return item * 2;
This code doubles each item in the array. It uses the map function to create a new array where each item is the double of the corresponding item in the original array. It then prints this new array to the console.
What does this Objective-J code snippet do related to threading?
var worker = new CPWorker('worker.js');
[worker postMessage:'Hello'];
[worker onmessage:function(e) {
This code creates a new web worker and sends a message 'Hello' to it. It then sets up an event listener that will print any message received from the worker to the console.

Wrap-up questions

Final candidate for Objective-J 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 Objective-J application deployments. Inquire about their experience in handling system failures and their approach to debugging and troubleshooting.

What is the difference between strong and weak references in Objective-J?
In Objective-J, a strong reference is a reference to an object that prevents the object from being deallocated. A weak reference, on the other hand, does not prevent the object from being deallocated. When the object is deallocated, the weak reference is automatically set to nil.
How would you manage memory in Objective-J?
Objective-J uses automatic garbage collection for memory management, so you don't need to manually allocate and deallocate memory. However, you should still be mindful of creating strong reference cycles that could lead to memory leaks.
What are blocks in Objective-J and how would you use them?
Blocks in Objective-J are self-contained pieces of code that can be passed around as objects. They are defined using the '^' syntax. You can use blocks as arguments to methods, as return values from methods, or to encapsulate a chunk of code to be executed later.

Objective-J application related

Product Perfect's Objective-J development capabilities

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